From 3e53b2a178a639c522df97836f1e42999426a4fe Mon Sep 17 00:00:00 2001 From: Anish Roy <6275anishroy@gmail.com> Date: Wed, 15 Mar 2023 11:39:05 +0530 Subject: [PATCH] minor changes and bug fixes --- .../ImportAirtableWizard/Step1Columns.tsx | 23 +++++++------- .../ImportCsvWizard/Step1Columns.tsx | 18 ++++++----- .../ImportCsvWizard/useConverter.ts | 14 +++++++-- .../ImportCsvWizard/useUploadFileFromURL.tsx | 6 ++-- .../TableToolbar/ImportData/ImportFromCsv.tsx | 31 ++++++++++--------- 5 files changed, 54 insertions(+), 38 deletions(-) diff --git a/src/components/TableModals/ImportAirtableWizard/Step1Columns.tsx b/src/components/TableModals/ImportAirtableWizard/Step1Columns.tsx index befaeedb..42f73226 100644 --- a/src/components/TableModals/ImportAirtableWizard/Step1Columns.tsx +++ b/src/components/TableModals/ImportAirtableWizard/Step1Columns.tsx @@ -57,7 +57,6 @@ export default function Step1Columns({ config.pairs.map((pair) => pair.fieldKey) ); - const fieldKeys = Object.keys(airtableData.records[0].fields); // When a field is selected to be imported @@ -128,8 +127,8 @@ export default function Step1Columns({ const handleSelectAll = () => { if (selectedFields.length !== fieldKeys.length) { - setSelectedFields(fieldKeys) - fieldKeys.forEach(field => { + setSelectedFields(fieldKeys); + fieldKeys.forEach((field) => { // Try to match each field to a column in the table const match = find(tableColumns, (column) => @@ -158,15 +157,13 @@ export default function Step1Columns({ ]; } updateConfig(columnConfig); - }) + }); } else { - setSelectedFields([]) - setConfig((config) => ({ ...config, newColumns: [], pairs: [] })) + setSelectedFields([]); + setConfig((config) => ({ ...config, newColumns: [], pairs: [] })); } - }; - // When a field is mapped to a new column const handleChange = (fieldKey: string) => (value: string) => { if (!value) return; @@ -236,7 +233,11 @@ export default function Step1Columns({ color="default" /> } - label={selectedFields.length == fieldKeys.length ? "Clear all" : "Select all"} + label={ + selectedFields.length === fieldKeys.length + ? "Clear all" + : "Select all" + } sx={{ height: 42, mr: 0, @@ -251,8 +252,8 @@ export default function Step1Columns({ find(config.pairs, { fieldKey: field })?.columnKey ?? null; const matchingColumn = columnKey ? tableSchema.columns?.[columnKey] ?? - find(config.newColumns, { key: columnKey }) ?? - null + find(config.newColumns, { key: columnKey }) ?? + null : null; const isNewColumn = !!find(config.newColumns, { key: columnKey }); return ( diff --git a/src/components/TableModals/ImportCsvWizard/Step1Columns.tsx b/src/components/TableModals/ImportCsvWizard/Step1Columns.tsx index c2b04cd8..888b87e5 100644 --- a/src/components/TableModals/ImportCsvWizard/Step1Columns.tsx +++ b/src/components/TableModals/ImportCsvWizard/Step1Columns.tsx @@ -67,7 +67,7 @@ export default function Step1Columns({ const handleSelectAll = () => { if (selectedFields.length !== csvData.columns.length) { setSelectedFields(csvData.columns); - csvData.columns.forEach(field => { + csvData.columns.forEach((field) => { // Try to match each field to a column in the table const match = find(tableColumns, (column) => @@ -89,10 +89,10 @@ export default function Step1Columns({ ]; } updateConfig(columnConfig); - }) + }); } else { - setSelectedFields([]) - setConfig((config) => ({ ...config, newColumns: [], pairs: [] })) + setSelectedFields([]); + setConfig((config) => ({ ...config, newColumns: [], pairs: [] })); } }; @@ -232,7 +232,11 @@ export default function Step1Columns({ color="default" /> } - label={selectedFields.length == csvData.columns.length ? "Clear all" : "Select all"} + label={ + selectedFields.length === csvData.columns.length + ? "Clear all" + : "Select all" + } sx={{ height: 42, mr: 0, @@ -247,8 +251,8 @@ export default function Step1Columns({ find(config.pairs, { csvKey: field })?.columnKey ?? null; const matchingColumn = columnKey ? tableSchema.columns?.[columnKey] ?? - find(config.newColumns, { key: columnKey }) ?? - null + find(config.newColumns, { key: columnKey }) ?? + null : null; const isNewColumn = !!find(config.newColumns, { key: columnKey }); diff --git a/src/components/TableModals/ImportCsvWizard/useConverter.ts b/src/components/TableModals/ImportCsvWizard/useConverter.ts index 83a3d055..489a3127 100644 --- a/src/components/TableModals/ImportCsvWizard/useConverter.ts +++ b/src/components/TableModals/ImportCsvWizard/useConverter.ts @@ -21,8 +21,17 @@ export default function useConverter() { const referenceConverter = (value: string): Reference | null => { if (!value) return null; - if (value.split("/").length % 2 !== 0) return null; - return doc(firebaseDb, value); + if (value.charAt(value.length - 1) === "/") { + value = value.slice(0, -1); + } + if (value.split("/").length % 2 === 0) { + try { + return doc(firebaseDb, value); + } catch (e) { + console.log("error", e); + } + } + return null; }; const imageOrFileConverter = (urls: any): RowyFile[] => { @@ -52,7 +61,6 @@ export default function useConverter() { const geoPointConverter = (value: any) => { if (!value) return null; if (typeof value === "string") { - console.log("value", value); let latitude, longitude; // covered cases: // [3.2, 32.3] diff --git a/src/components/TableModals/ImportCsvWizard/useUploadFileFromURL.tsx b/src/components/TableModals/ImportCsvWizard/useUploadFileFromURL.tsx index 9668b7dd..0fae28fd 100644 --- a/src/components/TableModals/ImportCsvWizard/useUploadFileFromURL.tsx +++ b/src/components/TableModals/ImportCsvWizard/useUploadFileFromURL.tsx @@ -108,16 +108,16 @@ export default function useUploadFileFromURL() { const showProgress = useCallback( (totalJobs: number) => { snackbarProgressId.current = enqueueSnackbar( - `Uploading ${Number( + `Uploading files form ${Number( totalJobs - ).toLocaleString()} files/images. This might take a while.`, + ).toLocaleString()} cells. This might take a while.`, { persist: true, action: ( ), } diff --git a/src/components/TableToolbar/ImportData/ImportFromCsv.tsx b/src/components/TableToolbar/ImportData/ImportFromCsv.tsx index 269f306d..fb796292 100644 --- a/src/components/TableToolbar/ImportData/ImportFromCsv.tsx +++ b/src/components/TableToolbar/ImportData/ImportFromCsv.tsx @@ -132,20 +132,6 @@ export default function ImportFromFile() { }; }, [setImportCsv]); - const parseFile = useCallback((rawData: string) => { - if (importTypeRef.current === "json") { - if (!hasProperJsonStructure(rawData)) { - return setError("Invalid Structure! It must be an Array"); - } - const converted = convertJSONToCSV(rawData); - if (!converted) { - return setError("No columns detected"); - } - rawData = converted; - } - parseCsv(rawData); - }, []); - const parseCsv = useCallback( (csvString: string) => parse(csvString, { delimiter: [",", "\t"] }, (err, rows) => { @@ -174,6 +160,23 @@ export default function ImportFromFile() { [setImportCsv] ); + const parseFile = useCallback( + (rawData: string) => { + if (importTypeRef.current === "json") { + if (!hasProperJsonStructure(rawData)) { + return setError("Invalid Structure! It must be an Array"); + } + const converted = convertJSONToCSV(rawData); + if (!converted) { + return setError("No columns detected"); + } + rawData = converted; + } + parseCsv(rawData); + }, + [parseCsv] + ); + const onDrop = useCallback( async (acceptedFiles: File[]) => { try {