@visactor/vtable 0.16.4-alpha.2 → 0.17.0

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.
Files changed (73) hide show
  1. package/cjs/ListTable.js +1 -1
  2. package/cjs/ListTable.js.map +1 -1
  3. package/cjs/PivotChart.js +3 -2
  4. package/cjs/PivotChart.js.map +1 -1
  5. package/cjs/PivotTable.js +3 -2
  6. package/cjs/PivotTable.js.map +1 -1
  7. package/cjs/core/BaseTable.js +16 -12
  8. package/cjs/core/BaseTable.js.map +1 -1
  9. package/cjs/event/listener/table-group.js +14 -8
  10. package/cjs/event/listener/table-group.js.map +1 -1
  11. package/cjs/index.d.ts +1 -1
  12. package/cjs/index.js +1 -1
  13. package/cjs/index.js.map +1 -1
  14. package/cjs/layout/pivot-header-layout.d.ts +1 -0
  15. package/cjs/layout/pivot-header-layout.js +25 -8
  16. package/cjs/layout/pivot-header-layout.js.map +1 -1
  17. package/cjs/layout/pivot-layout-helper.d.ts +1 -1
  18. package/cjs/layout/pivot-layout-helper.js +12 -5
  19. package/cjs/layout/pivot-layout-helper.js.map +1 -1
  20. package/cjs/scenegraph/layout/compute-col-width.d.ts +1 -0
  21. package/cjs/scenegraph/layout/compute-col-width.js +12 -8
  22. package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
  23. package/cjs/scenegraph/layout/compute-row-height.js +8 -5
  24. package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
  25. package/cjs/scenegraph/layout/update-row.js +1 -1
  26. package/cjs/scenegraph/layout/update-row.js.map +1 -1
  27. package/cjs/scenegraph/scenegraph.js +20 -22
  28. package/cjs/scenegraph/scenegraph.js.map +1 -1
  29. package/cjs/scenegraph/select/update-select-border.js +12 -6
  30. package/cjs/scenegraph/select/update-select-border.js.map +1 -1
  31. package/cjs/state/hover/is-cell-hover.d.ts +1 -1
  32. package/cjs/state/hover/is-cell-hover.js +5 -4
  33. package/cjs/state/hover/is-cell-hover.js.map +1 -1
  34. package/cjs/ts-types/base-table.d.ts +1 -0
  35. package/cjs/ts-types/base-table.js.map +1 -1
  36. package/dist/vtable.js +157 -77
  37. package/dist/vtable.min.js +2 -2
  38. package/es/ListTable.js +1 -1
  39. package/es/ListTable.js.map +1 -1
  40. package/es/PivotChart.js +3 -2
  41. package/es/PivotChart.js.map +1 -1
  42. package/es/PivotTable.js +3 -2
  43. package/es/PivotTable.js.map +1 -1
  44. package/es/core/BaseTable.js +16 -12
  45. package/es/core/BaseTable.js.map +1 -1
  46. package/es/event/listener/table-group.js +14 -8
  47. package/es/event/listener/table-group.js.map +1 -1
  48. package/es/index.d.ts +1 -1
  49. package/es/index.js +1 -1
  50. package/es/index.js.map +1 -1
  51. package/es/layout/pivot-header-layout.d.ts +1 -0
  52. package/es/layout/pivot-header-layout.js +25 -8
  53. package/es/layout/pivot-header-layout.js.map +1 -1
  54. package/es/layout/pivot-layout-helper.d.ts +1 -1
  55. package/es/layout/pivot-layout-helper.js +12 -5
  56. package/es/layout/pivot-layout-helper.js.map +1 -1
  57. package/es/scenegraph/layout/compute-col-width.d.ts +1 -0
  58. package/es/scenegraph/layout/compute-col-width.js +9 -6
  59. package/es/scenegraph/layout/compute-col-width.js.map +1 -1
  60. package/es/scenegraph/layout/compute-row-height.js +8 -5
  61. package/es/scenegraph/layout/compute-row-height.js.map +1 -1
  62. package/es/scenegraph/layout/update-row.js +1 -1
  63. package/es/scenegraph/layout/update-row.js.map +1 -1
  64. package/es/scenegraph/scenegraph.js +21 -23
  65. package/es/scenegraph/scenegraph.js.map +1 -1
  66. package/es/scenegraph/select/update-select-border.js +12 -6
  67. package/es/scenegraph/select/update-select-border.js.map +1 -1
  68. package/es/state/hover/is-cell-hover.d.ts +1 -1
  69. package/es/state/hover/is-cell-hover.js +5 -4
  70. package/es/state/hover/is-cell-hover.js.map +1 -1
  71. package/es/ts-types/base-table.d.ts +1 -0
  72. package/es/ts-types/base-table.js.map +1 -1
  73. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/layout/compute-row-height.ts"],"names":[],"mappings":"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","file":"compute-row-height.js","sourcesContent":["import { RichText, Group as VGroup } from '@visactor/vrender';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { validToString } from '../../tools/util';\nimport type { ColumnIconOption, ColumnTypeOption } from '../../ts-types';\nimport { IconPosition } from '../../ts-types';\nimport type { BaseTableAPI, HeaderData } from '../../ts-types/base-table';\nimport type { ColumnData, TextColumnDefine } from '../../ts-types/list-table/layout-map/api';\nimport { WrapText } from '../graphic/text';\nimport { getProp } from '../utils/get-prop';\nimport { getQuadProps } from '../utils/padding';\nimport { dealWithRichTextIcon } from '../utils/text-icon-layout';\nimport { getAxisConfigInPivotChart } from '../../layout/chart-helper/get-axis-config';\nimport { computeAxisComponentHeight } from '../../components/axis/get-axis-component-size';\nimport { isArray, isNumber, isObject } from '@visactor/vutils';\nimport { CheckBox } from '@visactor/vrender-components';\nimport { decodeReactDom, dealPercentCalc } from '../component/custom';\n\nconst utilTextMark = new WrapText({\n ignoreBuf: true\n // autoWrapText: true\n});\nconst utilRichTextMark = new RichText({\n width: 0,\n height: 0,\n textConfig: []\n});\nconst utilCheckBoxMark = new CheckBox({});\n\nexport function computeRowsHeight(\n table: BaseTableAPI,\n rowStart?: number,\n rowEnd?: number,\n isClearRowRangeHeightsMap: boolean = true,\n update?: boolean\n): void {\n const time = typeof window !== 'undefined' ? window.performance.now() : 0;\n\n const oldRowHeights: number[] = [];\n const newHeights: number[] = [];\n if (update) {\n for (let row = 0; row < table.rowCount; row++) {\n // oldRowHeights.push(table.getRowHeight(row));\n oldRowHeights[row] = table.getRowHeight(row);\n }\n }\n\n table.defaultHeaderRowHeight;\n table.defaultHeaderColWidth;\n const isDefaultHeaderHasAuto =\n table.defaultHeaderRowHeight === 'auto' ||\n (isArray(table.defaultHeaderRowHeight) && table.defaultHeaderRowHeight.some(item => item === 'auto'));\n const isAllRowsAuto = table.heightMode === 'autoHeight' || table.heightMode === 'adaptive';\n\n if (isAllRowsAuto || isDefaultHeaderHasAuto) {\n rowStart = rowStart ?? 0;\n rowEnd = rowEnd ?? table.rowCount - 1;\n\n // clear rowRangeHeightsMap\n if ((rowStart === 0 && rowEnd === table.rowCount - 1) || isClearRowRangeHeightsMap) {\n table._clearRowRangeHeightsMap();\n }\n // else {\n // for (let row = rowStart; row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row);\n // }\n // }\n\n // compute header row in column header row\n for (let row = rowStart; row < table.columnHeaderLevelCount; row++) {\n let startCol = 0;\n let endCol = table.colCount - 1;\n if ((table.isPivotTable() || table.isPivotChart()) && checkPivotFixedStyleAndNoWrap(table, row)) {\n // 列表头样式一致,只计算第一列行高,作为整行行高\n startCol = 0;\n endCol = table.rowHeaderLevelCount;\n }\n if (isAllRowsAuto || table.getDefaultRowHeight(row) === 'auto') {\n const height = computeRowHeight(row, startCol, endCol, table);\n if (update) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n\n // compute bottom frozen row\n for (let row = table.rowCount - table.bottomFrozenRowCount; row <= rowEnd; row++) {\n if (isAllRowsAuto || table.getDefaultRowHeight(row) === 'auto') {\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n if (update) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n\n if (rowEnd < table.columnHeaderLevelCount || !isAllRowsAuto) {\n // do nothing\n } else {\n // compute body row\n if (\n // 以列展示 且符合只需要计算第一行其他行可复用行高的条条件\n !(\n table.internalProps.transpose ||\n (table.isPivotTable() && !(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol)\n ) &&\n checkFixedStyleAndNoWrap(table)\n ) {\n // check fixed style and no wrap situation, fill all row width single compute\n // traspose table and row indicator pivot table cannot use single row height\n const height = computeRowHeight(table.columnHeaderLevelCount, 0, table.colCount - 1, table);\n fillRowsHeight(\n height,\n table.columnHeaderLevelCount,\n table.rowCount - 1 - table.bottomFrozenRowCount,\n table,\n update ? newHeights : undefined\n );\n //底部冻结的行行高需要单独计算\n for (let row = table.rowCount - table.bottomFrozenRowCount; row <= rowEnd; row++) {\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n if (update) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n } else if (\n // 以行展示\n table.internalProps.transpose ||\n (table.isPivotTable() && !(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol)\n ) {\n // check fixed style and no wrap situation, just compute 0-table.rowHeaderLevelCount column(the column after row header) in ervey row\n // in traspose table and row indicator pivot table\n for (let row = Math.max(rowStart, table.columnHeaderLevelCount); row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row);//注释掉 注意有无缓存问题\n let height;\n if (checkFixedStyleAndNoWrapForTranspose(table, row)) {\n // 以行展示 只计算到body第一列样式的情况即可\n height = computeRowHeight(row, 0, table.rowHeaderLevelCount, table);\n } else {\n height = computeRowHeight(row, 0, table.colCount - 1, table);\n }\n // table.setRowHeight(row, height);\n if (update) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n } else {\n // 以列展示 需要逐行计算情况\n for (let row = Math.max(rowStart, table.columnHeaderLevelCount); row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row); //注释掉 注意有无缓存问题\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n // table.setRowHeight(row, height);\n if (update) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n }\n }\n\n if ((rowStart === 0 && rowEnd === table.rowCount - 1) || isClearRowRangeHeightsMap) {\n table._clearRowRangeHeightsMap();\n }\n\n // 处理adaptive高度\n if (table.heightMode === 'adaptive') {\n table._clearRowRangeHeightsMap();\n // const canvasWidth = table.internalProps.canvas.width;\n const columnHeaderHeight = table.getRowsHeight(0, table.columnHeaderLevelCount - 1);\n const bottomHeaderHeight = table.isPivotChart() ? table.getBottomFrozenRowsHeight() : 0;\n const totalDrawHeight = table.tableNoFrameHeight - columnHeaderHeight - bottomHeaderHeight;\n const startRow = table.columnHeaderLevelCount;\n const endRow = table.isPivotChart() ? table.rowCount - table.bottomFrozenRowCount : table.rowCount;\n let actualHeight = 0;\n for (let row = startRow; row < endRow; row++) {\n actualHeight += update ? newHeights[row] : table.getRowHeight(row);\n }\n const factor = totalDrawHeight / actualHeight;\n for (let row = startRow; row < endRow; row++) {\n let rowHeight;\n if (row === endRow - 1) {\n rowHeight =\n totalDrawHeight -\n (update\n ? newHeights.reduce((acr, cur, index) => {\n if (index >= startRow && index <= endRow - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getRowsHeight(startRow, endRow - 2));\n } else {\n rowHeight = Math.round((update ? newHeights[row] : table.getRowHeight(row)) * factor);\n }\n if (update) {\n newHeights[row] = rowHeight;\n } else {\n table._setRowHeight(row, rowHeight, false);\n }\n }\n } else if (table.autoFillHeight) {\n table._clearRowRangeHeightsMap();\n const canvasHeight = table.tableNoFrameHeight;\n let actualHeight = 0;\n let actualHeaderHeight = 0;\n for (let row = 0; row < table.rowCount; row++) {\n const rowHeight = update ? newHeights[row] : table.getRowHeight(row);\n if (row < table.frozenRowCount || row >= table.rowCount - table.bottomFrozenRowCount) {\n actualHeaderHeight += rowHeight;\n }\n\n actualHeight += rowHeight;\n }\n table.scenegraph._dealAutoFillHeightOriginRowsHeight = actualHeight;\n // 如果内容高度小于canvas高度,执行adaptive放大\n if (actualHeight < canvasHeight && actualHeight - actualHeaderHeight > 0) {\n const factor = (canvasHeight - actualHeaderHeight) / (actualHeight - actualHeaderHeight);\n for (let row = table.frozenRowCount; row < table.rowCount - table.bottomFrozenRowCount; row++) {\n // if (update) {\n // newHeights[row] = newHeights[row] * factor;\n // } else {\n // table.setRowHeight(row, table.getRowHeight(row) * factor);\n // }\n let rowHeight;\n if (row === table.rowCount - table.bottomFrozenRowCount - 1) {\n rowHeight =\n canvasHeight -\n actualHeaderHeight -\n (update\n ? newHeights.reduce((acr, cur, index) => {\n if (index >= table.frozenRowCount && index <= table.rowCount - table.bottomFrozenRowCount - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getRowsHeight(table.frozenRowCount, table.rowCount - table.bottomFrozenRowCount - 2));\n } else {\n rowHeight = Math.round((update ? newHeights[row] : table.getRowHeight(row)) * factor);\n }\n if (update) {\n newHeights[row] = rowHeight;\n } else {\n table._setRowHeight(row, rowHeight, false);\n }\n }\n }\n }\n\n if (update) {\n for (let row = 0; row < table.rowCount; row++) {\n const newRowHeight = newHeights[row] ?? table.getRowHeight(row);\n if (newRowHeight !== oldRowHeights[row]) {\n // update the row height in scenegraph\n table.scenegraph.updateRowHeight(row, newRowHeight - oldRowHeights[row]);\n }\n }\n }\n // console.log('computeRowsHeight time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time, rowStart, rowEnd);\n}\n\nexport function computeRowHeight(row: number, startCol: number, endCol: number, table: BaseTableAPI): number {\n let maxHeight = 0;\n // 如果是透视图\n if (\n table.isPivotChart() &&\n row >= table.columnHeaderLevelCount &&\n row < table.rowCount - table.bottomFrozenRowCount\n ) {\n if ((table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol) {\n //并且指标是以列展示 计算行高需要根据y轴的值域范围\n const optimunHeight = (table.internalProps.layoutMap as PivotHeaderLayoutMap).getOptimunHeightForChart(row);\n if (optimunHeight > 0) {\n return optimunHeight;\n }\n } else {\n //直接拿默认行高\n const defaultHeight = table.getDefaultRowHeight(row);\n if (isNumber(defaultHeight)) {\n return defaultHeight;\n }\n }\n }\n for (let col = startCol; col <= endCol; col++) {\n // CustomRender height calculation\n const customHeight = computeCustomRenderHeight(col, row, table);\n if (customHeight) {\n maxHeight = Math.max(customHeight.height, maxHeight);\n if (!customHeight.renderDefault) {\n continue;\n }\n }\n\n // Axis component height calculation\n if (table.isPivotChart()) {\n const layout = table.internalProps.layoutMap as PivotHeaderLayoutMap;\n const axisConfig = getAxisConfigInPivotChart(col, row, layout);\n if (axisConfig) {\n const axisWidth = computeAxisComponentHeight(axisConfig, table);\n if (typeof axisWidth === 'number') {\n maxHeight = Math.max(axisWidth, maxHeight);\n continue;\n }\n }\n }\n\n const cellType = table.isHeader(col, row)\n ? table._getHeaderLayoutMap(col, row)?.headerType\n : table.getBodyColumnType(col, row);\n if (cellType !== 'text' && cellType !== 'link' && cellType !== 'progressbar' && cellType !== 'checkbox') {\n // text&link&progressbar测量文字宽度\n // image&video&sparkline使用默认宽度\n const defaultHeight = table.getDefaultRowHeight(row);\n maxHeight = Math.max(maxHeight, isNumber(defaultHeight) ? defaultHeight : table.defaultRowHeight);\n continue;\n }\n\n // text height calculation\n const textHeight = computeTextHeight(col, row, cellType, table);\n maxHeight = Math.max(textHeight, maxHeight);\n }\n return maxHeight;\n}\n\nfunction checkFixedStyleAndNoWrap(table: BaseTableAPI): boolean {\n const { layoutMap } = table.internalProps;\n const row = table.columnHeaderLevelCount;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n (table.internalProps.autoWrapText || table.isPivotChart()) &&\n (table.options.heightMode === 'autoHeight' || table.options.heightMode === 'adaptive')\n ) {\n return false;\n }\n for (let col = 0; col < table.colCount; col++) {\n const cellDefine = layoutMap.getBody(col, row);\n if (\n typeof cellDefine.style === 'function' ||\n typeof (cellDefine as ColumnData).icon === 'function' ||\n cellDefine.define?.customRender ||\n cellDefine.define?.customLayout ||\n typeof cellDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const cellStyle = table._getCellStyle(col, row); //获取的style是结合了theme配置的style\n if (\n typeof cellStyle.padding === 'function' ||\n typeof cellStyle.fontSize === 'function' ||\n typeof cellStyle.lineHeight === 'function' ||\n cellStyle.autoWrapText === true\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction checkFixedStyleAndNoWrapForTranspose(table: BaseTableAPI, row: number): boolean {\n const { layoutMap } = table.internalProps;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n table.internalProps.autoWrapText &&\n (table.options.heightMode === 'autoHeight' || table.options.heightMode === 'adaptive')\n ) {\n return false;\n }\n\n const cellDefine = layoutMap.getBody(table.rowHeaderLevelCount, row);\n if (\n typeof cellDefine.style === 'function' ||\n typeof (cellDefine as ColumnData).icon === 'function' ||\n cellDefine.define?.customRender ||\n cellDefine.define?.customLayout ||\n typeof cellDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const cellStyle = table._getCellStyle(table.rowHeaderLevelCount, row);\n if (\n typeof cellStyle.padding === 'function' ||\n typeof cellStyle.fontSize === 'function' ||\n typeof cellStyle.lineHeight === 'function' ||\n cellStyle.autoWrapText === true\n ) {\n return false;\n }\n\n return true;\n}\n\nfunction checkPivotFixedStyleAndNoWrap(table: BaseTableAPI, row: number) {\n const { layoutMap } = table.internalProps;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n table.internalProps.autoWrapText &&\n (table.options.heightMode === 'autoHeight' || table.options.heightMode === 'adaptive')\n ) {\n return false;\n }\n\n const headerDefine = layoutMap.getHeader(table.rowHeaderLevelCount, row);\n if (\n typeof headerDefine.style === 'function' ||\n typeof (headerDefine as HeaderData).icons === 'function' ||\n headerDefine.define?.headerCustomRender ||\n headerDefine.define?.headerCustomLayout ||\n typeof headerDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const headerStyle = table._getCellStyle(table.rowHeaderLevelCount, row);\n if (\n typeof headerStyle.padding === 'function' ||\n typeof headerStyle.fontSize === 'function' ||\n typeof headerStyle.lineHeight === 'function' ||\n headerStyle.autoWrapText === true\n ) {\n return false;\n }\n\n return true;\n}\n\nfunction fillRowsHeight(\n height: number,\n startRow: number,\n endRow: number,\n table: BaseTableAPI,\n newHeights: number[] | undefined\n) {\n for (let row = startRow; row <= endRow; row++) {\n if (newHeights) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n}\n\n/**\n * @description: compute customRender height\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeCustomRenderHeight(col: number, row: number, table: BaseTableAPI) {\n const customRender = table.getCustomRender(col, row);\n const customLayout = table.getCustomLayout(col, row);\n if (customRender || customLayout) {\n let spanRow = 1;\n let height = 0;\n let renderDefault = false;\n let enableCellPadding = false;\n if (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\n const cellRange = table.getCellRange(col, row);\n spanRow = cellRange.end.row - cellRange.start.row + 1;\n }\n const arg = {\n col,\n row,\n dataValue: table.getCellOriginValue(col, row),\n value: table.getCellValue(col, row) || '',\n rect: getCellRect(col, row, table),\n table\n };\n if (customLayout) {\n // 处理customLayout\n const customLayoutObj = customLayout(arg);\n if (customLayoutObj.rootContainer instanceof VGroup) {\n customLayoutObj.rootContainer = decodeReactDom(customLayoutObj.rootContainer);\n dealPercentCalc(customLayoutObj.rootContainer, table.getColWidth(col), 0);\n customLayoutObj.rootContainer.setStage(table.scenegraph.stage);\n height = (customLayoutObj.rootContainer as VGroup).AABBBounds.height() ?? 0;\n renderDefault = customLayoutObj.renderDefault;\n enableCellPadding = customLayoutObj.enableCellPadding;\n } else {\n height = 0;\n }\n } else if (typeof customRender === 'function') {\n // 处理customRender\n const customRenderObj = customRender(arg);\n height = customRenderObj?.expectedHeight ?? 0;\n renderDefault = customRenderObj?.renderDefault;\n } else {\n height = customRender?.expectedHeight ?? 0;\n renderDefault = customRender?.renderDefault;\n }\n if (enableCellPadding) {\n const actStyle = table._getCellStyle(col, row);\n const padding = getQuadProps(getProp('padding', actStyle, col, row, table));\n height += padding[0] + padding[2];\n }\n return {\n height: height / spanRow,\n renderDefault\n };\n }\n return undefined;\n}\n\n/**\n * @description: compute text height\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeTextHeight(col: number, row: number, cellType: ColumnTypeOption, table: BaseTableAPI): number {\n let maxHeight = 0;\n const cellValue = table.getCellValue(col, row);\n // const dataValue = table.getCellOriginValue(col, row);\n const actStyle = table._getCellStyle(col, row);\n let iconHeight = 0;\n let iconWidth = 0;\n const iconInlineFront: ColumnIconOption[] = [];\n let iconInlineFrontHeight = 0;\n const iconInlineEnd: ColumnIconOption[] = [];\n let iconInlineEndHeight = 0;\n const define = table.getBodyColumnDefine(col, row);\n const mayHaveIcon = table.getCellLocation(col, row) !== 'body' ? true : !!define?.icon || !!define?.tree;\n if (mayHaveIcon) {\n const icons = table.getCellIcons(col, row);\n icons?.forEach(icon => {\n if (\n icon.positionType !== IconPosition.absoluteRight &&\n icon.positionType !== IconPosition.inlineFront &&\n icon.positionType !== IconPosition.inlineEnd\n ) {\n iconWidth += (icon.width ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0);\n iconHeight = Math.max(iconHeight, icon.height ?? 0);\n } else if (icon.positionType === IconPosition.inlineFront) {\n iconInlineFront.push(icon);\n iconInlineFrontHeight = Math.max(\n iconInlineFrontHeight,\n (icon.height ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0)\n );\n } else if (icon.positionType === IconPosition.inlineEnd) {\n iconInlineEnd.push(icon);\n iconInlineEndHeight = Math.max(\n iconInlineEndHeight,\n (icon.height ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0)\n );\n }\n });\n }\n let spanRow = 1;\n let endCol = col;\n if (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\n const cellRange = table.getCellRange(col, row);\n spanRow = cellRange.end.row - cellRange.start.row + 1;\n col = cellRange.start.col;\n endCol = cellRange.end.col;\n }\n\n const padding = getQuadProps(getProp('padding', actStyle, col, row, table));\n const fontSize = getProp('fontSize', actStyle, col, row, table);\n const fontStyle = getProp('fontStyle', actStyle, col, row, table);\n const fontWeight = getProp('fontWeight', actStyle, col, row, table);\n const lineHeight = getProp('lineHeight', actStyle, col, row, table) ?? fontSize;\n const fontFamily = getProp('fontFamily', actStyle, col, row, table);\n const autoWrapText = getProp('autoWrapText', actStyle, col, row, table);\n let text;\n if (cellType === 'checkbox') {\n text = isObject(cellValue) ? (cellValue as any).text : cellValue;\n } else {\n text = cellValue;\n }\n const lines = validToString(text).split('\\n') || [];\n\n const cellWidth = table.getColsWidth(col, endCol);\n\n if (cellType === 'checkbox') {\n const size = getProp('size', actStyle, col, row, table);\n if (autoWrapText) {\n const spaceBetweenTextAndIcon = getProp('spaceBetweenTextAndIcon', actStyle, col, row, table);\n const maxLineWidth = cellWidth - (padding[1] + padding[3]) - iconWidth - size - spaceBetweenTextAndIcon;\n utilCheckBoxMark.setAttributes({\n text: {\n maxLineWidth,\n text: lines,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n wordBreak: 'break-word'\n },\n icon: {\n width: Math.floor(size / 1.4), // icon : box => 10 : 14\n height: Math.floor(size / 1.4)\n },\n box: {\n width: size,\n height: size\n },\n spaceBetweenTextAndIcon\n });\n utilCheckBoxMark.render();\n maxHeight = utilTextMark.AABBBounds.height();\n } else {\n maxHeight = Math.max(size, lines.length * lineHeight);\n }\n } else if (iconInlineFront.length || iconInlineEnd.length) {\n // if (autoWrapText) {\n const textOption = Object.assign({\n text: cellValue?.toString(),\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n lineHeight\n });\n textOption.textBaseline = 'middle';\n const textConfig = [\n ...iconInlineFront.map(icon => dealWithRichTextIcon(icon)),\n textOption,\n ...iconInlineEnd.map(icon => dealWithRichTextIcon(icon))\n ];\n utilRichTextMark.setAttributes({\n width: cellWidth - (padding[1] + padding[3]) - iconWidth,\n height: 0,\n textConfig\n });\n maxHeight = utilRichTextMark.AABBBounds.height();\n // } else {\n // maxHeight = 0;\n // lines.forEach((line: string, index: number) => {\n // if (index === 0 && iconInlineFront.length) {\n // maxHeight += Math.max(lineHeight, iconInlineFrontHeight);\n // } else if (index === lines.length - 1 && iconInlineEnd.length) {\n // maxHeight += Math.max(lineHeight, iconInlineEndHeight);\n // } else {\n // maxHeight += lineHeight;\n // }\n // });\n // }\n } else if (autoWrapText) {\n const maxLineWidth = cellWidth - (padding[1] + padding[3]) - iconWidth;\n utilTextMark.setAttributes({\n maxLineWidth,\n text: lines,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n wordBreak: 'break-word'\n });\n maxHeight = utilTextMark.AABBBounds.height();\n } else {\n // autoWrapText = false\n maxHeight = lines.length * lineHeight;\n }\n\n return (Math.max(maxHeight, iconHeight) + padding[0] + padding[2]) / spanRow;\n}\n\nfunction getCellRect(col: number, row: number, table: BaseTableAPI) {\n return {\n left: 0,\n top: 0,\n right: table.getColWidth(col),\n bottom: table.getRowHeight(row),\n width: table.getColWidth(col),\n height: 0\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/layout/compute-row-height.ts"],"names":[],"mappings":"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","file":"compute-row-height.js","sourcesContent":["import { RichText, Group as VGroup } from '@visactor/vrender';\nimport type { PivotHeaderLayoutMap } from '../../layout/pivot-header-layout';\nimport { validToString } from '../../tools/util';\nimport type { ColumnIconOption, ColumnTypeOption } from '../../ts-types';\nimport { IconPosition } from '../../ts-types';\nimport type { BaseTableAPI, HeaderData } from '../../ts-types/base-table';\nimport type { ColumnData, TextColumnDefine } from '../../ts-types/list-table/layout-map/api';\nimport { WrapText } from '../graphic/text';\nimport { getProp } from '../utils/get-prop';\nimport { getQuadProps } from '../utils/padding';\nimport { dealWithRichTextIcon } from '../utils/text-icon-layout';\nimport { getAxisConfigInPivotChart } from '../../layout/chart-helper/get-axis-config';\nimport { computeAxisComponentHeight } from '../../components/axis/get-axis-component-size';\nimport { isArray, isNumber, isObject } from '@visactor/vutils';\nimport { CheckBox } from '@visactor/vrender-components';\nimport { decodeReactDom, dealPercentCalc } from '../component/custom';\n\nconst utilTextMark = new WrapText({\n ignoreBuf: true\n // autoWrapText: true\n});\nconst utilRichTextMark = new RichText({\n width: 0,\n height: 0,\n textConfig: []\n});\nconst utilCheckBoxMark = new CheckBox({});\n\nexport function computeRowsHeight(\n table: BaseTableAPI,\n rowStart?: number,\n rowEnd?: number,\n isClearRowRangeHeightsMap: boolean = true,\n update?: boolean\n): void {\n const time = typeof window !== 'undefined' ? window.performance.now() : 0;\n\n const oldRowHeights: number[] = [];\n const newHeights: number[] = [];\n if (update) {\n for (let row = 0; row < table.rowCount; row++) {\n // oldRowHeights.push(table.getRowHeight(row));\n oldRowHeights[row] = table.getRowHeight(row);\n }\n }\n\n table.defaultHeaderRowHeight;\n table.defaultHeaderColWidth;\n const isDefaultHeaderHasAuto =\n table.defaultHeaderRowHeight === 'auto' ||\n (isArray(table.defaultHeaderRowHeight) && table.defaultHeaderRowHeight.some(item => item === 'auto'));\n const isAllRowsAuto = table.heightMode === 'autoHeight' || table.heightMode === 'adaptive';\n\n if (isAllRowsAuto || isDefaultHeaderHasAuto) {\n rowStart = rowStart ?? 0;\n rowEnd = rowEnd ?? table.rowCount - 1;\n\n // clear rowRangeHeightsMap\n if ((rowStart === 0 && rowEnd === table.rowCount - 1) || isClearRowRangeHeightsMap) {\n table._clearRowRangeHeightsMap();\n }\n // else {\n // for (let row = rowStart; row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row);\n // }\n // }\n\n // compute header row in column header row\n for (let row = rowStart; row < table.columnHeaderLevelCount; row++) {\n let startCol = 0;\n let endCol = table.colCount - 1;\n if (\n ((table.isPivotTable() && !table.isPivotChart()) ||\n (table.isPivotChart() && !(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol)) && // no top axis\n checkPivotFixedStyleAndNoWrap(table, row)\n ) {\n // 列表头样式一致,只计算第一列行高,作为整行行高\n startCol = 0;\n endCol = table.rowHeaderLevelCount;\n }\n if (isAllRowsAuto || table.getDefaultRowHeight(row) === 'auto') {\n const height = computeRowHeight(row, startCol, endCol, table);\n if (update) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n\n // compute bottom frozen row\n for (let row = table.rowCount - table.bottomFrozenRowCount; row <= rowEnd; row++) {\n if (isAllRowsAuto || table.getDefaultRowHeight(row) === 'auto') {\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n if (update) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n\n if (rowEnd < table.columnHeaderLevelCount || !isAllRowsAuto) {\n // do nothing\n } else {\n // compute body row\n if (\n // 以列展示 且符合只需要计算第一行其他行可复用行高的条条件\n !(\n table.internalProps.transpose ||\n (table.isPivotTable() && !(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol)\n ) &&\n checkFixedStyleAndNoWrap(table)\n ) {\n // check fixed style and no wrap situation, fill all row width single compute\n // traspose table and row indicator pivot table cannot use single row height\n const height = computeRowHeight(table.columnHeaderLevelCount, 0, table.colCount - 1, table);\n fillRowsHeight(\n height,\n table.columnHeaderLevelCount,\n table.rowCount - 1 - table.bottomFrozenRowCount,\n table,\n update ? newHeights : undefined\n );\n //底部冻结的行行高需要单独计算\n for (let row = table.rowCount - table.bottomFrozenRowCount; row <= rowEnd; row++) {\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n if (update) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n } else if (\n // 以行展示\n table.internalProps.transpose ||\n (table.isPivotTable() && !(table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol)\n ) {\n // check fixed style and no wrap situation, just compute 0-table.rowHeaderLevelCount column(the column after row header) in ervey row\n // in traspose table and row indicator pivot table\n for (let row = Math.max(rowStart, table.columnHeaderLevelCount); row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row);//注释掉 注意有无缓存问题\n let height;\n if (checkFixedStyleAndNoWrapForTranspose(table, row)) {\n // 以行展示 只计算到body第一列样式的情况即可\n height = computeRowHeight(row, 0, table.rowHeaderLevelCount, table);\n } else {\n height = computeRowHeight(row, 0, table.colCount - 1, table);\n }\n // table.setRowHeight(row, height);\n if (update) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n } else {\n // 以列展示 需要逐行计算情况\n for (let row = Math.max(rowStart, table.columnHeaderLevelCount); row <= rowEnd; row++) {\n // table._clearRowRangeHeightsMap(row); //注释掉 注意有无缓存问题\n const height = computeRowHeight(row, 0, table.colCount - 1, table);\n // table.setRowHeight(row, height);\n if (update) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n }\n }\n }\n\n if ((rowStart === 0 && rowEnd === table.rowCount - 1) || isClearRowRangeHeightsMap) {\n table._clearRowRangeHeightsMap();\n }\n\n // 处理adaptive高度\n if (table.heightMode === 'adaptive') {\n table._clearRowRangeHeightsMap();\n // const canvasWidth = table.internalProps.canvas.width;\n const columnHeaderHeight = table.getRowsHeight(0, table.columnHeaderLevelCount - 1);\n const bottomHeaderHeight = table.isPivotChart() ? table.getBottomFrozenRowsHeight() : 0;\n const totalDrawHeight = table.tableNoFrameHeight - columnHeaderHeight - bottomHeaderHeight;\n const startRow = table.columnHeaderLevelCount;\n const endRow = table.isPivotChart() ? table.rowCount - table.bottomFrozenRowCount : table.rowCount;\n let actualHeight = 0;\n for (let row = startRow; row < endRow; row++) {\n actualHeight += update ? newHeights[row] : table.getRowHeight(row);\n }\n const factor = totalDrawHeight / actualHeight;\n for (let row = startRow; row < endRow; row++) {\n let rowHeight;\n if (row === endRow - 1) {\n rowHeight =\n totalDrawHeight -\n (update\n ? newHeights.reduce((acr, cur, index) => {\n if (index >= startRow && index <= endRow - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getRowsHeight(startRow, endRow - 2));\n } else {\n rowHeight = Math.round((update ? newHeights[row] : table.getRowHeight(row)) * factor);\n }\n if (update) {\n newHeights[row] = rowHeight;\n } else {\n table._setRowHeight(row, rowHeight, false);\n }\n }\n } else if (table.autoFillHeight) {\n table._clearRowRangeHeightsMap();\n const canvasHeight = table.tableNoFrameHeight;\n let actualHeight = 0;\n let actualHeaderHeight = 0;\n for (let row = 0; row < table.rowCount; row++) {\n const rowHeight = update ? newHeights[row] : table.getRowHeight(row);\n if (row < table.frozenRowCount || (table.isPivotChart() && row >= table.rowCount - table.bottomFrozenRowCount)) {\n actualHeaderHeight += rowHeight;\n }\n\n actualHeight += rowHeight;\n }\n table.scenegraph._dealAutoFillHeightOriginRowsHeight = actualHeight;\n // 如果内容高度小于canvas高度,执行adaptive放大\n if (actualHeight < canvasHeight && actualHeight - actualHeaderHeight > 0) {\n const factor = (canvasHeight - actualHeaderHeight) / (actualHeight - actualHeaderHeight);\n for (let row = table.frozenRowCount; row < table.rowCount - table.bottomFrozenRowCount; row++) {\n // if (update) {\n // newHeights[row] = newHeights[row] * factor;\n // } else {\n // table.setRowHeight(row, table.getRowHeight(row) * factor);\n // }\n let rowHeight;\n if (row === table.rowCount - table.bottomFrozenRowCount - 1) {\n rowHeight =\n canvasHeight -\n actualHeaderHeight -\n (update\n ? newHeights.reduce((acr, cur, index) => {\n if (index >= table.frozenRowCount && index <= table.rowCount - table.bottomFrozenRowCount - 2) {\n return acr + cur;\n }\n return acr;\n }, 0)\n : table.getRowsHeight(table.frozenRowCount, table.rowCount - table.bottomFrozenRowCount - 2));\n } else {\n rowHeight = Math.round((update ? newHeights[row] : table.getRowHeight(row)) * factor);\n }\n if (update) {\n newHeights[row] = rowHeight;\n } else {\n table._setRowHeight(row, rowHeight, false);\n }\n }\n }\n }\n\n if (update) {\n for (let row = 0; row < table.rowCount; row++) {\n const newRowHeight = newHeights[row] ?? table.getRowHeight(row);\n if (newRowHeight !== oldRowHeights[row]) {\n // update the row height in scenegraph\n table.scenegraph.updateRowHeight(row, newRowHeight - oldRowHeights[row]);\n }\n }\n }\n // console.log('computeRowsHeight time:', (typeof window !== 'undefined' ? window.performance.now() : 0) - time, rowStart, rowEnd);\n}\n\nexport function computeRowHeight(row: number, startCol: number, endCol: number, table: BaseTableAPI): number {\n let maxHeight = 0;\n // 如果是透视图\n if (\n table.isPivotChart() &&\n row >= table.columnHeaderLevelCount &&\n row < table.rowCount - table.bottomFrozenRowCount\n ) {\n if ((table.internalProps.layoutMap as PivotHeaderLayoutMap).indicatorsAsCol) {\n //并且指标是以列展示 计算行高需要根据y轴的值域范围\n const optimunHeight = (table.internalProps.layoutMap as PivotHeaderLayoutMap).getOptimunHeightForChart(row);\n if (optimunHeight > 0) {\n return optimunHeight;\n }\n } else {\n //直接拿默认行高\n const defaultHeight = table.getDefaultRowHeight(row);\n if (isNumber(defaultHeight)) {\n return defaultHeight;\n }\n }\n }\n for (let col = startCol; col <= endCol; col++) {\n // CustomRender height calculation\n const customHeight = computeCustomRenderHeight(col, row, table);\n if (customHeight) {\n maxHeight = Math.max(customHeight.height, maxHeight);\n if (!customHeight.renderDefault) {\n continue;\n }\n }\n\n // Axis component height calculation\n if (table.isPivotChart()) {\n const layout = table.internalProps.layoutMap as PivotHeaderLayoutMap;\n const axisConfig = getAxisConfigInPivotChart(col, row, layout);\n if (axisConfig) {\n const axisWidth = computeAxisComponentHeight(axisConfig, table);\n if (typeof axisWidth === 'number') {\n maxHeight = Math.max(axisWidth, maxHeight);\n continue;\n }\n }\n }\n\n const cellType = table.isHeader(col, row)\n ? table._getHeaderLayoutMap(col, row)?.headerType\n : table.getBodyColumnType(col, row);\n if (cellType !== 'text' && cellType !== 'link' && cellType !== 'progressbar' && cellType !== 'checkbox') {\n // text&link&progressbar测量文字宽度\n // image&video&sparkline使用默认宽度\n const defaultHeight = table.getDefaultRowHeight(row);\n maxHeight = Math.max(maxHeight, isNumber(defaultHeight) ? defaultHeight : table.defaultRowHeight);\n continue;\n }\n\n // text height calculation\n const textHeight = computeTextHeight(col, row, cellType, table);\n maxHeight = Math.max(textHeight, maxHeight);\n }\n return maxHeight;\n}\n\nfunction checkFixedStyleAndNoWrap(table: BaseTableAPI): boolean {\n const { layoutMap } = table.internalProps;\n const row = table.columnHeaderLevelCount;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n (table.internalProps.autoWrapText || table.isPivotChart()) &&\n (table.options.heightMode === 'autoHeight' || table.options.heightMode === 'adaptive')\n ) {\n return false;\n }\n for (let col = 0; col < table.colCount; col++) {\n const cellDefine = layoutMap.getBody(col, row);\n if (\n typeof cellDefine.style === 'function' ||\n typeof (cellDefine as ColumnData).icon === 'function' ||\n cellDefine.define?.customRender ||\n cellDefine.define?.customLayout ||\n typeof cellDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const cellStyle = table._getCellStyle(col, row); //获取的style是结合了theme配置的style\n if (\n typeof cellStyle.padding === 'function' ||\n typeof cellStyle.fontSize === 'function' ||\n typeof cellStyle.lineHeight === 'function' ||\n cellStyle.autoWrapText === true\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction checkFixedStyleAndNoWrapForTranspose(table: BaseTableAPI, row: number): boolean {\n const { layoutMap } = table.internalProps;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n table.internalProps.autoWrapText &&\n (table.options.heightMode === 'autoHeight' || table.options.heightMode === 'adaptive')\n ) {\n return false;\n }\n\n const cellDefine = layoutMap.getBody(table.rowHeaderLevelCount, row);\n if (\n typeof cellDefine.style === 'function' ||\n typeof (cellDefine as ColumnData).icon === 'function' ||\n cellDefine.define?.customRender ||\n cellDefine.define?.customLayout ||\n typeof cellDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const cellStyle = table._getCellStyle(table.rowHeaderLevelCount, row);\n if (\n typeof cellStyle.padding === 'function' ||\n typeof cellStyle.fontSize === 'function' ||\n typeof cellStyle.lineHeight === 'function' ||\n cellStyle.autoWrapText === true\n ) {\n return false;\n }\n\n return true;\n}\n\nfunction checkPivotFixedStyleAndNoWrap(table: BaseTableAPI, row: number) {\n const { layoutMap } = table.internalProps;\n //设置了全局自动换行的话 不能复用高度计算\n if (\n table.internalProps.autoWrapText &&\n (table.options.heightMode === 'autoHeight' || table.options.heightMode === 'adaptive')\n ) {\n return false;\n }\n\n const headerDefine = layoutMap.getHeader(table.rowHeaderLevelCount, row);\n if (\n typeof headerDefine.style === 'function' ||\n typeof (headerDefine as HeaderData).icons === 'function' ||\n headerDefine.define?.headerCustomRender ||\n headerDefine.define?.headerCustomLayout ||\n typeof headerDefine.define?.icon === 'function'\n ) {\n return false;\n }\n const headerStyle = table._getCellStyle(table.rowHeaderLevelCount, row);\n if (\n typeof headerStyle.padding === 'function' ||\n typeof headerStyle.fontSize === 'function' ||\n typeof headerStyle.lineHeight === 'function' ||\n headerStyle.autoWrapText === true\n ) {\n return false;\n }\n\n return true;\n}\n\nfunction fillRowsHeight(\n height: number,\n startRow: number,\n endRow: number,\n table: BaseTableAPI,\n newHeights: number[] | undefined\n) {\n for (let row = startRow; row <= endRow; row++) {\n if (newHeights) {\n newHeights[row] = height;\n } else {\n table._setRowHeight(row, height);\n }\n }\n}\n\n/**\n * @description: compute customRender height\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeCustomRenderHeight(col: number, row: number, table: BaseTableAPI) {\n const customRender = table.getCustomRender(col, row);\n const customLayout = table.getCustomLayout(col, row);\n if (customRender || customLayout) {\n let spanRow = 1;\n let height = 0;\n let renderDefault = false;\n let enableCellPadding = false;\n if (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\n const cellRange = table.getCellRange(col, row);\n spanRow = cellRange.end.row - cellRange.start.row + 1;\n }\n const arg = {\n col,\n row,\n dataValue: table.getCellOriginValue(col, row),\n value: table.getCellValue(col, row) || '',\n rect: getCellRect(col, row, table),\n table\n };\n if (customLayout) {\n // 处理customLayout\n const customLayoutObj = customLayout(arg);\n if (customLayoutObj.rootContainer instanceof VGroup) {\n customLayoutObj.rootContainer = decodeReactDom(customLayoutObj.rootContainer);\n dealPercentCalc(customLayoutObj.rootContainer, table.getColWidth(col), 0);\n customLayoutObj.rootContainer.setStage(table.scenegraph.stage);\n height = (customLayoutObj.rootContainer as VGroup).AABBBounds.height() ?? 0;\n renderDefault = customLayoutObj.renderDefault;\n enableCellPadding = customLayoutObj.enableCellPadding;\n } else {\n height = 0;\n }\n } else if (typeof customRender === 'function') {\n // 处理customRender\n const customRenderObj = customRender(arg);\n height = customRenderObj?.expectedHeight ?? 0;\n renderDefault = customRenderObj?.renderDefault;\n } else {\n height = customRender?.expectedHeight ?? 0;\n renderDefault = customRender?.renderDefault;\n }\n if (enableCellPadding) {\n const actStyle = table._getCellStyle(col, row);\n const padding = getQuadProps(getProp('padding', actStyle, col, row, table));\n height += padding[0] + padding[2];\n }\n return {\n height: height / spanRow,\n renderDefault\n };\n }\n return undefined;\n}\n\n/**\n * @description: compute text height\n * @param {number} col\n * @param {number} row\n * @param {BaseTableAPI} table\n * @return {*}\n */\nfunction computeTextHeight(col: number, row: number, cellType: ColumnTypeOption, table: BaseTableAPI): number {\n let maxHeight = 0;\n const cellValue = table.getCellValue(col, row);\n // const dataValue = table.getCellOriginValue(col, row);\n const actStyle = table._getCellStyle(col, row);\n let iconHeight = 0;\n let iconWidth = 0;\n const iconInlineFront: ColumnIconOption[] = [];\n let iconInlineFrontHeight = 0;\n const iconInlineEnd: ColumnIconOption[] = [];\n let iconInlineEndHeight = 0;\n // const define = table.getBodyColumnDefine(col, row);\n // const mayHaveIcon = table.getCellLocation(col, row) !== 'body' ? true : !!define?.icon || !!define?.tree;\n\n let mayHaveIcon = false;\n if (table.getCellLocation(col, row) !== 'body') {\n mayHaveIcon = true;\n } else {\n const define = table.getBodyColumnDefine(col, row);\n mayHaveIcon = !!define?.icon || !!define?.tree;\n }\n\n if (mayHaveIcon) {\n const icons = table.getCellIcons(col, row);\n icons?.forEach(icon => {\n if (\n icon.positionType !== IconPosition.absoluteRight &&\n icon.positionType !== IconPosition.inlineFront &&\n icon.positionType !== IconPosition.inlineEnd\n ) {\n iconWidth += (icon.width ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0);\n iconHeight = Math.max(iconHeight, icon.height ?? 0);\n } else if (icon.positionType === IconPosition.inlineFront) {\n iconInlineFront.push(icon);\n iconInlineFrontHeight = Math.max(\n iconInlineFrontHeight,\n (icon.height ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0)\n );\n } else if (icon.positionType === IconPosition.inlineEnd) {\n iconInlineEnd.push(icon);\n iconInlineEndHeight = Math.max(\n iconInlineEndHeight,\n (icon.height ?? 0) + (icon.marginLeft ?? 0) + (icon.marginRight ?? 0)\n );\n }\n });\n }\n let spanRow = 1;\n let endCol = col;\n if (table.isHeader(col, row) || (table.getBodyColumnDefine(col, row) as TextColumnDefine)?.mergeCell) {\n const cellRange = table.getCellRange(col, row);\n spanRow = cellRange.end.row - cellRange.start.row + 1;\n col = cellRange.start.col;\n endCol = cellRange.end.col;\n }\n\n const padding = getQuadProps(getProp('padding', actStyle, col, row, table));\n const fontSize = getProp('fontSize', actStyle, col, row, table);\n const fontStyle = getProp('fontStyle', actStyle, col, row, table);\n const fontWeight = getProp('fontWeight', actStyle, col, row, table);\n const lineHeight = getProp('lineHeight', actStyle, col, row, table) ?? fontSize;\n const fontFamily = getProp('fontFamily', actStyle, col, row, table);\n const autoWrapText = getProp('autoWrapText', actStyle, col, row, table);\n let text;\n if (cellType === 'checkbox') {\n text = isObject(cellValue) ? (cellValue as any).text : cellValue;\n } else {\n text = cellValue;\n }\n const lines = validToString(text).split('\\n') || [];\n\n const cellWidth = table.getColsWidth(col, endCol);\n\n if (cellType === 'checkbox') {\n const size = getProp('size', actStyle, col, row, table);\n if (autoWrapText) {\n const spaceBetweenTextAndIcon = getProp('spaceBetweenTextAndIcon', actStyle, col, row, table);\n const maxLineWidth = cellWidth - (padding[1] + padding[3]) - iconWidth - size - spaceBetweenTextAndIcon;\n utilCheckBoxMark.setAttributes({\n text: {\n maxLineWidth,\n text: lines,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n wordBreak: 'break-word'\n },\n icon: {\n width: Math.floor(size / 1.4), // icon : box => 10 : 14\n height: Math.floor(size / 1.4)\n },\n box: {\n width: size,\n height: size\n },\n spaceBetweenTextAndIcon\n });\n utilCheckBoxMark.render();\n maxHeight = utilTextMark.AABBBounds.height();\n } else {\n maxHeight = Math.max(size, lines.length * lineHeight);\n }\n } else if (iconInlineFront.length || iconInlineEnd.length) {\n // if (autoWrapText) {\n const textOption = Object.assign({\n text: cellValue?.toString(),\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n lineHeight\n });\n textOption.textBaseline = 'middle';\n const textConfig = [\n ...iconInlineFront.map(icon => dealWithRichTextIcon(icon)),\n textOption,\n ...iconInlineEnd.map(icon => dealWithRichTextIcon(icon))\n ];\n utilRichTextMark.setAttributes({\n width: cellWidth - (padding[1] + padding[3]) - iconWidth,\n height: 0,\n textConfig\n });\n maxHeight = utilRichTextMark.AABBBounds.height();\n // } else {\n // maxHeight = 0;\n // lines.forEach((line: string, index: number) => {\n // if (index === 0 && iconInlineFront.length) {\n // maxHeight += Math.max(lineHeight, iconInlineFrontHeight);\n // } else if (index === lines.length - 1 && iconInlineEnd.length) {\n // maxHeight += Math.max(lineHeight, iconInlineEndHeight);\n // } else {\n // maxHeight += lineHeight;\n // }\n // });\n // }\n } else if (autoWrapText) {\n const maxLineWidth = cellWidth - (padding[1] + padding[3]) - iconWidth;\n utilTextMark.setAttributes({\n maxLineWidth,\n text: lines,\n fontSize,\n fontStyle,\n fontWeight,\n fontFamily,\n lineHeight,\n wordBreak: 'break-word'\n });\n maxHeight = utilTextMark.AABBBounds.height();\n } else {\n // autoWrapText = false\n maxHeight = lines.length * lineHeight;\n }\n\n return (Math.max(maxHeight, iconHeight) + padding[0] + padding[2]) / spanRow;\n}\n\nfunction getCellRect(col: number, row: number, table: BaseTableAPI) {\n return {\n left: 0,\n top: 0,\n right: table.getColWidth(col),\n bottom: table.getRowHeight(row),\n width: table.getColWidth(col),\n height: 0\n };\n}\n"]}
@@ -34,7 +34,7 @@ function updateRow(removeCells, addCells, updateCells, table) {
34
34
  if (addRows.length) {
35
35
  if (!(0, vutils_1.isNumber)(updateAfter)) {
36
36
  const minRow = Math.min(...addRows);
37
- scene.proxy.rowUpdatePos = minRow;
37
+ scene.proxy.rowUpdatePos = Math.min(minRow, scene.proxy.rowUpdatePos);
38
38
  }
39
39
  scene.proxy.rowUpdateDirection = "up", scene.proxy.updateCellGroups(2 * scene.proxy.screenRowCount),
40
40
  updateBottomFrozeCellGroups(), scene.proxy.progress();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/layout/update-row.ts"],"names":[],"mappings":"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","file":"update-row.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 { IGraphic } from '@visactor/vrender';\n\n/**\n * add and remove rows in scenegraph\n */\nexport function updateRow(\n removeCells: CellAddress[],\n addCells: CellAddress[],\n updateCells: CellAddress[],\n table: BaseTableAPI\n) {\n const scene = table.scenegraph;\n // deduplication\n const removeRows = deduplication(removeCells.map(cell => cell.row)).sort((a, b) => b - a);\n const addRows = deduplication(addCells.map(cell => cell.row)).sort((a, b) => a - b);\n const updateRows = deduplication(updateCells.map(cell => cell.row)).sort((a, b) => a - b);\n\n // remove cells\n removeRows.forEach(row => {\n removeRow(row, scene);\n });\n\n removeRows.forEach(row => {\n scene.table.rowHeightsMap.adjustOrder(row + 1, row, scene.table.rowHeightsMap.count() - row - 1);\n scene.table.rowHeightsMap.del(scene.table.rowHeightsMap.count() - 1);\n });\n\n if (removeRows.length) {\n resetRowNumber(scene);\n }\n\n scene.table._clearRowRangeHeightsMap();\n\n // add cells\n let updateAfter: number;\n addRows.forEach(row => {\n const needUpdateAfter = addRow(row, scene);\n updateAfter = updateAfter ?? needUpdateAfter;\n scene.table.rowHeightsMap.adjustOrder(row, row + 1, scene.table.rowHeightsMap.count() - row);\n });\n\n // reset attribute y and row number in CellGroup\n // const newTotalHeight = resetRowNumberAndY(scene);\n resetRowNumberAndY(scene);\n\n for (let col = 0; col < table.colCount; col++) {\n // add cells\n updateRows.forEach(r => {\n // updateRowAttr(row, scene);\n const mergeInfo = getCellMergeInfo(scene.table, col, r);\n if (mergeInfo) {\n for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) {\n for (let row = mergeInfo.start.row; row <= mergeInfo.end.row; row++) {\n updateCell(col, row, scene.table, false);\n }\n }\n } else {\n updateCell(col, r, scene.table, false);\n }\n });\n }\n if (isNumber(updateAfter)) {\n for (let col = 0; col < table.colCount; col++) {\n for (let row = updateAfter; row < table.rowCount; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.rowUpdatePos = updateAfter;\n }\n\n if (addRows.length) {\n if (!isNumber(updateAfter)) {\n const minRow = Math.min(...addRows);\n scene.proxy.rowUpdatePos = minRow;\n }\n scene.proxy.rowUpdateDirection = 'up';\n scene.proxy.updateCellGroups(scene.proxy.screenRowCount * 2);\n updateBottomFrozeCellGroups();\n scene.proxy.progress();\n } else if (removeRows.length) {\n scene.proxy.updateCellGroups(scene.proxy.screenRowCount * 2);\n\n updateBottomFrozeCellGroups();\n scene.proxy.progress();\n }\n\n // update table size\n const newTotalHeight = table.getRowsHeight(table.frozenRowCount, table.rowCount - 1 - table.bottomFrozenRowCount);\n scene.updateContainerHeight(scene.table.frozenRowCount, newTotalHeight - scene.bodyGroup.attribute.height);\n\n function updateBottomFrozeCellGroups() {\n if (\n addRows?.[addRows?.length - 1] >= table.rowCount - table.bottomFrozenRowCount ||\n updateRows?.[updateRows?.length - 1] >= table.rowCount - table.bottomFrozenRowCount ||\n removeRows?.[0] >= table.rowCount - table.bottomFrozenRowCount\n ) {\n for (let col = 0; col < table.colCount; col++) {\n for (let row = table.rowCount - table.bottomFrozenRowCount; row < table.rowCount; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.updateBottomFrozenCellGroups();\n }\n }\n}\nfunction removeRow(row: number, scene: Scenegraph) {\n removeCellGroup(row, scene);\n const proxy = scene.proxy;\n\n // TODO 需要整体更新proxy的状态\n if (row >= proxy.rowStart && row <= proxy.rowEnd) {\n proxy.rowEnd--;\n proxy.currentRow--;\n }\n proxy.bodyBottomRow--;\n // proxy.totalRow--;\n const totalActualBodyRowCount = Math.min(proxy.rowLimit, proxy.bodyBottomRow - proxy.bodyTopRow + 1); // 渐进加载总row数量\n proxy.totalActualBodyRowCount = totalActualBodyRowCount;\n proxy.totalRow = proxy.rowStart + totalActualBodyRowCount - 1; // 目标渐进完成的row\n}\n\nfunction addRow(row: number, scene: Scenegraph) {\n const proxy = scene.proxy;\n proxy.bodyBottomRow++;\n // proxy.totalRow++;\n const totalActualBodyRowCount = Math.min(proxy.rowLimit, proxy.bodyBottomRow - proxy.bodyTopRow + 1); // 渐进加载总row数量\n proxy.totalActualBodyRowCount = totalActualBodyRowCount;\n proxy.totalRow = proxy.rowStart + totalActualBodyRowCount - 1; // 目标渐进完成的row\n\n if (row < proxy.rowStart) {\n return undefined;\n } else if (row > proxy.rowEnd) {\n if (proxy.rowEnd - proxy.rowStart + 1 < proxy.rowLimit) {\n // can add row\n proxy.rowEnd++;\n proxy.currentRow++;\n\n addRowCellGroup(row, scene);\n return row;\n }\n return undefined;\n }\n if (proxy.rowEnd - proxy.rowStart + 1 < proxy.rowLimit) {\n // can add row\n proxy.rowEnd++;\n proxy.currentRow++;\n\n addRowCellGroup(row, scene);\n return row;\n }\n // update rows after\n return row;\n\n // return undefined;\n\n // // TODO 需要整体更新proxy的状态\n // scene.proxy.bodyBottomRow++;\n // scene.proxy.totalRow++;\n // scene.proxy.rowEnd++;\n // scene.proxy.currentRow++;\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\n// function resetRowNumber(scene: Scenegraph) {\n// for (let col = 0; col < scene.table.colCount; col++) {\n// const headerColGroup = scene.getColGroup(col, true);\n// const colGroup = scene.getColGroup(col, false);\n// if (!headerColGroup && !colGroup) {\n// continue;\n// }\n// // reset row number\n// let rowIndex = 0; //(headerColGroup.firstChild as Group)?.row;\n// headerColGroup?.forEachChildren((cellGroup: Group) => {\n// // const oldRow = cellGroup.row;\n// // if (isNumber(cellGroup.mergeStartRow)) {\n// // cellGroup.mergeStartRow = cellGroup.mergeStartRow - oldRow + rowIndex;\n// // }\n// // if (isNumber(cellGroup.mergeEndRow)) {\n// // cellGroup.mergeEndRow = cellGroup.mergeEndRow - oldRow + rowIndex;\n// // }\n// cellGroup.row = rowIndex;\n// const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n// if (merge) {\n// cellGroup.mergeStartCol = merge.start.col;\n// cellGroup.mergeStartRow = merge.start.row;\n// cellGroup.mergeEndCol = merge.end.col;\n// cellGroup.mergeEndRow = merge.end.row;\n// }\n// rowIndex++;\n// });\n// // rowIndex = (colGroup.firstChild as Group)?.row;\n// // rowIndex = scene.table.columnHeaderLevelCount;\n// rowIndex = scene.bodyRowStart;\n// colGroup?.forEachChildren((cellGroup: Group) => {\n// // const oldRow = cellGroup.row;\n// // if (isNumber(cellGroup.mergeStartRow)) {\n// // cellGroup.mergeStartRow = cellGroup.mergeStartRow - oldRow + rowIndex;\n// // }\n// // if (isNumber(cellGroup.mergeEndRow)) {\n// // cellGroup.mergeEndRow = cellGroup.mergeEndRow - oldRow + rowIndex;\n// // }\n// cellGroup.row = rowIndex;\n// const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n// if (merge) {\n// cellGroup.mergeStartCol = merge.start.col;\n// cellGroup.mergeStartRow = merge.start.row;\n// cellGroup.mergeEndCol = merge.end.col;\n// cellGroup.mergeEndRow = merge.end.row;\n// }\n// rowIndex++;\n// });\n// }\n// }\n\n// function resetRowNumberAndY(scene: Scenegraph) {\n// const table = scene.table;\n// let newTotalHeight = 0;\n// for (let col = 0; col < scene.table.colCount; col++) {\n// const headerColGroup = scene.getColGroup(col, true);\n// const colGroup = scene.getColGroup(col, false); // body, row header, right frozen\n// const bottomGroup =\n// scene.getColGroupInBottom(col) ||\n// scene.getColGroupInLeftBottomCorner(col) ||\n// scene.getColGroupInRightTopCorner(col);\n// if (!headerColGroup && !colGroup && !bottomGroup) {\n// continue;\n// }\n// let y = 0;\n// // reset row number\n// // let rowIndex = (headerColGroup.firstChild as Group)?.row;\n// // headerColGroup.forEachChildren((cellGroup: Group) => {\n// // cellGroup.row = rowIndex;\n// // rowIndex++;\n// // if (cellGroup.role !== 'cell') {\n// // return;\n// // }\n// // cellGroup.setAttribute('y', y);\n// // y+= cellGroup.attribute.height;\n// // });\n// // let rowIndex = (colGroup.firstChild as Group)?.row;\n// let rowIndex = scene.bodyRowStart;\n// y = scene.getCellGroupY(rowIndex);\n// colGroup?.forEachChildren((cellGroup: Group) => {\n// // const oldRow = cellGroup.row;\n// // if (isNumber(cellGroup.mergeStartRow)) {\n// // cellGroup.mergeStartRow = cellGroup.mergeStartRow - oldRow + rowIndex;\n// // }\n// // if (isNumber(cellGroup.mergeEndRow)) {\n// // cellGroup.mergeEndRow = cellGroup.mergeEndRow - oldRow + rowIndex;\n// // }\n// cellGroup.row = rowIndex;\n// const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n// if (merge) {\n// cellGroup.mergeStartCol = merge.start.col;\n// cellGroup.mergeStartRow = merge.start.row;\n// cellGroup.mergeEndCol = merge.end.col;\n// cellGroup.mergeEndRow = merge.end.row;\n// }\n// rowIndex++;\n// if (cellGroup.role !== 'cell') {\n// return;\n// }\n// cellGroup.setAttribute('y', y);\n// y += cellGroup.attribute.height;\n// });\n// newTotalHeight = y;\n\n// rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n// // update bottom frozen cell row index\n// bottomGroup?.forEachChildren((cellGroup: Group) => {\n// cellGroup.row = rowIndex;\n// const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n// if (merge) {\n// cellGroup.mergeStartCol = merge.start.col;\n// cellGroup.mergeStartRow = merge.start.row;\n// cellGroup.mergeEndCol = merge.end.col;\n// cellGroup.mergeEndRow = merge.end.row;\n// }\n// rowIndex++;\n// });\n// }\n// return newTotalHeight;\n// }\nfunction resetRowNumber(scene: Scenegraph) {\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n\n scene.rowHeaderGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n\n scene.rightFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.leftBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.rightBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n function processCell(cellGroup: Group, rowIndex: number) {\n cellGroup.row = rowIndex;\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}\n\nfunction resetRowNumberAndY(scene: Scenegraph) {\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n\n scene.rowHeaderGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n\n scene.rightFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.leftBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.rightBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n function processCell(cellGroup: Group, rowIndex: number, y: number) {\n cellGroup.row = rowIndex;\n cellGroup.setAttribute('y', y);\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}\nfunction addRowCellGroup(row: number, scene: Scenegraph) {\n for (let col = 0; col < scene.table.colCount; col++) {\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\n if (!cellGroup) {\n // TODO: deal with data promise situation\n continue;\n }\n\n // insert cellGroup in colGroup\n const colGroup = scene.getColGroup(col);\n if (!colGroup) {\n continue;\n }\n\n if (colGroup.firstChild && row < (colGroup.firstChild as Group).row) {\n colGroup.insertBefore(cellGroup, colGroup.firstChild);\n (colGroup.firstChild as Group).row = (colGroup.firstChild as Group).row + 1;\n // if (\n // isNumber((colGroup.firstChild as Group).mergeStartRow) &&\n // isNumber((colGroup.firstChild as Group).mergeEndRow)\n // ) {\n // (colGroup.firstChild as Group).mergeStartRow = (colGroup.firstChild as Group).mergeStartRow + 1;\n // (colGroup.firstChild as Group).mergeEndRow = (colGroup.firstChild as Group).mergeEndRow + 1;\n // }\n } else if (colGroup.lastChild && row > (colGroup.lastChild as Group).row) {\n colGroup.appendChild(cellGroup);\n } else {\n // let cellBefore: Group;\n // colGroup.forEachChildren((cellGroup: Group) => {\n // if (cellGroup.row === row) {\n // cellBefore = cellGroup;\n // return true;\n // }\n // return false;\n // });\n\n const cellBefore = scene.highPerformanceGetCell(col, row, true);\n if (cellBefore !== cellGroup) {\n colGroup.insertBefore(cellGroup, cellBefore);\n cellBefore && (cellBefore.row = cellBefore.row + 1);\n // if (isNumber(cellBefore.mergeStartRow) && isNumber(cellBefore.mergeEndRow)) {\n // cellBefore.mergeStartRow = cellBefore.mergeStartRow + 1;\n // cellBefore.mergeEndRow = cellBefore.mergeEndRow + 1;\n // }\n if (cellBefore !== colGroup.lastChild) {\n colGroup.lastChild && ((colGroup.lastChild as Group).row = (colGroup.lastChild as Group).row + 1);\n // if (\n // isNumber((colGroup.lastChild as Group).mergeStartRow) &&\n // isNumber((colGroup.lastChild as Group).mergeEndRow)\n // ) {\n // (colGroup.lastChild as Group).mergeStartRow = (colGroup.lastChild as Group).mergeStartRow + 1;\n // (colGroup.lastChild as Group).mergeEndRow = (colGroup.lastChild as Group).mergeEndRow + 1;\n // }\n }\n }\n }\n\n // // reset row number\n // let rowIndex = (colGroup.firstChild as Group)?.row;\n // colGroup.forEachChildren((cellGroup: Group) => {\n // cellGroup.row = rowIndex;\n // rowIndex++;\n // });\n }\n}\n\nfunction removeCellGroup(row: number, scene: Scenegraph) {\n for (let col = 0; col < scene.table.colCount; col++) {\n // const headerColGroup = scene.getColGroup(col, true);\n const colGroup = scene.getColGroup(col, false);\n if (!colGroup) {\n continue;\n }\n // // remove cellGroup in headerColGroup\n // let headerCellGroup;\n // headerColGroup.forEachChildren((cellGroup: Group) => {\n // if (cellGroup.row === row) {\n // headerCellGroup = cellGroup;\n // return true;\n // }\n // return false;\n // });\n // if (headerCellGroup) {\n // headerColGroup.removeChild(headerCellGroup);\n // }\n\n // remove cellGroup in colGroup\n let cellGroup;\n colGroup.forEachChildren((cell: Group) => {\n if (cell.row === row) {\n cellGroup = cell;\n return true;\n }\n return false;\n });\n if (cellGroup) {\n colGroup.updateColumnHeight(-(cellGroup as Group).attribute.height);\n colGroup.removeChild(cellGroup);\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/layout/update-row.ts"],"names":[],"mappings":"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","file":"update-row.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 { IGraphic } from '@visactor/vrender';\n\n/**\n * add and remove rows in scenegraph\n */\nexport function updateRow(\n removeCells: CellAddress[],\n addCells: CellAddress[],\n updateCells: CellAddress[],\n table: BaseTableAPI\n) {\n const scene = table.scenegraph;\n // deduplication\n const removeRows = deduplication(removeCells.map(cell => cell.row)).sort((a, b) => b - a);\n const addRows = deduplication(addCells.map(cell => cell.row)).sort((a, b) => a - b);\n const updateRows = deduplication(updateCells.map(cell => cell.row)).sort((a, b) => a - b);\n\n // remove cells\n removeRows.forEach(row => {\n removeRow(row, scene);\n });\n\n removeRows.forEach(row => {\n scene.table.rowHeightsMap.adjustOrder(row + 1, row, scene.table.rowHeightsMap.count() - row - 1);\n scene.table.rowHeightsMap.del(scene.table.rowHeightsMap.count() - 1);\n });\n\n if (removeRows.length) {\n resetRowNumber(scene);\n }\n\n scene.table._clearRowRangeHeightsMap();\n\n // add cells\n let updateAfter: number;\n addRows.forEach(row => {\n const needUpdateAfter = addRow(row, scene);\n updateAfter = updateAfter ?? needUpdateAfter;\n scene.table.rowHeightsMap.adjustOrder(row, row + 1, scene.table.rowHeightsMap.count() - row);\n });\n\n // reset attribute y and row number in CellGroup\n // const newTotalHeight = resetRowNumberAndY(scene);\n resetRowNumberAndY(scene);\n\n for (let col = 0; col < table.colCount; col++) {\n // add cells\n updateRows.forEach(r => {\n // updateRowAttr(row, scene);\n const mergeInfo = getCellMergeInfo(scene.table, col, r);\n if (mergeInfo) {\n for (let col = mergeInfo.start.col; col <= mergeInfo.end.col; col++) {\n for (let row = mergeInfo.start.row; row <= mergeInfo.end.row; row++) {\n updateCell(col, row, scene.table, false);\n }\n }\n } else {\n updateCell(col, r, scene.table, false);\n }\n });\n }\n if (isNumber(updateAfter)) {\n for (let col = 0; col < table.colCount; col++) {\n for (let row = updateAfter; row < table.rowCount; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.rowUpdatePos = updateAfter;\n }\n\n if (addRows.length) {\n if (!isNumber(updateAfter)) {\n const minRow = Math.min(...addRows);\n scene.proxy.rowUpdatePos = Math.min(minRow, scene.proxy.rowUpdatePos);\n }\n scene.proxy.rowUpdateDirection = 'up';\n scene.proxy.updateCellGroups(scene.proxy.screenRowCount * 2);\n updateBottomFrozeCellGroups();\n scene.proxy.progress();\n } else if (removeRows.length) {\n scene.proxy.updateCellGroups(scene.proxy.screenRowCount * 2);\n\n updateBottomFrozeCellGroups();\n scene.proxy.progress();\n }\n\n // update table size\n const newTotalHeight = table.getRowsHeight(table.frozenRowCount, table.rowCount - 1 - table.bottomFrozenRowCount);\n scene.updateContainerHeight(scene.table.frozenRowCount, newTotalHeight - scene.bodyGroup.attribute.height);\n\n function updateBottomFrozeCellGroups() {\n if (\n addRows?.[addRows?.length - 1] >= table.rowCount - table.bottomFrozenRowCount ||\n updateRows?.[updateRows?.length - 1] >= table.rowCount - table.bottomFrozenRowCount ||\n removeRows?.[0] >= table.rowCount - table.bottomFrozenRowCount\n ) {\n for (let col = 0; col < table.colCount; col++) {\n for (let row = table.rowCount - table.bottomFrozenRowCount; row < table.rowCount; row++) {\n const cellGroup = scene.highPerformanceGetCell(col, row, true);\n cellGroup && (cellGroup.needUpdate = true);\n }\n }\n scene.proxy.updateBottomFrozenCellGroups();\n }\n }\n}\nfunction removeRow(row: number, scene: Scenegraph) {\n removeCellGroup(row, scene);\n const proxy = scene.proxy;\n\n // TODO 需要整体更新proxy的状态\n if (row >= proxy.rowStart && row <= proxy.rowEnd) {\n proxy.rowEnd--;\n proxy.currentRow--;\n }\n proxy.bodyBottomRow--;\n // proxy.totalRow--;\n const totalActualBodyRowCount = Math.min(proxy.rowLimit, proxy.bodyBottomRow - proxy.bodyTopRow + 1); // 渐进加载总row数量\n proxy.totalActualBodyRowCount = totalActualBodyRowCount;\n proxy.totalRow = proxy.rowStart + totalActualBodyRowCount - 1; // 目标渐进完成的row\n}\n\nfunction addRow(row: number, scene: Scenegraph) {\n const proxy = scene.proxy;\n proxy.bodyBottomRow++;\n // proxy.totalRow++;\n const totalActualBodyRowCount = Math.min(proxy.rowLimit, proxy.bodyBottomRow - proxy.bodyTopRow + 1); // 渐进加载总row数量\n proxy.totalActualBodyRowCount = totalActualBodyRowCount;\n proxy.totalRow = proxy.rowStart + totalActualBodyRowCount - 1; // 目标渐进完成的row\n\n if (row < proxy.rowStart) {\n return undefined;\n } else if (row > proxy.rowEnd) {\n if (proxy.rowEnd - proxy.rowStart + 1 < proxy.rowLimit) {\n // can add row\n proxy.rowEnd++;\n proxy.currentRow++;\n\n addRowCellGroup(row, scene);\n return row;\n }\n return undefined;\n }\n if (proxy.rowEnd - proxy.rowStart + 1 < proxy.rowLimit) {\n // can add row\n proxy.rowEnd++;\n proxy.currentRow++;\n\n addRowCellGroup(row, scene);\n return row;\n }\n // update rows after\n return row;\n\n // return undefined;\n\n // // TODO 需要整体更新proxy的状态\n // scene.proxy.bodyBottomRow++;\n // scene.proxy.totalRow++;\n // scene.proxy.rowEnd++;\n // scene.proxy.currentRow++;\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\n// function resetRowNumber(scene: Scenegraph) {\n// for (let col = 0; col < scene.table.colCount; col++) {\n// const headerColGroup = scene.getColGroup(col, true);\n// const colGroup = scene.getColGroup(col, false);\n// if (!headerColGroup && !colGroup) {\n// continue;\n// }\n// // reset row number\n// let rowIndex = 0; //(headerColGroup.firstChild as Group)?.row;\n// headerColGroup?.forEachChildren((cellGroup: Group) => {\n// // const oldRow = cellGroup.row;\n// // if (isNumber(cellGroup.mergeStartRow)) {\n// // cellGroup.mergeStartRow = cellGroup.mergeStartRow - oldRow + rowIndex;\n// // }\n// // if (isNumber(cellGroup.mergeEndRow)) {\n// // cellGroup.mergeEndRow = cellGroup.mergeEndRow - oldRow + rowIndex;\n// // }\n// cellGroup.row = rowIndex;\n// const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n// if (merge) {\n// cellGroup.mergeStartCol = merge.start.col;\n// cellGroup.mergeStartRow = merge.start.row;\n// cellGroup.mergeEndCol = merge.end.col;\n// cellGroup.mergeEndRow = merge.end.row;\n// }\n// rowIndex++;\n// });\n// // rowIndex = (colGroup.firstChild as Group)?.row;\n// // rowIndex = scene.table.columnHeaderLevelCount;\n// rowIndex = scene.bodyRowStart;\n// colGroup?.forEachChildren((cellGroup: Group) => {\n// // const oldRow = cellGroup.row;\n// // if (isNumber(cellGroup.mergeStartRow)) {\n// // cellGroup.mergeStartRow = cellGroup.mergeStartRow - oldRow + rowIndex;\n// // }\n// // if (isNumber(cellGroup.mergeEndRow)) {\n// // cellGroup.mergeEndRow = cellGroup.mergeEndRow - oldRow + rowIndex;\n// // }\n// cellGroup.row = rowIndex;\n// const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n// if (merge) {\n// cellGroup.mergeStartCol = merge.start.col;\n// cellGroup.mergeStartRow = merge.start.row;\n// cellGroup.mergeEndCol = merge.end.col;\n// cellGroup.mergeEndRow = merge.end.row;\n// }\n// rowIndex++;\n// });\n// }\n// }\n\n// function resetRowNumberAndY(scene: Scenegraph) {\n// const table = scene.table;\n// let newTotalHeight = 0;\n// for (let col = 0; col < scene.table.colCount; col++) {\n// const headerColGroup = scene.getColGroup(col, true);\n// const colGroup = scene.getColGroup(col, false); // body, row header, right frozen\n// const bottomGroup =\n// scene.getColGroupInBottom(col) ||\n// scene.getColGroupInLeftBottomCorner(col) ||\n// scene.getColGroupInRightTopCorner(col);\n// if (!headerColGroup && !colGroup && !bottomGroup) {\n// continue;\n// }\n// let y = 0;\n// // reset row number\n// // let rowIndex = (headerColGroup.firstChild as Group)?.row;\n// // headerColGroup.forEachChildren((cellGroup: Group) => {\n// // cellGroup.row = rowIndex;\n// // rowIndex++;\n// // if (cellGroup.role !== 'cell') {\n// // return;\n// // }\n// // cellGroup.setAttribute('y', y);\n// // y+= cellGroup.attribute.height;\n// // });\n// // let rowIndex = (colGroup.firstChild as Group)?.row;\n// let rowIndex = scene.bodyRowStart;\n// y = scene.getCellGroupY(rowIndex);\n// colGroup?.forEachChildren((cellGroup: Group) => {\n// // const oldRow = cellGroup.row;\n// // if (isNumber(cellGroup.mergeStartRow)) {\n// // cellGroup.mergeStartRow = cellGroup.mergeStartRow - oldRow + rowIndex;\n// // }\n// // if (isNumber(cellGroup.mergeEndRow)) {\n// // cellGroup.mergeEndRow = cellGroup.mergeEndRow - oldRow + rowIndex;\n// // }\n// cellGroup.row = rowIndex;\n// const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n// if (merge) {\n// cellGroup.mergeStartCol = merge.start.col;\n// cellGroup.mergeStartRow = merge.start.row;\n// cellGroup.mergeEndCol = merge.end.col;\n// cellGroup.mergeEndRow = merge.end.row;\n// }\n// rowIndex++;\n// if (cellGroup.role !== 'cell') {\n// return;\n// }\n// cellGroup.setAttribute('y', y);\n// y += cellGroup.attribute.height;\n// });\n// newTotalHeight = y;\n\n// rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n// // update bottom frozen cell row index\n// bottomGroup?.forEachChildren((cellGroup: Group) => {\n// cellGroup.row = rowIndex;\n// const merge = getCellMergeInfo(scene.table, cellGroup.col, cellGroup.row);\n// if (merge) {\n// cellGroup.mergeStartCol = merge.start.col;\n// cellGroup.mergeStartRow = merge.start.row;\n// cellGroup.mergeEndCol = merge.end.col;\n// cellGroup.mergeEndRow = merge.end.row;\n// }\n// rowIndex++;\n// });\n// }\n// return newTotalHeight;\n// }\nfunction resetRowNumber(scene: Scenegraph) {\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n\n scene.rowHeaderGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n\n scene.rightFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.leftBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n scene.rightBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex);\n rowIndex++;\n });\n });\n function processCell(cellGroup: Group, rowIndex: number) {\n cellGroup.row = rowIndex;\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}\n\nfunction resetRowNumberAndY(scene: Scenegraph) {\n scene.bodyGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n\n scene.rowHeaderGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n\n scene.rightFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.bodyRowStart;\n // let y = (colGroup.firstChild as IGraphic).attribute.y;\n let y = scene.getCellGroupY(rowIndex);\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.bottomFrozenGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.leftBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n scene.rightBottomCornerGroup.forEachChildren((colGroup: Group) => {\n let rowIndex = scene.table.rowCount - scene.table.bottomFrozenRowCount;\n let y = 0;\n colGroup?.forEachChildren((cellGroup: Group) => {\n processCell(cellGroup, rowIndex, y);\n rowIndex++;\n y += cellGroup.attribute.height;\n });\n });\n function processCell(cellGroup: Group, rowIndex: number, y: number) {\n cellGroup.row = rowIndex;\n cellGroup.setAttribute('y', y);\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}\nfunction addRowCellGroup(row: number, scene: Scenegraph) {\n for (let col = 0; col < scene.table.colCount; col++) {\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\n if (!cellGroup) {\n // TODO: deal with data promise situation\n continue;\n }\n\n // insert cellGroup in colGroup\n const colGroup = scene.getColGroup(col);\n if (!colGroup) {\n continue;\n }\n\n if (colGroup.firstChild && row < (colGroup.firstChild as Group).row) {\n colGroup.insertBefore(cellGroup, colGroup.firstChild);\n (colGroup.firstChild as Group).row = (colGroup.firstChild as Group).row + 1;\n // if (\n // isNumber((colGroup.firstChild as Group).mergeStartRow) &&\n // isNumber((colGroup.firstChild as Group).mergeEndRow)\n // ) {\n // (colGroup.firstChild as Group).mergeStartRow = (colGroup.firstChild as Group).mergeStartRow + 1;\n // (colGroup.firstChild as Group).mergeEndRow = (colGroup.firstChild as Group).mergeEndRow + 1;\n // }\n } else if (colGroup.lastChild && row > (colGroup.lastChild as Group).row) {\n colGroup.appendChild(cellGroup);\n } else {\n // let cellBefore: Group;\n // colGroup.forEachChildren((cellGroup: Group) => {\n // if (cellGroup.row === row) {\n // cellBefore = cellGroup;\n // return true;\n // }\n // return false;\n // });\n\n const cellBefore = scene.highPerformanceGetCell(col, row, true);\n if (cellBefore !== cellGroup) {\n colGroup.insertBefore(cellGroup, cellBefore);\n cellBefore && (cellBefore.row = cellBefore.row + 1);\n // if (isNumber(cellBefore.mergeStartRow) && isNumber(cellBefore.mergeEndRow)) {\n // cellBefore.mergeStartRow = cellBefore.mergeStartRow + 1;\n // cellBefore.mergeEndRow = cellBefore.mergeEndRow + 1;\n // }\n if (cellBefore !== colGroup.lastChild) {\n colGroup.lastChild && ((colGroup.lastChild as Group).row = (colGroup.lastChild as Group).row + 1);\n // if (\n // isNumber((colGroup.lastChild as Group).mergeStartRow) &&\n // isNumber((colGroup.lastChild as Group).mergeEndRow)\n // ) {\n // (colGroup.lastChild as Group).mergeStartRow = (colGroup.lastChild as Group).mergeStartRow + 1;\n // (colGroup.lastChild as Group).mergeEndRow = (colGroup.lastChild as Group).mergeEndRow + 1;\n // }\n }\n }\n }\n\n // // reset row number\n // let rowIndex = (colGroup.firstChild as Group)?.row;\n // colGroup.forEachChildren((cellGroup: Group) => {\n // cellGroup.row = rowIndex;\n // rowIndex++;\n // });\n }\n}\n\nfunction removeCellGroup(row: number, scene: Scenegraph) {\n for (let col = 0; col < scene.table.colCount; col++) {\n // const headerColGroup = scene.getColGroup(col, true);\n const colGroup = scene.getColGroup(col, false);\n if (!colGroup) {\n continue;\n }\n // // remove cellGroup in headerColGroup\n // let headerCellGroup;\n // headerColGroup.forEachChildren((cellGroup: Group) => {\n // if (cellGroup.row === row) {\n // headerCellGroup = cellGroup;\n // return true;\n // }\n // return false;\n // });\n // if (headerCellGroup) {\n // headerColGroup.removeChild(headerCellGroup);\n // }\n\n // remove cellGroup in colGroup\n let cellGroup;\n colGroup.forEachChildren((cell: Group) => {\n if (cell.row === row) {\n cellGroup = cell;\n return true;\n }\n return false;\n });\n if (cellGroup) {\n colGroup.updateColumnHeight(-(cellGroup as Group).attribute.height);\n colGroup.removeChild(cellGroup);\n }\n }\n}\n"]}
@@ -457,30 +457,27 @@ class Scenegraph {
457
457
  dealWidthMode() {
458
458
  const table = this.table;
459
459
  if ("adaptive" === table.widthMode) {
460
- const totalDrawWidth = table.tableNoFrameWidth - table.getFrozenColsWidth() - table.getRightFrozenColsWidth();
461
- let actualWidth = 0;
462
- for (let col = table.frozenColCount; col < table.colCount - table.rightFrozenColCount; col++) actualWidth += table.getColWidth(col);
463
- const factor = totalDrawWidth / actualWidth;
464
- for (let col = table.frozenColCount; col < table.colCount - table.rightFrozenColCount; col++) {
465
- let colWidth;
466
- colWidth = col === table.colCount - table.rightFrozenColCount - 1 ? totalDrawWidth - table.getColsWidth(table.frozenColCount, table.colCount - table.rightFrozenColCount - 2) : Math.round(table.getColWidth(col) * factor),
467
- this.setColWidth(col, colWidth);
460
+ table._clearColRangeWidthsMap();
461
+ const canvasWidth = table.tableNoFrameWidth;
462
+ let actualHeaderWidth = 0;
463
+ for (let col = 0; col < table.colCount; col++) {
464
+ const colWidth = table.getColWidth(col);
465
+ (col < table.frozenColCount || col >= table.colCount - table.rightFrozenColCount) && (actualHeaderWidth += colWidth);
468
466
  }
467
+ const startCol = table.frozenColCount, endCol = table.isPivotChart() ? table.colCount - table.rightFrozenColCount : table.colCount;
468
+ (0, compute_col_width_1.getAdaptiveWidth)(canvasWidth - actualHeaderWidth, startCol, endCol, !1, [], table, !0);
469
469
  } else if (table.autoFillWidth) {
470
+ table._clearColRangeWidthsMap();
470
471
  const canvasWidth = table.tableNoFrameWidth;
471
- let actualWidth = 0, actualHeaderWidth = 0;
472
+ let actualHeaderWidth = 0, actualWidth = 0;
472
473
  for (let col = 0; col < table.colCount; col++) {
473
474
  const colWidth = table.getColWidth(col);
474
- (col < table.frozenColCount || col >= table.colCount - table.rightFrozenColCount) && (actualHeaderWidth += colWidth),
475
+ (col < table.frozenColCount || table.isPivotChart() && col >= table.colCount - table.rightFrozenColCount) && (actualHeaderWidth += colWidth),
475
476
  actualWidth += colWidth;
476
477
  }
477
- if (actualWidth < canvasWidth && actualWidth - actualHeaderWidth > 0) {
478
- const factor = (canvasWidth - actualHeaderWidth) / (actualWidth - actualHeaderWidth);
479
- for (let col = table.frozenColCount; col < table.colCount - table.rightFrozenColCount; col++) {
480
- let colWidth;
481
- colWidth = col === table.colCount - table.rightFrozenColCount - 1 ? canvasWidth - actualHeaderWidth - table.getColsWidth(table.frozenColCount, table.colCount - table.rightFrozenColCount - 2) : Math.round(table.getColWidth(col) * factor),
482
- this.setColWidth(col, colWidth);
483
- }
478
+ if (actualWidth < canvasWidth && actualWidth > actualHeaderWidth) {
479
+ const startCol = table.frozenColCount, endCol = table.isPivotChart() ? table.colCount - table.rightFrozenColCount : table.colCount;
480
+ (0, compute_col_width_1.getAdaptiveWidth)(canvasWidth - actualHeaderWidth, startCol, endCol, !1, [], table, !0);
484
481
  }
485
482
  }
486
483
  let bodyWidth = 0;
@@ -509,21 +506,22 @@ class Scenegraph {
509
506
  const table = this.table;
510
507
  if ("adaptive" === table.heightMode) {
511
508
  table._clearRowRangeHeightsMap();
512
- const totalDrawHeight = table.tableNoFrameHeight - table.getFrozenRowsHeight() - table.getBottomFrozenRowsHeight();
509
+ const columnHeaderHeight = table.getRowsHeight(0, table.columnHeaderLevelCount - 1), bottomHeaderHeight = table.isPivotChart() ? table.getBottomFrozenRowsHeight() : 0, totalDrawHeight = table.tableNoFrameHeight - columnHeaderHeight - bottomHeaderHeight, startRow = table.columnHeaderLevelCount, endRow = table.isPivotChart() ? table.rowCount - table.bottomFrozenRowCount : table.rowCount;
513
510
  let actualHeight = 0;
514
- for (let row = table.frozenRowCount; row < table.rowCount - table.bottomFrozenRowCount; row++) actualHeight += table.getRowHeight(row);
511
+ for (let row = startRow; row < endRow; row++) actualHeight += table.getRowHeight(row);
515
512
  const factor = totalDrawHeight / actualHeight;
516
- for (let row = table.frozenRowCount; row < table.rowCount - table.bottomFrozenRowCount; row++) {
513
+ for (let row = startRow; row < endRow; row++) {
517
514
  let rowHeight;
518
- rowHeight = row === table.rowCount - table.bottomFrozenRowCount - 1 ? totalDrawHeight - table.getRowsHeight(table.frozenRowCount, table.rowCount - table.bottomFrozenRowCount - 2) : Math.round(table.getRowHeight(row) * factor),
515
+ rowHeight = row === endRow - 1 ? totalDrawHeight - table.getRowsHeight(startRow, endRow - 2) : Math.round(table.getRowHeight(row) * factor),
519
516
  this.setRowHeight(row, rowHeight);
520
517
  }
521
518
  } else if (table.autoFillHeight) {
519
+ table._clearRowRangeHeightsMap();
522
520
  const canvasHeight = table.tableNoFrameHeight;
523
521
  let actualHeight = 0, actualHeaderHeight = 0;
524
522
  for (let row = 0; row < table.rowCount; row++) {
525
523
  const rowHeight = table.getRowHeight(row);
526
- (row < table.frozenRowCount || row >= table.rowCount - table.bottomFrozenRowCount) && (actualHeaderHeight += rowHeight),
524
+ (row < table.frozenRowCount || table.isPivotChart() && row >= table.rowCount - table.bottomFrozenRowCount) && (actualHeaderHeight += rowHeight),
527
525
  actualHeight += rowHeight;
528
526
  }
529
527
  if ((null !== (_a = this._dealAutoFillHeightOriginRowsHeight) && void 0 !== _a ? _a : actualHeight) < canvasHeight && actualHeight - actualHeaderHeight > 0) {