diff --git a/comps/list/ImportExcel.tsx b/comps/list/ImportExcel.tsx index fc5c1ef..8207dc9 100755 --- a/comps/list/ImportExcel.tsx +++ b/comps/list/ImportExcel.tsx @@ -1,7 +1,7 @@ import { GFCol } from "@/gen/utils"; import { useLocal } from "@/utils/use-local"; import { ChangeEvent, FC, MouseEvent } from "react"; -import { Workbook } from 'exceljs'; +// import { Workbook } from 'exceljs'; // import * as XLSX from "xlsx"; type ImportExcelProps = { @@ -12,7 +12,7 @@ type ImportExcelProps = { type RowData = { pk: string | number; rows: any; -} +}; export const ImportExcel: FC = ({ gen_fields, @@ -32,7 +32,7 @@ export const ImportExcel: FC = ({ insertedData: [] as any[], isStopped: false, processedRows: 0, - firstRow: [] as string[] + firstRow: [] as string[], }); const pk = local.pk?.name || "id"; @@ -81,28 +81,30 @@ export const ImportExcel: FC = ({ reader.onload = async (event: ProgressEvent) => { if (!event.target?.result) return; - const buffer = new Uint8Array(event.target.result as ArrayBuffer); - const workbook = new Workbook(); - await workbook.xlsx.load(buffer); + // const buffer = new Uint8Array(event.target.result as ArrayBuffer); + // const workbook = new Workbook(); + // await workbook.xlsx.load(buffer); - const worksheet = workbook.worksheets[0]; - if (worksheet) { - let sheetData = worksheet.getRows(1, worksheet.actualRowCount)?.map(row => row.values); - let firstRow = sheetData!.shift(); - local.data = sheetData!; - if (firstRow) { - local.firstRow = firstRow as string[]; - } else { - console.log('firstRow is undefined'); - } - local.columns = getAllKeys(local.data); - gen_fields.forEach((data: any) => { - local.fields.push(JSON.parse(data).name); - }); - local.tableName = gen_table; - local.showPreviewExcel = true; - local.render(); - } + // const worksheet = workbook.worksheets[0]; + // if (worksheet) { + // let sheetData = worksheet + // .getRows(1, worksheet.actualRowCount) + // ?.map((row) => row.values); + // let firstRow = sheetData!.shift(); + // local.data = sheetData!; + // if (firstRow) { + // local.firstRow = firstRow as string[]; + // } else { + // console.log("firstRow is undefined"); + // } + // local.columns = getAllKeys(local.data); + // gen_fields.forEach((data: any) => { + // local.fields.push(JSON.parse(data).name); + // }); + // local.tableName = gen_table; + // local.showPreviewExcel = true; + // local.render(); + // } }; reader.readAsArrayBuffer(file); }; @@ -124,7 +126,8 @@ export const ImportExcel: FC = ({ let insertRow: any = {}; local.columnMappings.forEach((columnMapping) => { insertRow[pk] = rowIndex; - insertRow[columnMapping.selectedColumn] = row.rows[columnMapping.column]; + insertRow[columnMapping.selectedColumn] = + row.rows[columnMapping.column]; }); rowIndex++; @@ -135,13 +138,13 @@ export const ImportExcel: FC = ({ // }); local.insertedData.push({ pk: insertRow[pk], - rows: insertRow + rows: insertRow, }); local.render(); local.processedRows++; local.progress = Math.round((local.processedRows / totalRows) * 100); local.render(); - await new Promise(resolve => setTimeout(resolve, 2000)); + await new Promise((resolve) => setTimeout(resolve, 2000)); } } local.isLoading = false; @@ -201,7 +204,9 @@ export const ImportExcel: FC = ({ }); const table = (db as any)[local.tableName]; if (table) { - let remainingData = local.selectedRows.filter((row) => !ids.includes(row.pk)); + let remainingData = local.selectedRows.filter( + (row) => !ids.includes(row.pk) + ); local.showPreviewExcel = false; local.isLoading = true; local.render(); @@ -209,7 +214,8 @@ export const ImportExcel: FC = ({ for (const row of remainingData) { let insertRow: any = {}; local.columnMappings.forEach((columnMapping) => { - insertRow[columnMapping.selectedColumn] = row.rows[columnMapping.column]; + insertRow[columnMapping.selectedColumn] = + row.rows[columnMapping.column]; }); // let insertedData = await table.create({ data: insertRow }); @@ -219,19 +225,19 @@ export const ImportExcel: FC = ({ // }); local.insertedData.push({ pk: insertRow[pk], - rows: insertRow + rows: insertRow, }); local.render(); local.processedRows++; local.progress = Math.round((local.processedRows / totalRows) * 100); local.render(); - await new Promise(resolve => setTimeout(resolve, 2000)); + await new Promise((resolve) => setTimeout(resolve, 2000)); } local.isLoading = false; local.isStopped = false; local.render(); } - } + }; const columnMappingChange = (col: string) => (e: ChangeEvent) => { @@ -251,7 +257,7 @@ export const ImportExcel: FC = ({ return (
- {local.showPreviewExcel && (local.data.length > 0 && ( + {local.showPreviewExcel && local.data.length > 0 && (
@@ -338,25 +346,25 @@ export const ImportExcel: FC = ({
- ))} + )} {local.isLoading && ( -
+
{local.progress}% @@ -368,24 +376,26 @@ export const ImportExcel: FC = ({
{local.insertedData.length !== local.selectedRows.length && (
- {!local.isStopped && ()} + {!local.isStopped && ( + + )} {local.isStopped && (