mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-22 07:29:08 +00:00
refactor: allow user to review import map
This commit is contained in:
committed by
Carlos Valente
parent
becd734ea8
commit
162693e19e
+5
-2
@@ -15,10 +15,10 @@ interface ImportReviewProps {
|
||||
customFields: CustomFields;
|
||||
onFinished: () => void;
|
||||
onCancel: () => void;
|
||||
onBack: () => void;
|
||||
}
|
||||
|
||||
export default function ImportReview(props: ImportReviewProps) {
|
||||
const { rundown, customFields, onFinished, onCancel } = props;
|
||||
export default function ImportReview({ rundown, customFields, onFinished, onCancel, onBack }: ImportReviewProps) {
|
||||
const { data: currentRundown } = useRundown();
|
||||
const [loading, setLoading] = useState(false);
|
||||
const { importRundown } = useGoogleSheet();
|
||||
@@ -55,6 +55,9 @@ export default function ImportReview(props: ImportReviewProps) {
|
||||
<Button onClick={handleCancel} variant='ghosted' disabled={loading}>
|
||||
Cancel
|
||||
</Button>
|
||||
<Button onClick={onBack} variant='subtle' disabled={loading}>
|
||||
Back
|
||||
</Button>
|
||||
<Button onClick={applyImport} variant='primary' loading={loading}>
|
||||
Apply
|
||||
</Button>
|
||||
|
||||
+2
@@ -39,6 +39,7 @@ export default function SourcesPanel() {
|
||||
const setCustomFields = useSheetStore((state) => state.setCustomFields);
|
||||
const setSheetId = useSheetStore((state) => state.setSheetId);
|
||||
const sheetId = useSheetStore((state) => state.sheetId);
|
||||
const resetPreview = useSheetStore((state) => state.resetPreview);
|
||||
|
||||
const fileInputRef = useRef<HTMLInputElement>(null);
|
||||
|
||||
@@ -221,6 +222,7 @@ export default function SourcesPanel() {
|
||||
customFields={customFields}
|
||||
onFinished={handleFinished}
|
||||
onCancel={cancelImportMap}
|
||||
onBack={resetPreview}
|
||||
/>
|
||||
)}
|
||||
</Panel.Card>
|
||||
|
||||
@@ -20,6 +20,7 @@ import { parseCustomFields } from '../custom-fields/customFields.parser.js';
|
||||
import { parseExcel } from './excel.parser.js';
|
||||
import { rundownToTabular } from './excel.utils.js';
|
||||
|
||||
// we keep the excel data in memory to allow the flow upload -> preview
|
||||
let excelData: WorkBook = xlsx.utils.book_new();
|
||||
|
||||
/**
|
||||
@@ -33,6 +34,8 @@ export async function readExcelFile(filePath: string) {
|
||||
if (extname(filePath) != '.xlsx') {
|
||||
throw new Error('Wrong file format');
|
||||
}
|
||||
|
||||
// clear the data
|
||||
excelData = xlsx.readFile(filePath, { cellDates: true, cellFormula: false });
|
||||
|
||||
await deleteFile(filePath);
|
||||
@@ -55,18 +58,15 @@ export function generateRundownPreview(options: ImportMap): { rundown: Rundown;
|
||||
const arrayOfData: unknown[][] = xlsx.utils.sheet_to_json(data, { header: 1, blankrows: false, raw: false });
|
||||
|
||||
const dataFromExcel = parseExcel(arrayOfData, getProjectCustomFields(), options.worksheet, options);
|
||||
const parsedCustomFields = parseCustomFields(dataFromExcel);
|
||||
|
||||
// we run the parsed data through an extra step to ensure the objects shape
|
||||
const rundown = parseRundown(dataFromExcel.rundown, parsedCustomFields);
|
||||
if (rundown.order.length === 0) {
|
||||
if (dataFromExcel.rundown.flatOrder.length === 0) {
|
||||
throw new Error(`Could not find data to import in the worksheet: ${options.worksheet}`);
|
||||
}
|
||||
|
||||
// clear the data
|
||||
excelData = xlsx.utils.book_new();
|
||||
// we run the parsed data through an extra step to ensure the objects shape
|
||||
const customFields = parseCustomFields(dataFromExcel);
|
||||
const rundown = parseRundown(dataFromExcel.rundown, customFields);
|
||||
|
||||
return { rundown, customFields: parsedCustomFields };
|
||||
return { rundown, customFields };
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user