mirror of
https://github.com/rowyio/rowy.git
synced 2025-12-29 00:16:39 +01:00
minor changes and bug fixes
This commit is contained in:
@@ -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 (
|
||||
|
||||
@@ -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 });
|
||||
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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: (
|
||||
<SnackbarProgress
|
||||
stateRef={snackbarProgressRef}
|
||||
target={totalJobs}
|
||||
label=" uploaded"
|
||||
label=" completed"
|
||||
/>
|
||||
),
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user