k-vtable 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/ListTable.d.ts +1 -0
- package/cjs/ListTable.js +5 -0
- package/cjs/ListTable.js.map +1 -1
- package/cjs/core/BaseTable.js +1 -1
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/data/DataSource.js +2 -11
- package/cjs/data/DataSource.js.map +1 -1
- package/cjs/dataset/dataset.js +20 -18
- package/cjs/dataset/dataset.js.map +1 -1
- package/cjs/event/helper.js +30 -22
- package/cjs/event/helper.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/scenegraph/component/table-component.d.ts +4 -0
- package/cjs/scenegraph/component/table-component.js +72 -2
- package/cjs/scenegraph/component/table-component.js.map +1 -1
- package/cjs/scenegraph/component/util.d.ts +2 -0
- package/cjs/scenegraph/component/util.js +11 -1
- package/cjs/scenegraph/component/util.js.map +1 -1
- package/cjs/scenegraph/graphic/chart.js +7 -2
- package/cjs/scenegraph/graphic/chart.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.d.ts +9 -0
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +48 -15
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/index.js +2 -0
- package/cjs/scenegraph/graphic/contributions/index.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.js +3 -2
- package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
- package/cjs/scenegraph/layout/frozen.js +2 -0
- package/cjs/scenegraph/layout/frozen.js.map +1 -1
- package/cjs/scenegraph/layout/update-col.js +9 -4
- package/cjs/scenegraph/layout/update-col.js.map +1 -1
- package/cjs/scenegraph/layout/update-row.js +11 -4
- package/cjs/scenegraph/layout/update-row.js.map +1 -1
- package/cjs/scenegraph/scenegraph.js +6 -3
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/scenegraph/select/update-select-border.js +2 -2
- package/cjs/scenegraph/select/update-select-border.js.map +1 -1
- package/cjs/state/cell-move/index.js +13 -4
- package/cjs/state/cell-move/index.js.map +1 -1
- package/cjs/state/hover/update-position.js +2 -2
- package/cjs/state/hover/update-position.js.map +1 -1
- package/cjs/state/resize/update-resize-column.js +1 -0
- package/cjs/state/resize/update-resize-column.js.map +1 -1
- package/cjs/state/state.d.ts +2 -0
- package/cjs/state/state.js +4 -0
- package/cjs/state/state.js.map +1 -1
- package/cjs/tools/util.d.ts +2 -1
- package/cjs/tools/util.js +14 -3
- package/cjs/tools/util.js.map +1 -1
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +379 -185
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.d.ts +1 -0
- package/es/ListTable.js +5 -0
- package/es/ListTable.js.map +1 -1
- package/es/core/BaseTable.js +1 -1
- package/es/core/BaseTable.js.map +1 -1
- package/es/data/DataSource.js +3 -12
- package/es/data/DataSource.js.map +1 -1
- package/es/dataset/dataset.js +20 -18
- package/es/dataset/dataset.js.map +1 -1
- package/es/event/helper.js +30 -22
- package/es/event/helper.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/scenegraph/component/table-component.d.ts +4 -0
- package/es/scenegraph/component/table-component.js +73 -3
- package/es/scenegraph/component/table-component.js.map +1 -1
- package/es/scenegraph/component/util.d.ts +2 -0
- package/es/scenegraph/component/util.js +8 -0
- package/es/scenegraph/component/util.js.map +1 -1
- package/es/scenegraph/graphic/chart.js +8 -1
- package/es/scenegraph/graphic/chart.js.map +1 -1
- package/es/scenegraph/graphic/contributions/group-contribution-render.d.ts +9 -0
- package/es/scenegraph/graphic/contributions/group-contribution-render.js +47 -14
- package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/es/scenegraph/graphic/contributions/index.js +2 -1
- package/es/scenegraph/graphic/contributions/index.js.map +1 -1
- package/es/scenegraph/group-creater/cell-helper.js +3 -2
- package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/es/scenegraph/group-creater/column-helper.js.map +1 -1
- package/es/scenegraph/layout/frozen.js +2 -0
- package/es/scenegraph/layout/frozen.js.map +1 -1
- package/es/scenegraph/layout/update-col.js +8 -3
- package/es/scenegraph/layout/update-col.js.map +1 -1
- package/es/scenegraph/layout/update-row.js +9 -2
- package/es/scenegraph/layout/update-row.js.map +1 -1
- package/es/scenegraph/scenegraph.js +6 -3
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/scenegraph/select/update-select-border.js +2 -2
- package/es/scenegraph/select/update-select-border.js.map +1 -1
- package/es/state/cell-move/index.js +14 -3
- package/es/state/cell-move/index.js.map +1 -1
- package/es/state/hover/update-position.js +2 -2
- package/es/state/hover/update-position.js.map +1 -1
- package/es/state/resize/update-resize-column.js +1 -0
- package/es/state/resize/update-resize-column.js.map +1 -1
- package/es/state/state.d.ts +2 -0
- package/es/state/state.js +4 -0
- package/es/state/state.js.map +1 -1
- package/es/tools/util.d.ts +2 -1
- package/es/tools/util.js +13 -0
- package/es/tools/util.js.map +1 -1
- package/es/vrender.js.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/layout/frozen.ts"],"names":[],"mappings":"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","file":"frozen.js","sourcesContent":["import { getStyleTheme } from '../../core/tableHelper';\nimport { getTargetCell } from '../../event/util';\nimport { Group } from '../graphic/group';\nimport { createColGroup } from '../group-creater/column';\nimport type { Scenegraph } from '../scenegraph';\nimport { getProp } from '../utils/get-prop';\nimport { table } from 'console';\nimport { updateReactComponentContainer } from './frozen-react';\n\nexport function dealFrozen(scene: Scenegraph) {\n if (scene.table.frozenColCount > scene.table.rowHeaderLevelCount) {\n // 将对应列移入rowHeaderGroup\n scene.rowHeaderGroup.setAttribute('height', scene.bodyGroup.attribute.height);\n scene.rowHeaderGroup.setAttribute('y', scene.bodyGroup.attribute.y);\n scene.cornerHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.frozenColCount - scene.table.rowHeaderLevelCount; i++) {\n moveColumnFromBodyToRowHeader(scene);\n moveColumnFromColHeaderToCornerHeader(scene);\n moveColumnFromBottomToLeftBottomCorner(scene);\n }\n } else if (scene.table.frozenColCount < scene.table.rowHeaderLevelCount) {\n // move columnGroup from rowHeaderGroup into bodyGroup(from cornerHeaderGroup into colHeaderGroup)\n scene.bodyGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height);\n scene.bodyGroup.setAttribute('y', scene.rowHeaderGroup.attribute.y);\n scene.colHeaderGroup.setAttribute('height', scene.cornerHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.rowHeaderLevelCount - scene.table.frozenColCount; i++) {\n moveColumnFromRowHeaderToBody(scene);\n moveColumnFromCornerHeaderToColHeader(scene);\n moveColumnFromLeftBottomCornerToBottom(scene);\n }\n }\n scene.bodyGroup.setAttribute('x', scene.rowHeaderGroup.attribute.width);\n scene.colHeaderGroup.setAttribute('x', scene.cornerHeaderGroup.attribute.width);\n\n scene.updateContainer();\n scene.updateBorderSizeAndPosition();\n\n if (!scene.isPivot && !(scene.table as any).transpose) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n }\n scene.hasFrozen = true;\n\n // scene.frozenColCount = scene.rowHeaderGroup.childrenCount;\n scene.frozenColCount = scene.table.frozenColCount;\n scene.frozenRowCount =\n scene.colHeaderGroup.firstChild?.childrenCount ??\n scene.cornerHeaderGroup.firstChild?.childrenCount ??\n scene.table.frozenRowCount;\n}\n\nexport function resetFrozen(scene: Scenegraph) {\n if (scene.frozenColCount > scene.table.frozenColCount) {\n // move columnGroup from rowHeaderGroup into bodyGroup(from cornerHeaderGroup into colHeaderGroup)\n scene.bodyGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height);\n scene.bodyGroup.setAttribute('y', scene.rowHeaderGroup.attribute.y);\n scene.colHeaderGroup.setAttribute('height', scene.cornerHeaderGroup.attribute.height);\n for (let i = 0; i < scene.frozenColCount - scene.table.frozenColCount; i++) {\n moveColumnFromRowHeaderToBody(scene);\n moveColumnFromCornerHeaderToColHeader(scene);\n moveColumnFromLeftBottomCornerToBottom(scene);\n }\n } else if (scene.frozenColCount < scene.table.frozenColCount) {\n // move columnGroup from bodyGroup into rowHeaderGroup(from colHeaderGroup into cornerHeaderGroup)\n scene.rowHeaderGroup.setAttribute('height', scene.bodyGroup.attribute.height);\n scene.rowHeaderGroup.setAttribute('y', scene.bodyGroup.attribute.y);\n scene.cornerHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.frozenColCount - scene.frozenColCount; i++) {\n moveColumnFromBodyToRowHeader(scene);\n moveColumnFromColHeaderToCornerHeader(scene);\n moveColumnFromBottomToLeftBottomCorner(scene);\n }\n }\n\n updateReactComponentContainer(scene);\n scene.recreateAllSelectRangeComponents();\n // scene.frozenColCount = scene.rowHeaderGroup.childrenCount;\n scene.frozenColCount = scene.table.frozenColCount;\n scene.frozenRowCount =\n scene.colHeaderGroup.firstChild?.childrenCount ??\n scene.cornerHeaderGroup.firstChild?.childrenCount ??\n scene.table.frozenRowCount;\n // scene.proxy.colStart = scene.table.frozenColCount;\n scene.proxy.colStart = (scene.bodyGroup.firstChild as any)?.col ?? scene.table.frozenColCount;\n\n scene.bodyGroup.setAttribute('x', scene.rowHeaderGroup.attribute.width);\n scene.colHeaderGroup.setAttribute('x', scene.cornerHeaderGroup.attribute.width);\n // scene.updateContainerAttrWidthAndX();\n scene.updateContainer();\n scene.updateBorderSizeAndPosition();\n\n if (!scene.isPivot && !(scene.table as any).transpose) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n } else if (scene.table.options.rightFrozenColCount) {\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n }\n scene.hasFrozen = true;\n}\n\nfunction moveColumnFromBodyToRowHeader(scene: Scenegraph) {\n // deal with bodyGroup\n const column = scene.bodyGroup.firstChild instanceof Group ? scene.bodyGroup.firstChild : null;\n if (column) {\n scene.rowHeaderGroup.appendChild(column);\n // update container width\n scene.rowHeaderGroup.setAttribute('width', scene.rowHeaderGroup.attribute.width + column.attribute.width);\n scene.bodyGroup.setAttribute('width', scene.bodyGroup.attribute.width - column.attribute.width);\n }\n}\n\nfunction moveColumnFromColHeaderToCornerHeader(scene: Scenegraph) {\n // deal width colHeaderGroup\n const headerColumn = scene.colHeaderGroup.firstChild instanceof Group ? scene.colHeaderGroup.firstChild : null;\n if (headerColumn) {\n scene.cornerHeaderGroup.appendChild(headerColumn);\n scene.cornerHeaderGroup.setAttribute(\n 'width',\n scene.cornerHeaderGroup.attribute.width + headerColumn.attribute.width\n );\n scene.colHeaderGroup.setAttribute('width', scene.colHeaderGroup.attribute.width - headerColumn.attribute.width);\n }\n}\n\nfunction moveColumnFromRowHeaderToBody(scene: Scenegraph) {\n const column =\n scene.rowHeaderGroup.lastChild instanceof Group\n ? scene.rowHeaderGroup.lastChild\n : (scene.rowHeaderGroup.lastChild?._prev as Group);\n if (column) {\n insertBefore(scene.bodyGroup, column, scene.bodyGroup.firstChild as Group);\n // 更新容器宽度\n scene.bodyGroup.setAttribute('width', scene.bodyGroup.attribute.width + column.attribute.width);\n scene.rowHeaderGroup.setAttribute('width', scene.rowHeaderGroup.attribute.width - column.attribute.width);\n }\n}\n\nfunction moveColumnFromCornerHeaderToColHeader(scene: Scenegraph) {\n // 处理列表头\n const headerColumn =\n scene.cornerHeaderGroup.lastChild instanceof Group\n ? scene.cornerHeaderGroup.lastChild\n : (scene.cornerHeaderGroup.lastChild?._prev as Group);\n if (headerColumn) {\n insertBefore(scene.colHeaderGroup, headerColumn, scene.colHeaderGroup.firstChild as Group);\n scene.colHeaderGroup.setAttribute('width', scene.colHeaderGroup.attribute.width + headerColumn.attribute.width);\n scene.cornerHeaderGroup.setAttribute(\n 'width',\n scene.cornerHeaderGroup.attribute.width - headerColumn.attribute.width\n );\n }\n}\n\nfunction moveColumnFromBottomToLeftBottomCorner(scene: Scenegraph) {\n // deal with bottomFrozenGroup\n const column = scene.bottomFrozenGroup.firstChild instanceof Group ? scene.bottomFrozenGroup.firstChild : null;\n if (column) {\n scene.leftBottomCornerGroup.appendChild(column);\n // update container width\n scene.leftBottomCornerGroup.setAttribute(\n 'width',\n scene.leftBottomCornerGroup.attribute.width + column.attribute.width\n );\n scene.bottomFrozenGroup.setAttribute('width', scene.bottomFrozenGroup.attribute.width - column.attribute.width);\n\n if (scene.table.isPivotChart()) {\n column.forEachChildren((child: Group) => {\n child.setAttributes({\n stroke: false,\n fill: false\n });\n });\n }\n }\n}\n\nfunction moveColumnFromLeftBottomCornerToBottom(scene: Scenegraph) {\n const column =\n scene.leftBottomCornerGroup.lastChild instanceof Group\n ? scene.leftBottomCornerGroup.lastChild\n : (scene.leftBottomCornerGroup.lastChild?._prev as Group);\n if (column) {\n insertBefore(scene.bottomFrozenGroup, column, scene.bottomFrozenGroup.firstChild as Group);\n // 更新容器宽度\n scene.bottomFrozenGroup.setAttribute('width', scene.bottomFrozenGroup.attribute.width + column.attribute.width);\n scene.leftBottomCornerGroup.setAttribute(\n 'width',\n scene.leftBottomCornerGroup.attribute.width - column.attribute.width\n );\n\n if (scene.table.isPivotChart()) {\n column.forEachChildren((child: Group) => {\n const cellStyle = scene.table._getCellStyle(child.col, child.row);\n const range = scene.table.getCellRange(child.col, child.row);\n const cellTheme = getStyleTheme(\n cellStyle,\n scene.table,\n range ? range.start.col : child.col,\n range ? range.start.row : child.row,\n getProp\n ).theme;\n\n child.setAttributes({\n fill: cellTheme?.group?.fill ?? undefined,\n stroke: cellTheme?.group?.stroke ?? undefined\n });\n });\n }\n }\n}\n\nexport function dealRightFrozen(distRightFrozenCol: number, scene: Scenegraph) {\n const {\n table,\n proxy,\n rightTopCornerGroup,\n rightFrozenGroup,\n rightBottomCornerGroup,\n bottomFrozenGroup,\n bodyGroup,\n colHeaderGroup\n } = scene;\n // const distRightFrozenCol = scene.table.rightFrozenColCount;\n const currentRightFrozenCol = scene.table.rightFrozenColCount;\n if (distRightFrozenCol > currentRightFrozenCol) {\n for (let col = table.colCount - currentRightFrozenCol - 1; col >= table.colCount - distRightFrozenCol; col--) {\n const colGroup = scene.getColGroup(col);\n insertBefore(rightFrozenGroup, colGroup, rightFrozenGroup.firstChild as Group);\n const headerColGroup = scene.getColGroup(col, true);\n insertBefore(rightTopCornerGroup, headerColGroup, rightTopCornerGroup.firstChild as Group);\n const bottomColGroup = scene.getColGroupInBottom(col);\n insertBefore(rightBottomCornerGroup, bottomColGroup, rightBottomCornerGroup.firstChild as Group);\n }\n // reset cell y\n let x = 0;\n rightFrozenGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightTopCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightBottomCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n } else if (distRightFrozenCol < currentRightFrozenCol) {\n for (let col = table.colCount - currentRightFrozenCol; col < table.colCount - distRightFrozenCol; col++) {\n const colGroup = scene.getColGroup(col);\n colGroup?.setAttribute(\n 'x',\n (bodyGroup.lastChild as Group).attribute.x + table.getColWidth((bodyGroup.lastChild as Group).col)\n );\n bodyGroup.appendChild(colGroup);\n const headerColGroup = scene.getColGroupInRightTopCorner(col);\n headerColGroup?.setAttribute(\n 'x',\n (colHeaderGroup.lastChild as Group).attribute.x + table.getColWidth((colHeaderGroup.lastChild as Group).col)\n );\n colHeaderGroup?.appendChild(headerColGroup);\n const bottomColGroup = scene.getColGroupInRightBottomCorner(col);\n bottomColGroup?.setAttribute(\n 'x',\n (bottomFrozenGroup.lastChild as Group).attribute.x +\n table.getColWidth((bottomFrozenGroup.lastChild as Group).col)\n );\n bottomFrozenGroup?.appendChild(bottomColGroup);\n }\n // reset cell y\n let x = 0;\n rightFrozenGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightTopCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightBottomCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n }\n\n // reset right width\n rightFrozenGroup.setAttribute('width', table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1));\n rightTopCornerGroup.setAttribute(\n 'width',\n table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1)\n );\n rightBottomCornerGroup.setAttribute(\n 'width',\n table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1)\n );\n\n table.internalProps.rightFrozenColCount = distRightFrozenCol;\n scene.updateContainer();\n scene.component.updateScrollBar();\n scene.updateNextFrame();\n}\n\nexport function dealBottomFrozen(distBottomFrozenRow: number, scene: Scenegraph) {\n const { table, proxy, bottomFrozenGroup, leftBottomCornerGroup, rightBottomCornerGroup } = scene;\n if (!bottomFrozenGroup.childrenCount) {\n // init bottom\n if (!proxy.table.isPivotChart()) {\n // create left bottom frozen\n createColGroup(\n leftBottomCornerGroup,\n 0,\n 0,\n 0, // colStart\n table.frozenColCount - 1, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'rowHeader', // isHeader\n table\n );\n createColGroup(\n rightBottomCornerGroup,\n 0,\n 0,\n table.colCount - table.rightFrozenColCount, // colStart\n table.colCount - 1, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'body', // isHeader\n table\n );\n }\n // create bottomFrozenGroup\n createColGroup(\n bottomFrozenGroup,\n 0,\n 0,\n proxy.colStart, // colStart\n proxy.colEnd, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'body', // isHeader\n table\n );\n }\n const currentBottomFrozenRow = scene.table.bottomFrozenRowCount;\n if (distBottomFrozenRow > currentBottomFrozenRow) {\n // row header -> left bottom\n for (let col = 0; col < table.frozenColCount; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInLeftBottomCorner(col);\n // move cell\n for (let row = table.rowCount - currentBottomFrozenRow - 1; row >= table.rowCount - distBottomFrozenRow; row--) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n // body -> bottom\n for (let col = proxy.colStart; col <= proxy.colEnd; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInBottom(col);\n // move cell\n for (let row = table.rowCount - currentBottomFrozenRow - 1; row >= table.rowCount - distBottomFrozenRow; row--) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n if (table.rightFrozenColCount > 0) {\n // right -> right bottom\n for (let col = table.colCount - table.rightFrozenColCount; col < table.colCount; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInRightBottomCorner(col);\n // move cell\n for (\n let row = table.rowCount - currentBottomFrozenRow - 1;\n row >= table.rowCount - distBottomFrozenRow;\n row--\n ) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n }\n } else if (distBottomFrozenRow < currentBottomFrozenRow) {\n // left bottom -> row header\n for (let col = 0; col < table.rowHeaderLevelCount; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInLeftBottomCorner(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n // bottom -> body\n for (let col = proxy.colStart; col <= proxy.colEnd; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInBottom(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n if (table.rightFrozenColCount > 0) {\n // right bottom -> right\n for (let col = table.colCount - table.rightFrozenColCount; col < table.colCount; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInRightBottomCorner(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n }\n }\n // reset bottom height\n bottomFrozenGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n leftBottomCornerGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n rightBottomCornerGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n\n table.internalProps.bottomFrozenRowCount = distBottomFrozenRow;\n scene.updateContainer();\n scene.component.updateScrollBar();\n scene.updateNextFrame();\n}\n\nfunction insertBefore(container: Group, newNode: Group, targetGroup: Group) {\n if (!newNode || !container) {\n return;\n }\n if (targetGroup) {\n container.insertBefore(newNode, targetGroup);\n } else {\n container.appendChild(newNode);\n }\n}\n\nexport function resetRowFrozen(scene: Scenegraph) {\n if (scene.frozenRowCount > scene.table.frozenRowCount) {\n // move columnGroup from rowHeaderGroup into bodyGroup(from cornerHeaderGroup into colHeaderGroup)\n scene.bodyGroup.setAttribute('width', scene.colHeaderGroup.attribute.width);\n scene.bodyGroup.setAttribute('x', scene.colHeaderGroup.attribute.x);\n scene.rowHeaderGroup.setAttribute('width', scene.cornerHeaderGroup.attribute.width);\n for (let i = 0; i < scene.frozenRowCount - scene.table.frozenRowCount; i++) {\n moveRowFromColHeaderToBody(scene);\n moveRowFromCornerHeaderToRowHeader(scene);\n moveRowFromTopRightCornerToRight(scene);\n }\n } else if (scene.frozenRowCount < scene.table.frozenRowCount) {\n // move columnGroup from bodyGroup into rowHeaderGroup(from colHeaderGroup into cornerHeaderGroup)\n scene.colHeaderGroup.setAttribute('width', scene.bodyGroup.attribute.width);\n scene.colHeaderGroup.setAttribute('x', scene.bodyGroup.attribute.x);\n scene.cornerHeaderGroup.setAttribute('width', scene.rowHeaderGroup.attribute.width);\n for (let i = 0; i < scene.table.frozenRowCount - scene.frozenRowCount; i++) {\n moveRowFromBodyToColHeader(scene);\n moveRowFromRowHeaderToCornerHeader(scene);\n moveRowFromRightToTopRightCorner(scene);\n }\n }\n\n updateReactComponentContainer(scene);\n scene.recreateAllSelectRangeComponents();\n // scene.frozenColCount = scene.rowHeaderGroup.childrenCount;\n scene.frozenRowCount = scene.table.frozenRowCount;\n scene.frozenColCount = scene.rowHeaderGroup?.childrenCount ?? 0;\n // scene.proxy.colStart = scene.table.frozenColCount;\n scene.proxy.rowStart = (scene.bodyGroup.firstChild?.firstChild as any)?.row ?? scene.table.frozenRowCount;\n scene.bodyGroup.setAttribute('y', scene.colHeaderGroup.attribute.height);\n scene.rowHeaderGroup.setAttribute('y', scene.cornerHeaderGroup.attribute.height);\n // scene.updateContainerAttrWidthAndX();\n scene.updateContainer();\n scene.updateBorderSizeAndPosition();\n\n scene.hasFrozen = true;\n}\n\nfunction moveRowFromBodyToColHeader(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with bodyGroup\n for (let i = 0; i < scene.bodyGroup.childrenCount; i++) {\n const child = scene.bodyGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const rowCell = child.firstChild as Group;\n scene.colHeaderGroup.children[i]?.appendChild(rowCell);\n // update container width\n if (!hasSetedHeight) {\n scene.colHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height + rowCell.attribute.height);\n scene.bodyGroup.setAttribute('height', scene.bodyGroup.attribute.height - rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction moveRowFromRowHeaderToCornerHeader(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with rowHeaderGroup\n for (let i = 0; i < scene.rowHeaderGroup.childrenCount; i++) {\n const child = scene.rowHeaderGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const rowCell = child.firstChild as Group;\n scene.cornerHeaderGroup.children[i]?.appendChild(rowCell);\n // update container width\n if (!hasSetedHeight) {\n scene.cornerHeaderGroup.setAttribute(\n 'height',\n scene.cornerHeaderGroup.attribute.height + rowCell.attribute.height\n );\n scene.rowHeaderGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height - rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction moveRowFromRightToTopRightCorner(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with rowHeaderGroup\n for (let i = 0; i < scene.rightFrozenGroup.childrenCount; i++) {\n const child = scene.rightFrozenGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const rowCell = child.firstChild as Group;\n scene.rightTopCornerGroup.children[i]?.appendChild(rowCell);\n // update container width\n if (!hasSetedHeight) {\n scene.rightTopCornerGroup.setAttribute(\n 'height',\n scene.rightTopCornerGroup.attribute.height + rowCell.attribute.height\n );\n scene.rightFrozenGroup.setAttribute('height', scene.rightFrozenGroup.attribute.height - rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction moveRowFromColHeaderToBody(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with bodyGroup\n for (let i = 0; i < scene.colHeaderGroup.childrenCount; i++) {\n const child = scene.colHeaderGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const target = scene.bodyGroup.children[i] as Group;\n if (!target) {\n continue;\n }\n const rowCell = child.lastChild as Group;\n insertBefore(target, rowCell, target.firstChild as Group);\n // 更新高度\n if (!hasSetedHeight) {\n scene.colHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height - rowCell.attribute.height);\n scene.bodyGroup.setAttribute('height', scene.bodyGroup.attribute.height + rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction moveRowFromCornerHeaderToRowHeader(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with rowHeaderGroup\n for (let i = 0; i < scene.cornerHeaderGroup.childrenCount; i++) {\n const child = scene.cornerHeaderGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const target = scene.rowHeaderGroup.children[i] as Group;\n if (!target) {\n continue;\n }\n const rowCell = child.lastChild as Group;\n // scene.rowHeaderGroup.children[i]?.appendChild(rowCell);\n insertBefore(target, rowCell, target.firstChild as Group);\n // update container width\n if (!hasSetedHeight) {\n scene.cornerHeaderGroup.setAttribute(\n 'height',\n scene.cornerHeaderGroup.attribute.height - rowCell.attribute.height\n );\n scene.rowHeaderGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height + rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction moveRowFromTopRightCornerToRight(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with rowHeaderGroup\n for (let i = 0; i < scene.rightTopCornerGroup.childrenCount; i++) {\n const child = scene.rightTopCornerGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const target = scene.rightFrozenGroup.children[i] as Group;\n if (!target) {\n continue;\n }\n const rowCell = child.lastChild as Group;\n // scene.rightFrozenGroup.children[i]?.appendChild(rowCell);\n insertBefore(target, rowCell, target.firstChild as Group);\n // update container width\n if (!hasSetedHeight) {\n scene.rightTopCornerGroup.setAttribute(\n 'height',\n scene.rightTopCornerGroup.attribute.height - rowCell.attribute.height\n );\n scene.rightFrozenGroup.setAttribute('height', scene.rightFrozenGroup.attribute.height + rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction checkBeforeMove(child: any) {\n // 跳过非 Group 类型或名为 'table-border-rect' 的边框节点\n return child instanceof Group && child?.name !== 'table-border-rect';\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scenegraph/layout/frozen.ts"],"names":[],"mappings":"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","file":"frozen.js","sourcesContent":["import { getStyleTheme } from '../../core/tableHelper';\nimport { getTargetCell } from '../../event/util';\nimport { Group } from '../graphic/group';\nimport { createColGroup } from '../group-creater/column';\nimport type { Scenegraph } from '../scenegraph';\nimport { getProp } from '../utils/get-prop';\nimport { table } from 'console';\nimport { updateReactComponentContainer } from './frozen-react';\n\nexport function dealFrozen(scene: Scenegraph) {\n if (scene.table.frozenColCount > scene.table.rowHeaderLevelCount) {\n // 将对应列移入rowHeaderGroup\n scene.rowHeaderGroup.setAttribute('height', scene.bodyGroup.attribute.height);\n scene.rowHeaderGroup.setAttribute('y', scene.bodyGroup.attribute.y);\n scene.cornerHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.frozenColCount - scene.table.rowHeaderLevelCount; i++) {\n moveColumnFromBodyToRowHeader(scene);\n moveColumnFromColHeaderToCornerHeader(scene);\n moveColumnFromBottomToLeftBottomCorner(scene);\n }\n } else if (scene.table.frozenColCount < scene.table.rowHeaderLevelCount) {\n // move columnGroup from rowHeaderGroup into bodyGroup(from cornerHeaderGroup into colHeaderGroup)\n scene.bodyGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height);\n scene.bodyGroup.setAttribute('y', scene.rowHeaderGroup.attribute.y);\n scene.colHeaderGroup.setAttribute('height', scene.cornerHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.rowHeaderLevelCount - scene.table.frozenColCount; i++) {\n moveColumnFromRowHeaderToBody(scene);\n moveColumnFromCornerHeaderToColHeader(scene);\n moveColumnFromLeftBottomCornerToBottom(scene);\n }\n }\n scene.bodyGroup.setAttribute('x', scene.rowHeaderGroup.attribute.width);\n scene.colHeaderGroup.setAttribute('x', scene.cornerHeaderGroup.attribute.width);\n\n scene.updateContainer();\n scene.updateBorderSizeAndPosition();\n\n if (!scene.isPivot && !(scene.table as any).transpose) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n }\n\n scene.component.setBottonFrozenColumnShadow();\n scene.component.setTopFrozenColumnShadow();\n\n scene.hasFrozen = true;\n\n // scene.frozenColCount = scene.rowHeaderGroup.childrenCount;\n scene.frozenColCount = scene.table.frozenColCount;\n scene.frozenRowCount =\n scene.colHeaderGroup.firstChild?.childrenCount ??\n scene.cornerHeaderGroup.firstChild?.childrenCount ??\n scene.table.frozenRowCount;\n}\n\nexport function resetFrozen(scene: Scenegraph) {\n if (scene.frozenColCount > scene.table.frozenColCount) {\n // move columnGroup from rowHeaderGroup into bodyGroup(from cornerHeaderGroup into colHeaderGroup)\n scene.bodyGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height);\n scene.bodyGroup.setAttribute('y', scene.rowHeaderGroup.attribute.y);\n scene.colHeaderGroup.setAttribute('height', scene.cornerHeaderGroup.attribute.height);\n for (let i = 0; i < scene.frozenColCount - scene.table.frozenColCount; i++) {\n moveColumnFromRowHeaderToBody(scene);\n moveColumnFromCornerHeaderToColHeader(scene);\n moveColumnFromLeftBottomCornerToBottom(scene);\n }\n } else if (scene.frozenColCount < scene.table.frozenColCount) {\n // move columnGroup from bodyGroup into rowHeaderGroup(from colHeaderGroup into cornerHeaderGroup)\n scene.rowHeaderGroup.setAttribute('height', scene.bodyGroup.attribute.height);\n scene.rowHeaderGroup.setAttribute('y', scene.bodyGroup.attribute.y);\n scene.cornerHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height);\n for (let i = 0; i < scene.table.frozenColCount - scene.frozenColCount; i++) {\n moveColumnFromBodyToRowHeader(scene);\n moveColumnFromColHeaderToCornerHeader(scene);\n moveColumnFromBottomToLeftBottomCorner(scene);\n }\n }\n\n updateReactComponentContainer(scene);\n scene.recreateAllSelectRangeComponents();\n // scene.frozenColCount = scene.rowHeaderGroup.childrenCount;\n scene.frozenColCount = scene.table.frozenColCount;\n scene.frozenRowCount =\n scene.colHeaderGroup.firstChild?.childrenCount ??\n scene.cornerHeaderGroup.firstChild?.childrenCount ??\n scene.table.frozenRowCount;\n // scene.proxy.colStart = scene.table.frozenColCount;\n scene.proxy.colStart = (scene.bodyGroup.firstChild as any)?.col ?? scene.table.frozenColCount;\n\n scene.bodyGroup.setAttribute('x', scene.rowHeaderGroup.attribute.width);\n scene.colHeaderGroup.setAttribute('x', scene.cornerHeaderGroup.attribute.width);\n // scene.updateContainerAttrWidthAndX();\n scene.updateContainer();\n scene.updateBorderSizeAndPosition();\n\n if (!scene.isPivot && !(scene.table as any).transpose) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n } else if (scene.table.options.frozenColCount) {\n scene.component.setFrozenColumnShadow(scene.table.frozenColCount - 1);\n } else if (scene.table.options.rightFrozenColCount) {\n scene.component.setRightFrozenColumnShadow(scene.table.colCount - scene.table.rightFrozenColCount);\n }\n\n scene.component.setBottonFrozenColumnShadow();\n scene.component.setTopFrozenColumnShadow();\n\n scene.hasFrozen = true;\n}\n\nfunction moveColumnFromBodyToRowHeader(scene: Scenegraph) {\n // deal with bodyGroup\n const column = scene.bodyGroup.firstChild instanceof Group ? scene.bodyGroup.firstChild : null;\n if (column) {\n scene.rowHeaderGroup.appendChild(column);\n // update container width\n scene.rowHeaderGroup.setAttribute('width', scene.rowHeaderGroup.attribute.width + column.attribute.width);\n scene.bodyGroup.setAttribute('width', scene.bodyGroup.attribute.width - column.attribute.width);\n }\n}\n\nfunction moveColumnFromColHeaderToCornerHeader(scene: Scenegraph) {\n // deal width colHeaderGroup\n const headerColumn = scene.colHeaderGroup.firstChild instanceof Group ? scene.colHeaderGroup.firstChild : null;\n if (headerColumn) {\n scene.cornerHeaderGroup.appendChild(headerColumn);\n scene.cornerHeaderGroup.setAttribute(\n 'width',\n scene.cornerHeaderGroup.attribute.width + headerColumn.attribute.width\n );\n scene.colHeaderGroup.setAttribute('width', scene.colHeaderGroup.attribute.width - headerColumn.attribute.width);\n }\n}\n\nfunction moveColumnFromRowHeaderToBody(scene: Scenegraph) {\n const column =\n scene.rowHeaderGroup.lastChild instanceof Group\n ? scene.rowHeaderGroup.lastChild\n : (scene.rowHeaderGroup.lastChild?._prev as Group);\n if (column) {\n insertBefore(scene.bodyGroup, column, scene.bodyGroup.firstChild as Group);\n // 更新容器宽度\n scene.bodyGroup.setAttribute('width', scene.bodyGroup.attribute.width + column.attribute.width);\n scene.rowHeaderGroup.setAttribute('width', scene.rowHeaderGroup.attribute.width - column.attribute.width);\n }\n}\n\nfunction moveColumnFromCornerHeaderToColHeader(scene: Scenegraph) {\n // 处理列表头\n const headerColumn =\n scene.cornerHeaderGroup.lastChild instanceof Group\n ? scene.cornerHeaderGroup.lastChild\n : (scene.cornerHeaderGroup.lastChild?._prev as Group);\n if (headerColumn) {\n insertBefore(scene.colHeaderGroup, headerColumn, scene.colHeaderGroup.firstChild as Group);\n scene.colHeaderGroup.setAttribute('width', scene.colHeaderGroup.attribute.width + headerColumn.attribute.width);\n scene.cornerHeaderGroup.setAttribute(\n 'width',\n scene.cornerHeaderGroup.attribute.width - headerColumn.attribute.width\n );\n }\n}\n\nfunction moveColumnFromBottomToLeftBottomCorner(scene: Scenegraph) {\n // deal with bottomFrozenGroup\n const column = scene.bottomFrozenGroup.firstChild instanceof Group ? scene.bottomFrozenGroup.firstChild : null;\n if (column) {\n scene.leftBottomCornerGroup.appendChild(column);\n // update container width\n scene.leftBottomCornerGroup.setAttribute(\n 'width',\n scene.leftBottomCornerGroup.attribute.width + column.attribute.width\n );\n scene.bottomFrozenGroup.setAttribute('width', scene.bottomFrozenGroup.attribute.width - column.attribute.width);\n\n if (scene.table.isPivotChart()) {\n column.forEachChildren((child: Group) => {\n child.setAttributes({\n stroke: false,\n fill: false\n });\n });\n }\n }\n}\n\nfunction moveColumnFromLeftBottomCornerToBottom(scene: Scenegraph) {\n const column =\n scene.leftBottomCornerGroup.lastChild instanceof Group\n ? scene.leftBottomCornerGroup.lastChild\n : (scene.leftBottomCornerGroup.lastChild?._prev as Group);\n if (column) {\n insertBefore(scene.bottomFrozenGroup, column, scene.bottomFrozenGroup.firstChild as Group);\n // 更新容器宽度\n scene.bottomFrozenGroup.setAttribute('width', scene.bottomFrozenGroup.attribute.width + column.attribute.width);\n scene.leftBottomCornerGroup.setAttribute(\n 'width',\n scene.leftBottomCornerGroup.attribute.width - column.attribute.width\n );\n\n if (scene.table.isPivotChart()) {\n column.forEachChildren((child: Group) => {\n const cellStyle = scene.table._getCellStyle(child.col, child.row);\n const range = scene.table.getCellRange(child.col, child.row);\n const cellTheme = getStyleTheme(\n cellStyle,\n scene.table,\n range ? range.start.col : child.col,\n range ? range.start.row : child.row,\n getProp\n ).theme;\n\n child.setAttributes({\n fill: cellTheme?.group?.fill ?? undefined,\n stroke: cellTheme?.group?.stroke ?? undefined\n });\n });\n }\n }\n}\n\nexport function dealRightFrozen(distRightFrozenCol: number, scene: Scenegraph) {\n const {\n table,\n proxy,\n rightTopCornerGroup,\n rightFrozenGroup,\n rightBottomCornerGroup,\n bottomFrozenGroup,\n bodyGroup,\n colHeaderGroup\n } = scene;\n // const distRightFrozenCol = scene.table.rightFrozenColCount;\n const currentRightFrozenCol = scene.table.rightFrozenColCount;\n if (distRightFrozenCol > currentRightFrozenCol) {\n for (let col = table.colCount - currentRightFrozenCol - 1; col >= table.colCount - distRightFrozenCol; col--) {\n const colGroup = scene.getColGroup(col);\n insertBefore(rightFrozenGroup, colGroup, rightFrozenGroup.firstChild as Group);\n const headerColGroup = scene.getColGroup(col, true);\n insertBefore(rightTopCornerGroup, headerColGroup, rightTopCornerGroup.firstChild as Group);\n const bottomColGroup = scene.getColGroupInBottom(col);\n insertBefore(rightBottomCornerGroup, bottomColGroup, rightBottomCornerGroup.firstChild as Group);\n }\n // reset cell y\n let x = 0;\n rightFrozenGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightTopCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightBottomCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n } else if (distRightFrozenCol < currentRightFrozenCol) {\n for (let col = table.colCount - currentRightFrozenCol; col < table.colCount - distRightFrozenCol; col++) {\n const colGroup = scene.getColGroup(col);\n colGroup?.setAttribute(\n 'x',\n (bodyGroup.lastChild as Group).attribute.x + table.getColWidth((bodyGroup.lastChild as Group).col)\n );\n bodyGroup.appendChild(colGroup);\n const headerColGroup = scene.getColGroupInRightTopCorner(col);\n headerColGroup?.setAttribute(\n 'x',\n (colHeaderGroup.lastChild as Group).attribute.x + table.getColWidth((colHeaderGroup.lastChild as Group).col)\n );\n colHeaderGroup?.appendChild(headerColGroup);\n const bottomColGroup = scene.getColGroupInRightBottomCorner(col);\n bottomColGroup?.setAttribute(\n 'x',\n (bottomFrozenGroup.lastChild as Group).attribute.x +\n table.getColWidth((bottomFrozenGroup.lastChild as Group).col)\n );\n bottomFrozenGroup?.appendChild(bottomColGroup);\n }\n // reset cell y\n let x = 0;\n rightFrozenGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightTopCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n x = 0;\n rightBottomCornerGroup.forEachChildren((columnGroup: Group) => {\n columnGroup.setAttribute('x', x);\n x += columnGroup.attribute.width;\n });\n }\n\n // reset right width\n rightFrozenGroup.setAttribute('width', table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1));\n rightTopCornerGroup.setAttribute(\n 'width',\n table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1)\n );\n rightBottomCornerGroup.setAttribute(\n 'width',\n table.getColsWidth(table.colCount - distRightFrozenCol, table.colCount - 1)\n );\n\n table.internalProps.rightFrozenColCount = distRightFrozenCol;\n scene.updateContainer();\n scene.component.updateScrollBar();\n scene.updateNextFrame();\n}\n\nexport function dealBottomFrozen(distBottomFrozenRow: number, scene: Scenegraph) {\n const { table, proxy, bottomFrozenGroup, leftBottomCornerGroup, rightBottomCornerGroup } = scene;\n if (!bottomFrozenGroup.childrenCount) {\n // init bottom\n if (!proxy.table.isPivotChart()) {\n // create left bottom frozen\n createColGroup(\n leftBottomCornerGroup,\n 0,\n 0,\n 0, // colStart\n table.frozenColCount - 1, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'rowHeader', // isHeader\n table\n );\n createColGroup(\n rightBottomCornerGroup,\n 0,\n 0,\n table.colCount - table.rightFrozenColCount, // colStart\n table.colCount - 1, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'body', // isHeader\n table\n );\n }\n // create bottomFrozenGroup\n createColGroup(\n bottomFrozenGroup,\n 0,\n 0,\n proxy.colStart, // colStart\n proxy.colEnd, // colEnd\n 0, // rowStart\n -1, // rowEnd\n 'body', // isHeader\n table\n );\n }\n const currentBottomFrozenRow = scene.table.bottomFrozenRowCount;\n if (distBottomFrozenRow > currentBottomFrozenRow) {\n // row header -> left bottom\n for (let col = 0; col < table.frozenColCount; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInLeftBottomCorner(col);\n // move cell\n for (let row = table.rowCount - currentBottomFrozenRow - 1; row >= table.rowCount - distBottomFrozenRow; row--) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n // body -> bottom\n for (let col = proxy.colStart; col <= proxy.colEnd; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInBottom(col);\n // move cell\n for (let row = table.rowCount - currentBottomFrozenRow - 1; row >= table.rowCount - distBottomFrozenRow; row--) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n if (table.rightFrozenColCount > 0) {\n // right -> right bottom\n for (let col = table.colCount - table.rightFrozenColCount; col < table.colCount; col++) {\n const bottomFrozenColumnGroup = scene.getColGroupInRightBottomCorner(col);\n // move cell\n for (\n let row = table.rowCount - currentBottomFrozenRow - 1;\n row >= table.rowCount - distBottomFrozenRow;\n row--\n ) {\n const cellGroup = scene.getCell(col, row, true);\n // bottomFrozenColumnGroup.insertBefore(cellGroup, bottomFrozenColumnGroup.firstChild);\n insertBefore(bottomFrozenColumnGroup, cellGroup, bottomFrozenColumnGroup.firstChild as Group);\n }\n // reset cell y\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n }\n } else if (distBottomFrozenRow < currentBottomFrozenRow) {\n // left bottom -> row header\n for (let col = 0; col < table.rowHeaderLevelCount; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInLeftBottomCorner(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n // bottom -> body\n for (let col = proxy.colStart; col <= proxy.colEnd; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInBottom(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n if (table.rightFrozenColCount > 0) {\n // right bottom -> right\n for (let col = table.colCount - table.rightFrozenColCount; col < table.colCount; col++) {\n const columnGroup = scene.getColGroup(col);\n for (let row = table.rowCount - currentBottomFrozenRow; row < table.rowCount - distBottomFrozenRow; row++) {\n const cellGroup = scene.getCell(col, row, true);\n cellGroup.setAttribute(\n 'y',\n (columnGroup.lastChild as Group).attribute.y + table.getRowHeight((columnGroup.lastChild as Group).row)\n );\n columnGroup.appendChild(cellGroup);\n }\n // reset cell y\n const bottomFrozenColumnGroup = scene.getColGroupInRightBottomCorner(col);\n let y = 0;\n bottomFrozenColumnGroup.forEachChildren((cellGroup: Group) => {\n cellGroup.setAttribute('y', y);\n y += table.getRowHeight(cellGroup.row);\n });\n }\n }\n }\n // reset bottom height\n bottomFrozenGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n leftBottomCornerGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n rightBottomCornerGroup.setAttribute(\n 'height',\n table.getRowsHeight(table.rowCount - distBottomFrozenRow, table.rowCount - 1)\n );\n\n table.internalProps.bottomFrozenRowCount = distBottomFrozenRow;\n scene.updateContainer();\n scene.component.updateScrollBar();\n scene.updateNextFrame();\n}\n\nfunction insertBefore(container: Group, newNode: Group, targetGroup: Group) {\n if (!newNode || !container) {\n return;\n }\n if (targetGroup) {\n container.insertBefore(newNode, targetGroup);\n } else {\n container.appendChild(newNode);\n }\n}\n\nexport function resetRowFrozen(scene: Scenegraph) {\n if (scene.frozenRowCount > scene.table.frozenRowCount) {\n // move columnGroup from rowHeaderGroup into bodyGroup(from cornerHeaderGroup into colHeaderGroup)\n scene.bodyGroup.setAttribute('width', scene.colHeaderGroup.attribute.width);\n scene.bodyGroup.setAttribute('x', scene.colHeaderGroup.attribute.x);\n scene.rowHeaderGroup.setAttribute('width', scene.cornerHeaderGroup.attribute.width);\n for (let i = 0; i < scene.frozenRowCount - scene.table.frozenRowCount; i++) {\n moveRowFromColHeaderToBody(scene);\n moveRowFromCornerHeaderToRowHeader(scene);\n moveRowFromTopRightCornerToRight(scene);\n }\n } else if (scene.frozenRowCount < scene.table.frozenRowCount) {\n // move columnGroup from bodyGroup into rowHeaderGroup(from colHeaderGroup into cornerHeaderGroup)\n scene.colHeaderGroup.setAttribute('width', scene.bodyGroup.attribute.width);\n scene.colHeaderGroup.setAttribute('x', scene.bodyGroup.attribute.x);\n scene.cornerHeaderGroup.setAttribute('width', scene.rowHeaderGroup.attribute.width);\n for (let i = 0; i < scene.table.frozenRowCount - scene.frozenRowCount; i++) {\n moveRowFromBodyToColHeader(scene);\n moveRowFromRowHeaderToCornerHeader(scene);\n moveRowFromRightToTopRightCorner(scene);\n }\n }\n\n updateReactComponentContainer(scene);\n scene.recreateAllSelectRangeComponents();\n // scene.frozenColCount = scene.rowHeaderGroup.childrenCount;\n scene.frozenRowCount = scene.table.frozenRowCount;\n scene.frozenColCount = scene.rowHeaderGroup?.childrenCount ?? 0;\n // scene.proxy.colStart = scene.table.frozenColCount;\n scene.proxy.rowStart = (scene.bodyGroup.firstChild?.firstChild as any)?.row ?? scene.table.frozenRowCount;\n scene.bodyGroup.setAttribute('y', scene.colHeaderGroup.attribute.height);\n scene.rowHeaderGroup.setAttribute('y', scene.cornerHeaderGroup.attribute.height);\n // scene.updateContainerAttrWidthAndX();\n scene.updateContainer();\n scene.updateBorderSizeAndPosition();\n\n scene.hasFrozen = true;\n}\n\nfunction moveRowFromBodyToColHeader(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with bodyGroup\n for (let i = 0; i < scene.bodyGroup.childrenCount; i++) {\n const child = scene.bodyGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const rowCell = child.firstChild as Group;\n scene.colHeaderGroup.children[i]?.appendChild(rowCell);\n // update container width\n if (!hasSetedHeight) {\n scene.colHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height + rowCell.attribute.height);\n scene.bodyGroup.setAttribute('height', scene.bodyGroup.attribute.height - rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction moveRowFromRowHeaderToCornerHeader(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with rowHeaderGroup\n for (let i = 0; i < scene.rowHeaderGroup.childrenCount; i++) {\n const child = scene.rowHeaderGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const rowCell = child.firstChild as Group;\n scene.cornerHeaderGroup.children[i]?.appendChild(rowCell);\n // update container width\n if (!hasSetedHeight) {\n scene.cornerHeaderGroup.setAttribute(\n 'height',\n scene.cornerHeaderGroup.attribute.height + rowCell.attribute.height\n );\n scene.rowHeaderGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height - rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction moveRowFromRightToTopRightCorner(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with rowHeaderGroup\n for (let i = 0; i < scene.rightFrozenGroup.childrenCount; i++) {\n const child = scene.rightFrozenGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const rowCell = child.firstChild as Group;\n scene.rightTopCornerGroup.children[i]?.appendChild(rowCell);\n // update container width\n if (!hasSetedHeight) {\n scene.rightTopCornerGroup.setAttribute(\n 'height',\n scene.rightTopCornerGroup.attribute.height + rowCell.attribute.height\n );\n scene.rightFrozenGroup.setAttribute('height', scene.rightFrozenGroup.attribute.height - rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction moveRowFromColHeaderToBody(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with bodyGroup\n for (let i = 0; i < scene.colHeaderGroup.childrenCount; i++) {\n const child = scene.colHeaderGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const target = scene.bodyGroup.children[i] as Group;\n if (!target) {\n continue;\n }\n const rowCell = child.lastChild as Group;\n insertBefore(target, rowCell, target.firstChild as Group);\n // 更新高度\n if (!hasSetedHeight) {\n scene.colHeaderGroup.setAttribute('height', scene.colHeaderGroup.attribute.height - rowCell.attribute.height);\n scene.bodyGroup.setAttribute('height', scene.bodyGroup.attribute.height + rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction moveRowFromCornerHeaderToRowHeader(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with rowHeaderGroup\n for (let i = 0; i < scene.cornerHeaderGroup.childrenCount; i++) {\n const child = scene.cornerHeaderGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const target = scene.rowHeaderGroup.children[i] as Group;\n if (!target) {\n continue;\n }\n const rowCell = child.lastChild as Group;\n // scene.rowHeaderGroup.children[i]?.appendChild(rowCell);\n insertBefore(target, rowCell, target.firstChild as Group);\n // update container width\n if (!hasSetedHeight) {\n scene.cornerHeaderGroup.setAttribute(\n 'height',\n scene.cornerHeaderGroup.attribute.height - rowCell.attribute.height\n );\n scene.rowHeaderGroup.setAttribute('height', scene.rowHeaderGroup.attribute.height + rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction moveRowFromTopRightCornerToRight(scene: Scenegraph) {\n let hasSetedHeight = false;\n // deal with rowHeaderGroup\n for (let i = 0; i < scene.rightTopCornerGroup.childrenCount; i++) {\n const child = scene.rightTopCornerGroup.children[i];\n if (!checkBeforeMove(child)) {\n continue;\n }\n const target = scene.rightFrozenGroup.children[i] as Group;\n if (!target) {\n continue;\n }\n const rowCell = child.lastChild as Group;\n // scene.rightFrozenGroup.children[i]?.appendChild(rowCell);\n insertBefore(target, rowCell, target.firstChild as Group);\n // update container width\n if (!hasSetedHeight) {\n scene.rightTopCornerGroup.setAttribute(\n 'height',\n scene.rightTopCornerGroup.attribute.height - rowCell.attribute.height\n );\n scene.rightFrozenGroup.setAttribute('height', scene.rightFrozenGroup.attribute.height + rowCell.attribute.height);\n hasSetedHeight = true;\n }\n }\n}\n\nfunction checkBeforeMove(child: any) {\n // 跳过非 Group 类型或名为 'table-border-rect' 的边框节点\n return child instanceof Group && child?.name !== 'table-border-rect';\n}\n"]}
|
|
@@ -17,17 +17,22 @@ export function updateCol(removeCells, addCells, updateCells, table) {
|
|
|
17
17
|
}));
|
|
18
18
|
const colWidthsMap = table.colWidthsMap;
|
|
19
19
|
let updateAfter;
|
|
20
|
-
|
|
20
|
+
removeCols.forEach((col => {
|
|
21
21
|
colWidthsMap.delAndReorder(col);
|
|
22
22
|
})), removeCols.length && resetColNumber(scene), scene.table._clearColRangeWidthsMap(),
|
|
23
23
|
addCols.forEach((col => {
|
|
24
24
|
const needUpdateAfter = addCol(col, scene);
|
|
25
25
|
resetColNumber(scene), updateAfter = null != updateAfter ? updateAfter : needUpdateAfter,
|
|
26
26
|
colWidthsMap.addAndReorder(col);
|
|
27
|
-
})), resetColNumberAndX(scene)
|
|
27
|
+
})), resetColNumberAndX(scene);
|
|
28
|
+
const batchMergePos = new Set;
|
|
29
|
+
if (updateCols.forEach((col => {
|
|
28
30
|
for (let row = 0; row < table.rowCount; row++) {
|
|
29
31
|
const mergeInfo = getCellMergeInfo(scene.table, col, row);
|
|
30
|
-
if (mergeInfo) for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++)
|
|
32
|
+
if (mergeInfo) for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) {
|
|
33
|
+
const key = `${col}-${row}`;
|
|
34
|
+
batchMergePos.has(key) || (updateCell(col, row, scene.table, !1), batchMergePos.add(key));
|
|
35
|
+
} else updateCell(col, row, scene.table, !1);
|
|
31
36
|
}
|
|
32
37
|
})), isNumber(updateAfter)) {
|
|
33
38
|
for (let col = updateAfter; col < Math.max(table.colCount, null !== (_a = table.internalProps._oldColCount) && void 0 !== _a ? _a : table.colCount); col++) for (let row = 0; row < Math.max(table.rowCount, null !== (_b = table.internalProps._oldRowCount) && void 0 !== _b ? _b : table.rowCount); row++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/layout/update-col.ts"],"names":[],"mappings":"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","file":"update-col.js","sourcesContent":["import { isNumber } from '@visactor/vutils';\nimport type { CellAddress } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { Group } from '../graphic/group';\nimport { updateCell } from '../group-creater/cell-helper';\nimport type { Scenegraph } from '../scenegraph';\nimport { getCellMergeInfo } from '../utils/get-cell-merge';\nimport type { IGroup } from './../../vrender';\nimport { checkHaveTextStick, resetTextStick } from '../stick-text';\n\n/**\n * add and remove rows in scenegraph\n */\nexport function updateCol(\n removeCells: CellAddress[],\n addCells: CellAddress[],\n updateCells: CellAddress[],\n table: BaseTableAPI\n) {\n if (checkHaveTextStick(table)) {\n resetTextStick(table); // reset text stick\n }\n\n const scene = table.scenegraph;\n // deduplication\n const removeCols = deduplication(removeCells.map(cell => cell.col)).sort((a, b) => b - a);\n const addCols = deduplication(addCells.map(cell => cell.col)).sort((a, b) => a - b);\n const updateCols = deduplication(updateCells.map(cell => cell.col)).sort((a, b) => a - b);\n\n // remove cells\n removeCols.forEach(col => {\n removeCol(col, scene);\n });\n\n const colWidthsMap = table.colWidthsMap;\n removeCols.forEach(col => {\n colWidthsMap.delAndReorder(col);\n });\n\n if (removeCols.length) {\n resetColNumber(scene);\n }\n\n scene.table._clearColRangeWidthsMap();\n\n // add cells\n let updateAfter: number;\n addCols.forEach(col => {\n const needUpdateAfter = addCol(col, scene);\n resetColNumber(scene);\n updateAfter = updateAfter ?? needUpdateAfter;\n colWidthsMap.addAndReorder(col);\n });\n\n // reset attribute y and col number in CellGroup\n // const newTotalHeight = resetColNumberAndY(scene);\n resetColNumberAndX(scene);\n // add cells\n updateCols.forEach(col => {\n for (let row = 0; row < table.rowCount; row++) {\n // updateColAttr(col, scene);\n const mergeInfo = getCellMergeInfo(scene.table, col, row);\n if (mergeInfo) {\n for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) {\n for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) {\n updateCell(col, row, scene.table, false);\n }\n }\n } else {\n updateCell(col, row, scene.table, false);\n }\n }\n });\n\n if (isNumber(updateAfter)) {\n for (\n let col = updateAfter;\n col < Math.max(table.colCount, table.internalProps._oldColCount ?? table.colCount);\n col++\n ) {\n for (let row = 0; row < Math.max(table.rowCount, table.internalProps._oldRowCount ?? table.rowCount); row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.colUpdatePos = updateAfter;\n }\n if (addCols.length) {\n if (!isNumber(updateAfter)) {\n const minCol = Math.min(...addCols);\n scene.proxy.colUpdatePos = minCol;\n }\n scene.proxy.colUpdateDirection = 'left';\n scene.proxy.updateColGroups(scene.proxy.screenColCount * 2);\n updateRightFrozeCellGroups();\n scene.proxy.progress();\n } else if (removeCols.length) {\n scene.proxy.updateColGroups(scene.proxy.screenColCount * 2);\n updateRightFrozeCellGroups();\n scene.proxy.progress();\n }\n\n // update table size\n const newTotalWidth = table.getColsWidth(table.frozenColCount, table.colCount - 1);\n scene.updateContainerWidth(scene.table.frozenColCount, newTotalWidth - scene.bodyGroup.attribute.width);\n\n function updateRightFrozeCellGroups() {\n if (\n addCols?.[addCols?.length - 1] >= table.colCount - table.rightFrozenColCount ||\n updateCols?.[updateCols?.length - 1] >= table.colCount - table.rightFrozenColCount ||\n removeCols?.[0] >= table.colCount - table.rightFrozenColCount\n ) {\n for (let col = table.colCount - table.rightFrozenColCount; col < table.colCount; col++) {\n for (let row = 0; row < table.rowCount; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.updateRightFrozenCellGroups();\n }\n }\n}\n\nfunction removeCol(col: number, scene: Scenegraph) {\n const proxy = scene.proxy;\n // removeCellGroup(col, scene);\n //先考虑非表头部分删除情况\n if (col >= scene.table.rowHeaderLevelCount) {\n if (col >= scene.table.colCount - scene.table.rightFrozenColCount) {\n // 如果是删除的右侧固定列 这里不做真正的删除,只需要后面将相应列做更新\n // scene.bodyGroup.removeChild(scene.bodyGroup.lastChild as any);\n // scene.bottomFrozenGroup.removeChild(scene.bottomFrozenGroup.lastChild as any);\n } else {\n const colGroup = scene.getColGroup(col, false);\n if (colGroup && colGroup.parent === scene.bodyGroup) {\n scene.bodyGroup.removeChild(colGroup);\n }\n const bottomColGroup = scene.getColGroupInBottom(col);\n if (bottomColGroup && bottomColGroup.parent === scene.bottomFrozenGroup) {\n scene.bottomFrozenGroup.removeChild(bottomColGroup);\n }\n const headerColGroup = scene.getColGroup(col, true);\n if (headerColGroup && headerColGroup.parent === scene.colHeaderGroup) {\n scene.colHeaderGroup.removeChild(headerColGroup);\n }\n }\n }\n\n // TODO 需要整体更新proxy的状态\n if (col >= proxy.colStart && col <= proxy.colEnd) {\n proxy.colEnd--;\n proxy.currentCol--;\n }\n proxy.bodyRightCol--;\n // proxy.totalCol--;\n const totalActualBodyColCount = Math.min(proxy.colLimit, proxy.bodyRightCol - proxy.bodyLeftCol + 1); // 渐进加载总col数量\n proxy.totalActualBodyColCount = totalActualBodyColCount;\n proxy.totalCol = proxy.colStart + totalActualBodyColCount - 1; // 目标渐进完成的col\n}\n\nfunction addCol(col: number, scene: Scenegraph) {\n const proxy = scene.proxy;\n proxy.bodyRightCol++;\n // proxy.totalCol++;\n const totalActualBodyColCount = Math.min(proxy.colLimit, proxy.bodyRightCol - proxy.bodyLeftCol + 1); // 渐进加载总col数量\n proxy.totalActualBodyColCount = totalActualBodyColCount;\n proxy.totalCol = proxy.colStart + totalActualBodyColCount - 1; // 目标渐进完成的col\n\n if (col < proxy.colStart) {\n return undefined;\n } else if (col > proxy.colEnd) {\n if (proxy.colEnd - proxy.colStart + 1 < proxy.colLimit) {\n // can add col\n proxy.colEnd++;\n proxy.currentCol++;\n\n addColGroup(col, scene);\n return col;\n }\n return undefined;\n }\n if (proxy.colEnd - proxy.colStart + 1 < proxy.colLimit) {\n // can add col\n proxy.colEnd++;\n proxy.currentCol++;\n\n addColGroup(col, scene);\n return col;\n }\n return col;\n}\n\n// array deduplication\nfunction deduplication(array: number[]) {\n const result = [];\n for (let i = 0; i < array.length; i++) {\n if (result.indexOf(array[i]) === -1) {\n result.push(array[i]);\n }\n }\n return result;\n}\n\nfunction resetColNumber(scene: Scenegraph) {\n let colIndex = scene.bodyColStart;\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colIndex++;\n });\n\n colIndex = scene.bodyColStart;\n scene.colHeaderGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colIndex++;\n });\n\n colIndex = scene.bodyColStart;\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colIndex++;\n });\n function processCell(cellGroup: Group) {\n cellGroup.col = colIndex;\n const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n if (merge) {\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeEndCol = merge.end.col;\n cellGroup.mergeEndCol = merge.end.col;\n }\n\n if (cellGroup.role !== 'cell') {\n return;\n }\n }\n}\n\nfunction resetColNumberAndX(scene: Scenegraph) {\n let colIndex = scene.bodyColStart;\n let x = scene.getCellGroupX(colIndex);\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n\n colIndex = scene.bodyColStart;\n x = scene.getCellGroupX(colIndex);\n scene.colHeaderGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n\n colIndex = scene.bodyColStart;\n x = scene.getCellGroupX(colIndex);\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n colIndex = scene.table.colCount - scene.table.rightFrozenColCount;\n x = 0;\n scene.rightFrozenGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n\n colIndex = scene.table.colCount - scene.table.rightFrozenColCount;\n x = 0;\n scene.rightTopCornerGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n\n colIndex = scene.table.colCount - scene.table.rightFrozenColCount;\n x = 0;\n scene.rightBottomCornerGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n function processCell(cellGroup: Group) {\n cellGroup.col = colIndex;\n const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n if (merge) {\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeEndCol = merge.end.col;\n cellGroup.mergeEndCol = merge.end.col;\n }\n\n if (cellGroup.role !== 'cell') {\n return;\n }\n }\n}\n\nfunction addColGroup(col: number, scene: Scenegraph) {\n if (scene.colHeaderGroup && scene.table.columnHeaderLevelCount > 0) {\n const columnGroup = new Group({\n x: 0,\n y: 0,\n width: scene.table.getColWidth(col),\n height: 0,\n clip: false,\n pickable: false\n });\n columnGroup.role = 'column';\n columnGroup.col = col;\n\n const colAfter = scene.getColGroup(col, true);\n if (colAfter) {\n scene.colHeaderGroup.insertBefore(columnGroup, colAfter);\n } else {\n scene.colHeaderGroup.appendChild(columnGroup);\n }\n generateCellGroup(columnGroup, col, 0, scene.table.columnHeaderLevelCount - 1);\n }\n\n if (scene.bodyGroup) {\n const columnGroup = new Group({\n x: 0,\n y: 0,\n width: scene.table.getColWidth(col),\n height: 0,\n clip: false,\n pickable: false\n });\n columnGroup.role = 'column';\n columnGroup.col = col;\n\n const colAfter = scene.getColGroup(col, false);\n if (colAfter) {\n scene.bodyGroup.insertBefore(columnGroup, colAfter);\n } else {\n scene.bodyGroup.appendChild(columnGroup);\n }\n generateCellGroup(columnGroup, col, scene.bodyRowStart, scene.bodyRowEnd);\n }\n if (scene.bottomFrozenGroup && scene.table.bottomFrozenRowCount > 0) {\n const columnGroup = new Group({\n x: 0,\n y: 0,\n width: scene.table.getColWidth(col),\n height: 0,\n clip: false,\n pickable: false\n });\n columnGroup.role = 'column';\n columnGroup.col = col;\n\n const colAfter = scene.getColGroupInBottom(col);\n if (colAfter) {\n scene.bottomFrozenGroup.insertBefore(columnGroup, colAfter);\n } else {\n scene.bottomFrozenGroup.appendChild(columnGroup);\n }\n\n generateCellGroup(\n columnGroup,\n col,\n scene.table.rowCount - scene.table.bottomFrozenRowCount,\n scene.table.rowCount - 1\n );\n }\n\n function generateCellGroup(group: IGroup, col: number, rowStart: number, rowEnd: number) {\n for (let row = rowStart; row <= rowEnd; row++) {\n // create cellGroup\n // const cellGroup = updateCell(col, row, scene.table, true);\n const cellGroup = new Group({\n x: 0,\n y: 0,\n width: scene.table.getColWidth(col),\n height: scene.table.getRowHeight(row)\n });\n cellGroup.role = 'cell';\n cellGroup.col = col;\n cellGroup.row = row;\n cellGroup.needUpdate = true;\n group.appendChild(cellGroup);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scenegraph/layout/update-col.ts"],"names":[],"mappings":"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","file":"update-col.js","sourcesContent":["import { isNumber } from '@visactor/vutils';\nimport type { CellAddress } from '../../ts-types';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { Group } from '../graphic/group';\nimport { updateCell } from '../group-creater/cell-helper';\nimport type { Scenegraph } from '../scenegraph';\nimport { getCellMergeInfo } from '../utils/get-cell-merge';\nimport type { IGroup } from './../../vrender';\nimport { checkHaveTextStick, resetTextStick } from '../stick-text';\n\n/**\n * add and remove rows in scenegraph\n */\nexport function updateCol(\n removeCells: CellAddress[],\n addCells: CellAddress[],\n updateCells: CellAddress[],\n table: BaseTableAPI\n) {\n if (checkHaveTextStick(table)) {\n resetTextStick(table); // reset text stick\n }\n\n const scene = table.scenegraph;\n // deduplication\n const removeCols = deduplication(removeCells.map(cell => cell.col)).sort((a, b) => b - a);\n const addCols = deduplication(addCells.map(cell => cell.col)).sort((a, b) => a - b);\n const updateCols = deduplication(updateCells.map(cell => cell.col)).sort((a, b) => a - b);\n\n // remove cells\n removeCols.forEach(col => {\n removeCol(col, scene);\n });\n\n const colWidthsMap = table.colWidthsMap;\n removeCols.forEach(col => {\n colWidthsMap.delAndReorder(col);\n });\n\n if (removeCols.length) {\n resetColNumber(scene);\n }\n\n scene.table._clearColRangeWidthsMap();\n\n // add cells\n let updateAfter: number;\n addCols.forEach(col => {\n const needUpdateAfter = addCol(col, scene);\n resetColNumber(scene);\n updateAfter = updateAfter ?? needUpdateAfter;\n colWidthsMap.addAndReorder(col);\n });\n\n // reset attribute y and col number in CellGroup\n // const newTotalHeight = resetColNumberAndY(scene);\n resetColNumberAndX(scene);\n //下面合并单元格情况有重复调用updateCell问题,需要优化。用这个变量记录已经处理过的合并单元格位置,避免重复处理。\n const batchMergePos = new Set<string>();\n // add cells\n updateCols.forEach(col => {\n for (let row = 0; row < table.rowCount; row++) {\n // updateColAttr(col, scene);\n const mergeInfo = getCellMergeInfo(scene.table, col, row);\n if (mergeInfo) {\n for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) {\n for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) {\n const key = `${col}-${row}`;\n if (!batchMergePos.has(key)) {\n updateCell(col, row, scene.table, false);\n batchMergePos.add(key);\n }\n }\n }\n } else {\n updateCell(col, row, scene.table, false);\n }\n }\n });\n\n if (isNumber(updateAfter)) {\n for (\n let col = updateAfter;\n col < Math.max(table.colCount, table.internalProps._oldColCount ?? table.colCount);\n col++\n ) {\n for (let row = 0; row < Math.max(table.rowCount, table.internalProps._oldRowCount ?? table.rowCount); row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.colUpdatePos = updateAfter;\n }\n if (addCols.length) {\n if (!isNumber(updateAfter)) {\n const minCol = Math.min(...addCols);\n scene.proxy.colUpdatePos = minCol;\n }\n scene.proxy.colUpdateDirection = 'left';\n scene.proxy.updateColGroups(scene.proxy.screenColCount * 2);\n updateRightFrozeCellGroups();\n scene.proxy.progress();\n } else if (removeCols.length) {\n scene.proxy.updateColGroups(scene.proxy.screenColCount * 2);\n updateRightFrozeCellGroups();\n scene.proxy.progress();\n }\n\n // update table size\n const newTotalWidth = table.getColsWidth(table.frozenColCount, table.colCount - 1);\n scene.updateContainerWidth(scene.table.frozenColCount, newTotalWidth - scene.bodyGroup.attribute.width);\n\n function updateRightFrozeCellGroups() {\n if (\n addCols?.[addCols?.length - 1] >= table.colCount - table.rightFrozenColCount ||\n updateCols?.[updateCols?.length - 1] >= table.colCount - table.rightFrozenColCount ||\n removeCols?.[0] >= table.colCount - table.rightFrozenColCount\n ) {\n for (let col = table.colCount - table.rightFrozenColCount; col < table.colCount; col++) {\n for (let row = 0; row < table.rowCount; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.updateRightFrozenCellGroups();\n }\n }\n}\n\nfunction removeCol(col: number, scene: Scenegraph) {\n const proxy = scene.proxy;\n // removeCellGroup(col, scene);\n //先考虑非表头部分删除情况\n if (col >= scene.table.rowHeaderLevelCount) {\n if (col >= scene.table.colCount - scene.table.rightFrozenColCount) {\n // 如果是删除的右侧固定列 这里不做真正的删除,只需要后面将相应列做更新\n // scene.bodyGroup.removeChild(scene.bodyGroup.lastChild as any);\n // scene.bottomFrozenGroup.removeChild(scene.bottomFrozenGroup.lastChild as any);\n } else {\n const colGroup = scene.getColGroup(col, false);\n if (colGroup && colGroup.parent === scene.bodyGroup) {\n scene.bodyGroup.removeChild(colGroup);\n }\n const bottomColGroup = scene.getColGroupInBottom(col);\n if (bottomColGroup && bottomColGroup.parent === scene.bottomFrozenGroup) {\n scene.bottomFrozenGroup.removeChild(bottomColGroup);\n }\n const headerColGroup = scene.getColGroup(col, true);\n if (headerColGroup && headerColGroup.parent === scene.colHeaderGroup) {\n scene.colHeaderGroup.removeChild(headerColGroup);\n }\n }\n }\n\n // TODO 需要整体更新proxy的状态\n if (col >= proxy.colStart && col <= proxy.colEnd) {\n proxy.colEnd--;\n proxy.currentCol--;\n }\n proxy.bodyRightCol--;\n // proxy.totalCol--;\n const totalActualBodyColCount = Math.min(proxy.colLimit, proxy.bodyRightCol - proxy.bodyLeftCol + 1); // 渐进加载总col数量\n proxy.totalActualBodyColCount = totalActualBodyColCount;\n proxy.totalCol = proxy.colStart + totalActualBodyColCount - 1; // 目标渐进完成的col\n}\n\nfunction addCol(col: number, scene: Scenegraph) {\n const proxy = scene.proxy;\n proxy.bodyRightCol++;\n // proxy.totalCol++;\n const totalActualBodyColCount = Math.min(proxy.colLimit, proxy.bodyRightCol - proxy.bodyLeftCol + 1); // 渐进加载总col数量\n proxy.totalActualBodyColCount = totalActualBodyColCount;\n proxy.totalCol = proxy.colStart + totalActualBodyColCount - 1; // 目标渐进完成的col\n\n if (col < proxy.colStart) {\n return undefined;\n } else if (col > proxy.colEnd) {\n if (proxy.colEnd - proxy.colStart + 1 < proxy.colLimit) {\n // can add col\n proxy.colEnd++;\n proxy.currentCol++;\n\n addColGroup(col, scene);\n return col;\n }\n return undefined;\n }\n if (proxy.colEnd - proxy.colStart + 1 < proxy.colLimit) {\n // can add col\n proxy.colEnd++;\n proxy.currentCol++;\n\n addColGroup(col, scene);\n return col;\n }\n return col;\n}\n\n// array deduplication\nfunction deduplication(array: number[]) {\n const result = [];\n for (let i = 0; i < array.length; i++) {\n if (result.indexOf(array[i]) === -1) {\n result.push(array[i]);\n }\n }\n return result;\n}\n\nfunction resetColNumber(scene: Scenegraph) {\n let colIndex = scene.bodyColStart;\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colIndex++;\n });\n\n colIndex = scene.bodyColStart;\n scene.colHeaderGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colIndex++;\n });\n\n colIndex = scene.bodyColStart;\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colIndex++;\n });\n function processCell(cellGroup: Group) {\n cellGroup.col = colIndex;\n const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n if (merge) {\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeEndCol = merge.end.col;\n cellGroup.mergeEndCol = merge.end.col;\n }\n\n if (cellGroup.role !== 'cell') {\n return;\n }\n }\n}\n\nfunction resetColNumberAndX(scene: Scenegraph) {\n let colIndex = scene.bodyColStart;\n let x = scene.getCellGroupX(colIndex);\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n\n colIndex = scene.bodyColStart;\n x = scene.getCellGroupX(colIndex);\n scene.colHeaderGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n\n colIndex = scene.bodyColStart;\n x = scene.getCellGroupX(colIndex);\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n colIndex = scene.table.colCount - scene.table.rightFrozenColCount;\n x = 0;\n scene.rightFrozenGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n\n colIndex = scene.table.colCount - scene.table.rightFrozenColCount;\n x = 0;\n scene.rightTopCornerGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n\n colIndex = scene.table.colCount - scene.table.rightFrozenColCount;\n x = 0;\n scene.rightBottomCornerGroup.forEachChildren((colGroup: Group) => {\n colGroup.col = colIndex;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup);\n });\n colGroup.setAttribute('x', x);\n x += colGroup.attribute.width;\n colIndex++;\n });\n function processCell(cellGroup: Group) {\n cellGroup.col = colIndex;\n const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n if (merge) {\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeStartCol = merge.start.col;\n cellGroup.mergeEndCol = merge.end.col;\n cellGroup.mergeEndCol = merge.end.col;\n }\n\n if (cellGroup.role !== 'cell') {\n return;\n }\n }\n}\n\nfunction addColGroup(col: number, scene: Scenegraph) {\n if (scene.colHeaderGroup && scene.table.columnHeaderLevelCount > 0) {\n const columnGroup = new Group({\n x: 0,\n y: 0,\n width: scene.table.getColWidth(col),\n height: 0,\n clip: false,\n pickable: false\n });\n columnGroup.role = 'column';\n columnGroup.col = col;\n\n const colAfter = scene.getColGroup(col, true);\n if (colAfter) {\n scene.colHeaderGroup.insertBefore(columnGroup, colAfter);\n } else {\n scene.colHeaderGroup.appendChild(columnGroup);\n }\n generateCellGroup(columnGroup, col, 0, scene.table.columnHeaderLevelCount - 1);\n }\n\n if (scene.bodyGroup) {\n const columnGroup = new Group({\n x: 0,\n y: 0,\n width: scene.table.getColWidth(col),\n height: 0,\n clip: false,\n pickable: false\n });\n columnGroup.role = 'column';\n columnGroup.col = col;\n\n const colAfter = scene.getColGroup(col, false);\n if (colAfter) {\n scene.bodyGroup.insertBefore(columnGroup, colAfter);\n } else {\n scene.bodyGroup.appendChild(columnGroup);\n }\n generateCellGroup(columnGroup, col, scene.bodyRowStart, scene.bodyRowEnd);\n }\n if (scene.bottomFrozenGroup && scene.table.bottomFrozenRowCount > 0) {\n const columnGroup = new Group({\n x: 0,\n y: 0,\n width: scene.table.getColWidth(col),\n height: 0,\n clip: false,\n pickable: false\n });\n columnGroup.role = 'column';\n columnGroup.col = col;\n\n const colAfter = scene.getColGroupInBottom(col);\n if (colAfter) {\n scene.bottomFrozenGroup.insertBefore(columnGroup, colAfter);\n } else {\n scene.bottomFrozenGroup.appendChild(columnGroup);\n }\n\n generateCellGroup(\n columnGroup,\n col,\n scene.table.rowCount - scene.table.bottomFrozenRowCount,\n scene.table.rowCount - 1\n );\n }\n\n function generateCellGroup(group: IGroup, col: number, rowStart: number, rowEnd: number) {\n for (let row = rowStart; row <= rowEnd; row++) {\n // create cellGroup\n // const cellGroup = updateCell(col, row, scene.table, true);\n const cellGroup = new Group({\n x: 0,\n y: 0,\n width: scene.table.getColWidth(col),\n height: scene.table.getRowHeight(row)\n });\n cellGroup.role = 'cell';\n cellGroup.col = col;\n cellGroup.row = row;\n cellGroup.needUpdate = true;\n group.appendChild(cellGroup);\n }\n }\n}\n"]}
|
|
@@ -45,13 +45,20 @@ export function updateRow(removeCells, addCells, updateCells, table, skipUpdateP
|
|
|
45
45
|
const pos = _getUpdateRowIndex(addRows[0] - 1, addRows[addRows.length - 1] + 1, scene);
|
|
46
46
|
rowUpdatePos = isValid(rowUpdatePos) ? isValid(pos) ? Math.min(rowUpdatePos, pos) : rowUpdatePos : pos;
|
|
47
47
|
}
|
|
48
|
+
const batchMergePos = new Set;
|
|
48
49
|
for (let col = 0; col < table.colCount; col++) updateRows.forEach((row => {
|
|
49
50
|
if (row < table.frozenRowCount) {
|
|
50
51
|
const mergeInfo = getCellMergeInfo(scene.table, col, row);
|
|
51
|
-
if (mergeInfo) for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) for (let row = mergeInfo.start.row; row <= mergeInfo.end.row; row++)
|
|
52
|
+
if (mergeInfo) for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) for (let row = mergeInfo.start.row; row <= mergeInfo.end.row; row++) {
|
|
53
|
+
const key = `${col}-${row}`;
|
|
54
|
+
batchMergePos.has(key) || (updateCell(col, row, scene.table, !1), batchMergePos.add(key));
|
|
55
|
+
} else updateCell(col, row, scene.table, !1);
|
|
52
56
|
} else if (row > table.rowCount - 1 || row < scene.table.rowCount - scene.table.bottomFrozenRowCount && (row < scene.proxy.rowStart || row > scene.proxy.rowEnd)) removeCellGroup(row, scene); else {
|
|
53
57
|
const mergeInfo = getCellMergeInfo(scene.table, col, row);
|
|
54
|
-
if (mergeInfo) for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) for (let row = mergeInfo.start.row; row <= mergeInfo.end.row; row++)
|
|
58
|
+
if (mergeInfo) for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) for (let row = mergeInfo.start.row; row <= mergeInfo.end.row; row++) {
|
|
59
|
+
const key = `${col}-${row}`;
|
|
60
|
+
batchMergePos.has(key) || (updateCell(col, row, scene.table, !1), batchMergePos.add(key));
|
|
61
|
+
} else updateCell(col, row, scene.table, !1);
|
|
55
62
|
}
|
|
56
63
|
}));
|
|
57
64
|
if (updateRows.length) {
|