@visactor/vtable 1.5.2-alpha.0 → 1.5.2
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/PivotChart.js +8 -8
- package/cjs/PivotChart.js.map +1 -1
- package/cjs/components/react/react-custom-layout.d.ts +8 -8
- package/cjs/components/react/react-custom-layout.js +123 -12
- package/cjs/components/react/react-custom-layout.js.map +1 -1
- package/cjs/core/BaseTable.d.ts +2 -0
- package/cjs/core/BaseTable.js +7 -1
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/utils/get-cell-position.js.map +1 -1
- package/cjs/data/DataSource.js +4 -2
- package/cjs/data/DataSource.js.map +1 -1
- package/cjs/dataset/dataset.js +3 -3
- package/cjs/dataset/dataset.js.map +1 -1
- package/cjs/edit/edit-manager.js +2 -1
- package/cjs/event/event.d.ts +3 -0
- package/cjs/event/event.js +9 -4
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/listener/container-dom.js +2 -2
- package/cjs/event/listener/container-dom.js.map +1 -1
- package/cjs/event/listener/touch.js +12 -14
- package/cjs/event/listener/touch.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/layout/chart-helper/get-axis-config.d.ts +1 -0
- package/cjs/layout/chart-helper/get-axis-config.js +27 -8
- package/cjs/layout/chart-helper/get-axis-config.js.map +1 -1
- package/cjs/layout/chart-helper/get-chart-spec.js +6 -6
- package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
- package/cjs/layout/pivot-header-layout.d.ts +15 -3
- package/cjs/layout/pivot-header-layout.js +66 -28
- package/cjs/layout/pivot-header-layout.js.map +1 -1
- package/cjs/layout/tree-helper.js +2 -2
- package/cjs/layout/tree-helper.js.map +1 -1
- package/cjs/scenegraph/component/custom.js +3 -1
- package/cjs/scenegraph/component/custom.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.js +6 -3
- package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/cjs/scenegraph/layout/compute-col-width.js +17 -11
- package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
- package/cjs/scenegraph/layout/compute-row-height.js +13 -10
- package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
- package/cjs/scenegraph/layout/update-height.js +1 -0
- package/cjs/scenegraph/layout/update-height.js.map +1 -1
- package/cjs/scenegraph/layout/update-width.js +1 -0
- package/cjs/scenegraph/layout/update-width.js.map +1 -1
- package/cjs/scenegraph/scenegraph.js +12 -2
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/scenegraph/utils/break-string.js +2 -1
- package/cjs/scenegraph/utils/break-string.js.map +1 -1
- package/cjs/tools/join.d.ts +1 -0
- package/cjs/tools/join.js +12 -0
- package/cjs/tools/join.js.map +1 -0
- package/cjs/ts-types/base-table.d.ts +4 -0
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +457 -112
- package/dist/vtable.min.js +2 -2
- package/es/PivotChart.js +9 -7
- package/es/PivotChart.js.map +1 -1
- package/es/components/react/react-custom-layout.d.ts +8 -8
- package/es/components/react/react-custom-layout.js +123 -12
- package/es/components/react/react-custom-layout.js.map +1 -1
- package/es/core/BaseTable.d.ts +2 -0
- package/es/core/BaseTable.js +7 -1
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/utils/get-cell-position.js.map +1 -1
- package/es/data/DataSource.js +4 -2
- package/es/data/DataSource.js.map +1 -1
- package/es/dataset/dataset.js +4 -2
- package/es/dataset/dataset.js.map +1 -1
- package/es/edit/edit-manager.js +2 -1
- package/es/event/event.d.ts +3 -0
- package/es/event/event.js +9 -4
- package/es/event/event.js.map +1 -1
- package/es/event/listener/container-dom.js +2 -2
- package/es/event/listener/container-dom.js.map +1 -1
- package/es/event/listener/touch.js +12 -14
- package/es/event/listener/touch.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/layout/chart-helper/get-axis-config.d.ts +1 -0
- package/es/layout/chart-helper/get-axis-config.js +25 -6
- package/es/layout/chart-helper/get-axis-config.js.map +1 -1
- package/es/layout/chart-helper/get-chart-spec.js +6 -6
- package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
- package/es/layout/pivot-header-layout.d.ts +15 -3
- package/es/layout/pivot-header-layout.js +64 -28
- package/es/layout/pivot-header-layout.js.map +1 -1
- package/es/layout/tree-helper.js +2 -2
- package/es/layout/tree-helper.js.map +1 -1
- package/es/scenegraph/component/custom.js +3 -1
- package/es/scenegraph/component/custom.js.map +1 -1
- package/es/scenegraph/group-creater/cell-helper.js +6 -3
- package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/es/scenegraph/layout/compute-col-width.js +17 -11
- package/es/scenegraph/layout/compute-col-width.js.map +1 -1
- package/es/scenegraph/layout/compute-row-height.js +13 -10
- package/es/scenegraph/layout/compute-row-height.js.map +1 -1
- package/es/scenegraph/layout/update-height.js +1 -0
- package/es/scenegraph/layout/update-height.js.map +1 -1
- package/es/scenegraph/layout/update-width.js +1 -0
- package/es/scenegraph/layout/update-width.js.map +1 -1
- package/es/scenegraph/scenegraph.js +9 -2
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/scenegraph/utils/break-string.js +2 -1
- package/es/scenegraph/utils/break-string.js.map +1 -1
- package/es/tools/join.d.ts +1 -0
- package/es/tools/join.js +6 -0
- package/es/tools/join.js.map +1 -0
- package/es/ts-types/base-table.d.ts +4 -0
- package/es/ts-types/base-table.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/utils/get-cell-position.ts"],"names":[],"mappings":"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","file":"get-cell-position.js","sourcesContent":["import type { CellAddressWithBound } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { _getTargetFrozenColAt, _getTargetFrozenRowAt } from '../tableHelper';\n\n/**\n * 根据y值计算所在行\n * @param absoluteY 相对于表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getRowAt(\n absoluteY: number,\n _this: BaseTableAPI\n): { top: number; row: number; bottom: number; height: number } {\n const frozen = _getTargetFrozenRowAt(_this as any, absoluteY);\n if (frozen) {\n return frozen;\n }\n let row = getTargetRowAt(absoluteY, _this);\n if (!row) {\n row = {\n top: -1,\n row: -1,\n bottom: -1,\n height: -1\n };\n }\n return row;\n}\n\n/**\n * 根据x值计算所在列\n * @param absoluteX 相对于表格左上角的x坐标(无滚动)\n * @returns\n */\nexport function getColAt(\n absoluteX: number,\n _this: BaseTableAPI\n): { left: number; col: number; right: number; width: number } {\n const frozen = _getTargetFrozenColAt(_this as any, absoluteX);\n if (frozen) {\n return frozen;\n }\n let col = getTargetColAt(absoluteX, _this);\n if (!col) {\n col = {\n left: -1,\n col: -1,\n right: -1,\n width: 1\n };\n }\n return col;\n}\n/**\n * 根据坐标值获取行列位置,index和rect范围\n * @param absoluteX 表格左上角的x坐标(无滚动)\n * @param absoluteY 表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getCellAt(absoluteX: number, absoluteY: number, _this: BaseTableAPI): CellAddressWithBound {\n const rowInfo = getRowAt(absoluteY, _this);\n const { row, top, bottom, height } = rowInfo;\n const colInfo = getColAt(absoluteX, _this);\n const { col, left, right, width } = colInfo;\n const rect = {\n left,\n right,\n top,\n bottom,\n width,\n height\n };\n return {\n row,\n col,\n rect\n };\n}\n\n/**\n * 根据x获取该位置所处列值\n * @param table\n * @param absoluteX 表格左上角的x坐标(无滚动)\n * @returns\n */\nexport function getTargetColAt(\n absoluteX: number,\n _this: BaseTableAPI\n): { col: number; left: number; right: number; width: number } | null {\n if (absoluteX === 0) {\n return { left: 0, col: 0, right: 0, width: 0 };\n }\n const findBefore = (\n startCol: number,\n startRight: number\n ): {\n left: number;\n col: number;\n right: number;\n width: number;\n } | null => {\n let right = startRight;\n for (let col = startCol; col >= 0; col--) {\n const width = _this.getColWidth(col);\n const left = right - width;\n if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) {\n return {\n left,\n col,\n right,\n width\n };\n }\n right = left;\n }\n return null;\n };\n const findAfter = (\n startCol: number,\n startRight: number\n ): {\n left: number;\n col: number;\n right: number;\n width: number;\n } | null => {\n let left = startRight - _this.getColWidth(startCol);\n const { colCount } = _this.internalProps;\n for (let col = startCol; col < colCount; col++) {\n const width = _this.getColWidth(col);\n const right = left + width;\n if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) {\n return {\n left,\n col,\n right,\n width\n };\n }\n left = right;\n }\n return null;\n };\n //计算这个位置处是第几行\n const candCol = computeTargetColByX(absoluteX, _this);\n const right = _this.getColsWidth(0, candCol);\n if (absoluteX >= right) {\n return findAfter(candCol, right);\n }\n return findBefore(candCol, right);\n}\n\n/**\n * 根据y获取该位置所处行值\n * @param table\n * @param absoluteX 表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getTargetRowAt(\n absoluteY: number,\n _this: BaseTableAPI\n): { row: number; top: number; bottom: number; height: number } | null {\n if (absoluteY === 0) {\n return { top: 0, row: 0, bottom: 0, height: 0 };\n }\n\n const findBefore = (\n startRow: number,\n startBottom: number\n ): {\n top: number;\n row: number;\n bottom: number;\n height: number;\n } | null => {\n let bottom = startBottom;\n for (let row = startRow; row >= 0; row--) {\n const height = _this.getRowHeight(row);\n const top = bottom - height;\n if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) {\n return {\n top,\n row,\n bottom,\n height\n };\n }\n bottom = top;\n }\n return null;\n };\n const findAfter = (\n startRow: number,\n startBottom: number\n ): {\n top: number;\n row: number;\n bottom: number;\n height: number;\n } | null => {\n let top = startBottom - _this.getRowHeight(startRow);\n const { rowCount } = _this.internalProps;\n for (let row = startRow; row < rowCount; row++) {\n const height = _this.getRowHeight(row);\n const bottom = top + height;\n if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) {\n return {\n top,\n row,\n bottom,\n height\n };\n }\n top = bottom;\n }\n return null;\n };\n // const candRow = Math.min(\n // Math.ceil(absoluteY / this.internalProps.defaultRowHeight),\n // this.rowCount - 1\n // );\n //计算这个位置处是第几行\n const candRow = computeTargetRowByY(absoluteY, _this);\n const bottom = _this.getRowsHeight(0, candRow);\n if (absoluteY >= bottom) {\n return findAfter(candRow, bottom);\n }\n return findBefore(candRow, bottom);\n}\n\n/**\n * 根据x获取右侧冻结中该位置所处列值\n * @param table\n * @param absoluteX 屏幕坐标x值\n * @returns\n */\nexport function getTargetColAtConsiderRightFrozen(\n absoluteX: number,\n isConsider: boolean,\n _this: BaseTableAPI\n): { col: number; left: number; right: number; width: number } | null {\n if (absoluteX === 0) {\n return { left: 0, col: 0, right: 0, width: 0 };\n }\n if (\n isConsider &&\n absoluteX > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&\n absoluteX < _this.tableNoFrameWidth &&\n absoluteX <= _this.getAllColsWidth()\n ) {\n for (let i = 0; i < _this.rightFrozenColCount; i++) {\n if (absoluteX > _this.tableNoFrameWidth - _this.getColsWidth(_this.colCount - i - 1, _this.colCount - 1)) {\n return {\n col: _this.colCount - i - 1,\n left: undefined,\n right: undefined,\n width: undefined\n };\n }\n }\n }\n return getTargetColAt(absoluteX, _this);\n}\n\n/**\n * 根据y获取底部冻结该位置所处行值\n * @param table\n * @param absoluteX 屏幕坐标y值\n * @returns\n */\nexport function getTargetRowAtConsiderBottomFrozen(\n absoluteY: number,\n isConsider: boolean,\n _this: BaseTableAPI\n): { row: number; top: number; bottom: number; height: number } | null {\n if (absoluteY === 0) {\n return { top: 0, row: 0, bottom: 0, height: 0 };\n }\n if (\n isConsider &&\n absoluteY > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&\n absoluteY < _this.tableNoFrameHeight\n ) {\n for (let i = 0; i < _this.rightFrozenColCount; i++) {\n if (absoluteY > _this.tableNoFrameHeight - _this.getRowsHeight(_this.rowCount - i - 1, _this.rowCount - 1)) {\n return {\n row: _this.rowCount - i - 1,\n top: undefined,\n bottom: undefined,\n height: undefined\n };\n }\n }\n }\n return getTargetRowAt(absoluteY, _this);\n}\n\n/**\n * 根据y值(包括了scroll的)计算所在行\n * @param this\n * @param absoluteY 左边y值,包含了scroll滚动距离\n * @returns\n */\nexport function computeTargetRowByY(absoluteY: number, _this: BaseTableAPI): number {\n let defaultRowHeight = _this.internalProps.defaultRowHeight;\n\n //使用二分法计算出row\n if (_this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`)) {\n defaultRowHeight = _this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`) / _this.rowCount;\n // let startRow = 0;\n // let endRow = this.rowCount - 1;\n // while (endRow - startRow > 1) {\n // const midRow = Math.floor((startRow + endRow) / 2);\n // if (absoluteY < this._rowRangeHeightsMap.get(`$0$${midRow}`)) {\n // endRow = midRow;\n // } else if (absoluteY > this._rowRangeHeightsMap.get(`$0$${midRow}`)) {\n // startRow = midRow;\n // } else {\n // return midRow;\n // }\n // }\n // return endRow;\n }\n //否则使用defaultRowHeight大约计算一个row\n return Math.min(Math.ceil(absoluteY / defaultRowHeight), _this.rowCount - 1);\n}\n\n/**\n * 根据x值(包括了scroll的)计算所在列 主要借助colRangeWidthsMap缓存来提高计算效率\n * @param this\n * @param absoluteX 左边x值,包含了scroll滚动距离\n * @returns\n */\nexport function computeTargetColByX(absoluteX: number, _this: BaseTableAPI): number {\n //使用二分法计算出col\n if (_this._colRangeWidthsMap.get(`$0$${_this.colCount - 1}`)) {\n let startCol = 0;\n let endCol = _this.colCount - 1;\n while (endCol - startCol > 1) {\n const midCol = Math.floor((startCol + endCol) / 2);\n if (absoluteX < _this._colRangeWidthsMap.get(`$0$${midCol}`)) {\n endCol = midCol;\n } else if (absoluteX > _this._colRangeWidthsMap.get(`$0$${midCol}`)) {\n startCol = midCol;\n } else {\n return midCol;\n }\n }\n return endCol;\n }\n //否则使用defaultColWidth大约计算一个col\n return Math.min(Math.ceil(absoluteX / _this.internalProps.defaultColWidth), _this.colCount - 1);\n}\n\n/**\n * 获取屏幕坐标对应的单元格信息,考虑滚动\n * @param this\n * @param relativeX 左边x值,相对于容器左上角,考虑表格滚动\n * @param relativeY 左边y值,相对于容器左上角,考虑表格滚动\n * @returns\n */\nexport function getCellAtRelativePosition(x: number, y: number, _this: BaseTableAPI): CellAddressWithBound {\n // table border and outer component\n x -= _this.tableX;\n y -= _this.tableY;\n\n // top frozen\n let topFrozen = false;\n if (y > 0 && y < _this.getFrozenRowsHeight()) {\n topFrozen = true;\n }\n\n // left frozen\n let leftFrozen = false;\n if (x > 0 && x < _this.getFrozenColsWidth()) {\n leftFrozen = true;\n }\n\n // bottom frozen\n let bottomFrozen = false;\n if (\n y > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&\n y < _this.tableNoFrameHeight &&\n y <= _this.getAllRowsHeight()\n ) {\n bottomFrozen = true;\n }\n // right frozen\n let rightFrozen = false;\n if (\n x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&\n x < _this.tableNoFrameWidth &&\n x <= _this.getAllColsWidth()\n ) {\n rightFrozen = true;\n }\n\n const colInfo = getTargetColAtConsiderRightFrozen(\n leftFrozen || rightFrozen ? x : x + _this.scrollLeft,\n rightFrozen,\n _this\n );\n const rowInfo = getTargetRowAtConsiderBottomFrozen(\n topFrozen || bottomFrozen ? y : y + _this.scrollTop,\n bottomFrozen,\n _this\n );\n if (colInfo && rowInfo) {\n const { row, top, bottom, height } = rowInfo;\n const { col, left, right, width } = colInfo;\n const rect = {\n left,\n right,\n top,\n bottom,\n width,\n height\n };\n return {\n row,\n col,\n rect\n };\n }\n return { col: -1, row: -1 };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/utils/get-cell-position.ts"],"names":[],"mappings":"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","file":"get-cell-position.js","sourcesContent":["import type { CellAddressWithBound } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { _getTargetFrozenColAt, _getTargetFrozenRowAt } from '../tableHelper';\n\n/**\n * 根据y值计算所在行\n * @param absoluteY 相对于表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getRowAt(\n absoluteY: number,\n _this: BaseTableAPI\n): { top: number; row: number; bottom: number; height: number } {\n const frozen = _getTargetFrozenRowAt(_this as any, absoluteY);\n if (frozen) {\n return frozen;\n }\n let row = getTargetRowAt(absoluteY, _this);\n if (!row) {\n row = {\n top: -1,\n row: -1,\n bottom: -1,\n height: -1\n };\n }\n return row;\n}\n\n/**\n * 根据x值计算所在列\n * @param absoluteX 相对于表格左上角的x坐标(无滚动)\n * @returns\n */\nexport function getColAt(\n absoluteX: number,\n _this: BaseTableAPI\n): { left: number; col: number; right: number; width: number } {\n const frozen = _getTargetFrozenColAt(_this as any, absoluteX);\n if (frozen) {\n return frozen;\n }\n let col = getTargetColAt(absoluteX, _this);\n if (!col) {\n col = {\n left: -1,\n col: -1,\n right: -1,\n width: 1\n };\n }\n return col;\n}\n/**\n * 根据坐标值获取行列位置,index和rect范围\n * @param absoluteX 表格左上角的x坐标(无滚动)\n * @param absoluteY 表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getCellAt(absoluteX: number, absoluteY: number, _this: BaseTableAPI): CellAddressWithBound {\n const rowInfo = getRowAt(absoluteY, _this);\n const { row, top, bottom, height } = rowInfo;\n const colInfo = getColAt(absoluteX, _this);\n const { col, left, right, width } = colInfo;\n const rect = {\n left,\n right,\n top,\n bottom,\n width,\n height\n };\n return {\n row,\n col,\n rect\n };\n}\n\n/**\n * 根据x获取该位置所处列值\n * @param table\n * @param absoluteX 表格左上角的x坐标(无滚动)\n * @returns\n */\nexport function getTargetColAt(\n absoluteX: number,\n _this: BaseTableAPI\n): { col: number; left: number; right: number; width: number } | null {\n if (absoluteX === 0) {\n return { left: 0, col: 0, right: 0, width: 0 };\n }\n const findBefore = (\n startCol: number,\n startRight: number\n ): {\n left: number;\n col: number;\n right: number;\n width: number;\n } | null => {\n let right = startRight;\n for (let col = startCol; col >= 0; col--) {\n const width = _this.getColWidth(col);\n const left = right - width;\n if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) {\n return {\n left,\n col,\n right,\n width\n };\n }\n right = left;\n }\n return null;\n };\n const findAfter = (\n startCol: number,\n startRight: number\n ): {\n left: number;\n col: number;\n right: number;\n width: number;\n } | null => {\n let left = startRight - _this.getColWidth(startCol);\n const { colCount } = _this.internalProps;\n for (let col = startCol; col < colCount; col++) {\n const width = _this.getColWidth(col);\n const right = left + width;\n if (Math.round(left) <= Math.round(absoluteX) && Math.round(absoluteX) < Math.round(right)) {\n return {\n left,\n col,\n right,\n width\n };\n }\n left = right;\n }\n return null;\n };\n //计算这个位置处是第几行\n const candCol = computeTargetColByX(absoluteX, _this);\n const right = _this.getColsWidth(0, candCol);\n if (absoluteX >= right) {\n return findAfter(candCol, right);\n }\n return findBefore(candCol, right);\n}\n\n/**\n * 根据y获取该位置所处行值\n * @param table\n * @param absoluteX 表格左上角的y坐标(无滚动)\n * @returns\n */\nexport function getTargetRowAt(\n absoluteY: number,\n _this: BaseTableAPI\n): { row: number; top: number; bottom: number; height: number } | null {\n if (absoluteY === 0) {\n return { top: 0, row: 0, bottom: 0, height: 0 };\n }\n\n const findBefore = (\n startRow: number,\n startBottom: number\n ): {\n top: number;\n row: number;\n bottom: number;\n height: number;\n } | null => {\n let bottom = startBottom;\n for (let row = startRow; row >= 0; row--) {\n const height = _this.getRowHeight(row);\n const top = bottom - height;\n if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) {\n return {\n top,\n row,\n bottom,\n height\n };\n }\n bottom = top;\n }\n return null;\n };\n const findAfter = (\n startRow: number,\n startBottom: number\n ): {\n top: number;\n row: number;\n bottom: number;\n height: number;\n } | null => {\n let top = startBottom - _this.getRowHeight(startRow);\n const { rowCount } = _this.internalProps;\n for (let row = startRow; row < rowCount; row++) {\n const height = _this.getRowHeight(row);\n const bottom = top + height;\n if (Math.round(top) <= Math.round(absoluteY) && Math.round(absoluteY) < Math.round(bottom)) {\n return {\n top,\n row,\n bottom,\n height\n };\n }\n top = bottom;\n }\n return null;\n };\n // const candRow = Math.min(\n // Math.ceil(absoluteY / this.internalProps.defaultRowHeight),\n // this.rowCount - 1\n // );\n //计算这个位置处是第几行\n const candRow = computeTargetRowByY(absoluteY, _this);\n const bottom = _this.getRowsHeight(0, candRow);\n if (absoluteY >= bottom) {\n return findAfter(candRow, bottom);\n }\n return findBefore(candRow, bottom);\n}\n\n/**\n * 根据x获取右侧冻结中该位置所处列值\n * @param table\n * @param absoluteX 屏幕坐标x值\n * @returns\n */\nexport function getTargetColAtConsiderRightFrozen(\n absoluteX: number,\n isConsider: boolean,\n _this: BaseTableAPI\n): { col: number; left: number; right: number; width: number } | null {\n if (absoluteX === 0) {\n return { left: 0, col: 0, right: 0, width: 0 };\n }\n if (\n isConsider &&\n absoluteX > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&\n absoluteX < _this.tableNoFrameWidth &&\n absoluteX <= _this.getAllColsWidth()\n ) {\n for (let i = 0; i < _this.rightFrozenColCount; i++) {\n if (absoluteX > _this.tableNoFrameWidth - _this.getColsWidth(_this.colCount - i - 1, _this.colCount - 1)) {\n return {\n col: _this.colCount - i - 1,\n left: undefined,\n right: undefined,\n width: undefined\n };\n }\n }\n }\n return getTargetColAt(absoluteX, _this);\n}\n\n/**\n * 根据y获取底部冻结该位置所处行值\n * @param table\n * @param absoluteX 屏幕坐标y值\n * @returns\n */\nexport function getTargetRowAtConsiderBottomFrozen(\n absoluteY: number,\n isConsider: boolean,\n _this: BaseTableAPI\n): { row: number; top: number; bottom: number; height: number } | null {\n if (absoluteY === 0) {\n return { top: 0, row: 0, bottom: 0, height: 0 };\n }\n if (\n isConsider &&\n absoluteY > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&\n absoluteY < _this.tableNoFrameHeight\n ) {\n for (let i = 0; i < _this.rightFrozenColCount; i++) {\n if (absoluteY > _this.tableNoFrameHeight - _this.getRowsHeight(_this.rowCount - i - 1, _this.rowCount - 1)) {\n return {\n row: _this.rowCount - i - 1,\n top: undefined,\n bottom: undefined,\n height: undefined\n };\n }\n }\n }\n return getTargetRowAt(absoluteY, _this);\n}\n\n/**\n * 根据y值(包括了scroll的)计算所在行\n * @param this\n * @param absoluteY 左边y值,包含了scroll滚动距离\n * @returns\n */\nexport function computeTargetRowByY(absoluteY: number, _this: BaseTableAPI): number {\n let defaultRowHeight = _this.internalProps.defaultRowHeight;\n\n //使用二分法计算出row\n if (_this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`)) {\n defaultRowHeight = _this._rowRangeHeightsMap.get(`$0$${_this.rowCount - 1}`) / _this.rowCount;\n // let startRow = 0;\n // let endRow = this.rowCount - 1;\n // while (endRow - startRow > 1) {\n // const midRow = Math.floor((startRow + endRow) / 2);\n // if (absoluteY < this._rowRangeHeightsMap.get(`$0$${midRow}`)) {\n // endRow = midRow;\n // } else if (absoluteY > this._rowRangeHeightsMap.get(`$0$${midRow}`)) {\n // startRow = midRow;\n // } else {\n // return midRow;\n // }\n // }\n // return endRow;\n }\n //否则使用defaultRowHeight大约计算一个row\n return Math.min(Math.ceil(absoluteY / defaultRowHeight), _this.rowCount - 1);\n}\n\n/**\n * 根据x值(包括了scroll的)计算所在列 主要借助colRangeWidthsMap缓存来提高计算效率\n * @param this\n * @param absoluteX 左边x值,包含了scroll滚动距离\n * @returns\n */\nexport function computeTargetColByX(absoluteX: number, _this: BaseTableAPI): number {\n //使用二分法计算出col\n if (_this._colRangeWidthsMap.get(`$0$${_this.colCount - 1}`)) {\n let startCol = 0;\n let endCol = _this.colCount - 1;\n while (endCol - startCol > 1) {\n const midCol = Math.floor((startCol + endCol) / 2);\n if (absoluteX < _this._colRangeWidthsMap.get(`$0$${midCol}`)) {\n endCol = midCol;\n } else if (absoluteX > _this._colRangeWidthsMap.get(`$0$${midCol}`)) {\n startCol = midCol;\n } else {\n return midCol;\n }\n }\n return endCol;\n }\n //否则使用defaultColWidth大约计算一个col\n return Math.min(Math.ceil(absoluteX / _this.internalProps.defaultColWidth), _this.colCount - 1);\n}\n\n/**\n * 获取屏幕坐标对应的单元格信息,考虑滚动\n * @param this\n * @param relativeX 左边x值,相对于容器左上角,考虑表格滚动\n * @param relativeY 左边y值,相对于容器左上角,考虑表格滚动\n * @returns\n */\nexport function getCellAtRelativePosition(x: number, y: number, _this: BaseTableAPI): CellAddressWithBound {\n // table border and outer component\n x -= _this.tableX;\n y -= _this.tableY;\n\n // top frozen\n let topFrozen = false;\n if (y > 0 && y < _this.getFrozenRowsHeight()) {\n topFrozen = true;\n }\n\n // left frozen\n let leftFrozen = false;\n if (x > 0 && x < _this.getFrozenColsWidth()) {\n leftFrozen = true;\n }\n\n // bottom frozen\n let bottomFrozen = false;\n if (\n y > _this.tableNoFrameHeight - _this.getBottomFrozenRowsHeight() &&\n y < _this.tableNoFrameHeight &&\n y <= _this.getAllRowsHeight()\n ) {\n bottomFrozen = true;\n }\n // right frozen\n let rightFrozen = false;\n if (\n x > _this.tableNoFrameWidth - _this.getRightFrozenColsWidth() &&\n x < _this.tableNoFrameWidth &&\n x <= _this.getAllColsWidth()\n ) {\n rightFrozen = true;\n }\n\n const colInfo = getTargetColAtConsiderRightFrozen(\n leftFrozen || rightFrozen ? x : x + _this.scrollLeft,\n rightFrozen,\n _this\n );\n const rowInfo = getTargetRowAtConsiderBottomFrozen(\n topFrozen || bottomFrozen ? y : y + _this.scrollTop,\n bottomFrozen,\n _this\n );\n\n if (colInfo && rowInfo) {\n const { row, top, bottom, height } = rowInfo;\n const { col, left, right, width } = colInfo;\n const rect = {\n left,\n right,\n top,\n bottom,\n width,\n height\n };\n return {\n row,\n col,\n rect\n };\n }\n return { col: -1, row: -1 };\n}\n"]}
|
package/cjs/data/DataSource.js
CHANGED
|
@@ -305,11 +305,12 @@ class DataSource extends EventTarget_1.EventTarget {
|
|
|
305
305
|
return childrenLength;
|
|
306
306
|
}
|
|
307
307
|
changeFieldValue(value, index, field, col, row, table) {
|
|
308
|
+
var _a;
|
|
308
309
|
if (null !== field && index >= 0) {
|
|
309
310
|
const dataIndex = this.getIndexKey(index);
|
|
310
311
|
if (!this.beforeChangedRecordsMap[dataIndex]) {
|
|
311
312
|
const originRecord = this.getOriginalRecord(dataIndex);
|
|
312
|
-
this.beforeChangedRecordsMap[dataIndex] = (0, vutils_1.cloneDeep)(originRecord);
|
|
313
|
+
this.beforeChangedRecordsMap[dataIndex] = null !== (_a = (0, vutils_1.cloneDeep)(originRecord)) && void 0 !== _a ? _a : {};
|
|
313
314
|
}
|
|
314
315
|
if ("string" == typeof field || "number" == typeof field) {
|
|
315
316
|
const beforeChangedValue = this.beforeChangedRecordsMap[dataIndex][field], record = this.getOriginalRecord(dataIndex);
|
|
@@ -317,7 +318,8 @@ class DataSource extends EventTarget_1.EventTarget {
|
|
|
317
318
|
"number" == typeof beforeChangedValue && (0, util_1.isAllDigits)(value) && (formatValue = parseFloat(value)),
|
|
318
319
|
(0, helper_1.isPromise)(record) ? record.then((record => {
|
|
319
320
|
record[field] = formatValue;
|
|
320
|
-
})).catch((err => {})) : record[field] = formatValue
|
|
321
|
+
})).catch((err => {})) : record ? record[field] = formatValue : (this.records[dataIndex] = {},
|
|
322
|
+
this.records[dataIndex][field] = formatValue);
|
|
321
323
|
}
|
|
322
324
|
}
|
|
323
325
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/DataSource.ts"],"names":[],"mappings":"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","file":"DataSource.js","sourcesContent":["import * as sort from '../tools/sort';\nimport type {\n CustomAggregation,\n DataSourceAPI,\n FieldAssessor,\n FieldData,\n FieldDef,\n FieldFormat,\n FilterRules,\n IListTableDataConfig,\n IPagination,\n MaybePromiseOrCallOrUndefined,\n MaybePromiseOrUndefined,\n SortOrder\n} from '../ts-types';\nimport { AggregationType, HierarchyState } from '../ts-types';\nimport { applyChainSafe, getOrApply, obj, isPromise, emptyFn } from '../tools/helper';\nimport { EventTarget } from '../event/EventTarget';\nimport { getValueByPath, isAllDigits } from '../tools/util';\nimport { calculateArrayDiff } from '../tools/diff-cell';\nimport { arrayEqual, cloneDeep, isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport {\n RecordAggregator,\n type Aggregator,\n SumAggregator,\n CountAggregator,\n MaxAggregator,\n MinAggregator,\n AvgAggregator,\n NoneAggregator,\n CustomAggregator\n} from '../dataset/statistics-helper';\nimport type { ColumnData } from '../ts-types/list-table/layout-map/api';\n\n/**\n * 判断字段数据是否为访问器的格式\n * @param field\n * @returns boolean\n */\nfunction isFieldAssessor(field: FieldDef | FieldFormat | number): field is FieldAssessor {\n if (obj.isObject(field)) {\n const a = field as FieldAssessor;\n if (isValid(a.get) && isValid(a.set)) {\n return true;\n }\n }\n return false;\n}\nconst EVENT_TYPE = {\n SOURCE_LENGTH_UPDATE: 'source_length_update',\n CHANGE_ORDER: 'change_order'\n} as const;\ntype PromiseBack = (value: MaybePromiseOrUndefined) => void;\n\n/**\n * 获取到的某个filed的值 处理可能为promise的情况\n * @param value\n * @param promiseCallBack\n * @returns\n */\nfunction getValue(value: MaybePromiseOrCallOrUndefined, promiseCallBack: PromiseBack): MaybePromiseOrUndefined {\n const maybePromiseOrValue = getOrApply(value);\n if (isPromise(maybePromiseOrValue)) {\n const promiseValue = maybePromiseOrValue.then((r: any) => {\n promiseCallBack(r);\n return r;\n });\n\n promiseCallBack(promiseValue);\n return promiseValue;\n }\n return maybePromiseOrValue;\n}\n/**\n * 根据field获取数据源record对应的值 获取到的可能是个异步Promise 需要设置回调处理逻辑\n * @param record\n * @param field\n * @param promiseCallBack\n * @returns\n */\nexport function getField(\n record: MaybePromiseOrUndefined,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI,\n promiseCallBack: PromiseBack\n): FieldData {\n if (record === null || record === undefined) {\n return undefined;\n }\n if (isPromise(record)) {\n return record.then((r: any) => getField(r, field, col, row, table, promiseCallBack));\n }\n const fieldGet: any = isFieldAssessor(field) ? field.get : field;\n if (fieldGet in (record as any)) {\n const fieldResult = (record as any)[fieldGet];\n\n return getValue(fieldResult, promiseCallBack);\n }\n if (typeof fieldGet === 'function') {\n const fieldResult = fieldGet(record, col, row, table);\n return getValue(fieldResult, promiseCallBack);\n }\n if (Array.isArray(fieldGet)) {\n const fieldResult = getValueByPath(record, [...fieldGet]);\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldArray = `${fieldGet}`.split('.');\n if (fieldArray.length <= 1) {\n const fieldResult = (record as any)[fieldGet];\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldResult = applyChainSafe(\n record,\n (val, name) => getField(val, name, col, row, table, emptyFn as any),\n ...fieldArray\n );\n return getValue(fieldResult, promiseCallBack);\n}\n\nfunction _getIndex(sortedIndexMap: null | (number | number[])[], index: number): number | number[] {\n if (!sortedIndexMap) {\n return index;\n }\n const mapIndex = sortedIndexMap[index];\n return isValid(mapIndex) ? mapIndex : index;\n}\n\nexport interface DataSourceParam {\n get: (index: number) => any;\n length: number;\n /** 需要异步加载的情况 请不要设置records */\n records?: any;\n added?: (index: number, count: number) => any;\n deleted?: (index: number[]) => any;\n}\nexport interface ISortedMapItem {\n asc?: (number | number[])[];\n desc?: (number | number[])[];\n normal?: (number | number[])[];\n}\n\nexport class DataSource extends EventTarget implements DataSourceAPI {\n dataConfig: IListTableDataConfig;\n dataSourceObj: DataSourceParam | DataSource;\n private _get: (index: number | number[]) => any;\n /** 数据条目数 如果是树形结构的数据 则是第一层父节点的数量 */\n private _sourceLength: number;\n\n private _source: any[] | DataSourceParam | DataSource;\n /**\n * 缓存按字段进行排序的结果\n */\n protected sortedIndexMap: Map<FieldDef, ISortedMapItem>;\n /**\n * 记录最近一次排序规则 当展开树形结构的节点时需要用到\n */\n private lastOrder: SortOrder;\n private lastOrderFn: (a: any, b: any, order: string) => number;\n private lastOrderField: FieldDef;\n /** 每一行对应源数据的索引 */\n currentIndexedData: (number | number[])[] | null = [];\n protected userPagination: IPagination;\n protected pagination: IPagination;\n /** 当前页每一行对应源数据的索引 */\n _currentPagerIndexedData: (number | number[])[];\n // 当前是否为层级的树形结构 排序时判断该值确实是否继续进行子节点排序\n hierarchyExpandLevel: number = 0;\n static get EVENT_TYPE(): typeof EVENT_TYPE {\n return EVENT_TYPE;\n }\n hasHierarchyStateExpand: boolean = false;\n // treeDataHierarchyState: Map<number | string, HierarchyState> = new Map();\n beforeChangedRecordsMap: Record<number, any>[] = []; // TODO过滤后 或者排序后的对应关系\n\n // 注册聚合类型\n registedAggregators: {\n [key: string]: {\n new (config: {\n dimension: string | string[];\n formatFun?: any;\n isRecord?: boolean;\n aggregationFun?: Function;\n }): Aggregator;\n };\n } = {};\n rowHierarchyType: 'grid' | 'tree';\n // columns对应各个字段的聚合类对象\n fieldAggregators: Aggregator[] = [];\n layoutColumnObjects: ColumnData[] = [];\n lastFilterRules: FilterRules;\n constructor(\n dataSourceObj?: DataSourceParam,\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columnObjs?: ColumnData[],\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ) {\n super();\n this.registerAggregators();\n this.dataSourceObj = dataSourceObj;\n this.dataConfig = dataConfig;\n this._get = dataSourceObj?.get;\n this.layoutColumnObjects = columnObjs;\n this._source = dataSourceObj?.records ? this.processRecords(dataSourceObj?.records) : dataSourceObj;\n this._sourceLength = this._source?.length || 0;\n this.sortedIndexMap = new Map<string, ISortedMapItem>();\n\n this._currentPagerIndexedData = [];\n this.userPagination = pagination;\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n if (hierarchyExpandLevel >= 1) {\n this.hierarchyExpandLevel = hierarchyExpandLevel;\n }\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n // 初始化currentIndexedData 正常未排序。设置其状态\n if (rowHierarchyType === 'tree') {\n this.initTreeHierarchyState();\n }\n this.rowHierarchyType = rowHierarchyType;\n this.updatePagerData();\n }\n initTreeHierarchyState() {\n // if (this.hierarchyExpandLevel) {\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n // if (this.hierarchyExpandLevel > 1) {\n let nodeLength = this._sourceLength;\n for (let i = 0; i < nodeLength; i++) {\n const indexKey = this.currentIndexedData[i];\n const nodeData = this.getOriginalRecord(indexKey);\n const children = (nodeData as any).filteredChildren ?? (nodeData as any).children;\n if (children?.length > 0) {\n if (this.hierarchyExpandLevel > 1) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.expand);\n } else {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n this.hasHierarchyStateExpand = true;\n if (nodeData.hierarchyState === HierarchyState.collapse) {\n continue;\n }\n const childrenLength = this.initChildrenNodeHierarchy(indexKey, this.hierarchyExpandLevel, 2, nodeData);\n i += childrenLength;\n nodeLength += childrenLength;\n } else if ((nodeData as any).children === true) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n // }\n // }\n }\n\n //将聚合类型注册 收集到aggregators\n registerAggregator(type: string, aggregator: any) {\n this.registedAggregators[type] = aggregator;\n }\n //将聚合类型注册\n registerAggregators() {\n this.registerAggregator(AggregationType.RECORD, RecordAggregator);\n this.registerAggregator(AggregationType.SUM, SumAggregator);\n this.registerAggregator(AggregationType.COUNT, CountAggregator);\n this.registerAggregator(AggregationType.MAX, MaxAggregator);\n this.registerAggregator(AggregationType.MIN, MinAggregator);\n this.registerAggregator(AggregationType.AVG, AvgAggregator);\n this.registerAggregator(AggregationType.NONE, NoneAggregator);\n this.registerAggregator(AggregationType.CUSTOM, CustomAggregator);\n }\n _generateFieldAggragations() {\n const columnObjs = this.layoutColumnObjects;\n for (let i = 0; i < columnObjs?.length; i++) {\n columnObjs[i].aggregator = null; //重置聚合器 如更新了过滤条件都需要重新计算\n const field = columnObjs[i].field;\n const aggragation = columnObjs[i].aggregation;\n if (!aggragation) {\n continue;\n }\n if (Array.isArray(aggragation)) {\n for (let j = 0; j < aggragation.length; j++) {\n const item = aggragation[j];\n const aggregator = new this.registedAggregators[item.aggregationType]({\n dimension: field as string,\n formatFun: item.formatFun,\n isRecord: true,\n aggregationFun: (item as CustomAggregation).aggregationFun\n });\n this.fieldAggregators.push(aggregator);\n if (!columnObjs[i].aggregator) {\n columnObjs[i].aggregator = [];\n }\n columnObjs[i].aggregator.push(aggregator);\n }\n } else {\n const aggregator = new this.registedAggregators[aggragation.aggregationType]({\n dimension: field as string,\n formatFun: aggragation.formatFun,\n isRecord: true,\n aggregationFun: (aggragation as CustomAggregation).aggregationFun\n });\n this.fieldAggregators.push(aggregator);\n columnObjs[i].aggregator = aggregator;\n }\n }\n }\n processRecords(records: any[]) {\n this._generateFieldAggragations();\n const filteredRecords = [];\n const isHasAggregation = this.fieldAggregators.length >= 1;\n const isHasFilterRule = this.dataConfig?.filterRules?.length >= 1 || this.lastFilterRules?.length >= 1;\n if (isHasFilterRule || isHasAggregation) {\n for (let i = 0, len = records.length; i < len; i++) {\n const record = records[i];\n if (this.dataConfig?.filterRules?.length >= 1) {\n if (this.filterRecord(record)) {\n filteredRecords.push(record);\n if (this.rowHierarchyType === 'tree' && record.children) {\n record.filteredChildren = this.filteredChildren(record.children);\n }\n isHasAggregation && this.processRecord(record);\n }\n } else if (this.lastFilterRules?.length >= 1) {\n //上次做了过滤 本次做清除过滤规则的情况\n this.clearFilteredChildren(record);\n isHasAggregation && this.processRecord(record);\n } else if (isHasAggregation) {\n this.processRecord(record);\n }\n }\n if (this.dataConfig?.filterRules?.length >= 1) {\n return filteredRecords;\n }\n }\n return records;\n }\n\n filteredChildren(records: any[]) {\n const filteredRecords = [];\n for (let i = 0, len = records.length; i < len; i++) {\n const record = records[i];\n if (this.filterRecord(record)) {\n filteredRecords.push(record);\n if (record.children) {\n record.filteredChildren = this.filteredChildren(record.children);\n }\n }\n }\n return filteredRecords;\n }\n\n processRecord(record: any) {\n for (let i = 0; i < this.fieldAggregators.length; i++) {\n const aggregator = this.fieldAggregators[i];\n aggregator.push(record);\n }\n }\n /**\n * 初始化子节点的层次信息\n * @param indexKey 父节点的indexKey 即currentLevel-1的节点\n * @param hierarchyExpandLevel 需要展开层级数\n * @param currentLevel 当前要展开的是第几层\n * @param nodeData 父节点数据 即currentLevel-1的节点\n * @returns\n */\n initChildrenNodeHierarchy(\n indexKey: number | number[],\n // subNodeIndex:number,\n hierarchyExpandLevel: number,\n currentLevel: number,\n nodeData: any\n ): number {\n // if (currentLevel > hierarchyExpandLevel) {\n // return 0;\n // }\n let childTotalLength = 0;\n const nodeLength = nodeData.filteredChildren ? nodeData.filteredChildren.length : nodeData.children?.length ?? 0;\n for (let j = 0; j < nodeLength; j++) {\n if (currentLevel <= hierarchyExpandLevel || nodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += 1;\n }\n const childNodeData = nodeData.filteredChildren ? nodeData.filteredChildren[j] : nodeData.children[j];\n const childIndexKey = Array.isArray(indexKey) ? indexKey.concat(j) : [indexKey, j];\n if (currentLevel <= hierarchyExpandLevel || nodeData.hierarchyState === HierarchyState.expand) {\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childTotalLength,\n // childTotalLength,\n 0,\n childIndexKey\n );\n }\n if (\n childNodeData.filteredChildren ? childNodeData.filteredChildren.length > 0 : childNodeData.children?.length > 0\n ) {\n if (currentLevel < hierarchyExpandLevel || childNodeData.hierarchyState === HierarchyState.expand) {\n // this.treeDataHierarchyState.set(\n // Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n // HierarchyState.expand\n // );\n !childNodeData.hierarchyState && (childNodeData.hierarchyState = HierarchyState.expand);\n this.hasHierarchyStateExpand = true;\n } else {\n // this.treeDataHierarchyState.set(\n // Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n // HierarchyState.collapse\n // );\n !childNodeData.hierarchyState && (childNodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n if (childNodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += this.initChildrenNodeHierarchy(\n childIndexKey,\n hierarchyExpandLevel,\n currentLevel + 1,\n childNodeData\n );\n }\n }\n return childTotalLength;\n }\n updatePagination(pagination?: IPagination): void {\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n this.updatePagerData();\n }\n protected updatePagerData(): void {\n const { currentIndexedData } = this;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n this._currentPagerIndexedData.length = 0;\n if (currentIndexedData && currentIndexedData.length > 0) {\n // this._currentPagerIndexedData = currentIndexedData.slice(startIndex, endIndex);\n let firstLevelIndex = -1;\n for (let i = 0; i < currentIndexedData.length; i++) {\n //计算第一层父级节点数量\n if (\n (Array.isArray(currentIndexedData[i]) && (currentIndexedData[i] as Array<number>).length === 1) ||\n !Array.isArray(currentIndexedData[i])\n ) {\n firstLevelIndex++;\n }\n if (firstLevelIndex >= startIndex && firstLevelIndex < endIndex) {\n this._currentPagerIndexedData.push(currentIndexedData[i]);\n } else if (firstLevelIndex >= endIndex) {\n break;\n }\n }\n } else if (this._sourceLength > 0) {\n throw new Error(`currentIndexedData should has values!`);\n }\n }\n\n get records(): any[] {\n return Array.isArray(this._source) ? this._source : [];\n }\n\n get source(): any[] | DataSourceParam | DataSource {\n return this._source;\n }\n get(index: number): MaybePromiseOrUndefined {\n return this.getOriginalRecord(_getIndex(this.currentPagerIndexedData, index));\n }\n getRaw(index: number): MaybePromiseOrUndefined {\n return this.getRawRecord(_getIndex(this.currentPagerIndexedData, index) as number);\n }\n getIndexKey(index: number): number | number[] {\n return _getIndex(this.currentPagerIndexedData, index);\n }\n getTableIndex(colOrRow: number | number[]): number {\n if (Array.isArray(colOrRow)) {\n return this.currentPagerIndexedData.findIndex(value => arrayEqual(value, colOrRow));\n }\n return this.currentPagerIndexedData.findIndex(value => value === colOrRow);\n }\n /** 获取数据源中第index位置的field字段数据。传入col row是因为后面的format函数参数使用*/\n getField(\n index: number,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI\n ): FieldData {\n return this.getOriginalField(_getIndex(this.currentPagerIndexedData, index), field, col, row, table);\n }\n\n getRawField(\n index: number,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI\n ): FieldData {\n return this.getRawFieldData(_getIndex(this.currentPagerIndexedData, index) as number, field, col, row, table);\n }\n\n hasField(index: number, field: FieldDef): boolean {\n return this.hasOriginalField(_getIndex(this.currentPagerIndexedData, index), field);\n }\n /**\n * 获取第index条数据的展示收起状态\n * @param index\n * @returns\n */\n getHierarchyState(index: number): HierarchyState {\n // const indexed = this.getIndexKey(index);\n const record = this.getOriginalRecord(this.currentIndexedData[index]);\n return record?.hierarchyState ?? null;\n // return this.treeDataHierarchyState.get(Array.isArray(indexed) ? indexed.join(',') : indexed) ?? null;\n }\n /**\n * 展开或者收起数据index\n * @param index\n */\n toggleHierarchyState(index: number, bodyStartIndex: number, bodyEndIndex: number) {\n const oldIndexedData = this.currentIndexedData.slice(0);\n const indexed = this.getIndexKey(index);\n const state = this.getHierarchyState(index);\n const data = this.getOriginalRecord(indexed);\n\n this.clearSortedIndexMap();\n if (state === HierarchyState.collapse) {\n // 将节点状态置为expand\n // this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.expand);\n data.hierarchyState = HierarchyState.expand;\n this.pushChildrenNode(indexed, HierarchyState.expand, data);\n this.hasHierarchyStateExpand = true;\n } else if (state === HierarchyState.expand) {\n // 记录状态变化影响的子节点行数\n let childrenLength = 0;\n /**\n * 当某个节点由展开变为折叠,需要计算出影响的节点数量 使用childrenLength来标记。同样需递归\n * @param indexKey\n * @param hierarchyState\n * @param nodeData\n * @returns\n */\n const computeChildrenNodeLength = (\n indexKey: number | number[],\n hierarchyState: HierarchyState,\n nodeData: any\n ) => {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return;\n }\n const children = nodeData.filteredChildren ? nodeData.filteredChildren : nodeData.children;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey) ? indexKey.concat([i]) : [indexKey, i];\n\n computeChildrenNodeLength(\n childIndex,\n // this.treeDataHierarchyState.get(childIndex.join(',')),\n children[i].hierarchyState,\n children[i]\n );\n }\n }\n };\n computeChildrenNodeLength(indexed, state, data);\n\n this.currentIndexedData.splice(this.currentIndexedData.indexOf(indexed) + 1, childrenLength);\n // this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.collapse);\n data.hierarchyState = HierarchyState.collapse;\n }\n // 变更了pagerConfig所以需要更新分页数据 TODO待定 因为只关注根节点的数量的话 可能不会影响到\n this.updatePagerData();\n const add = [];\n const remove = [];\n if (state === HierarchyState.collapse) {\n const addLength = this.currentIndexedData.length - oldIndexedData.length;\n for (let i = 0; i < addLength; i++) {\n add.push(index + i + 1);\n }\n } else if (state === HierarchyState.expand) {\n const removeLength = oldIndexedData.length - this.currentIndexedData.length;\n for (let i = 0; i < removeLength; i++) {\n remove.push(index + i + 1);\n }\n }\n // const newDiff = calculateArrayDiff(\n // oldIndexedData.slice(bodyStartIndex, bodyEndIndex + 1),\n // this.currentIndexedData.slice(bodyStartIndex, bodyEndIndex + 1),\n // bodyStartIndex\n // );\n // // const oldDiff = diffCellIndices(oldIndexedData, this.currentIndexedData);\n\n // // return oldDiff;\n // return newDiff;\n return { add, remove };\n }\n /**\n * 某个节点状态由折叠变为展开,往this.currentIndexedData中插入展开后的新增节点,注意需要递归,因为展开节点下面的子节点也能是展开状态\n * @param recordRowIndex 要计算节点的行号(从body部分开始计算)\n * @param indexKey 需要判断节点的index\n * @param hierarchyState 当前节点状态\n * @param nodeData 当前节点数据 取children时用\n * @returns\n */\n pushChildrenNode(indexKey: number | number[], hierarchyState: HierarchyState, nodeData: any): number {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return 0;\n }\n let childrenLength = 0;\n const children = nodeData.filteredChildren ? nodeData.filteredChildren : nodeData.children;\n if (children) {\n const subNodeSortedIndexArray: Array<number> = Array.from({ length: children.length }, (_, i) => i);\n this.lastOrder &&\n this.lastOrder !== 'normal' &&\n this.lastOrderField &&\n sort.sort(\n index =>\n isValid(subNodeSortedIndexArray[index])\n ? subNodeSortedIndexArray[index]\n : (subNodeSortedIndexArray[index] = index),\n (index, rel) => {\n subNodeSortedIndexArray[index] = rel;\n },\n children.length,\n this.lastOrderFn,\n this.lastOrder,\n index =>\n this.getOriginalField(\n Array.isArray(indexKey) ? indexKey.concat([index]) : [indexKey, index],\n this.lastOrderField\n )\n );\n for (let i = 0; i < subNodeSortedIndexArray.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey)\n ? indexKey.concat([subNodeSortedIndexArray[i]])\n : [indexKey, subNodeSortedIndexArray[i]];\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childrenLength,\n // this.pagination.currentPage * this.pagination.perPageCount +\n // recordRowIndex +\n // childrenLength,\n 0,\n childIndex\n );\n\n // const preChildState = this.treeDataHierarchyState.get(childIndex.join(','));\n const childData = this.getOriginalRecord(childIndex);\n if (!childData.hierarchyState && (childData.filteredChildren ?? childData.children)) {\n // this.treeDataHierarchyState.set(childIndex.join(','), HierarchyState.collapse);\n childData.hierarchyState = HierarchyState.collapse;\n }\n childrenLength += this.pushChildrenNode(\n childIndex,\n // this.treeDataHierarchyState.get(childIndex.join(',')),\n childData.hierarchyState,\n children[subNodeSortedIndexArray[i]]\n );\n }\n }\n return childrenLength;\n }\n changeFieldValue(\n value: FieldData,\n index: number,\n field: FieldDef,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n if (index >= 0) {\n const dataIndex = this.getIndexKey(index) as number;\n\n if (!this.beforeChangedRecordsMap[dataIndex]) {\n const originRecord = this.getOriginalRecord(dataIndex);\n this.beforeChangedRecordsMap[dataIndex] = cloneDeep(originRecord);\n }\n if (typeof field === 'string' || typeof field === 'number') {\n const beforeChangedValue = this.beforeChangedRecordsMap[dataIndex][field]; // this.getOriginalField(index, field, col, row, table);\n const record = this.getOriginalRecord(dataIndex);\n let formatValue = value;\n if (typeof beforeChangedValue === 'number' && isAllDigits(value)) {\n formatValue = parseFloat(value);\n }\n if (isPromise(record)) {\n record\n .then(record => {\n record[field] = formatValue;\n })\n .catch((err: Error) => {\n console.error('VTable Error:', err);\n });\n } else {\n record[field] = formatValue;\n }\n }\n }\n // return getField(record, field);\n }\n /**\n * 将数据record 替换到index位置处\n * @param record\n * @param index\n */\n setRecord(record: any, index: number) {\n let isAdd = true;\n if (this.dataConfig?.filterRules?.length >= 1) {\n if (this.filterRecord(record)) {\n if (this.rowHierarchyType === 'tree' && record.children) {\n record.filteredChildren = this.filteredChildren(record.children);\n }\n } else {\n isAdd = false;\n }\n }\n if (isAdd && Array.isArray(this.records)) {\n const indexed = this.getIndexKey(index);\n if (!Array.isArray(indexed)) {\n this.records.splice(indexed, 1, record);\n } else {\n // const c_node_index = (indexed as Array<any>)[indexed.length - 1];\n // const p_node = this.getOriginalRecord(indexed.slice(0, indexed.length - 1));\n // (p_node as any).children.splice(c_node_index, 1, record);\n }\n }\n }\n /**\n * 将单条数据record 添加到index位置处\n * @param record 被添加的单条数据\n * @param index 代表的数据源中的index\n */\n addRecord(record: any, index: number) {\n if (Array.isArray(this.records)) {\n this.records.splice(index, 0, record);\n this.adjustBeforeChangedRecordsMap(index, 1);\n this.currentIndexedData.push(this.currentIndexedData.length);\n this._sourceLength += 1;\n if (this.rowHierarchyType === 'tree') {\n this.initTreeHierarchyState();\n }\n if (this.userPagination) {\n //如果用户配置了分页\n this.pagination.totalCount = this._sourceLength;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (index < endIndex) {\n this.updatePagerData();\n }\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n\n if ((this.dataSourceObj as DataSourceParam)?.added) {\n (this.dataSourceObj as DataSourceParam).added(index, 1);\n }\n }\n }\n /**\n * 将多条数据recordArr 依次添加到index位置处\n * @param recordArr\n * @param index 代表的数据源中的index\n */\n addRecords(recordArr: any, index: number) {\n if (Array.isArray(this.records)) {\n if (Array.isArray(recordArr)) {\n this.records.splice(index, 0, ...recordArr);\n this.adjustBeforeChangedRecordsMap(index, recordArr.length);\n for (let i = 0; i < recordArr.length; i++) {\n this.currentIndexedData.push(this.currentIndexedData.length);\n }\n this._sourceLength += recordArr.length;\n }\n\n if (this.userPagination) {\n //如果用户配置了分页\n this.pagination.totalCount = this._sourceLength;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (index < endIndex) {\n this.updatePagerData();\n }\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n\n if ((this.dataSourceObj as DataSourceParam)?.added) {\n (this.dataSourceObj as DataSourceParam).added(index, recordArr.length);\n }\n }\n }\n\n /**\n * 将单条数据record 添加到index位置处\n * @param record 被添加的单条数据\n * @param index 代表的数据源中的index\n */\n addRecordForSorted(record: any) {\n if (Array.isArray(this.records)) {\n this.beforeChangedRecordsMap = []; // 排序情况下插入数据,很难将原index和插入新增再次排序后的新index做对应,所以这里之前先清除掉beforeChangedRecordsMap 不做维护\n this.records.push(record);\n this.currentIndexedData.push(this.currentIndexedData.length);\n this._sourceLength += 1;\n this.sortedIndexMap.clear();\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n }\n /**\n * 将多条数据recordArr 依次添加到index位置处\n * @param recordArr\n * @param index 代表的数据源中的index\n */\n addRecordsForSorted(recordArr: any) {\n if (Array.isArray(this.records)) {\n this.beforeChangedRecordsMap = []; // 排序情况下插入数据,很难将原index和插入新增再次排序后的新index做对应,所以这里之前先清除掉beforeChangedRecordsMap 不做维护\n if (Array.isArray(recordArr)) {\n this.records.push(...recordArr);\n for (let i = 0; i < recordArr.length; i++) {\n this.currentIndexedData.push(this.currentIndexedData.length);\n }\n this._sourceLength += recordArr.length;\n this.sortedIndexMap.clear();\n }\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n }\n\n adjustBeforeChangedRecordsMap(insertIndex: number, insertCount: number) {\n const length = this.beforeChangedRecordsMap.length;\n for (let key = length - 1; key >= insertIndex; key--) {\n const record = this.beforeChangedRecordsMap[key];\n delete this.beforeChangedRecordsMap[key];\n this.beforeChangedRecordsMap[key + insertCount] = record;\n }\n }\n /**\n * 删除多条数据recordIndexs\n */\n deleteRecords(recordIndexs: number[]) {\n if (Array.isArray(this.records)) {\n const realDeletedRecordIndexs = [];\n const recordIndexsMaxToMin = recordIndexs.sort((a, b) => b - a);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n delete this.beforeChangedRecordsMap[recordIndex];\n realDeletedRecordIndexs.push(recordIndex);\n this.records.splice(recordIndex, 1);\n this.currentIndexedData.pop();\n this._sourceLength -= 1;\n }\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n if ((this.dataSourceObj as DataSourceParam)?.deleted) {\n (this.dataSourceObj as DataSourceParam).deleted(realDeletedRecordIndexs);\n }\n return realDeletedRecordIndexs;\n }\n return [];\n }\n /**\n * 删除多条数据recordIndexs\n */\n deleteRecordsForSorted(recordIndexs: number[]) {\n if (Array.isArray(this.records)) {\n const recordIndexsMaxToMin = recordIndexs.sort((a, b) => b - a);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n const rawIndex = this.currentIndexedData[recordIndex] as number;\n delete this.beforeChangedRecordsMap[rawIndex];\n this.records.splice(rawIndex, 1);\n this._sourceLength -= 1;\n }\n this.sortedIndexMap.clear();\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n }\n\n /**\n * 修改多条数据recordIndexs\n */\n updateRecords(records: any[], recordIndexs: number[]) {\n const realDeletedRecordIndexs = [];\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n delete this.beforeChangedRecordsMap[recordIndex];\n realDeletedRecordIndexs.push(recordIndex);\n this.records[recordIndex] = records[index];\n }\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n }\n return realDeletedRecordIndexs;\n }\n\n /**\n * 删除多条数据recordIndexs\n */\n updateRecordsForSorted(records: any[], recordIndexs: number[]) {\n const realDeletedRecordIndexs: number[] = [];\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n const rawIndex = this.currentIndexedData[recordIndex];\n if (typeof rawIndex !== 'number') {\n return;\n }\n delete this.beforeChangedRecordsMap[rawIndex];\n realDeletedRecordIndexs.push(recordIndex);\n this.records[rawIndex] = records[index];\n }\n this.sortedIndexMap.clear();\n }\n\n sort(\n field: FieldDef,\n order: SortOrder,\n orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1 = order !== 'desc'\n ? (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 > v2 ? 1 : -1)\n : (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 < v2 ? 1 : -1)\n ): void {\n this.lastOrderField = field;\n this.lastOrder = order;\n this.lastOrderFn = orderFn;\n let filedMap = this.sortedIndexMap.get(field);\n let orderedData;\n\n if (filedMap) {\n orderedData = filedMap[order];\n if (orderedData && orderedData.length > 0) {\n this.currentIndexedData = orderedData;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n return;\n }\n }\n const sortedIndexArray = [] as number[];\n if (order === 'normal') {\n for (let i = 0; i < this._sourceLength; i++) {\n sortedIndexArray[i] = i;\n }\n } else {\n sort.sort(\n index => (isValid(sortedIndexArray[index]) ? sortedIndexArray[index] : (sortedIndexArray[index] = index)),\n (index, rel) => {\n sortedIndexArray[index] = rel;\n },\n this._sourceLength,\n orderFn,\n order,\n index => this.getOriginalField(index, field)\n );\n }\n this.currentIndexedData = sortedIndexArray;\n\n if (this.hierarchyExpandLevel) {\n let nodeLength = sortedIndexArray.length;\n const t0 = window.performance.now();\n for (let i = 0; i < nodeLength; i++) {\n const record = this.getOriginalRecord(sortedIndexArray[i]);\n const subNodeLength = this.pushChildrenNode(\n sortedIndexArray[i],\n // this.treeDataHierarchyState.get(sortedIndexArray[i]),\n record.hierarchyState,\n this.getOriginalRecord(sortedIndexArray[i]) // ?sortedIndexArray 在这个过程中不是变化了吗 通过i取id还是对的吗? 对哦!因为i和nodeLength都+subNodeLength 来动态调整过了!\n );\n nodeLength += subNodeLength;\n i += subNodeLength;\n }\n }\n if (!filedMap) {\n filedMap = { asc: [], desc: [], normal: [] };\n this.sortedIndexMap.set(field, filedMap);\n }\n filedMap[order] = sortedIndexArray;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n }\n\n setSortedIndexMap(field: FieldDef, filedMap: ISortedMapItem) {\n this.sortedIndexMap.set(field, filedMap);\n }\n\n private clearFilteredChildren(record: any) {\n record.filteredChildren = undefined;\n for (let i = 0; i < record.children?.length ?? 0; i++) {\n this.clearFilteredChildren(record.children[i]);\n }\n }\n private filterRecord(record: any) {\n let isReserved = true;\n for (let i = 0; i < this.dataConfig.filterRules?.length; i++) {\n const filterRule = this.dataConfig?.filterRules[i];\n if (filterRule.filterKey) {\n const filterValue = record[filterRule.filterKey];\n if (filterRule.filteredValues.indexOf(filterValue) === -1) {\n isReserved = false;\n break;\n }\n } else if (!filterRule.filterFunc?.(record)) {\n isReserved = false;\n break;\n }\n }\n return isReserved;\n }\n\n updateFilterRulesForSorted(filterRules?: FilterRules): void {\n this.lastFilterRules = this.dataConfig.filterRules;\n this.dataConfig.filterRules = filterRules;\n this._source = this.processRecords(this.dataSourceObj?.records ?? this.dataSourceObj);\n this._sourceLength = this._source?.length || 0;\n this.sortedIndexMap.clear();\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n\n updateFilterRules(filterRules?: FilterRules): void {\n this.lastFilterRules = this.dataConfig.filterRules;\n this.dataConfig.filterRules = filterRules;\n this._source = this.processRecords(this.dataSourceObj?.records ?? this.dataSourceObj);\n this._sourceLength = this._source?.length || 0;\n // 初始化currentIndexedData 正常未排序。设置其状态\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n if (this.rowHierarchyType === 'tree') {\n this.initTreeHierarchyState();\n }\n this.updatePagerData();\n }\n }\n /**\n * 当节点折叠或者展开时 将排序缓存清空(非当前排序规则的缓存)\n */\n clearSortedIndexMap() {\n if (this.lastOrderField && this.lastOrder) {\n this.sortedIndexMap.forEach((sortMap, key) => {\n if (key !== this.lastOrderField) {\n this.sortedIndexMap.delete(key);\n } else if (this.lastOrder === 'asc') {\n sortMap.desc = [];\n sortMap.normal = [];\n } else if (this.lastOrder === 'desc') {\n sortMap.asc = [];\n sortMap.normal = [];\n } else {\n sortMap.desc = [];\n sortMap.asc = [];\n }\n });\n }\n }\n get sourceLength(): number {\n return this._sourceLength;\n }\n set sourceLength(sourceLen: number) {\n if (this._sourceLength === sourceLen) {\n return;\n }\n this._sourceLength = sourceLen;\n this.fireListeners(EVENT_TYPE.SOURCE_LENGTH_UPDATE, this._sourceLength);\n }\n get length(): number {\n return this.currentPagerIndexedData.length;\n }\n get dataSource(): DataSource {\n return this;\n }\n get currentPagerIndexedData(): (number | number[])[] {\n if (this._currentPagerIndexedData.length > 0) {\n return this._currentPagerIndexedData;\n }\n return []; //this.currentIndexedData || [];\n }\n release(): void {\n super.release?.();\n this.lastFilterRules = null;\n }\n clearSortedMap() {\n this.currentIndexedData && (this.currentIndexedData.length = 0);\n this.currentIndexedData = null;\n this.sortedIndexMap.forEach(item => {\n item.asc && (item.asc.length = 0);\n item.desc && (item.desc.length = 0);\n });\n this.sortedIndexMap.clear();\n }\n clearCurrentIndexedData(): void {\n this.currentIndexedData = null;\n this.currentPagerIndexedData.length = 0;\n }\n protected getOriginalRecord(dataIndex: number | number[]): MaybePromiseOrUndefined {\n // if (this.dataConfig?.filterRules) {\n // return (this.records as Array<any>)[dataIndex as number];\n // }\n let data;\n if (!this.dataSourceObj.records) {\n data = this._get(dataIndex);\n } else {\n if (Array.isArray(dataIndex)) {\n data = getValueFromDeepArray(this.records, dataIndex);\n } else {\n data = this.records[dataIndex];\n }\n }\n return getValue(data, (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(dataIndex, val);\n });\n }\n protected getRawRecord(dataIndex: number): MaybePromiseOrUndefined {\n if (this.beforeChangedRecordsMap?.[dataIndex as number]) {\n return this.beforeChangedRecordsMap[dataIndex as number];\n }\n let data;\n if (!this.dataSourceObj.records) {\n data = this._get(dataIndex);\n } else {\n if (Array.isArray(dataIndex)) {\n data = getValueFromDeepArray(this.records, dataIndex);\n } else {\n data = this.records[dataIndex];\n }\n }\n return getValue(data, (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(dataIndex, val);\n });\n }\n protected getOriginalField(\n index: number | number[],\n field: FieldDef | FieldFormat | number,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n const record = this.getOriginalRecord(index);\n // return getField(record, field);\n return getField(record, field, col, row, table, (val: any) => {\n this.fieldPromiseCallBack(index, field, val);\n });\n }\n protected getRawFieldData(\n index: number,\n field: FieldDef | FieldFormat | number,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n const record = this.getRawRecord(index);\n // return getField(record, field);\n return getField(record, field, col, row, table, (val: any) => {\n this.fieldPromiseCallBack(index, field, val);\n });\n }\n protected hasOriginalField(index: number | number[], field: FieldDef): boolean {\n if (field === null) {\n return false;\n }\n if (typeof field === 'function') {\n return true;\n }\n const record = this.getOriginalRecord(index);\n return Boolean(record && (field as any) in (record as any));\n }\n\n protected fieldPromiseCallBack(\n _index: number | number[],\n _field: FieldDef | FieldFormat | number,\n _value: MaybePromiseOrUndefined\n ): void {\n //\n }\n protected recordPromiseCallBack(_index: number | number[], _record: MaybePromiseOrUndefined): void {\n //\n }\n /** 静态变量 代表数据为空 */\n static EMPTY = new DataSource({\n get() {\n /* noop */\n },\n length: 0\n });\n isCanExchangeOrder(sourceIndex: number, targetIndex: number) {\n // if (this.treeDataHierarchyState?.size > 0) {\n if (this.hasHierarchyStateExpand) {\n let sourceIndexs = this.currentPagerIndexedData[sourceIndex] as number[];\n let targetIndexs = this.currentPagerIndexedData[targetIndex] as number[];\n if (Array.isArray(sourceIndexs)) {\n sourceIndexs = [...sourceIndexs];\n } else {\n sourceIndexs = [sourceIndexs];\n }\n\n if (Array.isArray(targetIndexs)) {\n targetIndexs = [...targetIndexs];\n } else {\n targetIndexs = [targetIndexs];\n }\n\n if (targetIndex > sourceIndex) {\n if (targetIndexs.length > sourceIndexs.length) {\n let targetNextIndexs = this.currentPagerIndexedData[targetIndex + 1] as number[];\n if (Array.isArray(targetNextIndexs)) {\n targetNextIndexs = [...targetNextIndexs];\n } else {\n targetNextIndexs = [targetNextIndexs];\n }\n\n if (targetNextIndexs.length < targetIndexs.length) {\n targetIndexs.splice(targetIndexs.length - 1, 1);\n }\n }\n }\n if (sourceIndexs.length === targetIndexs.length) {\n for (let i = 0; i <= sourceIndexs.length - 2; i++) {\n if (sourceIndexs[i] !== targetIndexs[i]) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n }\n return true;\n }\n // 拖拽调整数据位置 目前对排序过的数据不过处理,因为自动排序和手动排序融合问题目前没有找到好的解决方式\n reorderRecord(sourceIndex: number, targetIndex: number) {\n if (this.lastOrder === 'asc' || this.lastOrder === 'desc') {\n // const sourceIds = this._currentPagerIndexedData.splice(sourceIndex, 1);\n // sourceIds.unshift(targetIndex, 0);\n // Array.prototype.splice.apply(this._currentPagerIndexedData, sourceIds);\n return;\n } else if (this.isCanExchangeOrder(sourceIndex, targetIndex)) {\n // if (this.treeDataHierarchyState?.size > 0) {\n if (this.hasHierarchyStateExpand) {\n let sourceIndexs = this.currentPagerIndexedData[sourceIndex];\n let targetIndexs = this.currentPagerIndexedData[targetIndex];\n if (Array.isArray(sourceIndexs)) {\n sourceIndexs = [...sourceIndexs];\n } else {\n sourceIndexs = [sourceIndexs];\n }\n\n if (Array.isArray(targetIndexs)) {\n targetIndexs = [...targetIndexs];\n } else {\n targetIndexs = [targetIndexs];\n }\n\n let sourceI;\n let targetI;\n if (sourceIndexs.length > 1 || targetIndexs.length > 1) {\n if (targetIndex > sourceIndex) {\n if (targetIndexs.length > sourceIndexs.length) {\n let targetNextIndexs = this.currentPagerIndexedData[targetIndex + 1] as number[];\n if (Array.isArray(targetNextIndexs)) {\n targetNextIndexs = [...targetNextIndexs];\n } else {\n targetNextIndexs = [targetNextIndexs];\n }\n\n if (targetNextIndexs.length < targetIndexs.length) {\n targetIndexs.splice(targetIndexs.length - 1, 1);\n }\n }\n }\n sourceI = (<number[]>sourceIndexs).splice(sourceIndexs.length - 1, 1)[0];\n targetI = (<number[]>targetIndexs).splice(targetIndexs.length - 1, 1)[0];\n if (sourceIndexs.length >= 1) {\n const parent = this.getOriginalRecord(sourceIndexs);\n const sourceIds = parent.filteredChildren\n ? parent.filteredChildren.splice(sourceI, 1)\n : parent.children.splice(sourceI, 1);\n sourceIds.unshift(targetI, 0);\n Array.prototype.splice.apply(parent.filteredChildren ?? parent.children, sourceIds);\n } else {\n const sourceIds = this.records.splice(sourceI, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n sourceIds.unshift(targetI, 0);\n Array.prototype.splice.apply(this.records, sourceIds);\n }\n } else {\n sourceI = this.currentPagerIndexedData[sourceIndex] as number;\n targetI = this.currentPagerIndexedData[targetIndex];\n // 从source的二维数组中取出需要操作的records\n const records = this.records.splice(sourceI, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n records.unshift(targetI, 0);\n Array.prototype.splice.apply(this.records, records);\n }\n this.restoreTreeHierarchyState();\n this.updatePagerData();\n } else {\n // 从source的二维数组中取出需要操作的records\n const records = this.records.splice(sourceIndex, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n records.unshift(targetIndex, 0);\n Array.prototype.splice.apply(this.records, records);\n }\n }\n }\n\n restoreTreeHierarchyState() {\n if (this.hierarchyExpandLevel) {\n for (let i = 0; i < this._sourceLength; i++) {\n //expandLevel为有效值即需要按tree分析展示数据\n const nodeData = this.getOriginalRecord(i);\n const children = (nodeData as any).filteredChildren ?? (nodeData as any).children;\n children && !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n let nodeLength = this._sourceLength;\n for (let i = 0; i < nodeLength; i++) {\n const indexKey = this.currentIndexedData[i];\n const nodeData = this.getOriginalRecord(indexKey);\n const children = (nodeData as any).filteredChildren ?? (nodeData as any).children;\n if (children?.length > 0 && nodeData.hierarchyState === HierarchyState.expand) {\n this.hasHierarchyStateExpand = true;\n const childrenLength = this.restoreChildrenNodeHierarchy(indexKey, nodeData);\n i += childrenLength;\n nodeLength += childrenLength;\n } else if ((nodeData as any).children === true) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n }\n }\n restoreChildrenNodeHierarchy(\n indexKey: number | number[],\n\n nodeData: any\n ): number {\n let childTotalLength = 0;\n const children = (nodeData as any).filteredChildren ?? (nodeData as any).children;\n const nodeLength = children?.length ?? 0;\n for (let j = 0; j < nodeLength; j++) {\n if (nodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += 1;\n }\n const childNodeData = children[j];\n const childIndexKey = Array.isArray(indexKey) ? indexKey.concat(j) : [indexKey, j];\n if (nodeData.hierarchyState === HierarchyState.expand) {\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childTotalLength,\n // childTotalLength,\n 0,\n childIndexKey\n );\n }\n childTotalLength += this.restoreChildrenNodeHierarchy(\n childIndexKey,\n\n childNodeData\n );\n }\n return childTotalLength;\n }\n}\n\n/**\n * 从数组array中获取index的值\n * 如:给index=[0,0] 则返回 array[0].children[0];如果给index=[2] 则返回array[2]; 如果给index=[3,0,4] 则返回array[3].children[0].children[4]\n * @param array\n * @param index\n * @returns\n */\nfunction getValueFromDeepArray(array: any, index: number[]) {\n let result = array;\n for (let i = 0; i < index.length; i++) {\n const currentIdx = index[i];\n if (result[currentIdx]) {\n result = result[currentIdx];\n } else {\n return undefined;\n }\n const children = result.filteredChildren ?? result?.children;\n if (children && i + 1 < index.length) {\n result = children;\n }\n }\n return result;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/data/DataSource.ts"],"names":[],"mappings":"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","file":"DataSource.js","sourcesContent":["import * as sort from '../tools/sort';\nimport type {\n CustomAggregation,\n DataSourceAPI,\n FieldAssessor,\n FieldData,\n FieldDef,\n FieldFormat,\n FilterRules,\n IListTableDataConfig,\n IPagination,\n MaybePromiseOrCallOrUndefined,\n MaybePromiseOrUndefined,\n SortOrder\n} from '../ts-types';\nimport { AggregationType, HierarchyState } from '../ts-types';\nimport { applyChainSafe, getOrApply, obj, isPromise, emptyFn } from '../tools/helper';\nimport { EventTarget } from '../event/EventTarget';\nimport { getValueByPath, isAllDigits } from '../tools/util';\nimport { calculateArrayDiff } from '../tools/diff-cell';\nimport { arrayEqual, cloneDeep, isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport {\n RecordAggregator,\n type Aggregator,\n SumAggregator,\n CountAggregator,\n MaxAggregator,\n MinAggregator,\n AvgAggregator,\n NoneAggregator,\n CustomAggregator\n} from '../dataset/statistics-helper';\nimport type { ColumnData } from '../ts-types/list-table/layout-map/api';\n\n/**\n * 判断字段数据是否为访问器的格式\n * @param field\n * @returns boolean\n */\nfunction isFieldAssessor(field: FieldDef | FieldFormat | number): field is FieldAssessor {\n if (obj.isObject(field)) {\n const a = field as FieldAssessor;\n if (isValid(a.get) && isValid(a.set)) {\n return true;\n }\n }\n return false;\n}\nconst EVENT_TYPE = {\n SOURCE_LENGTH_UPDATE: 'source_length_update',\n CHANGE_ORDER: 'change_order'\n} as const;\ntype PromiseBack = (value: MaybePromiseOrUndefined) => void;\n\n/**\n * 获取到的某个filed的值 处理可能为promise的情况\n * @param value\n * @param promiseCallBack\n * @returns\n */\nfunction getValue(value: MaybePromiseOrCallOrUndefined, promiseCallBack: PromiseBack): MaybePromiseOrUndefined {\n const maybePromiseOrValue = getOrApply(value);\n if (isPromise(maybePromiseOrValue)) {\n const promiseValue = maybePromiseOrValue.then((r: any) => {\n promiseCallBack(r);\n return r;\n });\n\n promiseCallBack(promiseValue);\n return promiseValue;\n }\n return maybePromiseOrValue;\n}\n/**\n * 根据field获取数据源record对应的值 获取到的可能是个异步Promise 需要设置回调处理逻辑\n * @param record\n * @param field\n * @param promiseCallBack\n * @returns\n */\nexport function getField(\n record: MaybePromiseOrUndefined,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI,\n promiseCallBack: PromiseBack\n): FieldData {\n if (record === null || record === undefined) {\n return undefined;\n }\n if (isPromise(record)) {\n return record.then((r: any) => getField(r, field, col, row, table, promiseCallBack));\n }\n const fieldGet: any = isFieldAssessor(field) ? field.get : field;\n if (fieldGet in (record as any)) {\n const fieldResult = (record as any)[fieldGet];\n\n return getValue(fieldResult, promiseCallBack);\n }\n if (typeof fieldGet === 'function') {\n const fieldResult = fieldGet(record, col, row, table);\n return getValue(fieldResult, promiseCallBack);\n }\n if (Array.isArray(fieldGet)) {\n const fieldResult = getValueByPath(record, [...fieldGet]);\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldArray = `${fieldGet}`.split('.');\n if (fieldArray.length <= 1) {\n const fieldResult = (record as any)[fieldGet];\n return getValue(fieldResult, promiseCallBack);\n }\n const fieldResult = applyChainSafe(\n record,\n (val, name) => getField(val, name, col, row, table, emptyFn as any),\n ...fieldArray\n );\n return getValue(fieldResult, promiseCallBack);\n}\n\nfunction _getIndex(sortedIndexMap: null | (number | number[])[], index: number): number | number[] {\n if (!sortedIndexMap) {\n return index;\n }\n const mapIndex = sortedIndexMap[index];\n return isValid(mapIndex) ? mapIndex : index;\n}\n\nexport interface DataSourceParam {\n get: (index: number) => any;\n length: number;\n /** 需要异步加载的情况 请不要设置records */\n records?: any;\n added?: (index: number, count: number) => any;\n deleted?: (index: number[]) => any;\n}\nexport interface ISortedMapItem {\n asc?: (number | number[])[];\n desc?: (number | number[])[];\n normal?: (number | number[])[];\n}\n\nexport class DataSource extends EventTarget implements DataSourceAPI {\n dataConfig: IListTableDataConfig;\n dataSourceObj: DataSourceParam | DataSource;\n private _get: (index: number | number[]) => any;\n /** 数据条目数 如果是树形结构的数据 则是第一层父节点的数量 */\n private _sourceLength: number;\n\n private _source: any[] | DataSourceParam | DataSource;\n /**\n * 缓存按字段进行排序的结果\n */\n protected sortedIndexMap: Map<FieldDef, ISortedMapItem>;\n /**\n * 记录最近一次排序规则 当展开树形结构的节点时需要用到\n */\n private lastOrder: SortOrder;\n private lastOrderFn: (a: any, b: any, order: string) => number;\n private lastOrderField: FieldDef;\n /** 每一行对应源数据的索引 */\n currentIndexedData: (number | number[])[] | null = [];\n protected userPagination: IPagination;\n protected pagination: IPagination;\n /** 当前页每一行对应源数据的索引 */\n _currentPagerIndexedData: (number | number[])[];\n // 当前是否为层级的树形结构 排序时判断该值确实是否继续进行子节点排序\n hierarchyExpandLevel: number = 0;\n static get EVENT_TYPE(): typeof EVENT_TYPE {\n return EVENT_TYPE;\n }\n hasHierarchyStateExpand: boolean = false;\n // treeDataHierarchyState: Map<number | string, HierarchyState> = new Map();\n beforeChangedRecordsMap: Record<number, any>[] = []; // TODO过滤后 或者排序后的对应关系\n\n // 注册聚合类型\n registedAggregators: {\n [key: string]: {\n new (config: {\n dimension: string | string[];\n formatFun?: any;\n isRecord?: boolean;\n aggregationFun?: Function;\n }): Aggregator;\n };\n } = {};\n rowHierarchyType: 'grid' | 'tree';\n // columns对应各个字段的聚合类对象\n fieldAggregators: Aggregator[] = [];\n layoutColumnObjects: ColumnData[] = [];\n lastFilterRules: FilterRules;\n constructor(\n dataSourceObj?: DataSourceParam,\n dataConfig?: IListTableDataConfig,\n pagination?: IPagination,\n columnObjs?: ColumnData[],\n rowHierarchyType?: 'grid' | 'tree',\n hierarchyExpandLevel?: number\n ) {\n super();\n this.registerAggregators();\n this.dataSourceObj = dataSourceObj;\n this.dataConfig = dataConfig;\n this._get = dataSourceObj?.get;\n this.layoutColumnObjects = columnObjs;\n this._source = dataSourceObj?.records ? this.processRecords(dataSourceObj?.records) : dataSourceObj;\n this._sourceLength = this._source?.length || 0;\n this.sortedIndexMap = new Map<string, ISortedMapItem>();\n\n this._currentPagerIndexedData = [];\n this.userPagination = pagination;\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n if (hierarchyExpandLevel >= 1) {\n this.hierarchyExpandLevel = hierarchyExpandLevel;\n }\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n // 初始化currentIndexedData 正常未排序。设置其状态\n if (rowHierarchyType === 'tree') {\n this.initTreeHierarchyState();\n }\n this.rowHierarchyType = rowHierarchyType;\n this.updatePagerData();\n }\n initTreeHierarchyState() {\n // if (this.hierarchyExpandLevel) {\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n // if (this.hierarchyExpandLevel > 1) {\n let nodeLength = this._sourceLength;\n for (let i = 0; i < nodeLength; i++) {\n const indexKey = this.currentIndexedData[i];\n const nodeData = this.getOriginalRecord(indexKey);\n const children = (nodeData as any).filteredChildren ?? (nodeData as any).children;\n if (children?.length > 0) {\n if (this.hierarchyExpandLevel > 1) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.expand);\n } else {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n this.hasHierarchyStateExpand = true;\n if (nodeData.hierarchyState === HierarchyState.collapse) {\n continue;\n }\n const childrenLength = this.initChildrenNodeHierarchy(indexKey, this.hierarchyExpandLevel, 2, nodeData);\n i += childrenLength;\n nodeLength += childrenLength;\n } else if ((nodeData as any).children === true) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n // }\n // }\n }\n\n //将聚合类型注册 收集到aggregators\n registerAggregator(type: string, aggregator: any) {\n this.registedAggregators[type] = aggregator;\n }\n //将聚合类型注册\n registerAggregators() {\n this.registerAggregator(AggregationType.RECORD, RecordAggregator);\n this.registerAggregator(AggregationType.SUM, SumAggregator);\n this.registerAggregator(AggregationType.COUNT, CountAggregator);\n this.registerAggregator(AggregationType.MAX, MaxAggregator);\n this.registerAggregator(AggregationType.MIN, MinAggregator);\n this.registerAggregator(AggregationType.AVG, AvgAggregator);\n this.registerAggregator(AggregationType.NONE, NoneAggregator);\n this.registerAggregator(AggregationType.CUSTOM, CustomAggregator);\n }\n _generateFieldAggragations() {\n const columnObjs = this.layoutColumnObjects;\n for (let i = 0; i < columnObjs?.length; i++) {\n columnObjs[i].aggregator = null; //重置聚合器 如更新了过滤条件都需要重新计算\n const field = columnObjs[i].field;\n const aggragation = columnObjs[i].aggregation;\n if (!aggragation) {\n continue;\n }\n if (Array.isArray(aggragation)) {\n for (let j = 0; j < aggragation.length; j++) {\n const item = aggragation[j];\n const aggregator = new this.registedAggregators[item.aggregationType]({\n dimension: field as string,\n formatFun: item.formatFun,\n isRecord: true,\n aggregationFun: (item as CustomAggregation).aggregationFun\n });\n this.fieldAggregators.push(aggregator);\n if (!columnObjs[i].aggregator) {\n columnObjs[i].aggregator = [];\n }\n columnObjs[i].aggregator.push(aggregator);\n }\n } else {\n const aggregator = new this.registedAggregators[aggragation.aggregationType]({\n dimension: field as string,\n formatFun: aggragation.formatFun,\n isRecord: true,\n aggregationFun: (aggragation as CustomAggregation).aggregationFun\n });\n this.fieldAggregators.push(aggregator);\n columnObjs[i].aggregator = aggregator;\n }\n }\n }\n processRecords(records: any[]) {\n this._generateFieldAggragations();\n const filteredRecords = [];\n const isHasAggregation = this.fieldAggregators.length >= 1;\n const isHasFilterRule = this.dataConfig?.filterRules?.length >= 1 || this.lastFilterRules?.length >= 1;\n if (isHasFilterRule || isHasAggregation) {\n for (let i = 0, len = records.length; i < len; i++) {\n const record = records[i];\n if (this.dataConfig?.filterRules?.length >= 1) {\n if (this.filterRecord(record)) {\n filteredRecords.push(record);\n if (this.rowHierarchyType === 'tree' && record.children) {\n record.filteredChildren = this.filteredChildren(record.children);\n }\n isHasAggregation && this.processRecord(record);\n }\n } else if (this.lastFilterRules?.length >= 1) {\n //上次做了过滤 本次做清除过滤规则的情况\n this.clearFilteredChildren(record);\n isHasAggregation && this.processRecord(record);\n } else if (isHasAggregation) {\n this.processRecord(record);\n }\n }\n if (this.dataConfig?.filterRules?.length >= 1) {\n return filteredRecords;\n }\n }\n return records;\n }\n\n filteredChildren(records: any[]) {\n const filteredRecords = [];\n for (let i = 0, len = records.length; i < len; i++) {\n const record = records[i];\n if (this.filterRecord(record)) {\n filteredRecords.push(record);\n if (record.children) {\n record.filteredChildren = this.filteredChildren(record.children);\n }\n }\n }\n return filteredRecords;\n }\n\n processRecord(record: any) {\n for (let i = 0; i < this.fieldAggregators.length; i++) {\n const aggregator = this.fieldAggregators[i];\n aggregator.push(record);\n }\n }\n /**\n * 初始化子节点的层次信息\n * @param indexKey 父节点的indexKey 即currentLevel-1的节点\n * @param hierarchyExpandLevel 需要展开层级数\n * @param currentLevel 当前要展开的是第几层\n * @param nodeData 父节点数据 即currentLevel-1的节点\n * @returns\n */\n initChildrenNodeHierarchy(\n indexKey: number | number[],\n // subNodeIndex:number,\n hierarchyExpandLevel: number,\n currentLevel: number,\n nodeData: any\n ): number {\n // if (currentLevel > hierarchyExpandLevel) {\n // return 0;\n // }\n let childTotalLength = 0;\n const nodeLength = nodeData.filteredChildren ? nodeData.filteredChildren.length : nodeData.children?.length ?? 0;\n for (let j = 0; j < nodeLength; j++) {\n if (currentLevel <= hierarchyExpandLevel || nodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += 1;\n }\n const childNodeData = nodeData.filteredChildren ? nodeData.filteredChildren[j] : nodeData.children[j];\n const childIndexKey = Array.isArray(indexKey) ? indexKey.concat(j) : [indexKey, j];\n if (currentLevel <= hierarchyExpandLevel || nodeData.hierarchyState === HierarchyState.expand) {\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childTotalLength,\n // childTotalLength,\n 0,\n childIndexKey\n );\n }\n if (\n childNodeData.filteredChildren ? childNodeData.filteredChildren.length > 0 : childNodeData.children?.length > 0\n ) {\n if (currentLevel < hierarchyExpandLevel || childNodeData.hierarchyState === HierarchyState.expand) {\n // this.treeDataHierarchyState.set(\n // Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n // HierarchyState.expand\n // );\n !childNodeData.hierarchyState && (childNodeData.hierarchyState = HierarchyState.expand);\n this.hasHierarchyStateExpand = true;\n } else {\n // this.treeDataHierarchyState.set(\n // Array.isArray(childIndexKey) ? childIndexKey.join(',') : childIndexKey,\n // HierarchyState.collapse\n // );\n !childNodeData.hierarchyState && (childNodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n if (childNodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += this.initChildrenNodeHierarchy(\n childIndexKey,\n hierarchyExpandLevel,\n currentLevel + 1,\n childNodeData\n );\n }\n }\n return childTotalLength;\n }\n updatePagination(pagination?: IPagination): void {\n this.pagination = pagination || {\n totalCount: this._sourceLength,\n perPageCount: this._sourceLength,\n currentPage: 0\n };\n this.updatePagerData();\n }\n protected updatePagerData(): void {\n const { currentIndexedData } = this;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n this._currentPagerIndexedData.length = 0;\n if (currentIndexedData && currentIndexedData.length > 0) {\n // this._currentPagerIndexedData = currentIndexedData.slice(startIndex, endIndex);\n let firstLevelIndex = -1;\n for (let i = 0; i < currentIndexedData.length; i++) {\n //计算第一层父级节点数量\n if (\n (Array.isArray(currentIndexedData[i]) && (currentIndexedData[i] as Array<number>).length === 1) ||\n !Array.isArray(currentIndexedData[i])\n ) {\n firstLevelIndex++;\n }\n if (firstLevelIndex >= startIndex && firstLevelIndex < endIndex) {\n this._currentPagerIndexedData.push(currentIndexedData[i]);\n } else if (firstLevelIndex >= endIndex) {\n break;\n }\n }\n } else if (this._sourceLength > 0) {\n throw new Error(`currentIndexedData should has values!`);\n }\n }\n\n get records(): any[] {\n return Array.isArray(this._source) ? this._source : [];\n }\n\n get source(): any[] | DataSourceParam | DataSource {\n return this._source;\n }\n get(index: number): MaybePromiseOrUndefined {\n return this.getOriginalRecord(_getIndex(this.currentPagerIndexedData, index));\n }\n getRaw(index: number): MaybePromiseOrUndefined {\n return this.getRawRecord(_getIndex(this.currentPagerIndexedData, index) as number);\n }\n getIndexKey(index: number): number | number[] {\n return _getIndex(this.currentPagerIndexedData, index);\n }\n getTableIndex(colOrRow: number | number[]): number {\n if (Array.isArray(colOrRow)) {\n return this.currentPagerIndexedData.findIndex(value => arrayEqual(value, colOrRow));\n }\n return this.currentPagerIndexedData.findIndex(value => value === colOrRow);\n }\n /** 获取数据源中第index位置的field字段数据。传入col row是因为后面的format函数参数使用*/\n getField(\n index: number,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI\n ): FieldData {\n return this.getOriginalField(_getIndex(this.currentPagerIndexedData, index), field, col, row, table);\n }\n\n getRawField(\n index: number,\n field: FieldDef | FieldFormat | number,\n col: number,\n row: number,\n table: BaseTableAPI\n ): FieldData {\n return this.getRawFieldData(_getIndex(this.currentPagerIndexedData, index) as number, field, col, row, table);\n }\n\n hasField(index: number, field: FieldDef): boolean {\n return this.hasOriginalField(_getIndex(this.currentPagerIndexedData, index), field);\n }\n /**\n * 获取第index条数据的展示收起状态\n * @param index\n * @returns\n */\n getHierarchyState(index: number): HierarchyState {\n // const indexed = this.getIndexKey(index);\n const record = this.getOriginalRecord(this.currentIndexedData[index]);\n return record?.hierarchyState ?? null;\n // return this.treeDataHierarchyState.get(Array.isArray(indexed) ? indexed.join(',') : indexed) ?? null;\n }\n /**\n * 展开或者收起数据index\n * @param index\n */\n toggleHierarchyState(index: number, bodyStartIndex: number, bodyEndIndex: number) {\n const oldIndexedData = this.currentIndexedData.slice(0);\n const indexed = this.getIndexKey(index);\n const state = this.getHierarchyState(index);\n const data = this.getOriginalRecord(indexed);\n\n this.clearSortedIndexMap();\n if (state === HierarchyState.collapse) {\n // 将节点状态置为expand\n // this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.expand);\n data.hierarchyState = HierarchyState.expand;\n this.pushChildrenNode(indexed, HierarchyState.expand, data);\n this.hasHierarchyStateExpand = true;\n } else if (state === HierarchyState.expand) {\n // 记录状态变化影响的子节点行数\n let childrenLength = 0;\n /**\n * 当某个节点由展开变为折叠,需要计算出影响的节点数量 使用childrenLength来标记。同样需递归\n * @param indexKey\n * @param hierarchyState\n * @param nodeData\n * @returns\n */\n const computeChildrenNodeLength = (\n indexKey: number | number[],\n hierarchyState: HierarchyState,\n nodeData: any\n ) => {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return;\n }\n const children = nodeData.filteredChildren ? nodeData.filteredChildren : nodeData.children;\n if (children) {\n for (let i = 0; i < children.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey) ? indexKey.concat([i]) : [indexKey, i];\n\n computeChildrenNodeLength(\n childIndex,\n // this.treeDataHierarchyState.get(childIndex.join(',')),\n children[i].hierarchyState,\n children[i]\n );\n }\n }\n };\n computeChildrenNodeLength(indexed, state, data);\n\n this.currentIndexedData.splice(this.currentIndexedData.indexOf(indexed) + 1, childrenLength);\n // this.treeDataHierarchyState.set(Array.isArray(indexed) ? indexed.join(',') : indexed, HierarchyState.collapse);\n data.hierarchyState = HierarchyState.collapse;\n }\n // 变更了pagerConfig所以需要更新分页数据 TODO待定 因为只关注根节点的数量的话 可能不会影响到\n this.updatePagerData();\n const add = [];\n const remove = [];\n if (state === HierarchyState.collapse) {\n const addLength = this.currentIndexedData.length - oldIndexedData.length;\n for (let i = 0; i < addLength; i++) {\n add.push(index + i + 1);\n }\n } else if (state === HierarchyState.expand) {\n const removeLength = oldIndexedData.length - this.currentIndexedData.length;\n for (let i = 0; i < removeLength; i++) {\n remove.push(index + i + 1);\n }\n }\n // const newDiff = calculateArrayDiff(\n // oldIndexedData.slice(bodyStartIndex, bodyEndIndex + 1),\n // this.currentIndexedData.slice(bodyStartIndex, bodyEndIndex + 1),\n // bodyStartIndex\n // );\n // // const oldDiff = diffCellIndices(oldIndexedData, this.currentIndexedData);\n\n // // return oldDiff;\n // return newDiff;\n return { add, remove };\n }\n /**\n * 某个节点状态由折叠变为展开,往this.currentIndexedData中插入展开后的新增节点,注意需要递归,因为展开节点下面的子节点也能是展开状态\n * @param recordRowIndex 要计算节点的行号(从body部分开始计算)\n * @param indexKey 需要判断节点的index\n * @param hierarchyState 当前节点状态\n * @param nodeData 当前节点数据 取children时用\n * @returns\n */\n pushChildrenNode(indexKey: number | number[], hierarchyState: HierarchyState, nodeData: any): number {\n if (!hierarchyState || hierarchyState === HierarchyState.collapse || hierarchyState === HierarchyState.none) {\n return 0;\n }\n let childrenLength = 0;\n const children = nodeData.filteredChildren ? nodeData.filteredChildren : nodeData.children;\n if (children) {\n const subNodeSortedIndexArray: Array<number> = Array.from({ length: children.length }, (_, i) => i);\n this.lastOrder &&\n this.lastOrder !== 'normal' &&\n this.lastOrderField &&\n sort.sort(\n index =>\n isValid(subNodeSortedIndexArray[index])\n ? subNodeSortedIndexArray[index]\n : (subNodeSortedIndexArray[index] = index),\n (index, rel) => {\n subNodeSortedIndexArray[index] = rel;\n },\n children.length,\n this.lastOrderFn,\n this.lastOrder,\n index =>\n this.getOriginalField(\n Array.isArray(indexKey) ? indexKey.concat([index]) : [indexKey, index],\n this.lastOrderField\n )\n );\n for (let i = 0; i < subNodeSortedIndexArray.length; i++) {\n childrenLength += 1;\n const childIndex = Array.isArray(indexKey)\n ? indexKey.concat([subNodeSortedIndexArray[i]])\n : [indexKey, subNodeSortedIndexArray[i]];\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childrenLength,\n // this.pagination.currentPage * this.pagination.perPageCount +\n // recordRowIndex +\n // childrenLength,\n 0,\n childIndex\n );\n\n // const preChildState = this.treeDataHierarchyState.get(childIndex.join(','));\n const childData = this.getOriginalRecord(childIndex);\n if (!childData.hierarchyState && (childData.filteredChildren ?? childData.children)) {\n // this.treeDataHierarchyState.set(childIndex.join(','), HierarchyState.collapse);\n childData.hierarchyState = HierarchyState.collapse;\n }\n childrenLength += this.pushChildrenNode(\n childIndex,\n // this.treeDataHierarchyState.get(childIndex.join(',')),\n childData.hierarchyState,\n children[subNodeSortedIndexArray[i]]\n );\n }\n }\n return childrenLength;\n }\n changeFieldValue(\n value: FieldData,\n index: number,\n field: FieldDef,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n if (index >= 0) {\n const dataIndex = this.getIndexKey(index) as number;\n\n if (!this.beforeChangedRecordsMap[dataIndex]) {\n const originRecord = this.getOriginalRecord(dataIndex);\n this.beforeChangedRecordsMap[dataIndex] = cloneDeep(originRecord) ?? {};\n }\n if (typeof field === 'string' || typeof field === 'number') {\n const beforeChangedValue = this.beforeChangedRecordsMap[dataIndex][field]; // this.getOriginalField(index, field, col, row, table);\n const record = this.getOriginalRecord(dataIndex);\n let formatValue = value;\n if (typeof beforeChangedValue === 'number' && isAllDigits(value)) {\n formatValue = parseFloat(value);\n }\n if (isPromise(record)) {\n record\n .then(record => {\n record[field] = formatValue;\n })\n .catch((err: Error) => {\n console.error('VTable Error:', err);\n });\n } else {\n if (record) {\n record[field] = formatValue;\n } else {\n this.records[dataIndex] = {};\n this.records[dataIndex][field] = formatValue;\n }\n }\n }\n }\n // return getField(record, field);\n }\n /**\n * 将数据record 替换到index位置处\n * @param record\n * @param index\n */\n setRecord(record: any, index: number) {\n let isAdd = true;\n if (this.dataConfig?.filterRules?.length >= 1) {\n if (this.filterRecord(record)) {\n if (this.rowHierarchyType === 'tree' && record.children) {\n record.filteredChildren = this.filteredChildren(record.children);\n }\n } else {\n isAdd = false;\n }\n }\n if (isAdd && Array.isArray(this.records)) {\n const indexed = this.getIndexKey(index);\n if (!Array.isArray(indexed)) {\n this.records.splice(indexed, 1, record);\n } else {\n // const c_node_index = (indexed as Array<any>)[indexed.length - 1];\n // const p_node = this.getOriginalRecord(indexed.slice(0, indexed.length - 1));\n // (p_node as any).children.splice(c_node_index, 1, record);\n }\n }\n }\n /**\n * 将单条数据record 添加到index位置处\n * @param record 被添加的单条数据\n * @param index 代表的数据源中的index\n */\n addRecord(record: any, index: number) {\n if (Array.isArray(this.records)) {\n this.records.splice(index, 0, record);\n this.adjustBeforeChangedRecordsMap(index, 1);\n this.currentIndexedData.push(this.currentIndexedData.length);\n this._sourceLength += 1;\n if (this.rowHierarchyType === 'tree') {\n this.initTreeHierarchyState();\n }\n if (this.userPagination) {\n //如果用户配置了分页\n this.pagination.totalCount = this._sourceLength;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (index < endIndex) {\n this.updatePagerData();\n }\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n\n if ((this.dataSourceObj as DataSourceParam)?.added) {\n (this.dataSourceObj as DataSourceParam).added(index, 1);\n }\n }\n }\n /**\n * 将多条数据recordArr 依次添加到index位置处\n * @param recordArr\n * @param index 代表的数据源中的index\n */\n addRecords(recordArr: any, index: number) {\n if (Array.isArray(this.records)) {\n if (Array.isArray(recordArr)) {\n this.records.splice(index, 0, ...recordArr);\n this.adjustBeforeChangedRecordsMap(index, recordArr.length);\n for (let i = 0; i < recordArr.length; i++) {\n this.currentIndexedData.push(this.currentIndexedData.length);\n }\n this._sourceLength += recordArr.length;\n }\n\n if (this.userPagination) {\n //如果用户配置了分页\n this.pagination.totalCount = this._sourceLength;\n const { perPageCount, currentPage } = this.pagination;\n const startIndex = perPageCount * (currentPage || 0);\n const endIndex = startIndex + perPageCount;\n if (index < endIndex) {\n this.updatePagerData();\n }\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n\n if ((this.dataSourceObj as DataSourceParam)?.added) {\n (this.dataSourceObj as DataSourceParam).added(index, recordArr.length);\n }\n }\n }\n\n /**\n * 将单条数据record 添加到index位置处\n * @param record 被添加的单条数据\n * @param index 代表的数据源中的index\n */\n addRecordForSorted(record: any) {\n if (Array.isArray(this.records)) {\n this.beforeChangedRecordsMap = []; // 排序情况下插入数据,很难将原index和插入新增再次排序后的新index做对应,所以这里之前先清除掉beforeChangedRecordsMap 不做维护\n this.records.push(record);\n this.currentIndexedData.push(this.currentIndexedData.length);\n this._sourceLength += 1;\n this.sortedIndexMap.clear();\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n }\n /**\n * 将多条数据recordArr 依次添加到index位置处\n * @param recordArr\n * @param index 代表的数据源中的index\n */\n addRecordsForSorted(recordArr: any) {\n if (Array.isArray(this.records)) {\n this.beforeChangedRecordsMap = []; // 排序情况下插入数据,很难将原index和插入新增再次排序后的新index做对应,所以这里之前先清除掉beforeChangedRecordsMap 不做维护\n if (Array.isArray(recordArr)) {\n this.records.push(...recordArr);\n for (let i = 0; i < recordArr.length; i++) {\n this.currentIndexedData.push(this.currentIndexedData.length);\n }\n this._sourceLength += recordArr.length;\n this.sortedIndexMap.clear();\n }\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n }\n\n adjustBeforeChangedRecordsMap(insertIndex: number, insertCount: number) {\n const length = this.beforeChangedRecordsMap.length;\n for (let key = length - 1; key >= insertIndex; key--) {\n const record = this.beforeChangedRecordsMap[key];\n delete this.beforeChangedRecordsMap[key];\n this.beforeChangedRecordsMap[key + insertCount] = record;\n }\n }\n /**\n * 删除多条数据recordIndexs\n */\n deleteRecords(recordIndexs: number[]) {\n if (Array.isArray(this.records)) {\n const realDeletedRecordIndexs = [];\n const recordIndexsMaxToMin = recordIndexs.sort((a, b) => b - a);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n delete this.beforeChangedRecordsMap[recordIndex];\n realDeletedRecordIndexs.push(recordIndex);\n this.records.splice(recordIndex, 1);\n this.currentIndexedData.pop();\n this._sourceLength -= 1;\n }\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n this.updatePagerData();\n }\n if ((this.dataSourceObj as DataSourceParam)?.deleted) {\n (this.dataSourceObj as DataSourceParam).deleted(realDeletedRecordIndexs);\n }\n return realDeletedRecordIndexs;\n }\n return [];\n }\n /**\n * 删除多条数据recordIndexs\n */\n deleteRecordsForSorted(recordIndexs: number[]) {\n if (Array.isArray(this.records)) {\n const recordIndexsMaxToMin = recordIndexs.sort((a, b) => b - a);\n for (let index = 0; index < recordIndexsMaxToMin.length; index++) {\n const recordIndex = recordIndexsMaxToMin[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n const rawIndex = this.currentIndexedData[recordIndex] as number;\n delete this.beforeChangedRecordsMap[rawIndex];\n this.records.splice(rawIndex, 1);\n this._sourceLength -= 1;\n }\n this.sortedIndexMap.clear();\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n }\n\n /**\n * 修改多条数据recordIndexs\n */\n updateRecords(records: any[], recordIndexs: number[]) {\n const realDeletedRecordIndexs = [];\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n delete this.beforeChangedRecordsMap[recordIndex];\n realDeletedRecordIndexs.push(recordIndex);\n this.records[recordIndex] = records[index];\n }\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n }\n return realDeletedRecordIndexs;\n }\n\n /**\n * 删除多条数据recordIndexs\n */\n updateRecordsForSorted(records: any[], recordIndexs: number[]) {\n const realDeletedRecordIndexs: number[] = [];\n for (let index = 0; index < recordIndexs.length; index++) {\n const recordIndex = recordIndexs[index];\n if (recordIndex >= this._sourceLength || recordIndex < 0) {\n continue;\n }\n const rawIndex = this.currentIndexedData[recordIndex];\n if (typeof rawIndex !== 'number') {\n return;\n }\n delete this.beforeChangedRecordsMap[rawIndex];\n realDeletedRecordIndexs.push(recordIndex);\n this.records[rawIndex] = records[index];\n }\n this.sortedIndexMap.clear();\n }\n\n sort(\n field: FieldDef,\n order: SortOrder,\n orderFn: (v1: any, v2: any, order: SortOrder) => -1 | 0 | 1 = order !== 'desc'\n ? (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 > v2 ? 1 : -1)\n : (v1: any, v2: any): -1 | 0 | 1 => (v1 === v2 ? 0 : v1 < v2 ? 1 : -1)\n ): void {\n this.lastOrderField = field;\n this.lastOrder = order;\n this.lastOrderFn = orderFn;\n let filedMap = this.sortedIndexMap.get(field);\n let orderedData;\n\n if (filedMap) {\n orderedData = filedMap[order];\n if (orderedData && orderedData.length > 0) {\n this.currentIndexedData = orderedData;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n return;\n }\n }\n const sortedIndexArray = [] as number[];\n if (order === 'normal') {\n for (let i = 0; i < this._sourceLength; i++) {\n sortedIndexArray[i] = i;\n }\n } else {\n sort.sort(\n index => (isValid(sortedIndexArray[index]) ? sortedIndexArray[index] : (sortedIndexArray[index] = index)),\n (index, rel) => {\n sortedIndexArray[index] = rel;\n },\n this._sourceLength,\n orderFn,\n order,\n index => this.getOriginalField(index, field)\n );\n }\n this.currentIndexedData = sortedIndexArray;\n\n if (this.hierarchyExpandLevel) {\n let nodeLength = sortedIndexArray.length;\n const t0 = window.performance.now();\n for (let i = 0; i < nodeLength; i++) {\n const record = this.getOriginalRecord(sortedIndexArray[i]);\n const subNodeLength = this.pushChildrenNode(\n sortedIndexArray[i],\n // this.treeDataHierarchyState.get(sortedIndexArray[i]),\n record.hierarchyState,\n this.getOriginalRecord(sortedIndexArray[i]) // ?sortedIndexArray 在这个过程中不是变化了吗 通过i取id还是对的吗? 对哦!因为i和nodeLength都+subNodeLength 来动态调整过了!\n );\n nodeLength += subNodeLength;\n i += subNodeLength;\n }\n }\n if (!filedMap) {\n filedMap = { asc: [], desc: [], normal: [] };\n this.sortedIndexMap.set(field, filedMap);\n }\n filedMap[order] = sortedIndexArray;\n this.updatePagerData();\n this.fireListeners(EVENT_TYPE.CHANGE_ORDER, null);\n }\n\n setSortedIndexMap(field: FieldDef, filedMap: ISortedMapItem) {\n this.sortedIndexMap.set(field, filedMap);\n }\n\n private clearFilteredChildren(record: any) {\n record.filteredChildren = undefined;\n for (let i = 0; i < record.children?.length ?? 0; i++) {\n this.clearFilteredChildren(record.children[i]);\n }\n }\n private filterRecord(record: any) {\n let isReserved = true;\n for (let i = 0; i < this.dataConfig.filterRules?.length; i++) {\n const filterRule = this.dataConfig?.filterRules[i];\n if (filterRule.filterKey) {\n const filterValue = record[filterRule.filterKey];\n if (filterRule.filteredValues.indexOf(filterValue) === -1) {\n isReserved = false;\n break;\n }\n } else if (!filterRule.filterFunc?.(record)) {\n isReserved = false;\n break;\n }\n }\n return isReserved;\n }\n\n updateFilterRulesForSorted(filterRules?: FilterRules): void {\n this.lastFilterRules = this.dataConfig.filterRules;\n this.dataConfig.filterRules = filterRules;\n this._source = this.processRecords(this.dataSourceObj?.records ?? this.dataSourceObj);\n this._sourceLength = this._source?.length || 0;\n this.sortedIndexMap.clear();\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n if (!this.userPagination) {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n }\n }\n\n updateFilterRules(filterRules?: FilterRules): void {\n this.lastFilterRules = this.dataConfig.filterRules;\n this.dataConfig.filterRules = filterRules;\n this._source = this.processRecords(this.dataSourceObj?.records ?? this.dataSourceObj);\n this._sourceLength = this._source?.length || 0;\n // 初始化currentIndexedData 正常未排序。设置其状态\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n if (this.userPagination) {\n // 如果用户配置了分页\n this.updatePagerData();\n } else {\n this.pagination.perPageCount = this._sourceLength;\n this.pagination.totalCount = this._sourceLength;\n if (this.rowHierarchyType === 'tree') {\n this.initTreeHierarchyState();\n }\n this.updatePagerData();\n }\n }\n /**\n * 当节点折叠或者展开时 将排序缓存清空(非当前排序规则的缓存)\n */\n clearSortedIndexMap() {\n if (this.lastOrderField && this.lastOrder) {\n this.sortedIndexMap.forEach((sortMap, key) => {\n if (key !== this.lastOrderField) {\n this.sortedIndexMap.delete(key);\n } else if (this.lastOrder === 'asc') {\n sortMap.desc = [];\n sortMap.normal = [];\n } else if (this.lastOrder === 'desc') {\n sortMap.asc = [];\n sortMap.normal = [];\n } else {\n sortMap.desc = [];\n sortMap.asc = [];\n }\n });\n }\n }\n get sourceLength(): number {\n return this._sourceLength;\n }\n set sourceLength(sourceLen: number) {\n if (this._sourceLength === sourceLen) {\n return;\n }\n this._sourceLength = sourceLen;\n this.fireListeners(EVENT_TYPE.SOURCE_LENGTH_UPDATE, this._sourceLength);\n }\n get length(): number {\n return this.currentPagerIndexedData.length;\n }\n get dataSource(): DataSource {\n return this;\n }\n get currentPagerIndexedData(): (number | number[])[] {\n if (this._currentPagerIndexedData.length > 0) {\n return this._currentPagerIndexedData;\n }\n return []; //this.currentIndexedData || [];\n }\n release(): void {\n super.release?.();\n this.lastFilterRules = null;\n }\n clearSortedMap() {\n this.currentIndexedData && (this.currentIndexedData.length = 0);\n this.currentIndexedData = null;\n this.sortedIndexMap.forEach(item => {\n item.asc && (item.asc.length = 0);\n item.desc && (item.desc.length = 0);\n });\n this.sortedIndexMap.clear();\n }\n clearCurrentIndexedData(): void {\n this.currentIndexedData = null;\n this.currentPagerIndexedData.length = 0;\n }\n protected getOriginalRecord(dataIndex: number | number[]): MaybePromiseOrUndefined {\n // if (this.dataConfig?.filterRules) {\n // return (this.records as Array<any>)[dataIndex as number];\n // }\n let data;\n if (!this.dataSourceObj.records) {\n data = this._get(dataIndex);\n } else {\n if (Array.isArray(dataIndex)) {\n data = getValueFromDeepArray(this.records, dataIndex);\n } else {\n data = this.records[dataIndex];\n }\n }\n return getValue(data, (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(dataIndex, val);\n });\n }\n protected getRawRecord(dataIndex: number): MaybePromiseOrUndefined {\n if (this.beforeChangedRecordsMap?.[dataIndex as number]) {\n return this.beforeChangedRecordsMap[dataIndex as number];\n }\n let data;\n if (!this.dataSourceObj.records) {\n data = this._get(dataIndex);\n } else {\n if (Array.isArray(dataIndex)) {\n data = getValueFromDeepArray(this.records, dataIndex);\n } else {\n data = this.records[dataIndex];\n }\n }\n return getValue(data, (val: MaybePromiseOrUndefined) => {\n this.recordPromiseCallBack(dataIndex, val);\n });\n }\n protected getOriginalField(\n index: number | number[],\n field: FieldDef | FieldFormat | number,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n const record = this.getOriginalRecord(index);\n // return getField(record, field);\n return getField(record, field, col, row, table, (val: any) => {\n this.fieldPromiseCallBack(index, field, val);\n });\n }\n protected getRawFieldData(\n index: number,\n field: FieldDef | FieldFormat | number,\n col?: number,\n row?: number,\n table?: BaseTableAPI\n ): FieldData {\n if (field === null) {\n return undefined;\n }\n const record = this.getRawRecord(index);\n // return getField(record, field);\n return getField(record, field, col, row, table, (val: any) => {\n this.fieldPromiseCallBack(index, field, val);\n });\n }\n protected hasOriginalField(index: number | number[], field: FieldDef): boolean {\n if (field === null) {\n return false;\n }\n if (typeof field === 'function') {\n return true;\n }\n const record = this.getOriginalRecord(index);\n return Boolean(record && (field as any) in (record as any));\n }\n\n protected fieldPromiseCallBack(\n _index: number | number[],\n _field: FieldDef | FieldFormat | number,\n _value: MaybePromiseOrUndefined\n ): void {\n //\n }\n protected recordPromiseCallBack(_index: number | number[], _record: MaybePromiseOrUndefined): void {\n //\n }\n /** 静态变量 代表数据为空 */\n static EMPTY = new DataSource({\n get() {\n /* noop */\n },\n length: 0\n });\n isCanExchangeOrder(sourceIndex: number, targetIndex: number) {\n // if (this.treeDataHierarchyState?.size > 0) {\n if (this.hasHierarchyStateExpand) {\n let sourceIndexs = this.currentPagerIndexedData[sourceIndex] as number[];\n let targetIndexs = this.currentPagerIndexedData[targetIndex] as number[];\n if (Array.isArray(sourceIndexs)) {\n sourceIndexs = [...sourceIndexs];\n } else {\n sourceIndexs = [sourceIndexs];\n }\n\n if (Array.isArray(targetIndexs)) {\n targetIndexs = [...targetIndexs];\n } else {\n targetIndexs = [targetIndexs];\n }\n\n if (targetIndex > sourceIndex) {\n if (targetIndexs.length > sourceIndexs.length) {\n let targetNextIndexs = this.currentPagerIndexedData[targetIndex + 1] as number[];\n if (Array.isArray(targetNextIndexs)) {\n targetNextIndexs = [...targetNextIndexs];\n } else {\n targetNextIndexs = [targetNextIndexs];\n }\n\n if (targetNextIndexs.length < targetIndexs.length) {\n targetIndexs.splice(targetIndexs.length - 1, 1);\n }\n }\n }\n if (sourceIndexs.length === targetIndexs.length) {\n for (let i = 0; i <= sourceIndexs.length - 2; i++) {\n if (sourceIndexs[i] !== targetIndexs[i]) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n }\n return true;\n }\n // 拖拽调整数据位置 目前对排序过的数据不过处理,因为自动排序和手动排序融合问题目前没有找到好的解决方式\n reorderRecord(sourceIndex: number, targetIndex: number) {\n if (this.lastOrder === 'asc' || this.lastOrder === 'desc') {\n // const sourceIds = this._currentPagerIndexedData.splice(sourceIndex, 1);\n // sourceIds.unshift(targetIndex, 0);\n // Array.prototype.splice.apply(this._currentPagerIndexedData, sourceIds);\n return;\n } else if (this.isCanExchangeOrder(sourceIndex, targetIndex)) {\n // if (this.treeDataHierarchyState?.size > 0) {\n if (this.hasHierarchyStateExpand) {\n let sourceIndexs = this.currentPagerIndexedData[sourceIndex];\n let targetIndexs = this.currentPagerIndexedData[targetIndex];\n if (Array.isArray(sourceIndexs)) {\n sourceIndexs = [...sourceIndexs];\n } else {\n sourceIndexs = [sourceIndexs];\n }\n\n if (Array.isArray(targetIndexs)) {\n targetIndexs = [...targetIndexs];\n } else {\n targetIndexs = [targetIndexs];\n }\n\n let sourceI;\n let targetI;\n if (sourceIndexs.length > 1 || targetIndexs.length > 1) {\n if (targetIndex > sourceIndex) {\n if (targetIndexs.length > sourceIndexs.length) {\n let targetNextIndexs = this.currentPagerIndexedData[targetIndex + 1] as number[];\n if (Array.isArray(targetNextIndexs)) {\n targetNextIndexs = [...targetNextIndexs];\n } else {\n targetNextIndexs = [targetNextIndexs];\n }\n\n if (targetNextIndexs.length < targetIndexs.length) {\n targetIndexs.splice(targetIndexs.length - 1, 1);\n }\n }\n }\n sourceI = (<number[]>sourceIndexs).splice(sourceIndexs.length - 1, 1)[0];\n targetI = (<number[]>targetIndexs).splice(targetIndexs.length - 1, 1)[0];\n if (sourceIndexs.length >= 1) {\n const parent = this.getOriginalRecord(sourceIndexs);\n const sourceIds = parent.filteredChildren\n ? parent.filteredChildren.splice(sourceI, 1)\n : parent.children.splice(sourceI, 1);\n sourceIds.unshift(targetI, 0);\n Array.prototype.splice.apply(parent.filteredChildren ?? parent.children, sourceIds);\n } else {\n const sourceIds = this.records.splice(sourceI, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n sourceIds.unshift(targetI, 0);\n Array.prototype.splice.apply(this.records, sourceIds);\n }\n } else {\n sourceI = this.currentPagerIndexedData[sourceIndex] as number;\n targetI = this.currentPagerIndexedData[targetIndex];\n // 从source的二维数组中取出需要操作的records\n const records = this.records.splice(sourceI, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n records.unshift(targetI, 0);\n Array.prototype.splice.apply(this.records, records);\n }\n this.restoreTreeHierarchyState();\n this.updatePagerData();\n } else {\n // 从source的二维数组中取出需要操作的records\n const records = this.records.splice(sourceIndex, 1);\n // 将records插入到目标地址targetIndex处\n // 把records变成一个适合splice的数组(包含splice前2个参数的数组) 以通过splice来插入到source数组\n records.unshift(targetIndex, 0);\n Array.prototype.splice.apply(this.records, records);\n }\n }\n }\n\n restoreTreeHierarchyState() {\n if (this.hierarchyExpandLevel) {\n for (let i = 0; i < this._sourceLength; i++) {\n //expandLevel为有效值即需要按tree分析展示数据\n const nodeData = this.getOriginalRecord(i);\n const children = (nodeData as any).filteredChildren ?? (nodeData as any).children;\n children && !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n\n this.currentIndexedData = Array.from({ length: this._sourceLength }, (_, i) => i);\n let nodeLength = this._sourceLength;\n for (let i = 0; i < nodeLength; i++) {\n const indexKey = this.currentIndexedData[i];\n const nodeData = this.getOriginalRecord(indexKey);\n const children = (nodeData as any).filteredChildren ?? (nodeData as any).children;\n if (children?.length > 0 && nodeData.hierarchyState === HierarchyState.expand) {\n this.hasHierarchyStateExpand = true;\n const childrenLength = this.restoreChildrenNodeHierarchy(indexKey, nodeData);\n i += childrenLength;\n nodeLength += childrenLength;\n } else if ((nodeData as any).children === true) {\n !nodeData.hierarchyState && (nodeData.hierarchyState = HierarchyState.collapse);\n }\n }\n }\n }\n restoreChildrenNodeHierarchy(\n indexKey: number | number[],\n\n nodeData: any\n ): number {\n let childTotalLength = 0;\n const children = (nodeData as any).filteredChildren ?? (nodeData as any).children;\n const nodeLength = children?.length ?? 0;\n for (let j = 0; j < nodeLength; j++) {\n if (nodeData.hierarchyState === HierarchyState.expand) {\n childTotalLength += 1;\n }\n const childNodeData = children[j];\n const childIndexKey = Array.isArray(indexKey) ? indexKey.concat(j) : [indexKey, j];\n if (nodeData.hierarchyState === HierarchyState.expand) {\n this.currentIndexedData.splice(\n this.currentIndexedData.indexOf(indexKey) + childTotalLength,\n // childTotalLength,\n 0,\n childIndexKey\n );\n }\n childTotalLength += this.restoreChildrenNodeHierarchy(\n childIndexKey,\n\n childNodeData\n );\n }\n return childTotalLength;\n }\n}\n\n/**\n * 从数组array中获取index的值\n * 如:给index=[0,0] 则返回 array[0].children[0];如果给index=[2] 则返回array[2]; 如果给index=[3,0,4] 则返回array[3].children[0].children[4]\n * @param array\n * @param index\n * @returns\n */\nfunction getValueFromDeepArray(array: any, index: number[]) {\n let result = array;\n for (let i = 0; i < index.length; i++) {\n const currentIdx = index[i];\n if (result[currentIdx]) {\n result = result[currentIdx];\n } else {\n return undefined;\n }\n const children = result.filteredChildren ?? result?.children;\n if (children && i + 1 < index.length) {\n result = children;\n }\n }\n return result;\n}\n"]}
|