Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | 82x 2x 2x 2x 2x 2x 2x 4x 2x 70x 140x 2x 2x 2x 2x 2x | // useFileUpload.ts
import Papa from "papaparse";
import readXlsxFile from "read-excel-file";
import { toast } from "sonner";
export function useFileUpload({
onSuccess,
onError,
uploadMSS,
updateUploadedFileName,
flowsheetId,
scenarioId
}: {
onSuccess: (fileName: string) => void;
onError: (err: any) => void;
uploadMSS: any;
updateUploadedFileName: (name: string) => void;
flowsheetId: string;
scenarioId: number;
}) {
return async (file: File) => {
if (file.type === "text/csv") {
Papa.parse(file, {
worker: true,
skipEmptyLines: true,
complete: (result) => {
Iif (result.error) {
toast.error(`CSV parsing error: ${result.error?.message}`);
onError(result.error);
return;
}
const data = result.data;
const columns = Object.keys(data[0]);
const uploadData: { [key: string]: number[] } = {};
for (const columnName of columns) uploadData[columnName] = [];
for (const row of data) {
for (const columnName of columns) {
uploadData[columnName].push(row[columnName]);
}
}
uploadMSS({
uploadData: {
flowsheet: flowsheetId,
data: uploadData,
scenario: scenarioId,
},
})
.then((response: any) => {
if (!response.error) {
updateUploadedFileName(file.name);
toast.success("Upload successful!");
onSuccess(file.name);
} else E{
toast.error(`Upload failed: ${response.error}`);
onError(response.error);
}
})
.catch((error: any) => {
toast.error(`Upload error: ${error.message || error}`);
onError(error);
});
},
header: true,
});
} else E{
readXlsxFile(file).then((rows: any) => {
const data = rows.map((row: any) => row as string[] | number[]);
Iif (
data[data.length - 1].length === 1 &&
data[data.length - 1][0] === ""
) {
data.pop(); // remove empty row
}
const columns = data[0];
const uploadData: Record<string, any[]> = {};
for (let i = 0; i < columns.length; i++) {
uploadData[columns[i]] = data.slice(1).map((row) => row[i]);
}
uploadMSS({
uploadData: {
flowsheet: flowsheetId,
data: uploadData,
scenario: scenarioId,
},
})
.then((response: any) => {
if (!response.error) {
updateUploadedFileName("Preview");
toast.success("Upload successful!");
onSuccess("Preview");
} else {
toast.error(
`Upload failed: ${response.error.message || response.error}`,
);
onError(response.error);
}
})
.catch((error: any) => {
toast.error(`Upload error: ${error.message || error}`);
onError(error);
});
});
}
};
}
|