@visactor/vtable 1.22.11-alpha.4 → 1.22.11-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/ListTable.d.ts +34 -7
- package/cjs/ListTable.js +134 -14
- package/cjs/ListTable.js.map +1 -1
- package/cjs/core/BaseTable.js +1 -1
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/TABLE_EVENT_TYPE.d.ts +1 -0
- package/cjs/core/TABLE_EVENT_TYPE.js +1 -0
- package/cjs/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/cjs/core/index.d.ts +1 -0
- package/cjs/core/index.js +30 -0
- package/cjs/core/index.js.map +1 -0
- package/cjs/core/record-helper.d.ts +4 -2
- package/cjs/core/record-helper.js +81 -24
- package/cjs/core/record-helper.js.map +1 -1
- package/cjs/data/DataSource.d.ts +1 -0
- package/cjs/data/DataSource.js +25 -3
- package/cjs/data/DataSource.js.map +1 -1
- package/cjs/dataset/DataStatistics.js +1 -2
- package/cjs/dataset/dataset-pivot-table.js +2 -1
- package/cjs/event/event.d.ts +2 -1
- package/cjs/event/event.js +20 -9
- package/cjs/event/event.js.map +1 -1
- package/cjs/header-helper/style.js +1 -2
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/layout/index.js +2 -1
- package/cjs/plugins/custom-cell-style.d.ts +5 -0
- package/cjs/plugins/custom-cell-style.js +9 -0
- package/cjs/plugins/custom-cell-style.js.map +1 -1
- package/cjs/plugins/index.js +1 -1
- package/cjs/ts-types/base-table.d.ts +2 -2
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/events.d.ts +15 -0
- package/cjs/ts-types/events.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +32 -6
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +375 -48
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.d.ts +34 -7
- package/es/ListTable.js +130 -14
- package/es/ListTable.js.map +1 -1
- package/es/core/BaseTable.js +1 -1
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/TABLE_EVENT_TYPE.d.ts +1 -0
- package/es/core/TABLE_EVENT_TYPE.js +1 -0
- package/es/core/TABLE_EVENT_TYPE.js.map +1 -1
- package/es/core/index.d.ts +1 -0
- package/es/core/index.js +2 -0
- package/es/core/index.js.map +1 -0
- package/es/core/record-helper.d.ts +4 -2
- package/es/core/record-helper.js +75 -20
- package/es/core/record-helper.js.map +1 -1
- package/es/data/DataSource.d.ts +1 -0
- package/es/data/DataSource.js +25 -3
- package/es/data/DataSource.js.map +1 -1
- package/es/dataset/DataStatistics.js +1 -2
- package/es/dataset/dataset-pivot-table.js +2 -1
- package/es/event/event.d.ts +2 -1
- package/es/event/event.js +20 -9
- package/es/event/event.js.map +1 -1
- package/es/header-helper/style.js +1 -2
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/layout/index.js +2 -1
- package/es/plugins/custom-cell-style.d.ts +5 -0
- package/es/plugins/custom-cell-style.js +9 -0
- package/es/plugins/custom-cell-style.js.map +1 -1
- package/es/plugins/index.js +1 -1
- package/es/ts-types/base-table.d.ts +2 -2
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/events.d.ts +15 -0
- package/es/ts-types/events.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +32 -6
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/record-helper.ts"],"names":[],"mappings":"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","file":"record-helper.js","sourcesContent":["/* eslint-disable max-depth */\nimport type { ListTable } from '../ListTable';\nimport type { CachedDataSource } from '../data';\nimport { computeColWidth } from '../scenegraph/layout/compute-col-width';\nimport { computeRowHeight } from '../scenegraph/layout/compute-row-height';\nimport { isPromise } from '../tools/helper';\nimport { defaultOrderFn } from '../tools/util';\nimport type { ListTableProtected, SortState } from '../ts-types';\nimport { TABLE_EVENT_TYPE } from './TABLE_EVENT_TYPE';\nimport { isNumber } from '@visactor/vutils';\n\n/**\n * 更改单元格数据 会触发change_cell_value事件\n * @param col\n * @param row\n * @param value 更改后的值\n * @param workOnEditableCell 限制只能更改配置了编辑器的单元格值。快捷键paste这里配置的true,限制只能修改可编辑单元格值\n * @param triggerEvent 是否在值发生改变的时候触发change_cell_value事件\n */\nexport function listTableChangeCellValue(\n col: number,\n row: number,\n value: string | number | null,\n workOnEditableCell: boolean,\n triggerEvent: boolean,\n table: ListTable\n) {\n if ((workOnEditableCell && table.isHasEditorDefine(col, row)) || workOnEditableCell === false) {\n const recordIndex = table.getRecordShowIndexByCell(col, row);\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n const beforeChangeValue = table.getCellRawValue(col, row);\n const oldValue = table.getCellOriginValue(col, row);\n if (table.isHeader(col, row)) {\n table.internalProps.layoutMap.updateColumnTitle(col, row, value as string);\n } else {\n table.dataSource.changeFieldValue(value, recordIndex, field, col, row, table);\n }\n const range = table.getCellRange(col, row);\n //改变单元格的值后 聚合值做重新计算\n const aggregators = table.internalProps.layoutMap.getAggregatorsByCell(col, row);\n if (aggregators) {\n if (Array.isArray(aggregators)) {\n for (let i = 0; i < aggregators?.length; i++) {\n aggregators[i].recalculate();\n }\n } else {\n aggregators.recalculate();\n }\n const aggregatorCells = table.internalProps.layoutMap.getAggregatorCellAddress(\n range.start.col,\n range.start.row,\n range.end.col,\n range.end.row\n );\n for (let i = 0; i < aggregatorCells.length; i++) {\n const range = table.getCellRange(aggregatorCells[i].col, aggregatorCells[i].row);\n for (let sCol = range.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = range.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n }\n }\n\n // const cell_value = table.getCellValue(col, row);\n\n for (let sCol = range.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = range.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n if (table.widthMode === 'adaptive' || (table.autoFillWidth && table.getAllColsWidth() <= table.tableNoFrameWidth)) {\n if (table.internalProps._widthResizedColMap.size === 0) {\n //如果没有手动调整过行高列宽 则重新计算一遍并重新分配\n table.scenegraph.recalculateColWidths();\n }\n } else if (!table.internalProps._widthResizedColMap.has(col)) {\n const oldWidth = table.getColWidth(col);\n const newWidth = computeColWidth(col, 0, table.rowCount - 1, table, false);\n if (newWidth !== oldWidth) {\n table.scenegraph.updateColWidth(col, newWidth - oldWidth);\n }\n }\n if (\n table.heightMode === 'adaptive' ||\n (table.autoFillHeight && table.getAllRowsHeight() <= table.tableNoFrameHeight)\n ) {\n if (table.internalProps._heightResizedRowMap.size === 0) {\n table.scenegraph.recalculateRowHeights();\n }\n } else if (table.isAutoRowHeight(row) && !table.internalProps._heightResizedRowMap.has(row)) {\n const oldHeight = table.getRowHeight(row);\n const newHeight = computeRowHeight(row, 0, table.colCount - 1, table);\n table.scenegraph.updateRowHeight(row, newHeight - oldHeight);\n }\n const changedValue = table.getCellOriginValue(col, row);\n if (oldValue !== changedValue && triggerEvent) {\n table.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, {\n col,\n row,\n rawValue: beforeChangeValue,\n currentValue: oldValue,\n changedValue\n });\n }\n table.scenegraph.updateNextFrame();\n }\n}\n/**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n * @param workOnEditableCell 是否仅更改可编辑单元格\n * @param triggerEvent 是否在值发生改变的时候触发change_cell_value事件\n */\nexport async function listTableChangeCellValues(\n startCol: number,\n startRow: number,\n values: (string | number)[][],\n workOnEditableCell: boolean,\n triggerEvent: boolean,\n table: ListTable\n): Promise<boolean[][]> {\n const changedCellResults: boolean[][] = [];\n let pasteColEnd = startCol;\n let pasteRowEnd = startRow;\n // const rowCount = values.length;\n //#region 提前组织好未更改前的数据\n const beforeChangeValues: (string | number)[][] = [];\n const oldValues: (string | number)[][] = [];\n let cellUpdateType: 'normal' | 'sort' | 'group';\n\n for (let i = 0; i < values.length; i++) {\n if (startRow + i > table.rowCount - 1) {\n break;\n }\n const rowValues = values[i];\n const rawRowValues: (string | number)[] = [];\n const oldRowValues: (string | number)[] = [];\n beforeChangeValues.push(rawRowValues);\n oldValues.push(oldRowValues);\n for (let j = 0; j < rowValues.length; j++) {\n if (startCol + j > table.colCount - 1) {\n break;\n }\n cellUpdateType = getCellUpdateType(startCol + j, startRow + i, table, cellUpdateType);\n const beforeChangeValue = table.getCellRawValue(startCol + j, startRow + i);\n rawRowValues.push(beforeChangeValue);\n const oldValue = table.getCellOriginValue(startCol + j, startRow + i);\n oldRowValues.push(oldValue);\n }\n }\n //#endregion\n for (let i = 0; i < values.length; i++) {\n if (startRow + i > table.rowCount - 1) {\n break;\n }\n changedCellResults[i] = [];\n pasteRowEnd = startRow + i;\n const rowValues = values[i];\n let thisRowPasteColEnd = startCol;\n for (let j = 0; j < rowValues.length; j++) {\n if (startCol + j > table.colCount - 1) {\n break;\n }\n thisRowPasteColEnd = startCol + j;\n let isCanChange = false;\n if (workOnEditableCell === false) {\n isCanChange = true;\n } else {\n if (table.isHasEditorDefine(startCol + j, startRow + i)) {\n const editor = table.getEditor(startCol + j, startRow + i);\n const oldValue = oldValues[i][j];\n const value = rowValues[j];\n const maybePromiseOrValue =\n editor?.validateValue?.(value, oldValue, { col: startCol + j, row: startRow + i }, table) ?? true;\n if (isPromise(maybePromiseOrValue)) {\n const validateResult = await maybePromiseOrValue;\n isCanChange =\n validateResult === true || validateResult === 'validate-exit' || validateResult === 'validate-not-exit';\n } else {\n isCanChange =\n maybePromiseOrValue === true ||\n maybePromiseOrValue === 'validate-exit' ||\n maybePromiseOrValue === 'validate-not-exit';\n }\n }\n }\n // if ((workOnEditableCell && table.isHasEditorDefine(startCol + j, startRow + i)) || workOnEditableCell === false) {\n if (isCanChange) {\n changedCellResults[i][j] = true;\n const value = rowValues[j];\n const recordIndex = table.getRecordShowIndexByCell(startCol + j, startRow + i);\n const { field } = table.internalProps.layoutMap.getBody(startCol + j, startRow + i);\n // const beforeChangeValue = table.getCellRawValue(startCol + j, startRow + i);\n // const oldValue = table.getCellOriginValue(startCol + j, startRow + i);\n const beforeChangeValue = beforeChangeValues[i][j];\n const oldValue = oldValues[i][j];\n if (table.isHeader(startCol + j, startRow + i)) {\n table.internalProps.layoutMap.updateColumnTitle(startCol + j, startRow + i, value as string);\n } else {\n table.dataSource.changeFieldValue(value, recordIndex, field, startCol + j, startRow + i, table);\n }\n const changedValue = table.getCellOriginValue(startCol + j, startRow + i);\n if (oldValue !== changedValue && triggerEvent) {\n table.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, {\n col: startCol + j,\n row: startRow + i,\n rawValue: beforeChangeValue,\n currentValue: oldValue,\n changedValue\n });\n }\n } else {\n changedCellResults[i][j] = false;\n }\n }\n pasteColEnd = Math.max(pasteColEnd, thisRowPasteColEnd);\n }\n\n // const cell_value = table.getCellValue(col, row);\n const startRange = table.getCellRange(startCol, startRow);\n const range = table.getCellRange(pasteColEnd, pasteRowEnd);\n\n //改变单元格的值后 聚合值做重新计算\n const aggregators = table.internalProps.layoutMap.getAggregatorsByCellRange(\n startRange.start.col,\n startRange.start.row,\n range.end.col,\n range.end.row\n );\n\n if (aggregators) {\n for (let i = 0; i < aggregators?.length; i++) {\n aggregators[i].recalculate();\n }\n\n if (cellUpdateType === 'normal') {\n const aggregatorCells = table.internalProps.layoutMap.getAggregatorCellAddress(\n startRange.start.col,\n startRange.start.row,\n range.end.col,\n range.end.row\n );\n for (let i = 0; i < aggregatorCells.length; i++) {\n const range = table.getCellRange(aggregatorCells[i].col, aggregatorCells[i].row);\n for (let sCol = range.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = range.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n }\n }\n }\n\n if (cellUpdateType === 'group') {\n (table.dataSource as CachedDataSource).updateRecordsForGroup([], []);\n }\n\n if (cellUpdateType === 'sort' || cellUpdateType === 'group') {\n (table.dataSource as any).sortedIndexMap.clear();\n sortRecords(table);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n return changedCellResults;\n }\n\n for (let sCol = startRange.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = startRange.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n if (table.widthMode === 'adaptive' || (table.autoFillWidth && table.getAllColsWidth() <= table.tableNoFrameWidth)) {\n if (table.internalProps._widthResizedColMap.size === 0) {\n //如果没有手动调整过行高列宽 则重新计算一遍并重新分配\n table.scenegraph.recalculateColWidths();\n }\n } else {\n for (let sCol = startCol; sCol <= range.end.col; sCol++) {\n if (!table.internalProps._widthResizedColMap.has(sCol)) {\n const oldWidth = table.getColWidth(sCol);\n const newWidth = computeColWidth(sCol, 0, table.rowCount - 1, table, false);\n if (newWidth !== oldWidth) {\n table.scenegraph.updateColWidth(sCol, newWidth - oldWidth);\n }\n }\n }\n }\n if (\n table.heightMode === 'adaptive' ||\n (table.autoFillHeight && table.getAllRowsHeight() <= table.tableNoFrameHeight)\n ) {\n table.scenegraph.recalculateRowHeights();\n } else if (table.isAutoRowHeight(startRow)) {\n const rows: number[] = [];\n const deltaYs: number[] = [];\n for (let sRow = startRow; sRow <= range.end.row; sRow++) {\n if (table.rowHeightsMap.get(sRow)) {\n // 已经计算过行高的才走更新逻辑\n const oldHeight = table.getRowHeight(sRow);\n const newHeight = computeRowHeight(sRow, 0, table.colCount - 1, table);\n rows.push(sRow);\n deltaYs.push(newHeight - oldHeight);\n }\n }\n table.scenegraph.updateRowsHeight(rows, deltaYs);\n }\n\n table.scenegraph.updateNextFrame();\n return changedCellResults;\n}\n\ntype CellUpdateType = 'normal' | 'sort' | 'group';\nfunction getCellUpdateType(\n col: number,\n row: number,\n table: ListTable,\n oldCellUpdateType: CellUpdateType | undefined\n): CellUpdateType {\n if (oldCellUpdateType === 'group') {\n return oldCellUpdateType;\n }\n if (oldCellUpdateType === 'sort' && !(table.internalProps as ListTableProtected).groupBy) {\n return oldCellUpdateType;\n }\n let cellUpdateType: CellUpdateType = 'normal';\n if ((table.internalProps as ListTableProtected).groupBy) {\n cellUpdateType = 'group';\n } else if (!table.isHeader(col, row) && (table.dataSource as any).lastOrderField) {\n const field = table.getBodyField(col, row);\n if (field === (table.dataSource as any).lastOrderField) {\n cellUpdateType = 'sort';\n }\n }\n return cellUpdateType;\n}\n\nexport function sortRecords(table: ListTable) {\n let sortState = table.sortState;\n sortState = !sortState || Array.isArray(sortState) ? sortState : [sortState];\n\n if (sortState) {\n sortState = (sortState as SortState[]).map(item => {\n item.orderFn = table._getSortFuncFromHeaderOption(undefined, item.field) ?? defaultOrderFn;\n //const hd = table.internalProps.layoutMap.headerObjects.find((col: any) => col && col.field === item.field);\n return item;\n });\n\n table.dataSource.sort(sortState);\n }\n}\n\n/**\n * 添加数据 单条数据\n * @param record 数据\n * @param recordIndex 向数据源中要插入的位置,从0开始。不设置recordIndex的话 默认追加到最后。\n * 如果设置了排序规则recordIndex无效,会自动适应排序逻辑确定插入顺序。\n * recordIndex 可以通过接口getRecordShowIndexByCell获取\n */\nexport function listTableAddRecord(record: any, recordIndex: number | number[], table: ListTable): boolean {\n try {\n // Validate input\n if (!record) {\n return false;\n }\n\n if ((table.internalProps as ListTableProtected).groupBy) {\n (table.dataSource as CachedDataSource).addRecordsForGroup?.([record], recordIndex);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if ((table.dataSource as CachedDataSource).rowHierarchyType === 'tree') {\n (table.dataSource as CachedDataSource).addRecordsForTree?.([record], recordIndex);\n\n adjustCheckBoxStateMapWithAddRecordIndex(table, recordIndex, 1);\n\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.addRecordForSorted(record);\n // 清理checkedState\n table.stateManager.checkedState.clear();\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n recordIndex = recordIndex as number;\n if (recordIndex === undefined || recordIndex > table.dataSource.sourceLength) {\n recordIndex = table.dataSource.sourceLength;\n }\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n table.dataSource.addRecord(record, recordIndex);\n adjustCheckBoxStateMapWithAddRecordIndex(table, recordIndex, 1);\n const oldRowCount = table.rowCount;\n table.refreshRowColCount();\n if (table.scenegraph.proxy.totalActualBodyRowCount === 0) {\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n return true;\n }\n const newRowCount = table.transpose ? table.colCount : table.rowCount;\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (recordIndex < endIndex) {\n //插入当前页或者前面的数据才需要更新 如果是插入的是当前页后面的数据不需要更新场景树\n if (recordIndex < endIndex - perPageCount) {\n // 如果是当页之前的数据 则整个场景树都更新\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n //如果是插入当前页数据\n const rowNum = recordIndex - (endIndex - perPageCount) + headerCount;\n if (oldRowCount - headerCount === table.pagination.perPageCount) {\n //如果当页数据是满的 则更新插入的部分行\n const updateRows = [];\n for (let row = rowNum; row < newRowCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRows)\n : table.scenegraph.updateRow([], [], updateRows);\n } else {\n //如果当页数据不是满的 则插入新数据\n const addRows = [];\n for (let row = rowNum; row < Math.min(newRowCount, rowNum + 1); row++) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], addRows, [])\n : table.scenegraph.updateRow([], addRows, []);\n }\n }\n }\n } else {\n const addRows = [];\n for (let row = recordIndex + headerCount; row < recordIndex + headerCount + 1; row++) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n const updateRows = [];\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n const bottomAggregationCount = table.internalProps.layoutMap.hasAggregationOnBottomCount;\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n for (\n let row = (table.transpose ? table.colCount : table.rowCount) - bottomAggregationCount;\n row < (table.transpose ? table.colCount : table.rowCount);\n row++\n ) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose ? table.scenegraph.updateCol([], addRows, []) : table.scenegraph.updateRow([], addRows, []);\n }\n }\n return true;\n } catch (error) {\n console.error('Error adding record:', error);\n return false;\n }\n}\n\n/**\n * 添加数据 支持多条数据\n * @param records 多条数据\n * @param recordIndex 向数据源中要插入的位置,从0开始。不设置recordIndex的话 默认追加到最后。\n * 如果设置了排序规则recordIndex无效,会自动适应排序逻辑确定插入顺序。\n * recordIndex 可以通过接口getRecordShowIndexByCell获取\n */\nexport function listTableAddRecords(records: any[], recordIndex: number | number[], table: ListTable): boolean {\n try {\n // Validate input\n if (!records || records.length === 0) {\n return false;\n }\n if ((table.internalProps as ListTableProtected).groupBy) {\n (table.dataSource as CachedDataSource).addRecordsForGroup?.(records, recordIndex);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if ((table.dataSource as CachedDataSource).rowHierarchyType === 'tree') {\n (table.dataSource as CachedDataSource).addRecordsForTree?.(records, recordIndex);\n adjustCheckBoxStateMapWithAddRecordIndex(table, recordIndex, records.length);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.addRecordsForSorted(records);\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n recordIndex = recordIndex as number;\n if (recordIndex === undefined || recordIndex > table.dataSource.sourceLength) {\n recordIndex = table.dataSource.sourceLength;\n } else if (recordIndex < 0) {\n recordIndex = 0;\n }\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n table.dataSource.addRecords(records, recordIndex);\n adjustCheckBoxStateMapWithAddRecordIndex(table, recordIndex, records.length);\n const oldRowCount = table.transpose ? table.colCount : table.rowCount;\n table.refreshRowColCount();\n if (table.scenegraph.proxy.totalActualBodyRowCount === 0) {\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n return true;\n }\n const newRowCount = table.transpose ? table.colCount : table.rowCount;\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (recordIndex < endIndex) {\n //插入当前页或者前面的数据才需要更新 如果是插入的是当前页后面的数据不需要更新场景树\n if (recordIndex < endIndex - perPageCount) {\n // 如果是当页之前的数据 则整个场景树都更新\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n //如果是插入当前页数据\n\n const rowNum = recordIndex - (endIndex - perPageCount) + headerCount;\n if (oldRowCount - headerCount === table.pagination.perPageCount) {\n //如果当页数据是满的 则更新插入的部分行\n const updateRows = [];\n for (let row = rowNum; row < newRowCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRows)\n : table.scenegraph.updateRow([], [], updateRows);\n } else {\n //如果当页数据不是满的 则插入新数据\n const addRows = [];\n for (\n let row = rowNum;\n row < Math.min(newRowCount, rowNum + (Array.isArray(records) ? records.length : 1));\n row++\n ) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], addRows, [])\n : table.scenegraph.updateRow([], addRows, []);\n }\n }\n }\n } else {\n const addRows = [];\n for (\n let row = recordIndex + headerCount;\n row < recordIndex + headerCount + (Array.isArray(records) ? records.length : 1);\n row++\n ) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n const bottomAggregationCount = table.internalProps.layoutMap.hasAggregationOnBottomCount;\n const updateRows = [];\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n for (\n let row = (table.transpose ? table.colCount : table.rowCount) - bottomAggregationCount;\n row < (table.transpose ? table.colCount : table.rowCount);\n row++\n ) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], addRows, updateRows)\n : table.scenegraph.updateRow([], addRows, updateRows);\n }\n }\n return true;\n } catch (error) {\n console.error('Error adding records:', error);\n return false;\n }\n}\n\n/**\n * 删除数据 支持多条数据\n * @param recordIndexs 要删除数据的索引(显示在body中的索引,即要修改的是body部分的第几行数据)\n */\nexport function listTableDeleteRecords(recordIndexs: number[] | number[][], table: ListTable) {\n if (recordIndexs?.length > 0) {\n if ((table.internalProps as ListTableProtected).groupBy) {\n (table.dataSource as CachedDataSource).deleteRecordsForGroup?.(recordIndexs);\n // Note: For grouped records, checkbox state adjustment is handled differently\n // The group deletion logic is more complex and may require special handling\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if ((table.dataSource as CachedDataSource).rowHierarchyType === 'tree') {\n const deletedRecordIndexs = (table.dataSource as CachedDataSource).deleteRecordsForTree?.(recordIndexs);\n if (deletedRecordIndexs.length === 0) {\n return;\n }\n for (let index = 0; index < deletedRecordIndexs.length; index++) {\n adjustCheckBoxStateMapWithDeleteRecordIndex(table, deletedRecordIndexs[index], 1);\n }\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.deleteRecordsForSorted(recordIndexs as number[]);\n // Note: For sorted records, checkbox state is cleared entirely (checkedState.clear())\n // So no need to adjust individual state mappings\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n const deletedRecordIndexs = table.dataSource.deleteRecords(recordIndexs as number[]);\n if (deletedRecordIndexs.length === 0) {\n return;\n }\n // Fix: Adjust checkbox/switch state map when deleting regular records\n for (let index = 0; index < deletedRecordIndexs.length; index++) {\n adjustCheckBoxStateMapWithDeleteRecordIndex(table, deletedRecordIndexs[index], 1);\n }\n const oldRowCount = table.transpose ? table.colCount : table.rowCount;\n table.refreshRowColCount();\n const newRowCount = table.transpose ? table.colCount : table.rowCount;\n const recordIndexsMinToMax = deletedRecordIndexs.sort((a, b) => a - b);\n const minRecordIndex = recordIndexsMinToMax[0];\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (minRecordIndex < endIndex) {\n //删除当前页或者前面的数据才需要更新 如果是删除的是当前页后面的数据不需要更新场景树\n if (minRecordIndex < endIndex - perPageCount) {\n // 如果删除包含当页之前的数据 则整个场景树都更新\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n //如果是仅删除当前页数据\n const minRowNum =\n minRecordIndex -\n (endIndex - perPageCount) +\n (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount) +\n topAggregationCount;\n //如果当页数据是满的 则更新影响的部分行\n const updateRows = [];\n const delRows = [];\n\n for (let row = minRowNum; row < newRowCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n\n if (newRowCount < oldRowCount) {\n //如果如果删除后不满 需要有删除数据\n for (let row = newRowCount; row < oldRowCount; row++) {\n if (table.transpose) {\n delRows.push({ col: row, row: 0 });\n } else {\n delRows.push({ col: 0, row });\n }\n }\n }\n table.reactCustomLayout?.clearCache();\n table.transpose\n ? table.scenegraph.updateCol(delRows, [], updateRows)\n : table.scenegraph.updateRow(delRows, [], updateRows);\n table.reactCustomLayout?.updateAllCustomCell();\n }\n }\n } else {\n const delRows = [];\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n const bottomAggregationCount = table.internalProps.layoutMap.hasAggregationOnBottomCount;\n for (let index = 0; index < recordIndexsMinToMax.length; index++) {\n const recordIndex = recordIndexsMinToMax[index];\n const rowNum = recordIndex + headerCount + topAggregationCount;\n if (table.transpose) {\n delRows.push({ col: rowNum, row: 0 });\n } else {\n delRows.push({ col: 0, row: rowNum });\n }\n }\n const updateRows = [];\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n for (\n let row = (table.transpose ? table.colCount : table.rowCount) - bottomAggregationCount;\n row < (table.transpose ? table.colCount : table.rowCount);\n row++\n ) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n\n table.reactCustomLayout?.clearCache();\n table.transpose\n ? table.scenegraph.updateCol(delRows, [], updateRows)\n : table.scenegraph.updateRow(delRows, [], updateRows);\n table.reactCustomLayout?.updateAllCustomCell();\n }\n }\n // table.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, { row });\n }\n}\n\n/**\n * 修改数据 支持多条数据\n * @param records 修改数据条目\n * @param recordIndexs 对应修改数据的索引(显示在body中的索引,即要修改的是body部分的第几行数据)\n */\nexport function listTableUpdateRecords(records: any[], recordIndexs: (number | number[])[], table: ListTable) {\n if (recordIndexs?.length > 0) {\n if ((table.internalProps as ListTableProtected).groupBy) {\n (table.dataSource as CachedDataSource).updateRecordsForGroup?.(records, recordIndexs as number[]);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if ((table.dataSource as CachedDataSource).rowHierarchyType === 'tree') {\n (table.dataSource as CachedDataSource).updateRecordsForTree?.(records, recordIndexs as number[]);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.updateRecordsForSorted(records, recordIndexs as number[]);\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n const updateRecordIndexs = table.dataSource.updateRecords(records, recordIndexs);\n if (updateRecordIndexs.length === 0) {\n return;\n }\n const bodyRowIndex = updateRecordIndexs.map(index => table.getBodyRowIndexByRecordIndex(index));\n const recordIndexsMinToMax = bodyRowIndex.sort((a, b) => a - b);\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n const updateRows = [];\n for (let index = 0; index < recordIndexsMinToMax.length; index++) {\n const recordIndex = recordIndexsMinToMax[index];\n if (recordIndex < endIndex && recordIndex >= endIndex - perPageCount) {\n const rowNum =\n recordIndex -\n (endIndex - perPageCount) +\n (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount) +\n topAggregationCount;\n updateRows.push(rowNum);\n }\n }\n if (updateRows.length >= 1) {\n const updateRowCells = [];\n for (let index = 0; index < updateRows.length; index++) {\n const updateRow = updateRows[index];\n if (table.transpose) {\n updateRowCells.push({ col: updateRow, row: 0 });\n } else {\n updateRowCells.push({ col: 0, row: updateRow });\n }\n }\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRowCells.push({ col: row, row: 0 });\n } else {\n updateRowCells.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRowCells)\n : table.scenegraph.updateRow([], [], updateRowCells);\n }\n } else {\n const updateRows = [];\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n const bottomAggregationCount = table.internalProps.layoutMap.hasAggregationOnBottomCount;\n for (let index = 0; index < recordIndexsMinToMax.length; index++) {\n const recordIndex = recordIndexsMinToMax[index];\n const rowNum = recordIndex + headerCount + topAggregationCount;\n if (table.transpose) {\n updateRows.push({ col: rowNum, row: 0 });\n } else {\n updateRows.push({ col: 0, row: rowNum });\n }\n }\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n for (\n let row = (table.transpose ? table.colCount : table.rowCount) - bottomAggregationCount;\n row < (table.transpose ? table.colCount : table.rowCount);\n row++\n ) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRows)\n : table.scenegraph.updateRow([], [], updateRows);\n }\n }\n // table.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, { row });\n }\n}\nfunction adjustCheckBoxStateMapWithDeleteRecordIndex(table: ListTable, recordIndex: number | number[], count: number) {\n const { checkedState } = table.stateManager;\n if (!checkedState) {\n return;\n }\n if (table.dataSource.rowHierarchyType === 'tree') {\n let toOperateIndexArr: number[];\n if (isNumber(recordIndex)) {\n toOperateIndexArr = [recordIndex];\n } else {\n toOperateIndexArr = recordIndex;\n }\n const toOperateIndexArrLength = toOperateIndexArr.length;\n const targetResult: { originKey: string; targetKey?: string; value: any }[] = [];\n checkedState.forEach((value, key: string) => {\n const keyArray = key.split(',');\n if (keyArray.length >= toOperateIndexArr.length) {\n //toOperateIndexArr 的增删只会影响checkedState中keyArray.length大于等于toOperateIndexArr.length的key\n // const length = Math.max(keyArray.length, toOperateIndexArr.length);\n\n for (let i = 0; i < keyArray.length; i++) {\n const toOperateIndex = toOperateIndexArr[i] ?? -1;\n const keyIndex = Number(keyArray[i]);\n if (toOperateIndex === keyIndex && i < keyArray.length - 1) {\n } else if ((toOperateIndex === keyIndex && i === keyArray.length - 1) || toOperateIndex === -1) {\n //这个条件符合则表示和toOperateIndexArr一模一样则要删除\n targetResult.push({\n originKey: key,\n value\n });\n break;\n } else if (toOperateIndex < keyIndex && i === toOperateIndexArrLength - 1) {\n keyArray[i] = (keyIndex - count).toString();\n targetResult.push({\n originKey: key,\n targetKey: keyArray.toString(),\n value\n });\n break;\n } else {\n break;\n }\n }\n }\n });\n //需要将targetResult按originKey排序进行升序排序,因为originKey是展示index的join,需要拆分后排序,如'1,0','1,0,0'要排在'0,1'及'0,1,0'后面,如'1,1','1,1,0'要排在1,0','1,0,0'后面\n targetResult.sort((a, b) => {\n const aArray = a.originKey.split(',');\n const bArray = b.originKey.split(',');\n const aLength = aArray.length;\n const bLength = bArray.length;\n const minLength = Math.min(aLength, bLength);\n for (let i = 0; i < minLength; i++) {\n const aIndex = Number(aArray[i]);\n const bIndex = Number(bArray[i]);\n if (aIndex !== bIndex) {\n return aIndex - bIndex;\n }\n }\n return aLength - bLength;\n });\n targetResult.forEach(({ originKey, targetKey, value }) => {\n checkedState.delete(originKey);\n if (targetKey) {\n checkedState.set(targetKey, value);\n }\n });\n } else {\n // For regular records, we need to adjust the data indices in the checkedState map\n // The keys are data indices from dataSource.getIndexKey(), not simple integers\n const toDelete: string[] = [];\n const toUpdate: { originKey: string; targetKey: string; value: any }[] = [];\n\n checkedState.forEach((value, key: string) => {\n const dataIndex = Number(key);\n if (!isNaN(dataIndex) && dataIndex >= (recordIndex as number)) {\n // This key needs to be adjusted\n if (dataIndex === (recordIndex as number)) {\n // This is the deleted record - mark for deletion\n toDelete.push(key);\n } else if (dataIndex > (recordIndex as number)) {\n // This record needs to be shifted down\n toUpdate.push({\n originKey: key,\n targetKey: (dataIndex - count).toString(),\n value\n });\n }\n }\n });\n\n // Apply the changes\n toDelete.forEach(key => checkedState.delete(key));\n toUpdate.forEach(({ originKey, targetKey, value }) => {\n checkedState.delete(originKey);\n checkedState.set(targetKey, value);\n });\n }\n}\n\nfunction adjustCheckBoxStateMapWithAddRecordIndex(table: ListTable, recordIndex: number | number[], count: number) {\n const { checkedState } = table.stateManager;\n if (!checkedState) {\n return;\n }\n if (table.dataSource.rowHierarchyType === 'tree') {\n let toOperateIndexArr: number[];\n if (isNumber(recordIndex)) {\n toOperateIndexArr = [recordIndex];\n } else {\n toOperateIndexArr = recordIndex;\n }\n const toOperateIndexArrLength = toOperateIndexArr.length;\n const targetResult: { originKey: string; targetKey?: string; value: any }[] = [];\n checkedState.forEach((value, key: string) => {\n const keyArray = key.split(',');\n if (keyArray.length >= toOperateIndexArr.length) {\n //toOperateIndexArr 的增删只会影响checkedState中keyArray.length大于等于toOperateIndexArr.length的key\n // const length = Math.max(keyArray.length, toOperateIndexArr.length);\n for (let i = 0; i < keyArray.length; i++) {\n const toOperateIndex = toOperateIndexArr[i] ?? -1;\n const keyIndex = Number(keyArray[i]);\n if (toOperateIndex === keyIndex && (i === keyArray.length - 1 || i === toOperateIndexArrLength - 1)) {\n //这个条件符合则表示和toOperateIndexArr一模一样\n keyArray[i] = (keyIndex + count).toString();\n targetResult.push({\n originKey: key,\n targetKey: keyArray.toString(),\n value\n });\n break;\n } else if (toOperateIndex === keyIndex && i < keyArray.length - 1) {\n } else if (toOperateIndex < keyIndex && i === toOperateIndexArrLength - 1) {\n keyArray[i] = (keyIndex + count).toString();\n targetResult.push({\n originKey: key,\n targetKey: keyArray.toString(),\n value\n });\n break;\n } else {\n break;\n }\n }\n }\n });\n //需要将targetResult按originKey排序进行降序排序,因为originKey是展示index的join,需要拆分后排序,如'1,0','1,0,0'要排在'0,1'及'0,1,0'前面,如'1,1','1,1,0'要排在1,0','1,0,0'前面\n targetResult.sort((a, b) => {\n const aArray = a.originKey.split(',');\n const bArray = b.originKey.split(',');\n const aLength = aArray.length;\n const bLength = bArray.length;\n const minLength = Math.min(aLength, bLength);\n for (let i = 0; i < minLength; i++) {\n const aIndex = Number(aArray[i]);\n const bIndex = Number(bArray[i]);\n if (aIndex !== bIndex) {\n return -aIndex + bIndex;\n }\n }\n return -aLength + bLength;\n });\n targetResult.forEach(({ originKey, targetKey, value }) => {\n checkedState.delete(originKey);\n if (targetKey) {\n checkedState.set(targetKey, value);\n }\n });\n } else {\n const length = checkedState.size;\n for (let key = length - 1; key >= (recordIndex as number); key--) {\n const record = checkedState.get(key.toString());\n checkedState.delete(key.toString());\n checkedState.set((key + count).toString(), record);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/record-helper.ts"],"names":[],"mappings":"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","file":"record-helper.js","sourcesContent":["/* eslint-disable max-depth */\nimport type { ListTable } from '../ListTable';\nimport type { CachedDataSource } from '../data';\nimport { computeColWidth } from '../scenegraph/layout/compute-col-width';\nimport { computeRowHeight } from '../scenegraph/layout/compute-row-height';\nimport { isPromise } from '../tools/helper';\nimport { defaultOrderFn } from '../tools/util';\nimport type { CellRange, ListTableProtected, SortState } from '../ts-types';\nimport { TABLE_EVENT_TYPE } from './TABLE_EVENT_TYPE';\nimport { isNumber } from '@visactor/vutils';\n\n/**\n * 更改单元格数据 会触发change_cell_value事件\n * @param col\n * @param row\n * @param value 更改后的值\n * @param workOnEditableCell 限制只能更改配置了编辑器的单元格值。快捷键paste这里配置的true,限制只能修改可编辑单元格值\n * @param triggerEvent 是否在值发生改变的时候触发change_cell_value事件\n */\nexport function listTableChangeCellValue(\n col: number,\n row: number,\n value: string | number | null,\n workOnEditableCell: boolean,\n triggerEvent: boolean,\n table: ListTable,\n silentChangeCellValuesEvent?: boolean\n) {\n if ((workOnEditableCell && table.isHasEditorDefine(col, row)) || workOnEditableCell === false) {\n const recordShowIndex = table.getRecordShowIndexByCell(col, row);\n const recordIndex = recordShowIndex >= 0 ? table.dataSource.getIndexKey(recordShowIndex) : undefined;\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n const beforeChangeValue = table.getCellRawValue(col, row);\n const oldValue = table.getCellOriginValue(col, row);\n if (table.isHeader(col, row)) {\n table.internalProps.layoutMap.updateColumnTitle(col, row, value as string);\n } else {\n table.dataSource.changeFieldValue(value, recordShowIndex, field, col, row, table);\n }\n const range = table.getCellRange(col, row);\n //改变单元格的值后 聚合值做重新计算\n const aggregators = table.internalProps.layoutMap.getAggregatorsByCell(col, row);\n if (aggregators) {\n if (Array.isArray(aggregators)) {\n for (let i = 0; i < aggregators?.length; i++) {\n aggregators[i].recalculate();\n }\n } else {\n aggregators.recalculate();\n }\n const aggregatorCells = table.internalProps.layoutMap.getAggregatorCellAddress(\n range.start.col,\n range.start.row,\n range.end.col,\n range.end.row\n );\n for (let i = 0; i < aggregatorCells.length; i++) {\n const range = table.getCellRange(aggregatorCells[i].col, aggregatorCells[i].row);\n for (let sCol = range.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = range.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n }\n }\n\n // const cell_value = table.getCellValue(col, row);\n\n for (let sCol = range.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = range.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n if (table.widthMode === 'adaptive' || (table.autoFillWidth && table.getAllColsWidth() <= table.tableNoFrameWidth)) {\n if (table.internalProps._widthResizedColMap.size === 0) {\n //如果没有手动调整过行高列宽 则重新计算一遍并重新分配\n table.scenegraph.recalculateColWidths();\n }\n } else if (!table.internalProps._widthResizedColMap.has(col)) {\n const oldWidth = table.getColWidth(col);\n const newWidth = computeColWidth(col, 0, table.rowCount - 1, table, false);\n if (newWidth !== oldWidth) {\n table.scenegraph.updateColWidth(col, newWidth - oldWidth);\n }\n }\n if (\n table.heightMode === 'adaptive' ||\n (table.autoFillHeight && table.getAllRowsHeight() <= table.tableNoFrameHeight)\n ) {\n if (table.internalProps._heightResizedRowMap.size === 0) {\n table.scenegraph.recalculateRowHeights();\n }\n } else if (table.isAutoRowHeight(row) && !table.internalProps._heightResizedRowMap.has(row)) {\n const oldHeight = table.getRowHeight(row);\n const newHeight = computeRowHeight(row, 0, table.colCount - 1, table);\n table.scenegraph.updateRowHeight(row, newHeight - oldHeight);\n }\n const changedValue = table.getCellOriginValue(col, row);\n if (oldValue !== changedValue && triggerEvent) {\n const changeValue = {\n col,\n row,\n recordIndex,\n field,\n rawValue: beforeChangeValue,\n currentValue: oldValue,\n changedValue\n };\n table.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, changeValue);\n if (!silentChangeCellValuesEvent) {\n table.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUES, { values: [changeValue] });\n }\n }\n table.scenegraph.updateNextFrame();\n }\n}\n/**\n * 批量更新多个单元格的数据\n * @param col 粘贴数据的起始列号\n * @param row 粘贴数据的起始行号\n * @param values 多个单元格的数据数组\n * @param workOnEditableCell 是否仅更改可编辑单元格\n * @param triggerEvent 是否在值发生改变的时候触发change_cell_value事件\n */\nexport async function listTableChangeCellValues(\n startCol: number,\n startRow: number,\n values: (string | number)[][],\n workOnEditableCell: boolean,\n triggerEvent: boolean,\n table: ListTable,\n silentChangeCellValuesEvent?: boolean\n): Promise<boolean[][]> {\n const changedCellResults: boolean[][] = [];\n let pasteColEnd = startCol;\n let pasteRowEnd = startRow;\n // const rowCount = values.length;\n //#region 提前组织好未更改前的数据\n const beforeChangeValues: (string | number)[][] = [];\n const oldValues: (string | number)[][] = [];\n let cellUpdateType: 'normal' | 'sort' | 'group';\n\n for (let i = 0; i < values.length; i++) {\n if (startRow + i > table.rowCount - 1) {\n break;\n }\n const rowValues = values[i];\n const rawRowValues: (string | number)[] = [];\n const oldRowValues: (string | number)[] = [];\n beforeChangeValues.push(rawRowValues);\n oldValues.push(oldRowValues);\n for (let j = 0; j < rowValues.length; j++) {\n if (startCol + j > table.colCount - 1) {\n break;\n }\n cellUpdateType = getCellUpdateType(startCol + j, startRow + i, table, cellUpdateType);\n const beforeChangeValue = table.getCellRawValue(startCol + j, startRow + i);\n rawRowValues.push(beforeChangeValue);\n const oldValue = table.getCellOriginValue(startCol + j, startRow + i);\n oldRowValues.push(oldValue);\n }\n }\n\n const resultChangeValues: {\n col: number;\n row: number;\n recordIndex?: number | number[];\n field?: any;\n rawValue: string | number;\n currentValue: string | number;\n changedValue: string | number;\n }[] = [];\n\n //#endregion\n for (let i = 0; i < values.length; i++) {\n if (startRow + i > table.rowCount - 1) {\n break;\n }\n changedCellResults[i] = [];\n pasteRowEnd = startRow + i;\n const rowValues = values[i];\n let thisRowPasteColEnd = startCol;\n for (let j = 0; j < rowValues.length; j++) {\n if (startCol + j > table.colCount - 1) {\n break;\n }\n thisRowPasteColEnd = startCol + j;\n let isCanChange = false;\n if (workOnEditableCell === false) {\n isCanChange = true;\n } else {\n if (table.isHasEditorDefine(startCol + j, startRow + i)) {\n const editor = table.getEditor(startCol + j, startRow + i);\n const oldValue = oldValues[i][j];\n const value = rowValues[j];\n const maybePromiseOrValue =\n editor?.validateValue?.(value, oldValue, { col: startCol + j, row: startRow + i }, table) ?? true;\n if (isPromise(maybePromiseOrValue)) {\n const validateResult = await maybePromiseOrValue;\n isCanChange =\n validateResult === true || validateResult === 'validate-exit' || validateResult === 'validate-not-exit';\n } else {\n isCanChange =\n maybePromiseOrValue === true ||\n maybePromiseOrValue === 'validate-exit' ||\n maybePromiseOrValue === 'validate-not-exit';\n }\n }\n }\n // if ((workOnEditableCell && table.isHasEditorDefine(startCol + j, startRow + i)) || workOnEditableCell === false) {\n if (isCanChange) {\n changedCellResults[i][j] = true;\n const value = rowValues[j];\n const recordShowIndex = table.getRecordShowIndexByCell(startCol + j, startRow + i);\n const recordIndex = recordShowIndex >= 0 ? table.dataSource.getIndexKey(recordShowIndex) : undefined;\n const { field } = table.internalProps.layoutMap.getBody(startCol + j, startRow + i);\n // const beforeChangeValue = table.getCellRawValue(startCol + j, startRow + i);\n // const oldValue = table.getCellOriginValue(startCol + j, startRow + i);\n const beforeChangeValue = beforeChangeValues[i][j];\n const oldValue = oldValues[i][j];\n if (table.isHeader(startCol + j, startRow + i)) {\n table.internalProps.layoutMap.updateColumnTitle(startCol + j, startRow + i, value as string);\n } else {\n table.dataSource.changeFieldValue(value, recordShowIndex, field, startCol + j, startRow + i, table);\n }\n const changedValue = table.getCellOriginValue(startCol + j, startRow + i);\n if (oldValue !== changedValue && triggerEvent) {\n const changeValue = {\n col: startCol + j,\n row: startRow + i,\n recordIndex,\n field,\n rawValue: beforeChangeValue,\n currentValue: oldValue,\n changedValue\n };\n table.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUE, changeValue);\n resultChangeValues.push(changeValue);\n }\n } else {\n changedCellResults[i][j] = false;\n }\n }\n pasteColEnd = Math.max(pasteColEnd, thisRowPasteColEnd);\n }\n if (!silentChangeCellValuesEvent) {\n table.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUES, { values: resultChangeValues });\n }\n\n // const cell_value = table.getCellValue(col, row);\n const startRange = table.getCellRange(startCol, startRow);\n const range = table.getCellRange(pasteColEnd, pasteRowEnd);\n\n //改变单元格的值后 聚合值做重新计算\n const aggregators = table.internalProps.layoutMap.getAggregatorsByCellRange(\n startRange.start.col,\n startRange.start.row,\n range.end.col,\n range.end.row\n );\n\n if (aggregators) {\n for (let i = 0; i < aggregators?.length; i++) {\n aggregators[i].recalculate();\n }\n\n if (cellUpdateType === 'normal') {\n const aggregatorCells = table.internalProps.layoutMap.getAggregatorCellAddress(\n startRange.start.col,\n startRange.start.row,\n range.end.col,\n range.end.row\n );\n for (let i = 0; i < aggregatorCells.length; i++) {\n const range = table.getCellRange(aggregatorCells[i].col, aggregatorCells[i].row);\n for (let sCol = range.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = range.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n }\n }\n }\n\n if (cellUpdateType === 'group') {\n (table.dataSource as CachedDataSource).updateRecordsForGroup([], []);\n }\n\n if (cellUpdateType === 'sort' || cellUpdateType === 'group') {\n (table.dataSource as any).sortedIndexMap.clear();\n sortRecords(table);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n return changedCellResults;\n }\n\n for (let sCol = startRange.start.col; sCol <= range.end.col; sCol++) {\n for (let sRow = startRange.start.row; sRow <= range.end.row; sRow++) {\n table.scenegraph.updateCellContent(sCol, sRow);\n }\n }\n if (table.widthMode === 'adaptive' || (table.autoFillWidth && table.getAllColsWidth() <= table.tableNoFrameWidth)) {\n if (table.internalProps._widthResizedColMap.size === 0) {\n //如果没有手动调整过行高列宽 则重新计算一遍并重新分配\n table.scenegraph.recalculateColWidths();\n }\n } else {\n for (let sCol = startCol; sCol <= range.end.col; sCol++) {\n if (!table.internalProps._widthResizedColMap.has(sCol)) {\n const oldWidth = table.getColWidth(sCol);\n const newWidth = computeColWidth(sCol, 0, table.rowCount - 1, table, false);\n if (newWidth !== oldWidth) {\n table.scenegraph.updateColWidth(sCol, newWidth - oldWidth);\n }\n }\n }\n }\n if (\n table.heightMode === 'adaptive' ||\n (table.autoFillHeight && table.getAllRowsHeight() <= table.tableNoFrameHeight)\n ) {\n table.scenegraph.recalculateRowHeights();\n } else if (table.isAutoRowHeight(startRow)) {\n const rows: number[] = [];\n const deltaYs: number[] = [];\n for (let sRow = startRow; sRow <= range.end.row; sRow++) {\n if (table.rowHeightsMap.get(sRow)) {\n // 已经计算过行高的才走更新逻辑\n const oldHeight = table.getRowHeight(sRow);\n const newHeight = computeRowHeight(sRow, 0, table.colCount - 1, table);\n rows.push(sRow);\n deltaYs.push(newHeight - oldHeight);\n }\n }\n table.scenegraph.updateRowsHeight(rows, deltaYs);\n }\n\n table.scenegraph.updateNextFrame();\n return changedCellResults;\n}\n\nexport async function listTableChangeCellValuesByIds(\n ranges: CellRange[],\n value: string | number | null,\n workOnEditableCell: boolean,\n triggerEvent: boolean,\n table: ListTable,\n silentChangeCellValuesEvent?: boolean\n) {\n const resultChangeValues: {\n col: number;\n row: number;\n recordIndex?: number | number[];\n field?: any;\n rawValue: string | number;\n currentValue: string | number;\n changedValue: string | number;\n }[] = [];\n\n const processed = new Set<string>();\n const nextValue = (value ?? '') as string | number;\n\n for (let i = 0; i < (ranges?.length ?? 0); i++) {\n const range = ranges[i];\n const startCol = Math.min(range.start.col, range.end.col);\n const endCol = Math.max(range.start.col, range.end.col);\n const startRow = Math.min(range.start.row, range.end.row);\n const endRow = Math.max(range.start.row, range.end.row);\n\n if (startCol > endCol || startRow > endRow) {\n continue;\n }\n\n const values: (string | number)[][] = [];\n const oldValues: (string | number)[][] = [];\n for (let row = startRow; row <= endRow; row++) {\n const rowValues: (string | number)[] = [];\n const rowOldValues: (string | number)[] = [];\n for (let col = startCol; col <= endCol; col++) {\n rowValues.push(nextValue);\n rowOldValues.push(table.getCellOriginValue(col, row));\n }\n values.push(rowValues);\n oldValues.push(rowOldValues);\n }\n\n const changedCellResults = await listTableChangeCellValues(\n startCol,\n startRow,\n values,\n workOnEditableCell,\n triggerEvent,\n table,\n true\n );\n\n for (let r = 0; r < values.length; r++) {\n for (let c = 0; c < values[r].length; c++) {\n const col = startCol + c;\n const row = startRow + r;\n const key = `${col},${row}`;\n if (processed.has(key)) {\n continue;\n }\n processed.add(key);\n\n if (!triggerEvent || !changedCellResults?.[r]?.[c]) {\n continue;\n }\n\n const oldValue = oldValues[r][c];\n const changedValue = table.getCellOriginValue(col, row);\n if (oldValue === changedValue) {\n continue;\n }\n\n const recordShowIndex = table.getRecordShowIndexByCell(col, row);\n const recordIndex = recordShowIndex >= 0 ? table.dataSource.getIndexKey(recordShowIndex) : undefined;\n const { field } = table.internalProps.layoutMap.getBody(col, row);\n resultChangeValues.push({\n col,\n row,\n recordIndex,\n field,\n rawValue: oldValue,\n currentValue: oldValue,\n changedValue\n });\n }\n }\n }\n\n if (!silentChangeCellValuesEvent && triggerEvent) {\n table.fireListeners(TABLE_EVENT_TYPE.CHANGE_CELL_VALUES, { values: resultChangeValues });\n }\n}\n\ntype CellUpdateType = 'normal' | 'sort' | 'group';\nfunction getCellUpdateType(\n col: number,\n row: number,\n table: ListTable,\n oldCellUpdateType: CellUpdateType | undefined\n): CellUpdateType {\n if (oldCellUpdateType === 'group') {\n return oldCellUpdateType;\n }\n if (oldCellUpdateType === 'sort' && !(table.internalProps as ListTableProtected).groupBy) {\n return oldCellUpdateType;\n }\n let cellUpdateType: CellUpdateType = 'normal';\n if ((table.internalProps as ListTableProtected).groupBy) {\n cellUpdateType = 'group';\n } else if (!table.isHeader(col, row) && (table.dataSource as any).lastOrderField) {\n const field = table.getBodyField(col, row);\n if (field === (table.dataSource as any).lastOrderField) {\n cellUpdateType = 'sort';\n }\n }\n return cellUpdateType;\n}\n\nexport function sortRecords(table: ListTable) {\n let sortState = table.sortState;\n sortState = !sortState || Array.isArray(sortState) ? sortState : [sortState];\n\n if (sortState) {\n sortState = (sortState as SortState[]).map(item => {\n item.orderFn = table._getSortFuncFromHeaderOption(undefined, item.field) ?? defaultOrderFn;\n //const hd = table.internalProps.layoutMap.headerObjects.find((col: any) => col && col.field === item.field);\n return item;\n });\n\n table.dataSource.sort(sortState);\n }\n}\n\n/**\n * 添加数据 单条数据\n * @param record 数据\n * @param recordIndex 向数据源中要插入的位置,从0开始。不设置recordIndex的话 默认追加到最后。\n * 如果设置了排序规则recordIndex无效,会自动适应排序逻辑确定插入顺序。\n * recordIndex 可以通过接口getRecordShowIndexByCell获取\n */\nexport function listTableAddRecord(record: any, recordIndex: number | number[], table: ListTable): boolean {\n try {\n // Validate input\n if (!record) {\n return false;\n }\n\n if ((table.internalProps as ListTableProtected).groupBy) {\n (table.dataSource as CachedDataSource).addRecordsForGroup?.([record], recordIndex);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if ((table.dataSource as CachedDataSource).rowHierarchyType === 'tree') {\n (table.dataSource as CachedDataSource).addRecordsForTree?.([record], recordIndex);\n\n adjustCheckBoxStateMapWithAddRecordIndex(table, recordIndex, 1);\n\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.addRecordForSorted(record);\n // 清理checkedState\n table.stateManager.checkedState.clear();\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n recordIndex = recordIndex as number;\n if (recordIndex === undefined || recordIndex > table.dataSource.sourceLength) {\n recordIndex = table.dataSource.sourceLength;\n }\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n table.dataSource.addRecord(record, recordIndex);\n adjustCheckBoxStateMapWithAddRecordIndex(table, recordIndex, 1);\n const oldRowCount = table.rowCount;\n table.refreshRowColCount();\n if (table.scenegraph.proxy.totalActualBodyRowCount === 0) {\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n return true;\n }\n const newRowCount = table.transpose ? table.colCount : table.rowCount;\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (recordIndex < endIndex) {\n //插入当前页或者前面的数据才需要更新 如果是插入的是当前页后面的数据不需要更新场景树\n if (recordIndex < endIndex - perPageCount) {\n // 如果是当页之前的数据 则整个场景树都更新\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n //如果是插入当前页数据\n const rowNum = recordIndex - (endIndex - perPageCount) + headerCount;\n if (oldRowCount - headerCount === table.pagination.perPageCount) {\n //如果当页数据是满的 则更新插入的部分行\n const updateRows = [];\n for (let row = rowNum; row < newRowCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRows)\n : table.scenegraph.updateRow([], [], updateRows);\n } else {\n //如果当页数据不是满的 则插入新数据\n const addRows = [];\n for (let row = rowNum; row < Math.min(newRowCount, rowNum + 1); row++) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], addRows, [])\n : table.scenegraph.updateRow([], addRows, []);\n }\n }\n }\n } else {\n const addRows = [];\n for (let row = recordIndex + headerCount; row < recordIndex + headerCount + 1; row++) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n const updateRows = [];\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n const bottomAggregationCount = table.internalProps.layoutMap.hasAggregationOnBottomCount;\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n for (\n let row = (table.transpose ? table.colCount : table.rowCount) - bottomAggregationCount;\n row < (table.transpose ? table.colCount : table.rowCount);\n row++\n ) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose ? table.scenegraph.updateCol([], addRows, []) : table.scenegraph.updateRow([], addRows, []);\n }\n }\n return true;\n } catch (error) {\n console.error('Error adding record:', error);\n return false;\n }\n}\n\n/**\n * 添加数据 支持多条数据\n * @param records 多条数据\n * @param recordIndex 向数据源中要插入的位置,从0开始。不设置recordIndex的话 默认追加到最后。\n * 如果设置了排序规则recordIndex无效,会自动适应排序逻辑确定插入顺序。\n * recordIndex 可以通过接口getRecordShowIndexByCell获取\n */\nexport function listTableAddRecords(records: any[], recordIndex: number | number[], table: ListTable): boolean {\n try {\n // Validate input\n if (!records || records.length === 0) {\n return false;\n }\n if ((table.internalProps as ListTableProtected).groupBy) {\n (table.dataSource as CachedDataSource).addRecordsForGroup?.(records, recordIndex);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if ((table.dataSource as CachedDataSource).rowHierarchyType === 'tree') {\n (table.dataSource as CachedDataSource).addRecordsForTree?.(records, recordIndex);\n adjustCheckBoxStateMapWithAddRecordIndex(table, recordIndex, records.length);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.addRecordsForSorted(records);\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n recordIndex = recordIndex as number;\n if (recordIndex === undefined || recordIndex > table.dataSource.sourceLength) {\n recordIndex = table.dataSource.sourceLength;\n } else if (recordIndex < 0) {\n recordIndex = 0;\n }\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n table.dataSource.addRecords(records, recordIndex);\n adjustCheckBoxStateMapWithAddRecordIndex(table, recordIndex, records.length);\n const oldRowCount = table.transpose ? table.colCount : table.rowCount;\n table.refreshRowColCount();\n if (table.scenegraph.proxy.totalActualBodyRowCount === 0) {\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n return true;\n }\n const newRowCount = table.transpose ? table.colCount : table.rowCount;\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (recordIndex < endIndex) {\n //插入当前页或者前面的数据才需要更新 如果是插入的是当前页后面的数据不需要更新场景树\n if (recordIndex < endIndex - perPageCount) {\n // 如果是当页之前的数据 则整个场景树都更新\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n //如果是插入当前页数据\n\n const rowNum = recordIndex - (endIndex - perPageCount) + headerCount;\n if (oldRowCount - headerCount === table.pagination.perPageCount) {\n //如果当页数据是满的 则更新插入的部分行\n const updateRows = [];\n for (let row = rowNum; row < newRowCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRows)\n : table.scenegraph.updateRow([], [], updateRows);\n } else {\n //如果当页数据不是满的 则插入新数据\n const addRows = [];\n for (\n let row = rowNum;\n row < Math.min(newRowCount, rowNum + (Array.isArray(records) ? records.length : 1));\n row++\n ) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], addRows, [])\n : table.scenegraph.updateRow([], addRows, []);\n }\n }\n }\n } else {\n const addRows = [];\n for (\n let row = recordIndex + headerCount;\n row < recordIndex + headerCount + (Array.isArray(records) ? records.length : 1);\n row++\n ) {\n if (table.transpose) {\n addRows.push({ col: row, row: 0 });\n } else {\n addRows.push({ col: 0, row });\n }\n }\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n const bottomAggregationCount = table.internalProps.layoutMap.hasAggregationOnBottomCount;\n const updateRows = [];\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n for (\n let row = (table.transpose ? table.colCount : table.rowCount) - bottomAggregationCount;\n row < (table.transpose ? table.colCount : table.rowCount);\n row++\n ) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], addRows, updateRows)\n : table.scenegraph.updateRow([], addRows, updateRows);\n }\n }\n return true;\n } catch (error) {\n console.error('Error adding records:', error);\n return false;\n }\n}\n\n/**\n * 删除数据 支持多条数据\n * @param recordIndexs 要删除数据的索引(显示在body中的索引,即要修改的是body部分的第几行数据)\n */\nexport function listTableDeleteRecords(recordIndexs: number[] | number[][], table: ListTable) {\n if (recordIndexs?.length > 0) {\n if ((table.internalProps as ListTableProtected).groupBy) {\n (table.dataSource as CachedDataSource).deleteRecordsForGroup?.(recordIndexs);\n // Note: For grouped records, checkbox state adjustment is handled differently\n // The group deletion logic is more complex and may require special handling\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if ((table.dataSource as CachedDataSource).rowHierarchyType === 'tree') {\n const deletedRecordIndexs = (table.dataSource as CachedDataSource).deleteRecordsForTree?.(recordIndexs);\n if (deletedRecordIndexs.length === 0) {\n return;\n }\n for (let index = 0; index < deletedRecordIndexs.length; index++) {\n adjustCheckBoxStateMapWithDeleteRecordIndex(table, deletedRecordIndexs[index], 1);\n }\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.deleteRecordsForSorted(recordIndexs as number[]);\n // Note: For sorted records, checkbox state is cleared entirely (checkedState.clear())\n // So no need to adjust individual state mappings\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n const deletedRecordIndexs = table.dataSource.deleteRecords(recordIndexs as number[]);\n if (deletedRecordIndexs.length === 0) {\n return;\n }\n // Fix: Adjust checkbox/switch state map when deleting regular records\n for (let index = 0; index < deletedRecordIndexs.length; index++) {\n adjustCheckBoxStateMapWithDeleteRecordIndex(table, deletedRecordIndexs[index], 1);\n }\n const oldRowCount = table.transpose ? table.colCount : table.rowCount;\n table.refreshRowColCount();\n const newRowCount = table.transpose ? table.colCount : table.rowCount;\n const recordIndexsMinToMax = deletedRecordIndexs.sort((a, b) => a - b);\n const minRecordIndex = recordIndexsMinToMax[0];\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (minRecordIndex < endIndex) {\n //删除当前页或者前面的数据才需要更新 如果是删除的是当前页后面的数据不需要更新场景树\n if (minRecordIndex < endIndex - perPageCount) {\n // 如果删除包含当页之前的数据 则整个场景树都更新\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n //如果是仅删除当前页数据\n const minRowNum =\n minRecordIndex -\n (endIndex - perPageCount) +\n (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount) +\n topAggregationCount;\n //如果当页数据是满的 则更新影响的部分行\n const updateRows = [];\n const delRows = [];\n\n for (let row = minRowNum; row < newRowCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n\n if (newRowCount < oldRowCount) {\n //如果如果删除后不满 需要有删除数据\n for (let row = newRowCount; row < oldRowCount; row++) {\n if (table.transpose) {\n delRows.push({ col: row, row: 0 });\n } else {\n delRows.push({ col: 0, row });\n }\n }\n }\n table.reactCustomLayout?.clearCache();\n table.transpose\n ? table.scenegraph.updateCol(delRows, [], updateRows)\n : table.scenegraph.updateRow(delRows, [], updateRows);\n table.reactCustomLayout?.updateAllCustomCell();\n }\n }\n } else {\n const delRows = [];\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n const bottomAggregationCount = table.internalProps.layoutMap.hasAggregationOnBottomCount;\n for (let index = 0; index < recordIndexsMinToMax.length; index++) {\n const recordIndex = recordIndexsMinToMax[index];\n const rowNum = recordIndex + headerCount + topAggregationCount;\n if (table.transpose) {\n delRows.push({ col: rowNum, row: 0 });\n } else {\n delRows.push({ col: 0, row: rowNum });\n }\n }\n const updateRows = [];\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n for (\n let row = (table.transpose ? table.colCount : table.rowCount) - bottomAggregationCount;\n row < (table.transpose ? table.colCount : table.rowCount);\n row++\n ) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n\n table.reactCustomLayout?.clearCache();\n table.transpose\n ? table.scenegraph.updateCol(delRows, [], updateRows)\n : table.scenegraph.updateRow(delRows, [], updateRows);\n table.reactCustomLayout?.updateAllCustomCell();\n }\n }\n // table.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, { row });\n }\n}\n\n/**\n * 修改数据 支持多条数据\n * @param records 修改数据条目\n * @param recordIndexs 对应修改数据的索引(显示在body中的索引,即要修改的是body部分的第几行数据)\n */\nexport function listTableUpdateRecords(records: any[], recordIndexs: (number | number[])[], table: ListTable) {\n if (recordIndexs?.length > 0) {\n if ((table.internalProps as ListTableProtected).groupBy) {\n (table.dataSource as CachedDataSource).updateRecordsForGroup?.(records, recordIndexs as number[]);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if ((table.dataSource as CachedDataSource).rowHierarchyType === 'tree') {\n (table.dataSource as CachedDataSource).updateRecordsForTree?.(records, recordIndexs as number[]);\n table.refreshRowColCount();\n table.internalProps.layoutMap.clearCellRangeMap();\n table.sortState && sortRecords(table);\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else if (table.sortState) {\n table.dataSource.updateRecordsForSorted(records, recordIndexs as number[]);\n sortRecords(table);\n table.refreshRowColCount();\n // 更新整个场景树\n table.scenegraph.clearCells();\n table.scenegraph.createSceneGraph();\n } else {\n const updateRecordIndexs = table.dataSource.updateRecords(records, recordIndexs);\n if (updateRecordIndexs.length === 0) {\n return;\n }\n const bodyRowIndex = updateRecordIndexs.map(index => table.getBodyRowIndexByRecordIndex(index));\n const recordIndexsMinToMax = bodyRowIndex.sort((a, b) => a - b);\n if (table.pagination) {\n const { perPageCount, currentPage } = table.pagination;\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n const updateRows = [];\n for (let index = 0; index < recordIndexsMinToMax.length; index++) {\n const recordIndex = recordIndexsMinToMax[index];\n if (recordIndex < endIndex && recordIndex >= endIndex - perPageCount) {\n const rowNum =\n recordIndex -\n (endIndex - perPageCount) +\n (table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount) +\n topAggregationCount;\n updateRows.push(rowNum);\n }\n }\n if (updateRows.length >= 1) {\n const updateRowCells = [];\n for (let index = 0; index < updateRows.length; index++) {\n const updateRow = updateRows[index];\n if (table.transpose) {\n updateRowCells.push({ col: updateRow, row: 0 });\n } else {\n updateRowCells.push({ col: 0, row: updateRow });\n }\n }\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRowCells.push({ col: row, row: 0 });\n } else {\n updateRowCells.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRowCells)\n : table.scenegraph.updateRow([], [], updateRowCells);\n }\n } else {\n const updateRows = [];\n const headerCount = table.transpose ? table.rowHeaderLevelCount : table.columnHeaderLevelCount;\n const topAggregationCount = table.internalProps.layoutMap.hasAggregationOnTopCount;\n const bottomAggregationCount = table.internalProps.layoutMap.hasAggregationOnBottomCount;\n for (let index = 0; index < recordIndexsMinToMax.length; index++) {\n const recordIndex = recordIndexsMinToMax[index];\n const rowNum = recordIndex + headerCount + topAggregationCount;\n if (table.transpose) {\n updateRows.push({ col: rowNum, row: 0 });\n } else {\n updateRows.push({ col: 0, row: rowNum });\n }\n }\n for (let row = headerCount; row < headerCount + topAggregationCount; row++) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n for (\n let row = (table.transpose ? table.colCount : table.rowCount) - bottomAggregationCount;\n row < (table.transpose ? table.colCount : table.rowCount);\n row++\n ) {\n if (table.transpose) {\n updateRows.push({ col: row, row: 0 });\n } else {\n updateRows.push({ col: 0, row });\n }\n }\n table.transpose\n ? table.scenegraph.updateCol([], [], updateRows)\n : table.scenegraph.updateRow([], [], updateRows);\n }\n }\n // table.fireListeners(TABLE_EVENT_TYPE.ADD_RECORD, { row });\n }\n}\nfunction adjustCheckBoxStateMapWithDeleteRecordIndex(table: ListTable, recordIndex: number | number[], count: number) {\n const { checkedState } = table.stateManager;\n if (!checkedState) {\n return;\n }\n if (table.dataSource.rowHierarchyType === 'tree') {\n let toOperateIndexArr: number[];\n if (isNumber(recordIndex)) {\n toOperateIndexArr = [recordIndex];\n } else {\n toOperateIndexArr = recordIndex;\n }\n const toOperateIndexArrLength = toOperateIndexArr.length;\n const targetResult: { originKey: string; targetKey?: string; value: any }[] = [];\n checkedState.forEach((value, key: string) => {\n const keyArray = key.split(',');\n if (keyArray.length >= toOperateIndexArr.length) {\n //toOperateIndexArr 的增删只会影响checkedState中keyArray.length大于等于toOperateIndexArr.length的key\n // const length = Math.max(keyArray.length, toOperateIndexArr.length);\n\n for (let i = 0; i < keyArray.length; i++) {\n const toOperateIndex = toOperateIndexArr[i] ?? -1;\n const keyIndex = Number(keyArray[i]);\n if (toOperateIndex === keyIndex && i < keyArray.length - 1) {\n } else if ((toOperateIndex === keyIndex && i === keyArray.length - 1) || toOperateIndex === -1) {\n //这个条件符合则表示和toOperateIndexArr一模一样则要删除\n targetResult.push({\n originKey: key,\n value\n });\n break;\n } else if (toOperateIndex < keyIndex && i === toOperateIndexArrLength - 1) {\n keyArray[i] = (keyIndex - count).toString();\n targetResult.push({\n originKey: key,\n targetKey: keyArray.toString(),\n value\n });\n break;\n } else {\n break;\n }\n }\n }\n });\n //需要将targetResult按originKey排序进行升序排序,因为originKey是展示index的join,需要拆分后排序,如'1,0','1,0,0'要排在'0,1'及'0,1,0'后面,如'1,1','1,1,0'要排在1,0','1,0,0'后面\n targetResult.sort((a, b) => {\n const aArray = a.originKey.split(',');\n const bArray = b.originKey.split(',');\n const aLength = aArray.length;\n const bLength = bArray.length;\n const minLength = Math.min(aLength, bLength);\n for (let i = 0; i < minLength; i++) {\n const aIndex = Number(aArray[i]);\n const bIndex = Number(bArray[i]);\n if (aIndex !== bIndex) {\n return aIndex - bIndex;\n }\n }\n return aLength - bLength;\n });\n targetResult.forEach(({ originKey, targetKey, value }) => {\n checkedState.delete(originKey);\n if (targetKey) {\n checkedState.set(targetKey, value);\n }\n });\n } else {\n // For regular records, we need to adjust the data indices in the checkedState map\n // The keys are data indices from dataSource.getIndexKey(), not simple integers\n const toDelete: string[] = [];\n const toUpdate: { originKey: string; targetKey: string; value: any }[] = [];\n\n checkedState.forEach((value, key: string) => {\n const dataIndex = Number(key);\n if (!isNaN(dataIndex) && dataIndex >= (recordIndex as number)) {\n // This key needs to be adjusted\n if (dataIndex === (recordIndex as number)) {\n // This is the deleted record - mark for deletion\n toDelete.push(key);\n } else if (dataIndex > (recordIndex as number)) {\n // This record needs to be shifted down\n toUpdate.push({\n originKey: key,\n targetKey: (dataIndex - count).toString(),\n value\n });\n }\n }\n });\n\n // Apply the changes\n toDelete.forEach(key => checkedState.delete(key));\n toUpdate.forEach(({ originKey, targetKey, value }) => {\n checkedState.delete(originKey);\n checkedState.set(targetKey, value);\n });\n }\n}\n\nfunction adjustCheckBoxStateMapWithAddRecordIndex(table: ListTable, recordIndex: number | number[], count: number) {\n const { checkedState } = table.stateManager;\n if (!checkedState) {\n return;\n }\n if (table.dataSource.rowHierarchyType === 'tree') {\n let toOperateIndexArr: number[];\n if (isNumber(recordIndex)) {\n toOperateIndexArr = [recordIndex];\n } else {\n toOperateIndexArr = recordIndex;\n }\n const toOperateIndexArrLength = toOperateIndexArr.length;\n const targetResult: { originKey: string; targetKey?: string; value: any }[] = [];\n checkedState.forEach((value, key: string) => {\n const keyArray = key.split(',');\n if (keyArray.length >= toOperateIndexArr.length) {\n //toOperateIndexArr 的增删只会影响checkedState中keyArray.length大于等于toOperateIndexArr.length的key\n // const length = Math.max(keyArray.length, toOperateIndexArr.length);\n for (let i = 0; i < keyArray.length; i++) {\n const toOperateIndex = toOperateIndexArr[i] ?? -1;\n const keyIndex = Number(keyArray[i]);\n if (toOperateIndex === keyIndex && (i === keyArray.length - 1 || i === toOperateIndexArrLength - 1)) {\n //这个条件符合则表示和toOperateIndexArr一模一样\n keyArray[i] = (keyIndex + count).toString();\n targetResult.push({\n originKey: key,\n targetKey: keyArray.toString(),\n value\n });\n break;\n } else if (toOperateIndex === keyIndex && i < keyArray.length - 1) {\n } else if (toOperateIndex < keyIndex && i === toOperateIndexArrLength - 1) {\n keyArray[i] = (keyIndex + count).toString();\n targetResult.push({\n originKey: key,\n targetKey: keyArray.toString(),\n value\n });\n break;\n } else {\n break;\n }\n }\n }\n });\n //需要将targetResult按originKey排序进行降序排序,因为originKey是展示index的join,需要拆分后排序,如'1,0','1,0,0'要排在'0,1'及'0,1,0'前面,如'1,1','1,1,0'要排在1,0','1,0,0'前面\n targetResult.sort((a, b) => {\n const aArray = a.originKey.split(',');\n const bArray = b.originKey.split(',');\n const aLength = aArray.length;\n const bLength = bArray.length;\n const minLength = Math.min(aLength, bLength);\n for (let i = 0; i < minLength; i++) {\n const aIndex = Number(aArray[i]);\n const bIndex = Number(bArray[i]);\n if (aIndex !== bIndex) {\n return -aIndex + bIndex;\n }\n }\n return -aLength + bLength;\n });\n targetResult.forEach(({ originKey, targetKey, value }) => {\n checkedState.delete(originKey);\n if (targetKey) {\n checkedState.set(targetKey, value);\n }\n });\n } else {\n const length = checkedState.size;\n for (let key = length - 1; key >= (recordIndex as number); key--) {\n const record = checkedState.get(key.toString());\n checkedState.delete(key.toString());\n checkedState.set((key + count).toString(), record);\n }\n }\n}\n"]}
|
package/es/data/DataSource.d.ts
CHANGED
|
@@ -86,6 +86,7 @@ export declare class DataSource extends EventTarget implements DataSourceAPI {
|
|
|
86
86
|
};
|
|
87
87
|
pushChildrenNode(indexKey: number | number[], hierarchyState: HierarchyState, nodeData: any): number;
|
|
88
88
|
changeFieldValue(value: FieldData, index: number, field: FieldDef, col?: number, row?: number, table?: BaseTableAPI): FieldData;
|
|
89
|
+
changeFieldValueByRecordIndex(value: FieldData, recordIndex: number | number[], field: FieldDef, table?: BaseTableAPI): FieldData;
|
|
89
90
|
cacheBeforeChangedRecord(dataIndex: number | number[], table?: BaseTableAPI): void;
|
|
90
91
|
setRecord(record: any, index: number): void;
|
|
91
92
|
addRecord(record: any, index: number): void;
|
package/es/data/DataSource.js
CHANGED
|
@@ -323,6 +323,23 @@ export class DataSource extends EventTarget {
|
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
|
+
changeFieldValueByRecordIndex(value, recordIndex, field, table) {
|
|
327
|
+
var _a, _b, _c, _d;
|
|
328
|
+
if (null === field) return;
|
|
329
|
+
if (null == recordIndex) return;
|
|
330
|
+
const rawKey = recordIndex.toString();
|
|
331
|
+
if (!this.beforeChangedRecordsMap.has(rawKey)) {
|
|
332
|
+
const rawRecords = Array.isArray(null === (_a = this.dataSourceObj) || void 0 === _a ? void 0 : _a.records) ? this.dataSourceObj.records : null, originRecord = rawRecords ? Array.isArray(recordIndex) ? getValueFromDeepArray(rawRecords, recordIndex) : rawRecords[recordIndex] : void 0;
|
|
333
|
+
this.beforeChangedRecordsMap.set(rawKey, null !== (_b = cloneDeep(originRecord, void 0, [ "vtable_gantt_linkedFrom", "vtable_gantt_linkedTo" ])) && void 0 !== _b ? _b : {});
|
|
334
|
+
}
|
|
335
|
+
if ("string" == typeof field || "number" == typeof field) {
|
|
336
|
+
const beforeChangedValue = null === (_c = this.beforeChangedRecordsMap.get(rawKey)) || void 0 === _c ? void 0 : _c[field], rawRecords = Array.isArray(null === (_d = this.dataSourceObj) || void 0 === _d ? void 0 : _d.records) ? this.dataSourceObj.records : null, record = rawRecords ? Array.isArray(recordIndex) ? getValueFromDeepArray(rawRecords, recordIndex) : rawRecords[recordIndex] : void 0;
|
|
337
|
+
let formatValue = value;
|
|
338
|
+
"number" == typeof beforeChangedValue && isAllDigits(value) && (formatValue = parseFloat(value)),
|
|
339
|
+
record ? record[field] = formatValue : rawRecords && "number" == typeof recordIndex && (rawRecords[recordIndex] = "Array" === this.addRecordRule ? [] : {},
|
|
340
|
+
rawRecords[recordIndex][field] = formatValue);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
326
343
|
cacheBeforeChangedRecord(dataIndex, table) {
|
|
327
344
|
var _a;
|
|
328
345
|
if (!this.beforeChangedRecordsMap.has(dataIndex.toString())) {
|
|
@@ -389,9 +406,14 @@ export class DataSource extends EventTarget {
|
|
|
389
406
|
}
|
|
390
407
|
}
|
|
391
408
|
adjustBeforeChangedRecordsMap(insertIndex, insertCount, type = "add") {
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
409
|
+
const delta = "add" === type ? insertCount : -insertCount, numericKeys = [];
|
|
410
|
+
this.beforeChangedRecordsMap.forEach(((_, key) => {
|
|
411
|
+
const numKey = Number(key);
|
|
412
|
+
Number.isInteger(numKey) && numKey.toString() === key && numKey >= insertIndex && numericKeys.push(numKey);
|
|
413
|
+
})), numericKeys.sort(((a, b) => "add" === type ? b - a : a - b));
|
|
414
|
+
for (let i = 0; i < numericKeys.length; i++) {
|
|
415
|
+
const key = numericKeys[i], record = this.beforeChangedRecordsMap.get(key.toString());
|
|
416
|
+
this.beforeChangedRecordsMap.delete(key.toString()), this.beforeChangedRecordsMap.set((key + delta).toString(), record);
|
|
395
417
|
}
|
|
396
418
|
}
|
|
397
419
|
deleteRecords(recordIndexs) {
|