@visactor/vtable 1.26.4 → 1.26.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/cjs/ListTable.d.ts +1 -0
  2. package/cjs/ListTable.js +24 -8
  3. package/cjs/ListTable.js.map +1 -1
  4. package/cjs/body-helper/style.js +2 -1
  5. package/cjs/components/index.js +1 -2
  6. package/cjs/components/legend/discrete-legend/discrete-legend.d.ts +1 -1
  7. package/cjs/core/BaseTable.js +18 -18
  8. package/cjs/core/BaseTable.js.map +1 -1
  9. package/cjs/data/DataSource.js +1 -2
  10. package/cjs/dataset/DataStatistics.js +2 -1
  11. package/cjs/header-helper/style.js +2 -1
  12. package/cjs/index.d.ts +1 -1
  13. package/cjs/index.js +1 -1
  14. package/cjs/index.js.map +1 -1
  15. package/cjs/layout/index.js +1 -2
  16. package/cjs/plugins/custom-cell-style.js +1 -1
  17. package/cjs/scenegraph/animation/appear.js +18 -3
  18. package/cjs/scenegraph/animation/appear.js.map +1 -1
  19. package/cjs/scenegraph/component/custom.js +3 -3
  20. package/cjs/scenegraph/component/custom.js.map +1 -1
  21. package/cjs/scenegraph/component/menu.js +4 -4
  22. package/cjs/scenegraph/component/menu.js.map +1 -1
  23. package/cjs/scenegraph/graphic/chart.d.ts +6 -1
  24. package/cjs/scenegraph/graphic/chart.js +38 -4
  25. package/cjs/scenegraph/graphic/chart.js.map +1 -1
  26. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +2 -1
  27. package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  28. package/cjs/scenegraph/graphic/group.d.ts +3 -1
  29. package/cjs/scenegraph/graphic/group.js +21 -3
  30. package/cjs/scenegraph/graphic/group.js.map +1 -1
  31. package/cjs/scenegraph/group-creater/cell-helper.js +4 -3
  32. package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
  33. package/cjs/scenegraph/group-creater/cell-type/button-cell.js +2 -2
  34. package/cjs/scenegraph/group-creater/cell-type/button-cell.js.map +1 -1
  35. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +4 -4
  36. package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  37. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js +2 -2
  38. package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  39. package/cjs/scenegraph/group-creater/cell-type/image-cell.js +2 -2
  40. package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  41. package/cjs/scenegraph/group-creater/cell-type/radio-cell.js +2 -2
  42. package/cjs/scenegraph/group-creater/cell-type/radio-cell.js.map +1 -1
  43. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js +2 -2
  44. package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  45. package/cjs/scenegraph/group-creater/cell-type/switch-cell.js +2 -2
  46. package/cjs/scenegraph/group-creater/cell-type/switch-cell.js.map +1 -1
  47. package/cjs/scenegraph/group-creater/cell-type/text-cell.js +6 -6
  48. package/cjs/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  49. package/cjs/scenegraph/group-creater/cell-type/video-cell.js +10 -7
  50. package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  51. package/cjs/scenegraph/group-creater/column-helper.js +3 -2
  52. package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
  53. package/cjs/scenegraph/runtime-contributions.d.ts +2 -0
  54. package/cjs/scenegraph/runtime-contributions.js +28 -0
  55. package/cjs/scenegraph/runtime-contributions.js.map +1 -0
  56. package/cjs/scenegraph/scenegraph.d.ts +4 -1
  57. package/cjs/scenegraph/scenegraph.js +39 -15
  58. package/cjs/scenegraph/scenegraph.js.map +1 -1
  59. package/cjs/scenegraph/utils/text-icon-layout.d.ts +4 -0
  60. package/cjs/scenegraph/utils/text-icon-layout.js +23 -6
  61. package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
  62. package/cjs/scenegraph/utils/text-measure.js.map +1 -1
  63. package/cjs/ts-types/base-table.d.ts +4 -1
  64. package/cjs/ts-types/base-table.js.map +1 -1
  65. package/cjs/vrender-app.d.ts +20 -0
  66. package/cjs/vrender-app.js +141 -0
  67. package/cjs/vrender-app.js.map +1 -0
  68. package/cjs/vrender.d.ts +17 -1
  69. package/cjs/vrender.js +36 -15
  70. package/cjs/vrender.js.map +1 -1
  71. package/dist/vtable.js +105835 -96838
  72. package/dist/vtable.min.js +1 -1
  73. package/es/ListTable.d.ts +1 -0
  74. package/es/ListTable.js +24 -7
  75. package/es/ListTable.js.map +1 -1
  76. package/es/body-helper/style.js +2 -1
  77. package/es/components/index.js +1 -2
  78. package/es/components/legend/discrete-legend/discrete-legend.d.ts +1 -1
  79. package/es/core/BaseTable.js +18 -18
  80. package/es/core/BaseTable.js.map +1 -1
  81. package/es/data/DataSource.js +1 -2
  82. package/es/dataset/DataStatistics.js +2 -1
  83. package/es/header-helper/style.js +2 -1
  84. package/es/index.d.ts +1 -1
  85. package/es/index.js +1 -1
  86. package/es/index.js.map +1 -1
  87. package/es/layout/index.js +1 -2
  88. package/es/plugins/custom-cell-style.js +1 -1
  89. package/es/scenegraph/animation/appear.js +18 -3
  90. package/es/scenegraph/animation/appear.js.map +1 -1
  91. package/es/scenegraph/component/custom.js +3 -3
  92. package/es/scenegraph/component/custom.js.map +1 -1
  93. package/es/scenegraph/component/menu.js +4 -4
  94. package/es/scenegraph/component/menu.js.map +1 -1
  95. package/es/scenegraph/graphic/chart.d.ts +6 -1
  96. package/es/scenegraph/graphic/chart.js +39 -3
  97. package/es/scenegraph/graphic/chart.js.map +1 -1
  98. package/es/scenegraph/graphic/contributions/chart-render-helper.js +2 -1
  99. package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
  100. package/es/scenegraph/graphic/group.d.ts +3 -1
  101. package/es/scenegraph/graphic/group.js +21 -3
  102. package/es/scenegraph/graphic/group.js.map +1 -1
  103. package/es/scenegraph/group-creater/cell-helper.js +4 -3
  104. package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
  105. package/es/scenegraph/group-creater/cell-type/button-cell.js +2 -2
  106. package/es/scenegraph/group-creater/cell-type/button-cell.js.map +1 -1
  107. package/es/scenegraph/group-creater/cell-type/chart-cell.js +4 -4
  108. package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
  109. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js +2 -2
  110. package/es/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
  111. package/es/scenegraph/group-creater/cell-type/image-cell.js +2 -2
  112. package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
  113. package/es/scenegraph/group-creater/cell-type/radio-cell.js +2 -2
  114. package/es/scenegraph/group-creater/cell-type/radio-cell.js.map +1 -1
  115. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js +2 -2
  116. package/es/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
  117. package/es/scenegraph/group-creater/cell-type/switch-cell.js +2 -2
  118. package/es/scenegraph/group-creater/cell-type/switch-cell.js.map +1 -1
  119. package/es/scenegraph/group-creater/cell-type/text-cell.js +5 -5
  120. package/es/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
  121. package/es/scenegraph/group-creater/cell-type/video-cell.js +10 -7
  122. package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
  123. package/es/scenegraph/group-creater/column-helper.js +3 -2
  124. package/es/scenegraph/group-creater/column-helper.js.map +1 -1
  125. package/es/scenegraph/runtime-contributions.d.ts +2 -0
  126. package/es/scenegraph/runtime-contributions.js +20 -0
  127. package/es/scenegraph/runtime-contributions.js.map +1 -0
  128. package/es/scenegraph/scenegraph.d.ts +4 -1
  129. package/es/scenegraph/scenegraph.js +41 -15
  130. package/es/scenegraph/scenegraph.js.map +1 -1
  131. package/es/scenegraph/utils/text-icon-layout.d.ts +4 -0
  132. package/es/scenegraph/utils/text-icon-layout.js +18 -2
  133. package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
  134. package/es/scenegraph/utils/text-measure.js.map +1 -1
  135. package/es/ts-types/base-table.d.ts +4 -1
  136. package/es/ts-types/base-table.js.map +1 -1
  137. package/es/vrender-app.d.ts +20 -0
  138. package/es/vrender-app.js +161 -0
  139. package/es/vrender-app.js.map +1 -0
  140. package/es/vrender.d.ts +17 -1
  141. package/es/vrender.js +27 -8
  142. package/es/vrender.js.map +1 -1
  143. package/package.json +8 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/graphic/chart.ts"],"names":[],"mappings":"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","file":"chart.js","sourcesContent":["import type { GraphicType, IGroupGraphicAttribute, Stage, Group } from './../../vrender';\nimport { genNumberType, Rect } from './../../vrender';\nimport { Bounds, merge } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { PivotChart } from '../../PivotChart';\nimport { getCellHoverColor } from '../../state/hover/is-cell-hover';\nimport {\n setBrushingChartInstance,\n clearAllChartInstanceList,\n clearChartInstanceListByColumnDirection,\n clearChartInstanceListByRowDirection,\n generateChartInstanceListByColumnDirection,\n generateChartInstanceListByRowDirection,\n generateChartInstanceListByViewRange,\n getBrushingChartInstance,\n isDisabledTooltipToAllChartInstances,\n clearAndReleaseBrushingChartInstance,\n clearBrushingChartInstance\n} from './active-cell-chart-list';\nimport type { PivotChartConstructorOptions } from '../..';\nimport { getAxisConfigInPivotChart } from '../../layout/chart-helper/get-axis-config';\nimport { cancellableThrottle } from '../../tools/util';\n\ninterface IChartGraphicAttribute extends IGroupGraphicAttribute {\n canvas: HTMLCanvasElement;\n dataId: string | Record<string, string>; //如果是spec外层的dataId,则是string,否则通过series获取到的是Record<string, string> <dataId, series-chart的指标key用于过滤数据>\n data: any;\n spec: any;\n axes: any;\n ClassType: any;\n chartInstance: any;\n cellPadding: number[];\n mode: string;\n modeParams: any;\n dpr: number;\n // viewBox: {\n // x1: number;\n // y1: number;\n // x2: number;\n // y2: number;\n // };\n tableChartOption: any;\n col?: number;\n row?: number;\n detectPickChartItem?: boolean;\n}\n\nexport const CHART_NUMBER_TYPE = genNumberType();\n\nexport class Chart extends Rect {\n type: GraphicType = 'chart' as any;\n declare attribute: IChartGraphicAttribute;\n chartInstance: any;\n activeChartInstance: any;\n activeChartInstanceLastViewBox: { x1: number; y1: number; x2: number; y2: number } = null;\n activeChartInstanceHoverOnMark: any = null;\n justShowMarkTooltip: boolean = undefined;\n justShowMarkTooltipTimer: number = Date.now();\n delayRunDimensionHoverTimer: any = undefined;\n cacheCanvas: HTMLCanvasElement | { x: number; y: number; width: number; height: number; canvas: HTMLCanvasElement }[]; // HTMLCanvasElement\n isShareChartSpec: boolean; //针对chartSpec用户配置成函数形式的话 就不需要存储chartInstance了 会太占内存,使用这个变量 当渲染出缓存图表会就删除chartInstance实例\n constructor(isShareChartSpec: boolean, params: IChartGraphicAttribute) {\n super(params);\n this.numberType = CHART_NUMBER_TYPE;\n this.isShareChartSpec = isShareChartSpec;\n // 创建chart\n if (!params.chartInstance) {\n const chartInstance = (this.chartInstance = new params.ClassType(\n params.spec,\n merge({}, this.attribute.tableChartOption, {\n renderCanvas: params.canvas,\n mode: this.attribute.mode === 'node' ? 'node' : 'desktop-browser',\n modeParams: this.attribute.modeParams,\n canvasControled: false,\n viewBox: { x1: 0, x2: 0, y1: 0, y2: 0 },\n dpr: params.dpr,\n // viewBox: params.viewBox,\n // viewBox: this.getViewBox(),\n // viewBox: {\n // x1: params.cellPadding[3],\n // x2: params.width - params.cellPadding[1],\n // y1: params.cellPadding[0],\n // y2: params.height - params.cellPadding[2]\n // },\n interactive: false,\n animation: false,\n autoFit: false\n })\n ));\n chartInstance.renderSync();\n chartInstance.getStage().enableDirtyBounds();\n params.chartInstance = this.chartInstance = chartInstance;\n } else {\n this.chartInstance = params.chartInstance;\n }\n\n // this.chart.load().then((cache) => {\n // this.cacheCanvas = cache;\n // this.deactivate();\n // });\n }\n\n // onBeforeAttributeUpdate() {\n // if (arguments[2] === y) {\n // debugger;\n // }\n // }\n /**\n * 激活该图表元素\n * @param table\n */\n activate(table: BaseTableAPI) {\n if (this.activeChartInstance) {\n return;\n }\n const { col, row } = this.parent;\n const hoverColor = getCellHoverColor(this.parent, table);\n // this.chart = new TestChart(this.attribute.spec);\n // const ctx = this.attribute.canvas.getContext('2d');\n // const { x1, y1, x2, y2 } = this.attribute.viewBox;\n const { x1, y1, x2, y2 } = this.getViewBox();\n //获取渲染区域的bound 考虑被表头遮住部分的情况\n const tableBound = getTableBounds(col, row, table);\n const clipBound = tableBound.intersect({\n x1: x1 - table.scrollLeft,\n x2: x2 - table.scrollLeft,\n y1: y1 - table.scrollTop,\n y2: y2 - table.scrollTop\n });\n // this.chartInstance?.release();\n // this.chartInstance = null;\n // 是否全局显示唯一tooltip。如果置为 true, 当某个图表触发 tooltip时,同一页面的所有其他图表的 tooltip 将自动消失。\n this.attribute.ClassType.globalConfig.uniqueTooltip = false;\n this.activeChartInstance = new this.attribute.ClassType(\n this.attribute.spec,\n merge({}, this.attribute.tableChartOption, {\n // disableDirtyBounds: true,\n renderCanvas: this.attribute.canvas,\n mode: 'desktop-browser',\n canvasControled: false,\n // viewBox: {\n // x1: x1 - table.scrollLeft,\n // x2: x2 - table.scrollLeft,\n // y1: y1 - table.scrollTop,\n // y2: y2 - table.scrollTop\n // },\n viewBox: {\n x1: 0,\n x2: x2 - x1,\n y1: 0,\n y2: y2 - y1\n },\n dpr: table.internalProps.pixelRatio,\n animation: false,\n interactive: true,\n autoFit: false, //控制当容器变化大小时vchart实例不应响应事件进行内部处理\n beforeRender: (chartStage: Stage) => {\n const stage = this.stage;\n const ctx = chartStage.window.getContext();\n const stageMatrix = stage.window.getViewBoxTransform();\n const viewBox = stage.window.getViewBox();\n ctx.inuse = true;\n // ctx.save();\n // console.log(ctx.getImageData(0, 0, 100, 100));\n ctx.clearMatrix();\n ctx.setTransform(\n stageMatrix.a,\n stageMatrix.b,\n stageMatrix.c,\n stageMatrix.d,\n stageMatrix.e,\n stageMatrix.f,\n true\n );\n ctx.translate(viewBox.x1, viewBox.y1);\n ctx.setTransformForCurrent(true); // 替代原有的chart viewBox\n ctx.beginPath();\n ctx.rect(clipBound.x1, clipBound.y1, clipBound.x2 - clipBound.x1, clipBound.y2 - clipBound.y1);\n // console.log(\n // 'beforeRender clip',\n // clipBound.x1,\n // clipBound.y1,\n // clipBound.x2 - clipBound.x1,\n // clipBound.y2 - clipBound.y1\n // );\n ctx.clip();\n ctx.clearMatrix();\n\n if (table.options.canvas && !(chartStage as any).needRender) {\n // 在使用viewbox局部渲染时,activate单独渲染chart stage,可能导致外部stage场景层级错乱\n // 此时触发整个表格的重绘,外部stage场景可以通过table的beforeRender配置触发更上一级的重绘\n chartStage.pauseRender();\n table.scenegraph.stage.dirtyBounds.union(this.globalAABBBounds);\n table.scenegraph.updateNextFrame();\n }\n },\n afterRender(stage: any) {\n const ctx = stage.window.getContext();\n ctx.inuse = false;\n\n stage.needRender = false;\n chartStage.resumeRender();\n },\n renderHooks: {\n afterClearRect(drawParams: any) {\n const { context, layer, viewBox } = drawParams;\n if (layer.main && drawParams.clear && hoverColor) {\n context.beginPath();\n context.fillStyle = hoverColor;\n context.rect(viewBox.x1, viewBox.y1, viewBox.x2 - viewBox.x1, viewBox.y2 - viewBox.y1);\n context.fill();\n }\n }\n },\n componentShowContent:\n (table.options as PivotChartConstructorOptions).chartDimensionLinkage?.showTooltip &&\n this.attribute.spec.type !== 'scatter'\n ? {\n tooltip: {\n dimension: false,\n mark: true\n },\n crosshair: false\n }\n : undefined\n })\n );\n const chartStage = this.activeChartInstance.getStage();\n // chartStage.needRender = true;\n // chartStage.background = 'red';\n const matrix = this.globalTransMatrix.clone();\n const stageMatrix = this.stage.window.getViewBoxTransform();\n matrix.multiply(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f);\n chartStage.window.setViewBoxTransform &&\n chartStage.window.setViewBoxTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n\n // this.activeChartInstance.updateData('data', this.attribute.data);\n this.activeChartInstance.renderSync();\n\n (table.internalProps.layoutMap as any)?.updateDataStateToActiveChartInstance?.(this.activeChartInstance);\n this.activeChartInstance.on('click', (params: any) => {\n if (Chart.temp) {\n if (this.attribute.spec.select?.enable === false) {\n if (\n this.attribute.spec.interactions?.find(\n (interaction: any) => interaction.type === 'element-select' && interaction.isMultiple\n )\n ) {\n table.scenegraph.updateChartState(params?.datum, 'multiple-select');\n } else {\n table.scenegraph.updateChartState(null, undefined);\n }\n } else if (this.attribute.spec.select?.enable === true && this.attribute.spec.select?.mode === 'multiple') {\n table.scenegraph.updateChartState(params?.datum, 'multiple-select');\n } else {\n // const brushingChartInstance = getBrushingChartInstance();\n // if (brushingChartInstance && brushingChartInstance !== this.activeChartInstance) {\n table.scenegraph.updateChartState(null, 'brush');\n // }\n table.scenegraph.updateChartState(params?.datum, 'click');\n }\n clearBrushingChartInstance(table.scenegraph);\n }\n });\n let brushChangeThrottle: any;\n if ((table.options as PivotChartConstructorOptions).chartDimensionLinkage?.listenBrushChange) {\n // 创建可取消的节流函数,用于 brushChange 事件\n brushChangeThrottle = cancellableThrottle(\n table.scenegraph.updateChartState.bind(table.scenegraph),\n (table.options as PivotChartConstructorOptions).chartDimensionLinkage?.brushChangeDelay ?? 100\n );\n\n this.activeChartInstance.on('brushChange', (params: any) => {\n brushChangeThrottle.throttled(params?.value?.inBrushData, 'brush');\n });\n }\n this.activeChartInstance.on('brushStart', (params: any) => {\n const brushingChartInstance = getBrushingChartInstance(table.scenegraph);\n if (brushingChartInstance !== this.activeChartInstance) {\n if (brushingChartInstance) {\n // brush框选完一个图表,马上去框选另一个单元格的图表,释放掉前一个图表的实例,如果有联动情况下这个释放可能会影响,但是在dimensionhover事件中会马上新建个实例的\n clearAndReleaseBrushingChartInstance(table.scenegraph);\n // brushingChartInstance.getChart()?.getComponentsByKey('brush')[0].clearBrushStateAndMask();\n }\n setBrushingChartInstance(this.activeChartInstance, col, row, table.scenegraph);\n }\n });\n this.activeChartInstance.on('brushEnd', (params: any) => {\n // 取消 brushChange 中可能还在等待的节流执行\n brushChangeThrottle?.cancel();\n\n // 立即执行 updateChartState,确保 brushEnd 的调用能及时执行\n table.scenegraph.updateChartState(params?.value?.inBrushData, 'brush');\n Chart.temp = 0;\n setTimeout(() => {\n Chart.temp = 1;\n }, 0);\n });\n if ((table.options as PivotChartConstructorOptions).chartDimensionLinkage?.showTooltip) {\n if (this.attribute.spec.type === 'pie') {\n this.activeChartInstance.on('pointerover', { markName: 'pie' }, (params: any) => {\n const categoryField = this.attribute.spec.categoryField;\n const datum = { [categoryField]: params?.datum?.[categoryField] };\n\n generateChartInstanceListByViewRange(datum, table, false);\n });\n this.activeChartInstance.on('pointerout', { markName: 'pie' }, (params: any) => {\n const categoryField = this.attribute.spec.categoryField;\n const datum = { [categoryField]: params?.datum?.[categoryField] };\n generateChartInstanceListByViewRange(datum, table, true);\n });\n }\n this.activeChartInstance.on('dimensionHover', (params: any) => {\n if (isDisabledTooltipToAllChartInstances(table.scenegraph)) {\n return;\n }\n //和下面调用disableTooltip做对应,一个关闭,一个打开。如果这里不加这句话可能导致这个实例没有tooltip的情况(如这个实例没有机会被加入到chartInstanceListColumnByColumnDirection或chartInstanceListRowByRowDirection中)\n this.activeChartInstance.disableTooltip(false);\n\n const dimensionInfo = params?.dimensionInfo[0];\n const canvasXY = params?.event?.canvas;\n const viewport = params?.event?.viewport;\n if (viewport) {\n const xValue = dimensionInfo.data[0].series.positionToDataX(viewport.x);\n const yValue = dimensionInfo.data[0].series.positionToDataY(viewport.y);\n if (this.attribute.spec.type === 'scatter') {\n // console.log('receive scatter dimensionHover', params.action);\n generateChartInstanceListByColumnDirection(col, xValue, undefined, canvasXY, table, false, true);\n generateChartInstanceListByRowDirection(row, undefined, yValue, canvasXY, table, false, true);\n //#region 显示横纵向crosshair的labelHoverOnAxis 代码块\n const axisConfigLeft = getAxisConfigInPivotChart(\n table.rowHeaderLevelCount - 1,\n row,\n table.internalProps.layoutMap as any\n );\n // 显示左侧纵向crosshair的labelHoverOnAxis\n if (axisConfigLeft.labelHoverOnAxis) {\n table.scenegraph\n .getCell(table.rowHeaderLevelCount - 1, row)\n .firstChild.showLabelHoverOnAxis(canvasXY.y - table.getCellRelativeRect(col, row).top, yValue);\n }\n const axisConfigBottom = getAxisConfigInPivotChart(\n col,\n table.rowCount - table.bottomFrozenRowCount,\n table.internalProps.layoutMap as any\n );\n // 显示底部横向crosshair的labelHoverOnAxis\n if (axisConfigBottom.labelHoverOnAxis) {\n table.scenegraph\n .getCell(col, table.rowCount - table.bottomFrozenRowCount)\n .firstChild.showLabelHoverOnAxis(canvasXY.x - table.getCellRelativeRect(col, row).left, xValue);\n }\n //#endregion 显示横纵向crosshair的labelHoverOnAxis 代码块\n } else {\n //hover到mark和dimension的tooltip显示逻辑有区别,hover到mark的时候只显示背景及本身的tooltip,不显示其他联动区域图表的tooltip,而hover到dimension的时候需要显示其他联动区域图表的tooltip\n //#region 为了解决鼠标快速移动于mark和dimension之间造成tooltip闪动问题,纯粹的防抖效果不好的问题,需要增加一个延迟显示tooltip的机制(写了一堆看不懂的逻辑)\n let justShowMarkTooltip = true;\n const preMark = this.activeChartInstanceHoverOnMark;\n const prev_justShowMarkTooltip = this.justShowMarkTooltip;\n // console.log('----', params, params.datum, params.dimensionInfo[0].data[0]);\n if (params.mark && params.datum && !Array.isArray(params.datum)) {\n this.activeChartInstanceHoverOnMark = params.mark;\n justShowMarkTooltip = true;\n } else {\n this.activeChartInstanceHoverOnMark = null;\n justShowMarkTooltip = false;\n }\n this.justShowMarkTooltip = justShowMarkTooltip;\n let delayRunDimensionHover: boolean = false;\n if (prev_justShowMarkTooltip !== false && justShowMarkTooltip === false) {\n this.justShowMarkTooltipTimer = Date.now();\n delayRunDimensionHover = true;\n } else if (prev_justShowMarkTooltip === false && justShowMarkTooltip === false) {\n if (Date.now() - this.justShowMarkTooltipTimer < 100) {\n // 鼠标hover到空白区域时,不要立马显示tooltip,而是等100ms后显示 以防止tooltip在mark和dimension的tooltip之间来回闪烁\n delayRunDimensionHover = true;\n } else {\n delayRunDimensionHover = false;\n }\n } else if (prev_justShowMarkTooltip === false && justShowMarkTooltip === true) {\n delayRunDimensionHover = false;\n this.clearDelayRunDimensionHoverTimer();\n } else if (prev_justShowMarkTooltip === true && justShowMarkTooltip === true) {\n delayRunDimensionHover = false;\n this.clearDelayRunDimensionHoverTimer(); //及时清除之前的定时器\n }\n //#endregion\n\n if (\n params.action === 'enter' ||\n params.action === 'move' ||\n preMark !== this.activeChartInstanceHoverOnMark\n ) {\n // console.log('-----preMark', params.action, hideTooltip, preMark, this.activeChartInstanceHoverOnMark);\n const dimensionValue = dimensionInfo.value;\n\n const indicatorsAsCol = (table.options as PivotChartConstructorOptions).indicatorsAsCol;\n if (!delayRunDimensionHover) {\n if (indicatorsAsCol) {\n generateChartInstanceListByRowDirection(\n row,\n dimensionValue,\n null,\n canvasXY,\n table,\n justShowMarkTooltip,\n false\n );\n } else {\n generateChartInstanceListByColumnDirection(\n col,\n dimensionValue,\n null,\n canvasXY,\n table,\n justShowMarkTooltip,\n false\n );\n }\n } else {\n this.clearDelayRunDimensionHoverTimer();\n //还是需要有个延迟出现的时间,否则从mark切换到dimension时,tooltip不会出现了( preMark !== this.activeChartInstanceHoverOnMark总是为false)\n this.delayRunDimensionHoverTimer = setTimeout(() => {\n if (isDisabledTooltipToAllChartInstances(table.scenegraph)) {\n // 如果当前是禁止显示tooltip的状态,这里的逻辑不会执行。否则这个延时会导致显示tooltip\n return;\n }\n if (indicatorsAsCol) {\n generateChartInstanceListByRowDirection(\n row,\n dimensionValue,\n null,\n canvasXY,\n table,\n justShowMarkTooltip,\n false\n );\n } else {\n generateChartInstanceListByColumnDirection(\n col,\n dimensionValue,\n null,\n canvasXY,\n table,\n justShowMarkTooltip,\n false\n );\n }\n }, 100);\n }\n //#region 显示横纵向crosshair的labelHoverOnAxis 代码块\n if (indicatorsAsCol) {\n const series = dimensionInfo.data[0].series;\n const width =\n this.attribute.spec.type === 'histogram' || series.type === 'line' || series.type === 'area'\n ? 0\n : series.getYAxisHelper().getBandwidth(0);\n let y = series.valueToPositionY(dimensionValue);\n\n const axisConfig = getAxisConfigInPivotChart(\n table.rowHeaderLevelCount - 1,\n row,\n table.internalProps.layoutMap as any\n );\n let hoverOnLabelValue = yValue;\n if (this.attribute.spec.type === 'histogram') {\n const { series, datum } = dimensionInfo.data[0];\n if (datum.length > 0) {\n const rangeStartValue = datum[0][series.fieldY[0]];\n const rangeEndValue = datum[0][series.fieldY2];\n hoverOnLabelValue = rangeStartValue + ' ~ ' + rangeEndValue;\n y = (series.valueToPositionY(rangeStartValue) + series.valueToPositionY(rangeEndValue)) / 2;\n }\n }\n // 显示左侧纵向crosshair的labelHoverOnAxis\n if (axisConfig.labelHoverOnAxis) {\n table.scenegraph\n .getCell(table.rowHeaderLevelCount - 1, row)\n .firstChild.showLabelHoverOnAxis(\n y + (series.type === 'line' || series.type === 'area' ? 0 : width / 2),\n hoverOnLabelValue\n );\n }\n } else {\n const series = dimensionInfo.data[0].series;\n const width =\n this.attribute.spec.type === 'histogram' || series.type === 'line' || series.type === 'area'\n ? 0\n : series.getXAxisHelper().getBandwidth(0);\n let x = series.valueToPositionX(dimensionValue);\n const axisConfig = getAxisConfigInPivotChart(\n col,\n table.rowCount - table.bottomFrozenRowCount,\n table.internalProps.layoutMap as any\n );\n let hoverOnLabelValue = dimensionValue;\n if (this.attribute.spec.type === 'histogram') {\n const { series, datum } = dimensionInfo.data[0];\n if (datum.length > 0) {\n const rangeStartValue = datum[0][series.fieldX[0]];\n const rangeEndValue = datum[0][series.fieldX2];\n hoverOnLabelValue = rangeStartValue + ' ~ ' + rangeEndValue;\n x = (series.valueToPositionX(rangeStartValue) + series.valueToPositionX(rangeEndValue)) / 2;\n }\n }\n // 显示底部横向crosshair的labelHoverOnAxis\n if (axisConfig.labelHoverOnAxis) {\n table.scenegraph\n .getCell(col, table.rowCount - table.bottomFrozenRowCount)\n .firstChild.showLabelHoverOnAxis(x + width / 2, hoverOnLabelValue);\n }\n }\n //#endregion 显示横纵向crosshair的labelHoverOnAxis 代码块\n }\n }\n }\n });\n }\n (table as PivotChart)._bindChartEvent?.(this.activeChartInstance);\n\n if (isDisabledTooltipToAllChartInstances(table.scenegraph)) {\n // 如果所有图表实例都禁用了dimensionHover,新建图表实例时,禁用当前图表实例的tooltip。避免在brush过程中显示tooltip\n this.activeChartInstance.disableTooltip(true);\n }\n }\n static temp: number = 1;\n\n clearDelayRunDimensionHoverTimer() {\n clearTimeout(this.delayRunDimensionHoverTimer);\n this.delayRunDimensionHoverTimer = undefined;\n }\n /**\n * 图表失去焦点\n * @param table\n */\n deactivate(\n table: BaseTableAPI,\n {\n forceRelease = false,\n releaseChartInstance = true,\n releaseColumnChartInstance = true,\n releaseRowChartInstance = true,\n releaseAllChartInstance = false\n }: {\n forceRelease?: boolean;\n releaseChartInstance?: boolean;\n releaseColumnChartInstance?: boolean;\n releaseRowChartInstance?: boolean;\n releaseAllChartInstance?: boolean;\n } = {}\n ) {\n // console.log('----deactivate chart instance 1', this.activeChartInstance?.id, this.parent.col, this.parent.row);\n this.activeChartInstanceHoverOnMark = null;\n this.justShowMarkTooltip = undefined;\n this.justShowMarkTooltipTimer = Date.now();\n this.clearDelayRunDimensionHoverTimer();\n if (releaseChartInstance) {\n // move active chart view box out of browser view\n // to avoid async render when chart is releasd\n\n if (\n this.activeChartInstance &&\n (forceRelease ||\n !getBrushingChartInstance(table.scenegraph) ||\n getBrushingChartInstance(table.scenegraph) !== this.activeChartInstance)\n ) {\n this.activeChartInstance?.updateViewBox(\n {\n x1: -1000,\n x2: -800,\n y1: -1000,\n y2: -800\n },\n false,\n false\n );\n // console.log('----release chart instance 1', this.activeChartInstance.id, this.parent.col, this.parent.row);\n this.activeChartInstance?.release();\n\n this.activeChartInstance = null;\n }\n\n const { col, row } = this.parent;\n // 隐藏左侧纵向crosshair的labelHoverOnAxis\n table.internalProps.layoutMap.isAxisCell(table.rowHeaderLevelCount - 1, row) &&\n table.scenegraph.getCell(table.rowHeaderLevelCount - 1, row).firstChild?.hideLabelHoverOnAxis?.();\n // 隐藏底部横向crosshair的labelHoverOnAxis\n table.internalProps.layoutMap.isAxisCell(col, table.rowCount - table.bottomFrozenRowCount) &&\n table.scenegraph.getCell(col, table.rowCount - table.bottomFrozenRowCount).firstChild?.hideLabelHoverOnAxis?.();\n } else {\n const { col, row } = this.parent;\n if (releaseColumnChartInstance) {\n // 隐藏底部横向crosshair的labelHoverOnAxis\n table.internalProps.layoutMap.isAxisCell(col, table.rowCount - table.bottomFrozenRowCount) &&\n table.scenegraph\n .getCell(col, table.rowCount - table.bottomFrozenRowCount)\n .firstChild?.hideLabelHoverOnAxis?.();\n }\n if (releaseRowChartInstance) {\n // 隐藏左侧纵向crosshair的labelHoverOnAxis\n table.internalProps.layoutMap.isAxisCell(table.rowHeaderLevelCount - 1, row) &&\n table.scenegraph.getCell(table.rowHeaderLevelCount - 1, row).firstChild?.hideLabelHoverOnAxis?.();\n }\n }\n if (releaseAllChartInstance) {\n clearAllChartInstanceList(table, forceRelease);\n } else {\n if (releaseColumnChartInstance) {\n clearChartInstanceListByColumnDirection(\n this.parent.col,\n this.attribute.spec.type === 'scatter' ? this.parent.row : undefined,\n table,\n forceRelease\n );\n }\n if (releaseRowChartInstance) {\n clearChartInstanceListByRowDirection(\n this.parent.row,\n this.attribute.spec.type === 'scatter' ? this.parent.col : undefined,\n table,\n forceRelease\n );\n }\n }\n }\n /** 更新图表对应数据 */\n updateData(data: any) {\n this.attribute.data = data;\n }\n\n getViewBox(): {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n } {\n const cellGroup = this.parent as Group;\n const padding = this.attribute.cellPadding;\n const table = (this.stage as any).table as BaseTableAPI;\n\n const { x1, y1, x2, y2 } = cellGroup.globalAABBBounds;\n\n const viewBox = {\n x1: Math.ceil(x1 + padding[3] + table.scrollLeft + (table.options.viewBox?.x1 ?? 0)),\n x2: Math.ceil(x1 + cellGroup.attribute.width - padding[1] + table.scrollLeft + (table.options.viewBox?.x1 ?? 0)),\n y1: Math.ceil(y1 + padding[0] + table.scrollTop + (table.options.viewBox?.y1 ?? 0)),\n y2: Math.ceil(y1 + cellGroup.attribute.height - padding[2] + table.scrollTop + (table.options.viewBox?.y1 ?? 0))\n };\n\n if (this.activeChartInstance) {\n this.activeChartInstanceLastViewBox = viewBox;\n } else {\n this.activeChartInstanceLastViewBox = null;\n }\n return viewBox;\n }\n}\n\nfunction getTableBounds(col: number, row: number, table: BaseTableAPI) {\n const { layoutMap } = table.internalProps;\n const bodyBound = new Bounds();\n const tableBound = table.scenegraph.tableGroup.globalAABBBounds;\n bodyBound.x1 = tableBound.x1;\n bodyBound.x2 = tableBound.x2;\n bodyBound.y1 = tableBound.y1;\n bodyBound.y2 = tableBound.y2;\n if (\n layoutMap.isLeftBottomCorner(col, row) ||\n layoutMap.isRightTopCorner(col, row) ||\n layoutMap.isLeftTopCorner(col, row) ||\n layoutMap.isRightBottomCorner(col, row)\n ) {\n // frozen cornor\n } else if (layoutMap.isFrozenColumn(col, row)) {\n // left frozen\n bodyBound.y1 = tableBound.y1 + table.getFrozenRowsHeight();\n bodyBound.y2 = tableBound.y2 - table.getBottomFrozenRowsHeight();\n } else if (layoutMap.isFrozenRow(col, row)) {\n // top frozen\n bodyBound.x1 = tableBound.x1 + table.getFrozenColsWidth();\n bodyBound.x2 = tableBound.x2 - table.getRightFrozenColsWidth();\n } else if (layoutMap.isRightFrozenColumn(col, row)) {\n // right frozen\n bodyBound.y1 = tableBound.y1 + table.getFrozenRowsHeight();\n bodyBound.y2 = tableBound.y2 - table.getBottomFrozenRowsHeight();\n } else if (layoutMap.isBottomFrozenRow(col, row)) {\n // bottom frozen\n bodyBound.x1 = tableBound.x1 + table.getFrozenColsWidth();\n bodyBound.x2 = tableBound.x2 - table.getRightFrozenColsWidth();\n } else if (!layoutMap.isFrozenColumn(col, row) && !layoutMap.isRightFrozenColumn(col, row)) {\n // no frozen body\n bodyBound.x1 = tableBound.x1 + table.getFrozenColsWidth();\n bodyBound.x2 = tableBound.x2 - table.getRightFrozenColsWidth();\n bodyBound.y1 = tableBound.y1 + table.getFrozenRowsHeight();\n bodyBound.y2 = tableBound.y2 - table.getBottomFrozenRowsHeight();\n }\n\n bodyBound.x1 = bodyBound.x1 + (table.options.viewBox?.x1 ?? 0);\n bodyBound.x2 = bodyBound.x2 + (table.options.viewBox?.x1 ?? 0);\n bodyBound.y1 = bodyBound.y1 + (table.options.viewBox?.y1 ?? 0);\n bodyBound.y2 = bodyBound.y2 + (table.options.viewBox?.y1 ?? 0);\n\n return bodyBound;\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/graphic/chart.ts"],"names":[],"mappings":"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","file":"chart.js","sourcesContent":["import type { GraphicType, IGroupGraphicAttribute, ISetAttributeContext, Stage, Group } from './../../vrender';\nimport { genNumberType, Rect } from './../../vrender';\nimport { Bounds, merge } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { PivotChart } from '../../PivotChart';\nimport { getCellHoverColor } from '../../state/hover/is-cell-hover';\nimport {\n setBrushingChartInstance,\n clearAllChartInstanceList,\n clearChartInstanceListByColumnDirection,\n clearChartInstanceListByRowDirection,\n generateChartInstanceListByColumnDirection,\n generateChartInstanceListByRowDirection,\n generateChartInstanceListByViewRange,\n getBrushingChartInstance,\n isDisabledTooltipToAllChartInstances,\n clearAndReleaseBrushingChartInstance,\n clearBrushingChartInstance\n} from './active-cell-chart-list';\nimport type { PivotChartConstructorOptions } from '../..';\nimport { getAxisConfigInPivotChart } from '../../layout/chart-helper/get-axis-config';\nimport { cancellableThrottle } from '../../tools/util';\n\ninterface IChartGraphicAttribute extends IGroupGraphicAttribute {\n canvas: HTMLCanvasElement;\n dataId: string | Record<string, string>; //如果是spec外层的dataId,则是string,否则通过series获取到的是Record<string, string> <dataId, series-chart的指标key用于过滤数据>\n data: any;\n spec: any;\n axes: any;\n ClassType: any;\n chartInstance: any;\n cellPadding: number[];\n mode: string;\n modeParams: any;\n dpr: number;\n // viewBox: {\n // x1: number;\n // y1: number;\n // x2: number;\n // y2: number;\n // };\n tableChartOption: any;\n col?: number;\n row?: number;\n detectPickChartItem?: boolean;\n}\n\nconst CHART_RUNTIME_ATTRIBUTE_KEYS: (keyof IChartGraphicAttribute)[] = [\n 'canvas',\n 'modeParams',\n 'spec',\n 'ClassType',\n 'chartInstance',\n 'dataId',\n 'data',\n 'cellPadding',\n 'axes',\n 'tableChartOption',\n 'detectPickChartItem'\n];\n\nexport const CHART_NUMBER_TYPE = genNumberType();\n\nexport class Chart extends Rect {\n type: GraphicType = 'chart' as any;\n declare attribute: IChartGraphicAttribute;\n chartInstance: any;\n activeChartInstance: any;\n activeChartInstanceLastViewBox: { x1: number; y1: number; x2: number; y2: number } = null;\n activeChartInstanceHoverOnMark: any = null;\n justShowMarkTooltip: boolean = undefined;\n justShowMarkTooltipTimer: number = Date.now();\n delayRunDimensionHoverTimer: any = undefined;\n cacheCanvas: HTMLCanvasElement | { x: number; y: number; width: number; height: number; canvas: HTMLCanvasElement }[]; // HTMLCanvasElement\n isShareChartSpec: boolean; //针对chartSpec用户配置成函数形式的话 就不需要存储chartInstance了 会太占内存,使用这个变量 当渲染出缓存图表会就删除chartInstance实例\n constructor(isShareChartSpec: boolean, params: IChartGraphicAttribute) {\n super(params);\n this.syncRuntimeAttributes(params);\n this.numberType = CHART_NUMBER_TYPE;\n this.isShareChartSpec = isShareChartSpec;\n // 创建chart\n if (!params.chartInstance) {\n const chartInstance = (this.chartInstance = new params.ClassType(\n params.spec,\n merge({}, this.attribute.tableChartOption, {\n renderCanvas: params.canvas,\n mode: this.attribute.mode === 'node' ? 'node' : 'desktop-browser',\n modeParams: this.attribute.modeParams,\n canvasControled: false,\n viewBox: { x1: 0, x2: 0, y1: 0, y2: 0 },\n dpr: params.dpr,\n // viewBox: params.viewBox,\n // viewBox: this.getViewBox(),\n // viewBox: {\n // x1: params.cellPadding[3],\n // x2: params.width - params.cellPadding[1],\n // y1: params.cellPadding[0],\n // y2: params.height - params.cellPadding[2]\n // },\n interactive: false,\n animation: false,\n autoFit: false\n })\n ));\n chartInstance.renderSync();\n chartInstance.getStage().enableDirtyBounds();\n params.chartInstance = this.chartInstance = chartInstance;\n this.syncRuntimeAttributes({ chartInstance } as Partial<IChartGraphicAttribute>);\n } else {\n this.chartInstance = params.chartInstance;\n this.syncRuntimeAttributes({ chartInstance: params.chartInstance } as Partial<IChartGraphicAttribute>);\n }\n\n // this.chart.load().then((cache) => {\n // this.cacheCanvas = cache;\n // this.deactivate();\n // });\n }\n\n private syncRuntimeAttributes(source: Partial<IChartGraphicAttribute>) {\n const attribute = this.attribute as Record<string, any>;\n const baseAttributes = this.baseAttributes as Record<string, any>;\n\n CHART_RUNTIME_ATTRIBUTE_KEYS.forEach(key => {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n attribute[key] = source[key];\n baseAttributes[key] = source[key];\n }\n });\n }\n\n private restoreRuntimeAttributeRefs() {\n const attribute = this.attribute as Record<string, any>;\n const baseAttributes = this.baseAttributes as Record<string, any>;\n\n CHART_RUNTIME_ATTRIBUTE_KEYS.forEach(key => {\n if (Object.prototype.hasOwnProperty.call(baseAttributes, key)) {\n attribute[key] = baseAttributes[key];\n }\n });\n }\n\n setAttributes(\n params: Partial<IChartGraphicAttribute>,\n forceUpdateTag?: boolean,\n context?: ISetAttributeContext\n ): void {\n super.setAttributes(params, forceUpdateTag, context);\n this.restoreRuntimeAttributeRefs();\n }\n\n setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void {\n super.setAttribute(key, value, forceUpdateTag, context);\n this.restoreRuntimeAttributeRefs();\n }\n\n // Chart attributes carry DOM/VChart runtime references; VRender state snapshots must not deep-clone them.\n protected buildStaticAttributeSnapshot(): Partial<IChartGraphicAttribute> {\n const snapshot = { ...((this.baseAttributes as Record<string, any> | undefined) ?? {}) };\n const resolvedPatch = this.resolvedStatePatch as Record<string, any> | undefined;\n\n resolvedPatch &&\n Object.keys(resolvedPatch).forEach(key => {\n snapshot[key] = resolvedPatch[key];\n });\n\n CHART_RUNTIME_ATTRIBUTE_KEYS.forEach(key => {\n if (Object.prototype.hasOwnProperty.call(this.attribute, key)) {\n snapshot[key] = (this.attribute as Record<string, any>)[key];\n }\n });\n\n return snapshot as Partial<IChartGraphicAttribute>;\n }\n\n // onBeforeAttributeUpdate() {\n // if (arguments[2] === y) {\n // debugger;\n // }\n // }\n /**\n * 激活该图表元素\n * @param table\n */\n activate(table: BaseTableAPI) {\n if (this.activeChartInstance) {\n return;\n }\n const { col, row } = this.parent;\n const hoverColor = getCellHoverColor(this.parent, table);\n // this.chart = new TestChart(this.attribute.spec);\n // const ctx = this.attribute.canvas.getContext('2d');\n // const { x1, y1, x2, y2 } = this.attribute.viewBox;\n const { x1, y1, x2, y2 } = this.getViewBox();\n //获取渲染区域的bound 考虑被表头遮住部分的情况\n const tableBound = getTableBounds(col, row, table);\n const clipBound = tableBound.intersect({\n x1: x1 - table.scrollLeft,\n x2: x2 - table.scrollLeft,\n y1: y1 - table.scrollTop,\n y2: y2 - table.scrollTop\n });\n // this.chartInstance?.release();\n // this.chartInstance = null;\n // 是否全局显示唯一tooltip。如果置为 true, 当某个图表触发 tooltip时,同一页面的所有其他图表的 tooltip 将自动消失。\n this.attribute.ClassType.globalConfig.uniqueTooltip = false;\n this.activeChartInstance = new this.attribute.ClassType(\n this.attribute.spec,\n merge({}, this.attribute.tableChartOption, {\n // disableDirtyBounds: true,\n renderCanvas: this.attribute.canvas,\n mode: 'desktop-browser',\n canvasControled: false,\n // viewBox: {\n // x1: x1 - table.scrollLeft,\n // x2: x2 - table.scrollLeft,\n // y1: y1 - table.scrollTop,\n // y2: y2 - table.scrollTop\n // },\n viewBox: {\n x1: 0,\n x2: x2 - x1,\n y1: 0,\n y2: y2 - y1\n },\n dpr: table.internalProps.pixelRatio,\n animation: false,\n interactive: true,\n autoFit: false, //控制当容器变化大小时vchart实例不应响应事件进行内部处理\n beforeRender: (chartStage: Stage) => {\n const stage = this.stage;\n const ctx = chartStage.window.getContext();\n const stageMatrix = stage.window.getViewBoxTransform();\n const viewBox = stage.window.getViewBox();\n ctx.inuse = true;\n // ctx.save();\n // console.log(ctx.getImageData(0, 0, 100, 100));\n ctx.clearMatrix();\n ctx.setTransform(\n stageMatrix.a,\n stageMatrix.b,\n stageMatrix.c,\n stageMatrix.d,\n stageMatrix.e,\n stageMatrix.f,\n true\n );\n ctx.translate(viewBox.x1, viewBox.y1);\n ctx.setTransformForCurrent(true); // 替代原有的chart viewBox\n ctx.beginPath();\n ctx.rect(clipBound.x1, clipBound.y1, clipBound.x2 - clipBound.x1, clipBound.y2 - clipBound.y1);\n // console.log(\n // 'beforeRender clip',\n // clipBound.x1,\n // clipBound.y1,\n // clipBound.x2 - clipBound.x1,\n // clipBound.y2 - clipBound.y1\n // );\n ctx.clip();\n ctx.clearMatrix();\n\n if (table.options.canvas && !(chartStage as any).needRender) {\n // 在使用viewbox局部渲染时,activate单独渲染chart stage,可能导致外部stage场景层级错乱\n // 此时触发整个表格的重绘,外部stage场景可以通过table的beforeRender配置触发更上一级的重绘\n chartStage.pauseRender();\n table.scenegraph.stage.dirtyBounds.union(this.globalAABBBounds);\n table.scenegraph.updateNextFrame();\n }\n },\n afterRender(stage: any) {\n const ctx = stage.window.getContext();\n ctx.inuse = false;\n\n stage.needRender = false;\n chartStage.resumeRender();\n },\n renderHooks: {\n afterClearRect(drawParams: any) {\n const { context, layer, viewBox } = drawParams;\n if (layer.main && drawParams.clear && hoverColor) {\n context.beginPath();\n context.fillStyle = hoverColor;\n context.rect(viewBox.x1, viewBox.y1, viewBox.x2 - viewBox.x1, viewBox.y2 - viewBox.y1);\n context.fill();\n }\n }\n },\n componentShowContent:\n (table.options as PivotChartConstructorOptions).chartDimensionLinkage?.showTooltip &&\n this.attribute.spec.type !== 'scatter'\n ? {\n tooltip: {\n dimension: false,\n mark: true\n },\n crosshair: false\n }\n : undefined\n })\n );\n const chartStage = this.activeChartInstance.getStage();\n // chartStage.needRender = true;\n // chartStage.background = 'red';\n const matrix = this.globalTransMatrix.clone();\n const stageMatrix = this.stage.window.getViewBoxTransform();\n matrix.multiply(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f);\n chartStage.window.setViewBoxTransform &&\n chartStage.window.setViewBoxTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n\n // this.activeChartInstance.updateData('data', this.attribute.data);\n this.activeChartInstance.renderSync();\n\n (table.internalProps.layoutMap as any)?.updateDataStateToActiveChartInstance?.(this.activeChartInstance);\n this.activeChartInstance.on('click', (params: any) => {\n if (Chart.temp) {\n if (this.attribute.spec.select?.enable === false) {\n if (\n this.attribute.spec.interactions?.find(\n (interaction: any) => interaction.type === 'element-select' && interaction.isMultiple\n )\n ) {\n table.scenegraph.updateChartState(params?.datum, 'multiple-select');\n } else {\n table.scenegraph.updateChartState(null, undefined);\n }\n } else if (this.attribute.spec.select?.enable === true && this.attribute.spec.select?.mode === 'multiple') {\n table.scenegraph.updateChartState(params?.datum, 'multiple-select');\n } else {\n // const brushingChartInstance = getBrushingChartInstance();\n // if (brushingChartInstance && brushingChartInstance !== this.activeChartInstance) {\n table.scenegraph.updateChartState(null, 'brush');\n // }\n table.scenegraph.updateChartState(params?.datum, 'click');\n }\n clearBrushingChartInstance(table.scenegraph);\n }\n });\n let brushChangeThrottle: any;\n if ((table.options as PivotChartConstructorOptions).chartDimensionLinkage?.listenBrushChange) {\n // 创建可取消的节流函数,用于 brushChange 事件\n brushChangeThrottle = cancellableThrottle(\n table.scenegraph.updateChartState.bind(table.scenegraph),\n (table.options as PivotChartConstructorOptions).chartDimensionLinkage?.brushChangeDelay ?? 100\n );\n\n this.activeChartInstance.on('brushChange', (params: any) => {\n brushChangeThrottle.throttled(params?.value?.inBrushData, 'brush');\n });\n }\n this.activeChartInstance.on('brushStart', (params: any) => {\n const brushingChartInstance = getBrushingChartInstance(table.scenegraph);\n if (brushingChartInstance !== this.activeChartInstance) {\n if (brushingChartInstance) {\n // brush框选完一个图表,马上去框选另一个单元格的图表,释放掉前一个图表的实例,如果有联动情况下这个释放可能会影响,但是在dimensionhover事件中会马上新建个实例的\n clearAndReleaseBrushingChartInstance(table.scenegraph);\n // brushingChartInstance.getChart()?.getComponentsByKey('brush')[0].clearBrushStateAndMask();\n }\n setBrushingChartInstance(this.activeChartInstance, col, row, table.scenegraph);\n }\n });\n this.activeChartInstance.on('brushEnd', (params: any) => {\n // 取消 brushChange 中可能还在等待的节流执行\n brushChangeThrottle?.cancel();\n\n // 立即执行 updateChartState,确保 brushEnd 的调用能及时执行\n table.scenegraph.updateChartState(params?.value?.inBrushData, 'brush');\n Chart.temp = 0;\n setTimeout(() => {\n Chart.temp = 1;\n }, 0);\n });\n if ((table.options as PivotChartConstructorOptions).chartDimensionLinkage?.showTooltip) {\n if (this.attribute.spec.type === 'pie') {\n this.activeChartInstance.on('pointerover', { markName: 'pie' }, (params: any) => {\n const categoryField = this.attribute.spec.categoryField;\n const datum = { [categoryField]: params?.datum?.[categoryField] };\n\n generateChartInstanceListByViewRange(datum, table, false);\n });\n this.activeChartInstance.on('pointerout', { markName: 'pie' }, (params: any) => {\n const categoryField = this.attribute.spec.categoryField;\n const datum = { [categoryField]: params?.datum?.[categoryField] };\n generateChartInstanceListByViewRange(datum, table, true);\n });\n }\n this.activeChartInstance.on('dimensionHover', (params: any) => {\n if (isDisabledTooltipToAllChartInstances(table.scenegraph)) {\n return;\n }\n //和下面调用disableTooltip做对应,一个关闭,一个打开。如果这里不加这句话可能导致这个实例没有tooltip的情况(如这个实例没有机会被加入到chartInstanceListColumnByColumnDirection或chartInstanceListRowByRowDirection中)\n this.activeChartInstance.disableTooltip(false);\n\n const dimensionInfo = params?.dimensionInfo[0];\n const canvasXY = params?.event?.canvas;\n const viewport = params?.event?.viewport;\n if (viewport) {\n const xValue = dimensionInfo.data[0].series.positionToDataX(viewport.x);\n const yValue = dimensionInfo.data[0].series.positionToDataY(viewport.y);\n if (this.attribute.spec.type === 'scatter') {\n // console.log('receive scatter dimensionHover', params.action);\n generateChartInstanceListByColumnDirection(col, xValue, undefined, canvasXY, table, false, true);\n generateChartInstanceListByRowDirection(row, undefined, yValue, canvasXY, table, false, true);\n //#region 显示横纵向crosshair的labelHoverOnAxis 代码块\n const axisConfigLeft = getAxisConfigInPivotChart(\n table.rowHeaderLevelCount - 1,\n row,\n table.internalProps.layoutMap as any\n );\n // 显示左侧纵向crosshair的labelHoverOnAxis\n if (axisConfigLeft.labelHoverOnAxis) {\n table.scenegraph\n .getCell(table.rowHeaderLevelCount - 1, row)\n .firstChild.showLabelHoverOnAxis(canvasXY.y - table.getCellRelativeRect(col, row).top, yValue);\n }\n const axisConfigBottom = getAxisConfigInPivotChart(\n col,\n table.rowCount - table.bottomFrozenRowCount,\n table.internalProps.layoutMap as any\n );\n // 显示底部横向crosshair的labelHoverOnAxis\n if (axisConfigBottom.labelHoverOnAxis) {\n table.scenegraph\n .getCell(col, table.rowCount - table.bottomFrozenRowCount)\n .firstChild.showLabelHoverOnAxis(canvasXY.x - table.getCellRelativeRect(col, row).left, xValue);\n }\n //#endregion 显示横纵向crosshair的labelHoverOnAxis 代码块\n } else {\n //hover到mark和dimension的tooltip显示逻辑有区别,hover到mark的时候只显示背景及本身的tooltip,不显示其他联动区域图表的tooltip,而hover到dimension的时候需要显示其他联动区域图表的tooltip\n //#region 为了解决鼠标快速移动于mark和dimension之间造成tooltip闪动问题,纯粹的防抖效果不好的问题,需要增加一个延迟显示tooltip的机制(写了一堆看不懂的逻辑)\n let justShowMarkTooltip = true;\n const preMark = this.activeChartInstanceHoverOnMark;\n const prev_justShowMarkTooltip = this.justShowMarkTooltip;\n // console.log('----', params, params.datum, params.dimensionInfo[0].data[0]);\n if (params.mark && params.datum && !Array.isArray(params.datum)) {\n this.activeChartInstanceHoverOnMark = params.mark;\n justShowMarkTooltip = true;\n } else {\n this.activeChartInstanceHoverOnMark = null;\n justShowMarkTooltip = false;\n }\n this.justShowMarkTooltip = justShowMarkTooltip;\n let delayRunDimensionHover: boolean = false;\n if (prev_justShowMarkTooltip !== false && justShowMarkTooltip === false) {\n this.justShowMarkTooltipTimer = Date.now();\n delayRunDimensionHover = true;\n } else if (prev_justShowMarkTooltip === false && justShowMarkTooltip === false) {\n if (Date.now() - this.justShowMarkTooltipTimer < 100) {\n // 鼠标hover到空白区域时,不要立马显示tooltip,而是等100ms后显示 以防止tooltip在mark和dimension的tooltip之间来回闪烁\n delayRunDimensionHover = true;\n } else {\n delayRunDimensionHover = false;\n }\n } else if (prev_justShowMarkTooltip === false && justShowMarkTooltip === true) {\n delayRunDimensionHover = false;\n this.clearDelayRunDimensionHoverTimer();\n } else if (prev_justShowMarkTooltip === true && justShowMarkTooltip === true) {\n delayRunDimensionHover = false;\n this.clearDelayRunDimensionHoverTimer(); //及时清除之前的定时器\n }\n //#endregion\n\n if (\n params.action === 'enter' ||\n params.action === 'move' ||\n preMark !== this.activeChartInstanceHoverOnMark\n ) {\n // console.log('-----preMark', params.action, hideTooltip, preMark, this.activeChartInstanceHoverOnMark);\n const dimensionValue = dimensionInfo.value;\n\n const indicatorsAsCol = (table.options as PivotChartConstructorOptions).indicatorsAsCol;\n if (!delayRunDimensionHover) {\n if (indicatorsAsCol) {\n generateChartInstanceListByRowDirection(\n row,\n dimensionValue,\n null,\n canvasXY,\n table,\n justShowMarkTooltip,\n false\n );\n } else {\n generateChartInstanceListByColumnDirection(\n col,\n dimensionValue,\n null,\n canvasXY,\n table,\n justShowMarkTooltip,\n false\n );\n }\n } else {\n this.clearDelayRunDimensionHoverTimer();\n //还是需要有个延迟出现的时间,否则从mark切换到dimension时,tooltip不会出现了( preMark !== this.activeChartInstanceHoverOnMark总是为false)\n this.delayRunDimensionHoverTimer = setTimeout(() => {\n if (isDisabledTooltipToAllChartInstances(table.scenegraph)) {\n // 如果当前是禁止显示tooltip的状态,这里的逻辑不会执行。否则这个延时会导致显示tooltip\n return;\n }\n if (indicatorsAsCol) {\n generateChartInstanceListByRowDirection(\n row,\n dimensionValue,\n null,\n canvasXY,\n table,\n justShowMarkTooltip,\n false\n );\n } else {\n generateChartInstanceListByColumnDirection(\n col,\n dimensionValue,\n null,\n canvasXY,\n table,\n justShowMarkTooltip,\n false\n );\n }\n }, 100);\n }\n //#region 显示横纵向crosshair的labelHoverOnAxis 代码块\n if (indicatorsAsCol) {\n const series = dimensionInfo.data[0].series;\n const width =\n this.attribute.spec.type === 'histogram' || series.type === 'line' || series.type === 'area'\n ? 0\n : series.getYAxisHelper().getBandwidth(0);\n let y = series.valueToPositionY(dimensionValue);\n\n const axisConfig = getAxisConfigInPivotChart(\n table.rowHeaderLevelCount - 1,\n row,\n table.internalProps.layoutMap as any\n );\n let hoverOnLabelValue = yValue;\n if (this.attribute.spec.type === 'histogram') {\n const { series, datum } = dimensionInfo.data[0];\n if (datum.length > 0) {\n const rangeStartValue = datum[0][series.fieldY[0]];\n const rangeEndValue = datum[0][series.fieldY2];\n hoverOnLabelValue = rangeStartValue + ' ~ ' + rangeEndValue;\n y = (series.valueToPositionY(rangeStartValue) + series.valueToPositionY(rangeEndValue)) / 2;\n }\n }\n // 显示左侧纵向crosshair的labelHoverOnAxis\n if (axisConfig.labelHoverOnAxis) {\n table.scenegraph\n .getCell(table.rowHeaderLevelCount - 1, row)\n .firstChild.showLabelHoverOnAxis(\n y + (series.type === 'line' || series.type === 'area' ? 0 : width / 2),\n hoverOnLabelValue\n );\n }\n } else {\n const series = dimensionInfo.data[0].series;\n const width =\n this.attribute.spec.type === 'histogram' || series.type === 'line' || series.type === 'area'\n ? 0\n : series.getXAxisHelper().getBandwidth(0);\n let x = series.valueToPositionX(dimensionValue);\n const axisConfig = getAxisConfigInPivotChart(\n col,\n table.rowCount - table.bottomFrozenRowCount,\n table.internalProps.layoutMap as any\n );\n let hoverOnLabelValue = dimensionValue;\n if (this.attribute.spec.type === 'histogram') {\n const { series, datum } = dimensionInfo.data[0];\n if (datum.length > 0) {\n const rangeStartValue = datum[0][series.fieldX[0]];\n const rangeEndValue = datum[0][series.fieldX2];\n hoverOnLabelValue = rangeStartValue + ' ~ ' + rangeEndValue;\n x = (series.valueToPositionX(rangeStartValue) + series.valueToPositionX(rangeEndValue)) / 2;\n }\n }\n // 显示底部横向crosshair的labelHoverOnAxis\n if (axisConfig.labelHoverOnAxis) {\n table.scenegraph\n .getCell(col, table.rowCount - table.bottomFrozenRowCount)\n .firstChild.showLabelHoverOnAxis(x + width / 2, hoverOnLabelValue);\n }\n }\n //#endregion 显示横纵向crosshair的labelHoverOnAxis 代码块\n }\n }\n }\n });\n }\n (table as PivotChart)._bindChartEvent?.(this.activeChartInstance);\n\n if (isDisabledTooltipToAllChartInstances(table.scenegraph)) {\n // 如果所有图表实例都禁用了dimensionHover,新建图表实例时,禁用当前图表实例的tooltip。避免在brush过程中显示tooltip\n this.activeChartInstance.disableTooltip(true);\n }\n }\n static temp: number = 1;\n\n clearDelayRunDimensionHoverTimer() {\n clearTimeout(this.delayRunDimensionHoverTimer);\n this.delayRunDimensionHoverTimer = undefined;\n }\n /**\n * 图表失去焦点\n * @param table\n */\n deactivate(\n table: BaseTableAPI,\n {\n forceRelease = false,\n releaseChartInstance = true,\n releaseColumnChartInstance = true,\n releaseRowChartInstance = true,\n releaseAllChartInstance = false\n }: {\n forceRelease?: boolean;\n releaseChartInstance?: boolean;\n releaseColumnChartInstance?: boolean;\n releaseRowChartInstance?: boolean;\n releaseAllChartInstance?: boolean;\n } = {}\n ) {\n // console.log('----deactivate chart instance 1', this.activeChartInstance?.id, this.parent.col, this.parent.row);\n this.activeChartInstanceHoverOnMark = null;\n this.justShowMarkTooltip = undefined;\n this.justShowMarkTooltipTimer = Date.now();\n this.clearDelayRunDimensionHoverTimer();\n if (releaseChartInstance) {\n // move active chart view box out of browser view\n // to avoid async render when chart is releasd\n\n if (\n this.activeChartInstance &&\n (forceRelease ||\n !getBrushingChartInstance(table.scenegraph) ||\n getBrushingChartInstance(table.scenegraph) !== this.activeChartInstance)\n ) {\n this.activeChartInstance?.updateViewBox(\n {\n x1: -1000,\n x2: -800,\n y1: -1000,\n y2: -800\n },\n false,\n false\n );\n // console.log('----release chart instance 1', this.activeChartInstance.id, this.parent.col, this.parent.row);\n this.activeChartInstance?.release();\n\n this.activeChartInstance = null;\n }\n\n const { col, row } = this.parent;\n // 隐藏左侧纵向crosshair的labelHoverOnAxis\n table.internalProps.layoutMap.isAxisCell(table.rowHeaderLevelCount - 1, row) &&\n table.scenegraph.getCell(table.rowHeaderLevelCount - 1, row).firstChild?.hideLabelHoverOnAxis?.();\n // 隐藏底部横向crosshair的labelHoverOnAxis\n table.internalProps.layoutMap.isAxisCell(col, table.rowCount - table.bottomFrozenRowCount) &&\n table.scenegraph.getCell(col, table.rowCount - table.bottomFrozenRowCount).firstChild?.hideLabelHoverOnAxis?.();\n } else {\n const { col, row } = this.parent;\n if (releaseColumnChartInstance) {\n // 隐藏底部横向crosshair的labelHoverOnAxis\n table.internalProps.layoutMap.isAxisCell(col, table.rowCount - table.bottomFrozenRowCount) &&\n table.scenegraph\n .getCell(col, table.rowCount - table.bottomFrozenRowCount)\n .firstChild?.hideLabelHoverOnAxis?.();\n }\n if (releaseRowChartInstance) {\n // 隐藏左侧纵向crosshair的labelHoverOnAxis\n table.internalProps.layoutMap.isAxisCell(table.rowHeaderLevelCount - 1, row) &&\n table.scenegraph.getCell(table.rowHeaderLevelCount - 1, row).firstChild?.hideLabelHoverOnAxis?.();\n }\n }\n if (releaseAllChartInstance) {\n clearAllChartInstanceList(table, forceRelease);\n } else {\n if (releaseColumnChartInstance) {\n clearChartInstanceListByColumnDirection(\n this.parent.col,\n this.attribute.spec.type === 'scatter' ? this.parent.row : undefined,\n table,\n forceRelease\n );\n }\n if (releaseRowChartInstance) {\n clearChartInstanceListByRowDirection(\n this.parent.row,\n this.attribute.spec.type === 'scatter' ? this.parent.col : undefined,\n table,\n forceRelease\n );\n }\n }\n }\n /** 更新图表对应数据 */\n updateData(data: any) {\n this.attribute.data = data;\n }\n\n getViewBox(): {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n } {\n const cellGroup = this.parent as Group;\n const padding = this.attribute.cellPadding;\n const table = (this.stage as any).table as BaseTableAPI;\n\n const { x1, y1, x2, y2 } = cellGroup.globalAABBBounds;\n\n const viewBox = {\n x1: Math.ceil(x1 + padding[3] + table.scrollLeft + (table.options.viewBox?.x1 ?? 0)),\n x2: Math.ceil(x1 + cellGroup.attribute.width - padding[1] + table.scrollLeft + (table.options.viewBox?.x1 ?? 0)),\n y1: Math.ceil(y1 + padding[0] + table.scrollTop + (table.options.viewBox?.y1 ?? 0)),\n y2: Math.ceil(y1 + cellGroup.attribute.height - padding[2] + table.scrollTop + (table.options.viewBox?.y1 ?? 0))\n };\n\n if (this.activeChartInstance) {\n this.activeChartInstanceLastViewBox = viewBox;\n } else {\n this.activeChartInstanceLastViewBox = null;\n }\n return viewBox;\n }\n}\n\nfunction getTableBounds(col: number, row: number, table: BaseTableAPI) {\n const { layoutMap } = table.internalProps;\n const bodyBound = new Bounds();\n const tableBound = table.scenegraph.tableGroup.globalAABBBounds;\n bodyBound.x1 = tableBound.x1;\n bodyBound.x2 = tableBound.x2;\n bodyBound.y1 = tableBound.y1;\n bodyBound.y2 = tableBound.y2;\n if (\n layoutMap.isLeftBottomCorner(col, row) ||\n layoutMap.isRightTopCorner(col, row) ||\n layoutMap.isLeftTopCorner(col, row) ||\n layoutMap.isRightBottomCorner(col, row)\n ) {\n // frozen cornor\n } else if (layoutMap.isFrozenColumn(col, row)) {\n // left frozen\n bodyBound.y1 = tableBound.y1 + table.getFrozenRowsHeight();\n bodyBound.y2 = tableBound.y2 - table.getBottomFrozenRowsHeight();\n } else if (layoutMap.isFrozenRow(col, row)) {\n // top frozen\n bodyBound.x1 = tableBound.x1 + table.getFrozenColsWidth();\n bodyBound.x2 = tableBound.x2 - table.getRightFrozenColsWidth();\n } else if (layoutMap.isRightFrozenColumn(col, row)) {\n // right frozen\n bodyBound.y1 = tableBound.y1 + table.getFrozenRowsHeight();\n bodyBound.y2 = tableBound.y2 - table.getBottomFrozenRowsHeight();\n } else if (layoutMap.isBottomFrozenRow(col, row)) {\n // bottom frozen\n bodyBound.x1 = tableBound.x1 + table.getFrozenColsWidth();\n bodyBound.x2 = tableBound.x2 - table.getRightFrozenColsWidth();\n } else if (!layoutMap.isFrozenColumn(col, row) && !layoutMap.isRightFrozenColumn(col, row)) {\n // no frozen body\n bodyBound.x1 = tableBound.x1 + table.getFrozenColsWidth();\n bodyBound.x2 = tableBound.x2 - table.getRightFrozenColsWidth();\n bodyBound.y1 = tableBound.y1 + table.getFrozenRowsHeight();\n bodyBound.y2 = tableBound.y2 - table.getBottomFrozenRowsHeight();\n }\n\n bodyBound.x1 = bodyBound.x1 + (table.options.viewBox?.x1 ?? 0);\n bodyBound.x2 = bodyBound.x2 + (table.options.viewBox?.x1 ?? 0);\n bodyBound.y1 = bodyBound.y1 + (table.options.viewBox?.y1 ?? 0);\n bodyBound.y2 = bodyBound.y2 + (table.options.viewBox?.y1 ?? 0);\n\n return bodyBound;\n}\n"]}
@@ -16,7 +16,8 @@ function setBatchRenderChartCount(count) {
16
16
 
17
17
  function clearChartRenderQueue() {
18
18
  exports.chartRenderKeys = [], exports.chartRenderQueueList = [], isHandlingChartQueue = !1,
19
- vrender_1.vglobal.getCancelAnimationFrame()(requestAnimationFrameId);
19
+ null != requestAnimationFrameId && (vrender_1.vglobal.getCancelAnimationFrame()(requestAnimationFrameId),
20
+ requestAnimationFrameId = void 0);
20
21
  }
21
22
 
22
23
  function IsHandlingChartQueue() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/graphic/contributions/chart-render-helper.ts"],"names":[],"mappings":"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","file":"chart-render-helper.js","sourcesContent":["import { container, vglobal, VWindow, type IStage, type IWindow } from './../../../vrender';\nimport type { Chart } from '../chart';\nimport type { IAABBBounds } from '@visactor/vutils';\nimport { Bounds, isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\nexport const cancelRenderChartQueue = false;\nexport let chartRenderKeys: string[] = [];\nexport let chartRenderQueueList: Chart[] = [];\ninterface chartRenderQueueItem {\n chart: Chart;\n}\n//每次消费的图表数量\nlet batchRenderChartCount = 5;\nlet isHandlingChartQueue = false;\nlet requestAnimationFrameId: number;\nexport function setBatchRenderChartCount(count: number) {\n if (isValid(count)) {\n batchRenderChartCount = count;\n }\n}\nexport function clearChartRenderQueue() {\n chartRenderKeys = [];\n chartRenderQueueList = [];\n isHandlingChartQueue = false;\n vglobal.getCancelAnimationFrame()(requestAnimationFrameId);\n}\nexport function IsHandlingChartQueue() {\n return isHandlingChartQueue;\n}\nexport function renderChart(chart: Chart) {\n const { axes, dataId, data, spec, ClassType, canvas, mode, modeParams, dpr } = chart.attribute;\n let { chartInstance } = chart;\n if (!chartInstance) {\n chartInstance = new ClassType(spec, {\n renderCanvas: canvas,\n mode: mode === 'node' ? 'node' : 'desktop-browser',\n modeParams: modeParams,\n canvasControled: false,\n viewBox: { x1: 0, x2: 0, y1: 0, y2: 0 },\n dpr: dpr,\n interactive: false,\n animation: false,\n autoFit: false\n });\n chartInstance.renderSync();\n chart.chartInstance = chartInstance;\n }\n const viewBox = chart.getViewBox();\n\n // avoid canvas size 0\n if (viewBox.x2 <= viewBox.x1) {\n viewBox.x2 = viewBox.x1 + 1;\n }\n if (viewBox.y2 <= viewBox.y1) {\n viewBox.y2 = viewBox.y1 + 1;\n }\n\n // use vrender trasnform, viewbox starts from 0,0\n chartInstance.updateViewBox(\n // {\n // x1: viewBox.x1 - (chart.getRootNode() as any).table.scrollLeft,\n // x2: viewBox.x2 - (chart.getRootNode() as any).table.scrollLeft,\n // y1: viewBox.y1 - (chart.getRootNode() as any).table.scrollTop,\n // y2: viewBox.y2 - (chart.getRootNode() as any).table.scrollTop\n // },\n {\n x1: 0,\n x2: viewBox.x2 - viewBox.x1,\n y1: 0,\n y2: viewBox.y2 - viewBox.y1\n },\n false,\n false\n );\n\n const chartStage = chartInstance.getStage();\n const matrix = chart.globalTransMatrix;\n const stageMatrix = chart.stage.window.getViewBoxTransform().clone();\n stageMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n chartStage.window.setViewBoxTransform &&\n chartStage.window.setViewBoxTransform(\n stageMatrix.a,\n stageMatrix.b,\n stageMatrix.c,\n stageMatrix.d,\n stageMatrix.e,\n stageMatrix.f\n );\n // to be fixed: update state everytimes render, need be fix by vchart\n // 测试的没发现问题 这里应该能去掉吧 留着每次都要调用一次\n // const table = (chart.getRootNode() as any).table as BaseTableAPI;\n // (table.internalProps.layoutMap as any)?.updateDataStateToActiveChartInstance?.(chartInstance);\n\n const { table } = chart.getRootNode() as any;\n\n let updateSpec = false;\n if (table.options.specFormat) {\n const formatResult = table.options.specFormat(chart.attribute.spec, chartInstance, chart);\n if (formatResult.needFormatSpec && formatResult.spec) {\n const spec = formatResult.spec;\n chartInstance.updateSpecSync(spec, false, { reuse: false, morph: false });\n updateSpec = formatResult.updateSpec ?? true;\n }\n }\n\n if (!updateSpec) {\n axes?.forEach((axis: any, index: number) => {\n if (axis.type === 'band') {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._spec.domain = axis.domain.slice(0);\n // chartAxis.updateScaleDomain();\n chartInstance.updateModelSpec({ type: 'axes', index }, { domain: axis.domain.slice(0) }, true);\n } else {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._domain = {\n // min: axis.range?.min ?? 0,\n // max: axis.range?.max ?? 0\n // };\n chartInstance.updateModelSpecSync(\n { type: 'axes', index },\n {\n min: axis.range?.min ?? 0,\n max: axis.range?.max ?? 0,\n tick: {\n tickMode: axis.tick?.tickMode\n }\n },\n true\n );\n }\n });\n\n // to be fixed: update state everytimes render, need be fix by vchart\n (table.internalProps.layoutMap as any)?.updateDataStateToActiveChartInstance?.(chartInstance);\n\n if (typeof dataId === 'string' || typeof dataId === 'number') {\n // 重新布局图表,marker 等需要重新布局的图表组件需要出发布局声明周期\n chartInstance.getChart().setLayoutTag(true);\n chartInstance.updateDataSync(dataId, data ?? []);\n } else {\n const dataBatch = [];\n for (const dataIdStr in dataId) {\n const dataIdAndField = dataId[dataIdStr];\n const series = spec.series.find((item: any) => item?.data?.id === dataIdStr);\n dataBatch.push({\n id: dataIdStr,\n values: dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? [],\n fields: series?.data?.fields\n });\n // 判断是否有updateFullDataSync 木有的话 还是循环调用updateDataSync\n if (!chartInstance.updateFullDataSync) {\n chartInstance.updateDataSync(\n dataIdStr,\n dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? []\n );\n }\n }\n // 重新布局图表,marker 等需要重新布局的图表组件需要出发布局声明周期\n chartInstance.getChart().setLayoutTag(true);\n chartInstance.updateFullDataSync?.(dataBatch);\n }\n }\n\n table.fireListeners('before_cache_chart_image', { chartInstance });\n const sg = chartInstance.getStage();\n cacheStageCanvas(sg, chart);\n // chart.cacheCanvas = sg.toCanvas();\n\n // debugger;\n // chart.cacheCanvas[] = sg.toCanvas(fullImage, viewBox);\n // chart.cacheCanvas = sg.toCanvas(false, {\n // x1: 0,\n // y1: 0,\n // x2: 500,\n // y2: 300,\n // width: () => 500,\n // height: () => 300\n // });\n // 截图空白问题 因为开启了动画 首屏截图是无数据的TODO\n}\n\nexport function startRenderChartQueue(table: any) {\n isHandlingChartQueue = true;\n\n // 检查是否还有未渲染的图表\n if (chartRenderQueueList.length > 0) {\n // 使用 requestAnimationFrame 或 setTimeout 来调度下一批图表的渲染\n // requestAnimationFrame(() => renderChartQueue(table));\n requestAnimationFrameId = vglobal.getRequestAnimationFrame()(() => {\n // 从集合中获取要渲染的图表上下文\n const chartsToRender = chartRenderQueueList.splice(0, batchRenderChartCount);\n chartRenderKeys.splice(0, batchRenderChartCount);\n // 渲染图表\n chartsToRender.forEach(chart => {\n // 在正确的位置渲染图表\n renderChart(chart);\n chart.addUpdateBoundTag();\n });\n table.render();\n startRenderChartQueue(table);\n });\n // setTimeout(() => {\n // // debugger;\n // renderChartQueue(table);\n // }, 0);\n } else {\n isHandlingChartQueue = false;\n }\n}\n\nconst cacheCanvasSizeLimit = 2000;\nexport function cacheStageCanvas(stage: IStage, chart: Chart) {\n const { viewWidth, viewHeight } = stage;\n if (viewWidth < cacheCanvasSizeLimit && viewHeight < cacheCanvasSizeLimit) {\n chart.cacheCanvas = toCanvas(stage);\n if (!chart.isShareChartSpec) {\n // 不能整列共享chart的情况 生成完图片后即将chartInstance清除\n chart.chartInstance?.release();\n chart.chartInstance = null;\n chart.setAttribute('chartInstance', null);\n }\n return;\n }\n\n const rows = Math.ceil(viewHeight / cacheCanvasSizeLimit);\n const columns = Math.ceil(viewWidth / cacheCanvasSizeLimit);\n\n const cacheCanvas = [];\n for (let row = 0; row < rows; row++) {\n for (let col = 0; col < columns; col++) {\n const startX = col * cacheCanvasSizeLimit;\n const startY = row * cacheCanvasSizeLimit;\n const endX = startX + cacheCanvasSizeLimit > viewWidth ? viewWidth : startX + cacheCanvasSizeLimit;\n const endY = startY + cacheCanvasSizeLimit > viewHeight ? viewHeight : startY + cacheCanvasSizeLimit;\n const width = endX - startX;\n const height = endY - startY;\n const bounds = new Bounds();\n bounds.setValue(startX, startY, endX, endY);\n\n const canvas = toCanvas(stage, false, bounds);\n cacheCanvas.push({\n canvas,\n x: startX,\n y: startY,\n width,\n height\n });\n }\n }\n\n chart.cacheCanvas = cacheCanvas;\n}\n\nfunction toCanvas(stage: IStage, fullImage: boolean = true, viewBox?: IAABBBounds): HTMLCanvasElement | null {\n if ((stage as any).releaseStatus === 'released') {\n return null;\n }\n const window = renderToNewWindow(stage, fullImage, viewBox);\n const c = window.getNativeHandler();\n if (c.nativeCanvas) {\n return c.nativeCanvas;\n }\n return null;\n}\n\nfunction renderToNewWindow(stage: IStage, fullImage: boolean = true, viewBox?: IAABBBounds): IWindow {\n const matrix = stage.window.getViewBoxTransform();\n const window = container.get<IWindow>(VWindow);\n const x1 = viewBox ? -viewBox.x1 : 0;\n const y1 = viewBox ? -viewBox.y1 : 0;\n const x2 = viewBox ? viewBox.x2 : stage.viewWidth;\n const y2 = viewBox ? viewBox.y2 : stage.viewHeight;\n const width = viewBox ? viewBox.width() : stage.viewWidth;\n const height = viewBox ? viewBox.height() : stage.viewHeight;\n if (fullImage) {\n window.create({\n viewBox: { x1, y1, x2, y2 },\n width: width * matrix.a,\n height: height * matrix.d,\n dpr: stage.window.dpr,\n canvasControled: true,\n offscreen: true,\n title: ''\n });\n } else {\n window.create({\n viewBox: { x1, y1, x2, y2 },\n width: width * matrix.a,\n height: height * matrix.d,\n dpr: stage.window.dpr,\n canvasControled: true,\n offscreen: true,\n title: ''\n });\n }\n\n window.setViewBoxTransform(matrix.a, matrix.b, matrix.c, matrix.d, 0, 0);\n (stage as any).renderTo(window);\n return window;\n}\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/graphic/contributions/chart-render-helper.ts"],"names":[],"mappings":"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","file":"chart-render-helper.js","sourcesContent":["import { container, vglobal, VWindow, type IStage, type IWindow } from './../../../vrender';\nimport type { Chart } from '../chart';\nimport type { IAABBBounds } from '@visactor/vutils';\nimport { Bounds, isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\nexport const cancelRenderChartQueue = false;\nexport let chartRenderKeys: string[] = [];\nexport let chartRenderQueueList: Chart[] = [];\ninterface chartRenderQueueItem {\n chart: Chart;\n}\n//每次消费的图表数量\nlet batchRenderChartCount = 5;\nlet isHandlingChartQueue = false;\nlet requestAnimationFrameId: number | undefined;\nexport function setBatchRenderChartCount(count: number) {\n if (isValid(count)) {\n batchRenderChartCount = count;\n }\n}\nexport function clearChartRenderQueue() {\n chartRenderKeys = [];\n chartRenderQueueList = [];\n isHandlingChartQueue = false;\n if (requestAnimationFrameId != null) {\n vglobal.getCancelAnimationFrame()(requestAnimationFrameId);\n requestAnimationFrameId = undefined;\n }\n}\nexport function IsHandlingChartQueue() {\n return isHandlingChartQueue;\n}\nexport function renderChart(chart: Chart) {\n const { axes, dataId, data, spec, ClassType, canvas, mode, modeParams, dpr } = chart.attribute;\n let { chartInstance } = chart;\n if (!chartInstance) {\n chartInstance = new ClassType(spec, {\n renderCanvas: canvas,\n mode: mode === 'node' ? 'node' : 'desktop-browser',\n modeParams: modeParams,\n canvasControled: false,\n viewBox: { x1: 0, x2: 0, y1: 0, y2: 0 },\n dpr: dpr,\n interactive: false,\n animation: false,\n autoFit: false\n });\n chartInstance.renderSync();\n chart.chartInstance = chartInstance;\n }\n const viewBox = chart.getViewBox();\n\n // avoid canvas size 0\n if (viewBox.x2 <= viewBox.x1) {\n viewBox.x2 = viewBox.x1 + 1;\n }\n if (viewBox.y2 <= viewBox.y1) {\n viewBox.y2 = viewBox.y1 + 1;\n }\n\n // use vrender trasnform, viewbox starts from 0,0\n chartInstance.updateViewBox(\n // {\n // x1: viewBox.x1 - (chart.getRootNode() as any).table.scrollLeft,\n // x2: viewBox.x2 - (chart.getRootNode() as any).table.scrollLeft,\n // y1: viewBox.y1 - (chart.getRootNode() as any).table.scrollTop,\n // y2: viewBox.y2 - (chart.getRootNode() as any).table.scrollTop\n // },\n {\n x1: 0,\n x2: viewBox.x2 - viewBox.x1,\n y1: 0,\n y2: viewBox.y2 - viewBox.y1\n },\n false,\n false\n );\n\n const chartStage = chartInstance.getStage();\n const matrix = chart.globalTransMatrix;\n const stageMatrix = chart.stage.window.getViewBoxTransform().clone();\n stageMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n chartStage.window.setViewBoxTransform &&\n chartStage.window.setViewBoxTransform(\n stageMatrix.a,\n stageMatrix.b,\n stageMatrix.c,\n stageMatrix.d,\n stageMatrix.e,\n stageMatrix.f\n );\n // to be fixed: update state everytimes render, need be fix by vchart\n // 测试的没发现问题 这里应该能去掉吧 留着每次都要调用一次\n // const table = (chart.getRootNode() as any).table as BaseTableAPI;\n // (table.internalProps.layoutMap as any)?.updateDataStateToActiveChartInstance?.(chartInstance);\n\n const { table } = chart.getRootNode() as any;\n\n let updateSpec = false;\n if (table.options.specFormat) {\n const formatResult = table.options.specFormat(chart.attribute.spec, chartInstance, chart);\n if (formatResult.needFormatSpec && formatResult.spec) {\n const spec = formatResult.spec;\n chartInstance.updateSpecSync(spec, false, { reuse: false, morph: false });\n updateSpec = formatResult.updateSpec ?? true;\n }\n }\n\n if (!updateSpec) {\n axes?.forEach((axis: any, index: number) => {\n if (axis.type === 'band') {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._spec.domain = axis.domain.slice(0);\n // chartAxis.updateScaleDomain();\n chartInstance.updateModelSpec({ type: 'axes', index }, { domain: axis.domain.slice(0) }, true);\n } else {\n // const chartAxis = chartInstance._chart._components[index];\n // chartAxis._domain = {\n // min: axis.range?.min ?? 0,\n // max: axis.range?.max ?? 0\n // };\n chartInstance.updateModelSpecSync(\n { type: 'axes', index },\n {\n min: axis.range?.min ?? 0,\n max: axis.range?.max ?? 0,\n tick: {\n tickMode: axis.tick?.tickMode\n }\n },\n true\n );\n }\n });\n\n // to be fixed: update state everytimes render, need be fix by vchart\n (table.internalProps.layoutMap as any)?.updateDataStateToActiveChartInstance?.(chartInstance);\n\n if (typeof dataId === 'string' || typeof dataId === 'number') {\n // 重新布局图表,marker 等需要重新布局的图表组件需要出发布局声明周期\n chartInstance.getChart().setLayoutTag(true);\n chartInstance.updateDataSync(dataId, data ?? []);\n } else {\n const dataBatch = [];\n for (const dataIdStr in dataId) {\n const dataIdAndField = dataId[dataIdStr];\n const series = spec.series.find((item: any) => item?.data?.id === dataIdStr);\n dataBatch.push({\n id: dataIdStr,\n values: dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? [],\n fields: series?.data?.fields\n });\n // 判断是否有updateFullDataSync 木有的话 还是循环调用updateDataSync\n if (!chartInstance.updateFullDataSync) {\n chartInstance.updateDataSync(\n dataIdStr,\n dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? []\n );\n }\n }\n // 重新布局图表,marker 等需要重新布局的图表组件需要出发布局声明周期\n chartInstance.getChart().setLayoutTag(true);\n chartInstance.updateFullDataSync?.(dataBatch);\n }\n }\n\n table.fireListeners('before_cache_chart_image', { chartInstance });\n const sg = chartInstance.getStage();\n cacheStageCanvas(sg, chart);\n // chart.cacheCanvas = sg.toCanvas();\n\n // debugger;\n // chart.cacheCanvas[] = sg.toCanvas(fullImage, viewBox);\n // chart.cacheCanvas = sg.toCanvas(false, {\n // x1: 0,\n // y1: 0,\n // x2: 500,\n // y2: 300,\n // width: () => 500,\n // height: () => 300\n // });\n // 截图空白问题 因为开启了动画 首屏截图是无数据的TODO\n}\n\nexport function startRenderChartQueue(table: any) {\n isHandlingChartQueue = true;\n\n // 检查是否还有未渲染的图表\n if (chartRenderQueueList.length > 0) {\n // 使用 requestAnimationFrame 或 setTimeout 来调度下一批图表的渲染\n // requestAnimationFrame(() => renderChartQueue(table));\n requestAnimationFrameId = vglobal.getRequestAnimationFrame()(() => {\n // 从集合中获取要渲染的图表上下文\n const chartsToRender = chartRenderQueueList.splice(0, batchRenderChartCount);\n chartRenderKeys.splice(0, batchRenderChartCount);\n // 渲染图表\n chartsToRender.forEach(chart => {\n // 在正确的位置渲染图表\n renderChart(chart);\n chart.addUpdateBoundTag();\n });\n table.render();\n startRenderChartQueue(table);\n });\n // setTimeout(() => {\n // // debugger;\n // renderChartQueue(table);\n // }, 0);\n } else {\n isHandlingChartQueue = false;\n }\n}\n\nconst cacheCanvasSizeLimit = 2000;\nexport function cacheStageCanvas(stage: IStage, chart: Chart) {\n const { viewWidth, viewHeight } = stage;\n if (viewWidth < cacheCanvasSizeLimit && viewHeight < cacheCanvasSizeLimit) {\n chart.cacheCanvas = toCanvas(stage);\n if (!chart.isShareChartSpec) {\n // 不能整列共享chart的情况 生成完图片后即将chartInstance清除\n chart.chartInstance?.release();\n chart.chartInstance = null;\n chart.setAttribute('chartInstance', null);\n }\n return;\n }\n\n const rows = Math.ceil(viewHeight / cacheCanvasSizeLimit);\n const columns = Math.ceil(viewWidth / cacheCanvasSizeLimit);\n\n const cacheCanvas = [];\n for (let row = 0; row < rows; row++) {\n for (let col = 0; col < columns; col++) {\n const startX = col * cacheCanvasSizeLimit;\n const startY = row * cacheCanvasSizeLimit;\n const endX = startX + cacheCanvasSizeLimit > viewWidth ? viewWidth : startX + cacheCanvasSizeLimit;\n const endY = startY + cacheCanvasSizeLimit > viewHeight ? viewHeight : startY + cacheCanvasSizeLimit;\n const width = endX - startX;\n const height = endY - startY;\n const bounds = new Bounds();\n bounds.setValue(startX, startY, endX, endY);\n\n const canvas = toCanvas(stage, false, bounds);\n cacheCanvas.push({\n canvas,\n x: startX,\n y: startY,\n width,\n height\n });\n }\n }\n\n chart.cacheCanvas = cacheCanvas;\n}\n\nfunction toCanvas(stage: IStage, fullImage: boolean = true, viewBox?: IAABBBounds): HTMLCanvasElement | null {\n if ((stage as any).releaseStatus === 'released') {\n return null;\n }\n const window = renderToNewWindow(stage, fullImage, viewBox);\n const c = window.getNativeHandler();\n if (c.nativeCanvas) {\n return c.nativeCanvas;\n }\n return null;\n}\n\nfunction renderToNewWindow(stage: IStage, fullImage: boolean = true, viewBox?: IAABBBounds): IWindow {\n const matrix = stage.window.getViewBoxTransform();\n const window = container.get<IWindow>(VWindow);\n const x1 = viewBox ? -viewBox.x1 : 0;\n const y1 = viewBox ? -viewBox.y1 : 0;\n const x2 = viewBox ? viewBox.x2 : stage.viewWidth;\n const y2 = viewBox ? viewBox.y2 : stage.viewHeight;\n const width = viewBox ? viewBox.width() : stage.viewWidth;\n const height = viewBox ? viewBox.height() : stage.viewHeight;\n if (fullImage) {\n window.create({\n viewBox: { x1, y1, x2, y2 },\n width: width * matrix.a,\n height: height * matrix.d,\n dpr: stage.window.dpr,\n canvasControled: true,\n offscreen: true,\n title: ''\n });\n } else {\n window.create({\n viewBox: { x1, y1, x2, y2 },\n width: width * matrix.a,\n height: height * matrix.d,\n dpr: stage.window.dpr,\n canvasControled: true,\n offscreen: true,\n title: ''\n });\n }\n\n window.setViewBoxTransform(matrix.a, matrix.b, matrix.c, matrix.d, 0, 0);\n (stage as any).renderTo(window);\n return window;\n}\n"]}
@@ -28,7 +28,9 @@ export declare class Group extends VRenderGroup {
28
28
  forEachChildrenSkipChild<T extends INode = INode>(cb: (item: T, index: number) => void | boolean, skipChildName?: string, reverse?: boolean): void;
29
29
  getColGroup(col: number): Group;
30
30
  getRowGroup(row: number): Group;
31
- addCellGroup(cellGroup: Group): void;
31
+ addCellGroup(cellGroup: Group): Group;
32
+ private getInsertableCellGroup;
33
+ private cloneCellGroupForInsertion;
32
34
  getChildAt(index: number): INode;
33
35
  protected tryUpdateAABBBounds(): AABBBounds;
34
36
  protected doUpdateAABBBounds(): any;
@@ -87,15 +87,33 @@ class Group extends vrender_1.Group {
87
87
  return null;
88
88
  }
89
89
  addCellGroup(cellGroup) {
90
- if (0 === this.childrenCount || this.lastChild.row === cellGroup.row - 1) this.addChild(cellGroup); else {
90
+ if (cellGroup = this.getInsertableCellGroup(cellGroup), 0 === this.childrenCount || this.lastChild.row === cellGroup.row - 1) return this.addChild(cellGroup),
91
+ cellGroup;
92
+ {
91
93
  let c = this._firstChild;
92
94
  for (let i = 0; i < this.childrenCount; i++) {
93
- if (c.row === cellGroup.row - 1) return void this.insertAfter(cellGroup, c);
95
+ if (c.row === cellGroup.row - 1) return this.insertAfter(cellGroup, c), cellGroup;
94
96
  c = c._next;
95
97
  }
96
- this.addChild(cellGroup);
98
+ return this.addChild(cellGroup), cellGroup;
97
99
  }
98
100
  }
101
+ getInsertableCellGroup(cellGroup) {
102
+ if (cellGroup.isAncestorsOf(this)) return this.cloneCellGroupForInsertion(cellGroup);
103
+ const parent = cellGroup.parent;
104
+ return parent && parent.removeChild(cellGroup), cellGroup;
105
+ }
106
+ cloneCellGroupForInsertion(cellGroup) {
107
+ const clonedCellGroup = new Group(Object.assign({}, cellGroup.attribute));
108
+ return clonedCellGroup.name = cellGroup.name, clonedCellGroup.role = cellGroup.role,
109
+ clonedCellGroup.col = cellGroup.col, clonedCellGroup.row = cellGroup.row, clonedCellGroup.mergeStartCol = cellGroup.mergeStartCol,
110
+ clonedCellGroup.mergeStartRow = cellGroup.mergeStartRow, clonedCellGroup.mergeEndCol = cellGroup.mergeEndCol,
111
+ clonedCellGroup.mergeEndRow = cellGroup.mergeEndRow, clonedCellGroup.contentWidth = cellGroup.contentWidth,
112
+ clonedCellGroup.contentHeight = cellGroup.contentHeight, clonedCellGroup.rowNumber = cellGroup.rowNumber,
113
+ clonedCellGroup.colHeight = cellGroup.colHeight, clonedCellGroup.needUpdate = cellGroup.needUpdate,
114
+ clonedCellGroup.needUpdateWidth = cellGroup.needUpdateWidth, clonedCellGroup.needUpdateHeight = cellGroup.needUpdateHeight,
115
+ clonedCellGroup;
116
+ }
99
117
  getChildAt(index) {
100
118
  const child = super.getChildAt(index);
101
119
  return child && "border-rect" === child.name ? child._next : child;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/scenegraph/graphic/group.ts"],"names":[],"mappings":"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","file":"group.js","sourcesContent":["import type { IGraphic, IColor, IRect, INode, IGroupGraphicAttribute, ISetAttributeContext } from './../../vrender';\nimport { Group as VRenderGroup } from './../../vrender';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { InteractionState } from '../../ts-types';\nimport { isNumber, type AABBBounds } from '@visactor/vutils';\n\nexport class Group extends VRenderGroup {\n role?: string;\n col?: number;\n row?: number;\n mergeStartCol?: number;\n mergeStartRow?: number;\n mergeEndCol?: number;\n mergeEndRow?: number;\n contentWidth?: number;\n contentHeight?: number;\n rowNumber?: number; // row number of the column group\n colHeight?: number; // current height of the column group\n border?: IRect; // table/header/body的border mark,挂载在这里方便更新\n needUpdate?: boolean;\n\n needUpdateWidth?: boolean;\n needUpdateHeight?: boolean;\n\n // changes for size align for fs\n // constructor(attribute?: IGroupGraphicAttribute) {\n // dealWidthSize(attribute, attribute);\n // super(attribute);\n // }\n\n // setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void {\n // if (key === 'x' || key === 'y' || key === 'width' || key === 'height') {\n // this.attribute[`old${key}`];\n // }\n // const values = {\n // [key]: value\n // };\n // this.setAttributes(values, forceUpdateTag, context);\n // }\n\n // setAttributes(\n // params: Partial<IGroupGraphicAttribute>,\n // forceUpdateTag?: boolean,\n // context?: ISetAttributeContext\n // ): void {\n // dealWidthSize(params, this.attribute);\n // super.setAttributes(params, forceUpdateTag, context);\n // }\n\n /**\n * @description: 清空Group下全部子元素\n * @return {*}\n */\n clear() {\n this.removeAllChild();\n }\n\n getChildByName(name: string, deep?: boolean): any {\n // for (let i = 0, j = this.children.length; i < j; i++) {\n // if (this.children[i].name === name) {\n // return this.children[i] as unknown as T;\n // }\n // }\n let result = null;\n this.forEachChildren((child: IGraphic) => {\n if (child.name === name) {\n result = child;\n return true; // 提前退出循环\n }\n return false;\n });\n\n if (deep) {\n // for (let i = 0, j = this.children.length; i < j; i++) {\n // const child = this.children[i] as Group;\n\n // if (!child.getChildByName) {\n // continue;\n // }\n\n // const target = child.getChildByName(name, true);\n\n // if (target) {\n // return target;\n // }\n // }\n this.forEachChildren((child: IGraphic) => {\n if ((child as Group).getChildByName) {\n const target = (child as Group).getChildByName(name, true);\n if (target) {\n result = target;\n return true;\n }\n }\n return false;\n });\n }\n\n return result;\n }\n\n get width() {\n let width = this.AABBBounds.width();\n if (width === Infinity || width === -Infinity) {\n width = 0;\n }\n return Math.max(width, this.attribute.width ?? 0);\n }\n\n get height() {\n let height = this.AABBBounds.height();\n if (height === Infinity || height === -Infinity) {\n height = 0;\n }\n return Math.max(height, this.attribute.height ?? 0);\n }\n\n setDeltaWidth(deltaX: number) {\n if (deltaX === 0) {\n return;\n }\n this.setAttribute('width', (this.attribute.width ?? 0) + deltaX);\n if (this.border) {\n this.border.setAttribute('width', this.border.attribute.width + deltaX);\n\n if (this.border.type === 'group') {\n (this.border.firstChild as IRect).setAttribute(\n 'width',\n (this.border.firstChild as IRect).attribute.width + deltaX\n );\n }\n }\n }\n\n setDeltaHeight(deltaY: number) {\n if (deltaY === 0) {\n return;\n }\n this.setAttribute('height', (this.attribute.height ?? 0) + deltaY);\n if (this.border) {\n this.border.setAttribute('height', this.border.attribute.height + deltaY);\n if (this.border.type === 'group') {\n (this.border.firstChild as IRect).setAttribute(\n 'width',\n (this.border.firstChild as IRect).attribute.height + deltaY\n );\n }\n }\n }\n\n setDeltaX(deltaX: number) {\n if (deltaX === 0) {\n return;\n }\n this.setAttribute('x', this.attribute.x + deltaX);\n }\n\n setDeltaY(deltaY: number) {\n if (deltaY === 0) {\n return;\n }\n this.setAttribute('y', this.attribute.y + deltaY);\n }\n\n /**\n * @description: 遍历所有子节点,跳过部分节点,默认跳过group的border\n * @return {*}\n */\n forEachChildrenSkipChild<T extends INode = INode>(\n cb: (item: T, index: number) => void | boolean,\n skipChildName = 'border-rect',\n reverse = false\n ) {\n if (reverse) {\n let child = this._lastChild;\n let i = 0;\n while (child) {\n if (child.name !== skipChildName) {\n const breakTag = cb(child as T, i++);\n if (breakTag) {\n return;\n }\n }\n child = child._prev;\n }\n } else {\n let child = this._firstChild;\n let i = 0;\n while (child) {\n if (child.name !== skipChildName) {\n const breakTag = cb(child as T, i++);\n if (breakTag) {\n return;\n }\n }\n child = child._next;\n }\n }\n }\n\n getColGroup(col: number) {\n let c = this._firstChild as Group;\n if (!c) {\n return null;\n }\n for (let i = 0; i < this.childrenCount; i++) {\n if (c.col === col) {\n return c;\n }\n c = c._next as Group;\n }\n return null;\n }\n\n getRowGroup(row: number) {\n let c = this._firstChild as Group;\n if (!c) {\n return null;\n }\n for (let i = 0; i < this.childrenCount; i++) {\n if (c.row === row) {\n return c;\n }\n c = c._next as Group;\n }\n return null;\n }\n\n addCellGroup(cellGroup: Group) {\n if (this.childrenCount === 0 || (this.lastChild as Group).row === cellGroup.row - 1) {\n this.addChild(cellGroup);\n } else {\n // for promise cell row order in column\n let c = this._firstChild as Group;\n for (let i = 0; i < this.childrenCount; i++) {\n if (c.row === cellGroup.row - 1) {\n this.insertAfter(cellGroup, c);\n return;\n }\n c = c._next as Group;\n }\n this.addChild(cellGroup);\n }\n }\n\n getChildAt(index: number) {\n const child = super.getChildAt(index);\n if (child && child.name === 'border-rect') {\n return child._next;\n }\n return child;\n }\n\n protected tryUpdateAABBBounds(): AABBBounds {\n if (this.role === 'cell') {\n if (!this.shouldUpdateAABBBounds()) {\n return this._AABBBounds as AABBBounds;\n }\n // application.graphicService.beforeUpdateAABBBounds(this, this.stage, true, this._AABBBounds);\n const selfChange = this.shouldSelfChangeUpdateAABBBounds();\n // const selfChange = true;\n const bounds = this.doUpdateAABBBounds();\n this.addUpdateLayoutTag();\n // application.graphicService.afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, selfChange);\n after(this, selfChange);\n\n return bounds;\n }\n return super.tryUpdateAABBBounds() as AABBBounds;\n }\n\n // 目前优化方案会导致合并单元格无法正常更新列宽(因为合并单元格更新bounds不会触发父节点bounds更新),暂时关闭优化方案\n // shouldUpdateAABBBoundsForRowMerge(): boolean {\n\n // }\n\n // shouldUpdateAABBBounds(): boolean {\n // return this.shouldSelfChangeUpdateAABBBounds();\n // // // 检索自己是否需要更新\n // // if (super.shouldUpdateAABBBounds()) {\n // // return true;\n // // }\n // // // 检索叶子节点是否有更新(如果children是叶子节点的话)\n // // if (this._childUpdateTag & UpdateTag.UPDATE_BOUNDS) {\n // // return true;\n // // }\n // // // 检索是否子group需要更新\n // // let needUpdate = false;\n // // this.forEachChildren((node: IGraphic) => {\n // // // 只查找group层级\n // // if (node.isContainer && (node as Group).shouldUpdateAABBBounds()) {\n // // needUpdate = true;\n // // return true;\n // // }\n // // return false;\n // // });\n // // return needUpdate;\n // }\n\n protected doUpdateAABBBounds(): any {\n // const groupTheme = getTheme(this).group;\n // debugger;\n if (this.role === 'cell') {\n const attribute = this.attribute;\n const { x, y, width, height } = attribute;\n this._AABBBounds.setValue(x, y, x + width, y + height);\n // 更新bounds之后需要设置父节点,否则tag丢失\n this.parent && this.parent.addChildUpdateBoundTag();\n this.clearUpdateBoundTag();\n if (this.shadowRoot) {\n // this.shadowRoot.clearUpdateBoundTag();\n this.shadowRoot.tryUpdateAABBBounds();\n }\n return this._AABBBounds;\n } else if (\n this.role === 'body' ||\n this.role === 'row-header' ||\n this.role === 'col-header' ||\n this.role === 'right-frozen' ||\n this.role === 'bottom-frozen' ||\n this.role === 'corner-header' ||\n this.role === 'corner-right-top-header' ||\n this.role === 'corner-right-bottom-header' ||\n this.role === 'corner-left-bottom-header'\n ) {\n // Infinity bounds for manual clip group\n this._AABBBounds.setValue(-Infinity, -Infinity, Infinity, Infinity);\n // 更新bounds之后需要设置父节点,否则tag丢失\n this.parent && this.parent.addChildUpdateBoundTag();\n this.clearUpdateBoundTag();\n\n if (this.shadowRoot) {\n // this.shadowRoot.clearUpdateBoundTag();\n this.shadowRoot.tryUpdateAABBBounds();\n }\n return this._AABBBounds;\n }\n return super.doUpdateAABBBounds();\n // _AABBBounds\n // const bounds = graphicService.updateGroupAABBBounds(\n // attribute,\n // getTheme(this).group,\n // this._AABBBounds,\n // this\n // ) as AABBBounds;\n\n // const { boundsPadding = groupTheme.boundsPadding } = attribute;\n // const paddingArray = parsePadding(boundsPadding);\n // if (paddingArray) {\n // bounds.expand(paddingArray);\n // }\n // // 更新bounds之后需要设置父节点,否则tag丢失\n // this.parent && this.parent.addChildUpdateBoundTag();\n // this.clearUpdateBoundTag();\n\n // this.emit('AAABBBoundsChange');\n }\n\n // update column group row number\n updateColumnRowNumber(row: number) {\n if (!this.rowNumber) {\n this.rowNumber = row;\n } else {\n this.rowNumber = Math.max(this.rowNumber, row);\n }\n }\n\n // update column height\n updateColumnHeight(cellHeight: number) {\n if (!this.colHeight) {\n this.colHeight = cellHeight;\n } else {\n this.colHeight += cellHeight;\n }\n }\n\n // doUpdateLocalMatrix() {\n // const oldX = this.attribute.x;\n // const oldY = this.attribute.y;\n // this.attribute.x = Math.floor(this.attribute.x);\n // this.attribute.y = Math.floor(this.attribute.y);\n // super.doUpdateLocalMatrix();\n // this.attribute.x = oldX;\n // this.attribute.y = oldY;\n // }\n}\n\nfunction after(group: Group, selfChange: boolean) {\n if (!group.stage || !group.stage.dirtyBounds || !group.stage.renderCount) {\n return;\n }\n // group的子元素导致的bounds更新不用做dirtyBounds\n if (group.isContainer && !selfChange) {\n return;\n }\n group.stage.dirty(group.globalAABBBounds);\n}\n\n// function dealWidthSize(values: any, attributes: any) {\n// const x = values.x ?? attributes.oldx ?? attributes.x ?? 0 + values.dx ?? attributes.dx ?? 0;\n// const y = values.y ?? attributes.oldy ?? attributes.y ?? 0 + values.dy ?? attributes.dy ?? 0;\n// const width = values.width ?? attributes.oldwidth ?? attributes.width ?? 0;\n// const height = values.height ?? attributes.oldheight ?? attributes.height ?? 0;\n// isNumber(values.width) && (values.oldwidth = values.width);\n// isNumber(values.height) && (values.oldheight = values.height);\n// isNumber(values.x) && (values.oldx = values.x);\n// isNumber(values.y) && (values.oldy = values.y);\n\n// if (Math.floor(x + width) > Math.floor(width) + Math.floor(x)) {\n// values.width = Math.ceil(width);\n// } else {\n// values.width = Math.floor(width);\n// }\n\n// if (Math.floor(y + height) > Math.floor(height) + Math.floor(y)) {\n// values.height = Math.ceil(height);\n// } else {\n// values.height = Math.floor(height);\n// }\n// isNumber(values.x) && (values.x = Math.floor(values.x));\n// isNumber(values.y) && (values.y = Math.floor(values.y));\n// }\n"]}
1
+ {"version":3,"sources":["../src/scenegraph/graphic/group.ts"],"names":[],"mappings":"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","file":"group.js","sourcesContent":["import type { IGraphic, IColor, IRect, INode, IGroupGraphicAttribute, ISetAttributeContext } from './../../vrender';\nimport { Group as VRenderGroup } from './../../vrender';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport { InteractionState } from '../../ts-types';\nimport { isNumber, type AABBBounds } from '@visactor/vutils';\n\nexport class Group extends VRenderGroup {\n role?: string;\n col?: number;\n row?: number;\n mergeStartCol?: number;\n mergeStartRow?: number;\n mergeEndCol?: number;\n mergeEndRow?: number;\n contentWidth?: number;\n contentHeight?: number;\n rowNumber?: number; // row number of the column group\n colHeight?: number; // current height of the column group\n border?: IRect; // table/header/body的border mark,挂载在这里方便更新\n needUpdate?: boolean;\n\n needUpdateWidth?: boolean;\n needUpdateHeight?: boolean;\n\n // changes for size align for fs\n // constructor(attribute?: IGroupGraphicAttribute) {\n // dealWidthSize(attribute, attribute);\n // super(attribute);\n // }\n\n // setAttribute(key: string, value: any, forceUpdateTag?: boolean, context?: ISetAttributeContext): void {\n // if (key === 'x' || key === 'y' || key === 'width' || key === 'height') {\n // this.attribute[`old${key}`];\n // }\n // const values = {\n // [key]: value\n // };\n // this.setAttributes(values, forceUpdateTag, context);\n // }\n\n // setAttributes(\n // params: Partial<IGroupGraphicAttribute>,\n // forceUpdateTag?: boolean,\n // context?: ISetAttributeContext\n // ): void {\n // dealWidthSize(params, this.attribute);\n // super.setAttributes(params, forceUpdateTag, context);\n // }\n\n /**\n * @description: 清空Group下全部子元素\n * @return {*}\n */\n clear() {\n this.removeAllChild();\n }\n\n getChildByName(name: string, deep?: boolean): any {\n // for (let i = 0, j = this.children.length; i < j; i++) {\n // if (this.children[i].name === name) {\n // return this.children[i] as unknown as T;\n // }\n // }\n let result = null;\n this.forEachChildren((child: IGraphic) => {\n if (child.name === name) {\n result = child;\n return true; // 提前退出循环\n }\n return false;\n });\n\n if (deep) {\n // for (let i = 0, j = this.children.length; i < j; i++) {\n // const child = this.children[i] as Group;\n\n // if (!child.getChildByName) {\n // continue;\n // }\n\n // const target = child.getChildByName(name, true);\n\n // if (target) {\n // return target;\n // }\n // }\n this.forEachChildren((child: IGraphic) => {\n if ((child as Group).getChildByName) {\n const target = (child as Group).getChildByName(name, true);\n if (target) {\n result = target;\n return true;\n }\n }\n return false;\n });\n }\n\n return result;\n }\n\n get width() {\n let width = this.AABBBounds.width();\n if (width === Infinity || width === -Infinity) {\n width = 0;\n }\n return Math.max(width, this.attribute.width ?? 0);\n }\n\n get height() {\n let height = this.AABBBounds.height();\n if (height === Infinity || height === -Infinity) {\n height = 0;\n }\n return Math.max(height, this.attribute.height ?? 0);\n }\n\n setDeltaWidth(deltaX: number) {\n if (deltaX === 0) {\n return;\n }\n this.setAttribute('width', (this.attribute.width ?? 0) + deltaX);\n if (this.border) {\n this.border.setAttribute('width', this.border.attribute.width + deltaX);\n\n if (this.border.type === 'group') {\n (this.border.firstChild as IRect).setAttribute(\n 'width',\n (this.border.firstChild as IRect).attribute.width + deltaX\n );\n }\n }\n }\n\n setDeltaHeight(deltaY: number) {\n if (deltaY === 0) {\n return;\n }\n this.setAttribute('height', (this.attribute.height ?? 0) + deltaY);\n if (this.border) {\n this.border.setAttribute('height', this.border.attribute.height + deltaY);\n if (this.border.type === 'group') {\n (this.border.firstChild as IRect).setAttribute(\n 'width',\n (this.border.firstChild as IRect).attribute.height + deltaY\n );\n }\n }\n }\n\n setDeltaX(deltaX: number) {\n if (deltaX === 0) {\n return;\n }\n this.setAttribute('x', this.attribute.x + deltaX);\n }\n\n setDeltaY(deltaY: number) {\n if (deltaY === 0) {\n return;\n }\n this.setAttribute('y', this.attribute.y + deltaY);\n }\n\n /**\n * @description: 遍历所有子节点,跳过部分节点,默认跳过group的border\n * @return {*}\n */\n forEachChildrenSkipChild<T extends INode = INode>(\n cb: (item: T, index: number) => void | boolean,\n skipChildName = 'border-rect',\n reverse = false\n ) {\n if (reverse) {\n let child = this._lastChild;\n let i = 0;\n while (child) {\n if (child.name !== skipChildName) {\n const breakTag = cb(child as T, i++);\n if (breakTag) {\n return;\n }\n }\n child = child._prev;\n }\n } else {\n let child = this._firstChild;\n let i = 0;\n while (child) {\n if (child.name !== skipChildName) {\n const breakTag = cb(child as T, i++);\n if (breakTag) {\n return;\n }\n }\n child = child._next;\n }\n }\n }\n\n getColGroup(col: number) {\n let c = this._firstChild as Group;\n if (!c) {\n return null;\n }\n for (let i = 0; i < this.childrenCount; i++) {\n if (c.col === col) {\n return c;\n }\n c = c._next as Group;\n }\n return null;\n }\n\n getRowGroup(row: number) {\n let c = this._firstChild as Group;\n if (!c) {\n return null;\n }\n for (let i = 0; i < this.childrenCount; i++) {\n if (c.row === row) {\n return c;\n }\n c = c._next as Group;\n }\n return null;\n }\n\n addCellGroup(cellGroup: Group): Group {\n cellGroup = this.getInsertableCellGroup(cellGroup);\n\n if (this.childrenCount === 0 || (this.lastChild as Group).row === cellGroup.row - 1) {\n this.addChild(cellGroup);\n return cellGroup;\n } else {\n // for promise cell row order in column\n let c = this._firstChild as Group;\n for (let i = 0; i < this.childrenCount; i++) {\n if (c.row === cellGroup.row - 1) {\n this.insertAfter(cellGroup, c);\n return cellGroup;\n }\n c = c._next as Group;\n }\n this.addChild(cellGroup);\n return cellGroup;\n }\n }\n\n private getInsertableCellGroup(cellGroup: Group): Group {\n if (cellGroup.isAncestorsOf(this)) {\n return this.cloneCellGroupForInsertion(cellGroup);\n }\n\n const parent = cellGroup.parent as Group | undefined;\n if (parent) {\n parent.removeChild(cellGroup);\n }\n return cellGroup;\n }\n\n private cloneCellGroupForInsertion(cellGroup: Group): Group {\n const clonedCellGroup = new Group({ ...cellGroup.attribute });\n clonedCellGroup.name = cellGroup.name;\n clonedCellGroup.role = cellGroup.role;\n clonedCellGroup.col = cellGroup.col;\n clonedCellGroup.row = cellGroup.row;\n clonedCellGroup.mergeStartCol = cellGroup.mergeStartCol;\n clonedCellGroup.mergeStartRow = cellGroup.mergeStartRow;\n clonedCellGroup.mergeEndCol = cellGroup.mergeEndCol;\n clonedCellGroup.mergeEndRow = cellGroup.mergeEndRow;\n clonedCellGroup.contentWidth = cellGroup.contentWidth;\n clonedCellGroup.contentHeight = cellGroup.contentHeight;\n clonedCellGroup.rowNumber = cellGroup.rowNumber;\n clonedCellGroup.colHeight = cellGroup.colHeight;\n clonedCellGroup.needUpdate = cellGroup.needUpdate;\n clonedCellGroup.needUpdateWidth = cellGroup.needUpdateWidth;\n clonedCellGroup.needUpdateHeight = cellGroup.needUpdateHeight;\n return clonedCellGroup;\n }\n\n getChildAt(index: number) {\n const child = super.getChildAt(index);\n if (child && child.name === 'border-rect') {\n return child._next;\n }\n return child;\n }\n\n protected tryUpdateAABBBounds(): AABBBounds {\n if (this.role === 'cell') {\n if (!this.shouldUpdateAABBBounds()) {\n return this._AABBBounds as AABBBounds;\n }\n // application.graphicService.beforeUpdateAABBBounds(this, this.stage, true, this._AABBBounds);\n const selfChange = this.shouldSelfChangeUpdateAABBBounds();\n // const selfChange = true;\n const bounds = this.doUpdateAABBBounds();\n this.addUpdateLayoutTag();\n // application.graphicService.afterUpdateAABBBounds(this, this.stage, this._AABBBounds, this, selfChange);\n after(this, selfChange);\n\n return bounds;\n }\n return super.tryUpdateAABBBounds() as AABBBounds;\n }\n\n // 目前优化方案会导致合并单元格无法正常更新列宽(因为合并单元格更新bounds不会触发父节点bounds更新),暂时关闭优化方案\n // shouldUpdateAABBBoundsForRowMerge(): boolean {\n\n // }\n\n // shouldUpdateAABBBounds(): boolean {\n // return this.shouldSelfChangeUpdateAABBBounds();\n // // // 检索自己是否需要更新\n // // if (super.shouldUpdateAABBBounds()) {\n // // return true;\n // // }\n // // // 检索叶子节点是否有更新(如果children是叶子节点的话)\n // // if (this._childUpdateTag & UpdateTag.UPDATE_BOUNDS) {\n // // return true;\n // // }\n // // // 检索是否子group需要更新\n // // let needUpdate = false;\n // // this.forEachChildren((node: IGraphic) => {\n // // // 只查找group层级\n // // if (node.isContainer && (node as Group).shouldUpdateAABBBounds()) {\n // // needUpdate = true;\n // // return true;\n // // }\n // // return false;\n // // });\n // // return needUpdate;\n // }\n\n protected doUpdateAABBBounds(): any {\n // const groupTheme = getTheme(this).group;\n // debugger;\n if (this.role === 'cell') {\n const attribute = this.attribute;\n const { x, y, width, height } = attribute;\n this._AABBBounds.setValue(x, y, x + width, y + height);\n // 更新bounds之后需要设置父节点,否则tag丢失\n this.parent && this.parent.addChildUpdateBoundTag();\n this.clearUpdateBoundTag();\n if (this.shadowRoot) {\n // this.shadowRoot.clearUpdateBoundTag();\n this.shadowRoot.tryUpdateAABBBounds();\n }\n return this._AABBBounds;\n } else if (\n this.role === 'body' ||\n this.role === 'row-header' ||\n this.role === 'col-header' ||\n this.role === 'right-frozen' ||\n this.role === 'bottom-frozen' ||\n this.role === 'corner-header' ||\n this.role === 'corner-right-top-header' ||\n this.role === 'corner-right-bottom-header' ||\n this.role === 'corner-left-bottom-header'\n ) {\n // Infinity bounds for manual clip group\n this._AABBBounds.setValue(-Infinity, -Infinity, Infinity, Infinity);\n // 更新bounds之后需要设置父节点,否则tag丢失\n this.parent && this.parent.addChildUpdateBoundTag();\n this.clearUpdateBoundTag();\n\n if (this.shadowRoot) {\n // this.shadowRoot.clearUpdateBoundTag();\n this.shadowRoot.tryUpdateAABBBounds();\n }\n return this._AABBBounds;\n }\n return super.doUpdateAABBBounds();\n // _AABBBounds\n // const bounds = graphicService.updateGroupAABBBounds(\n // attribute,\n // getTheme(this).group,\n // this._AABBBounds,\n // this\n // ) as AABBBounds;\n\n // const { boundsPadding = groupTheme.boundsPadding } = attribute;\n // const paddingArray = parsePadding(boundsPadding);\n // if (paddingArray) {\n // bounds.expand(paddingArray);\n // }\n // // 更新bounds之后需要设置父节点,否则tag丢失\n // this.parent && this.parent.addChildUpdateBoundTag();\n // this.clearUpdateBoundTag();\n\n // this.emit('AAABBBoundsChange');\n }\n\n // update column group row number\n updateColumnRowNumber(row: number) {\n if (!this.rowNumber) {\n this.rowNumber = row;\n } else {\n this.rowNumber = Math.max(this.rowNumber, row);\n }\n }\n\n // update column height\n updateColumnHeight(cellHeight: number) {\n if (!this.colHeight) {\n this.colHeight = cellHeight;\n } else {\n this.colHeight += cellHeight;\n }\n }\n\n // doUpdateLocalMatrix() {\n // const oldX = this.attribute.x;\n // const oldY = this.attribute.y;\n // this.attribute.x = Math.floor(this.attribute.x);\n // this.attribute.y = Math.floor(this.attribute.y);\n // super.doUpdateLocalMatrix();\n // this.attribute.x = oldX;\n // this.attribute.y = oldY;\n // }\n}\n\nfunction after(group: Group, selfChange: boolean) {\n if (!group.stage || !group.stage.dirtyBounds || !group.stage.renderCount) {\n return;\n }\n // group的子元素导致的bounds更新不用做dirtyBounds\n if (group.isContainer && !selfChange) {\n return;\n }\n group.stage.dirty(group.globalAABBBounds);\n}\n\n// function dealWidthSize(values: any, attributes: any) {\n// const x = values.x ?? attributes.oldx ?? attributes.x ?? 0 + values.dx ?? attributes.dx ?? 0;\n// const y = values.y ?? attributes.oldy ?? attributes.y ?? 0 + values.dy ?? attributes.dy ?? 0;\n// const width = values.width ?? attributes.oldwidth ?? attributes.width ?? 0;\n// const height = values.height ?? attributes.oldheight ?? attributes.height ?? 0;\n// isNumber(values.width) && (values.oldwidth = values.width);\n// isNumber(values.height) && (values.oldheight = values.height);\n// isNumber(values.x) && (values.oldx = values.x);\n// isNumber(values.y) && (values.oldy = values.y);\n\n// if (Math.floor(x + width) > Math.floor(width) + Math.floor(x)) {\n// values.width = Math.ceil(width);\n// } else {\n// values.width = Math.floor(width);\n// }\n\n// if (Math.floor(y + height) > Math.floor(height) + Math.floor(y)) {\n// values.height = Math.ceil(height);\n// } else {\n// values.height = Math.floor(height);\n// }\n// isNumber(values.x) && (values.x = Math.floor(values.x));\n// isNumber(values.y) && (values.y = Math.floor(values.y));\n// }\n"]}
@@ -121,16 +121,17 @@ function updateCell(col, row, table, addNew, isShadow, forceFastUpdate) {
121
121
  range || !table.internalProps.enableTreeNodeMerge && "body" === cellLocation && !(null == define ? void 0 : define.mergeCell) || (range = table.getCellRange(col, row),
122
122
  isMerge = range.start.col !== range.end.col || range.start.row !== range.end.row);
123
123
  let isVtableMerge = !1;
124
- if (table.internalProps.enableTreeNodeMerge && isMerge) {
124
+ if (table.internalProps.enableTreeNodeMerge && range) {
125
125
  const rawRecord = table.getCellRawRecord(range.start.col, range.start.row), {vtableMergeName: vtableMergeName, vtableMerge: vtableMerge} = null != rawRecord ? rawRecord : {};
126
- isVtableMerge = vtableMerge, vtableMerge && (mayHaveIcon = !0, table.internalProps.groupTitleCustomLayout && (customResult = (0,
126
+ isVtableMerge = vtableMerge && (isMerge || !table.isSeriesNumberInBody(col, row)),
127
+ isVtableMerge && (mayHaveIcon = !0, table.internalProps.groupTitleCustomLayout && (customResult = (0,
127
128
  custom_1.dealWithCustom)(table.internalProps.groupTitleCustomLayout, void 0, range.start.col, range.start.row, table.getColsWidth(range.start.col, range.end.col), table.getRowsHeight(range.start.row, range.end.row), !1, table.isAutoRowHeight(row), [ 0, 0, 0, 0 ], range, table)),
128
129
  table.internalProps.groupTitleFieldFormat ? value = table.internalProps.groupTitleFieldFormat(rawRecord, col, row, table) : void 0 !== vtableMergeName && (value = vtableMergeName));
129
130
  }
130
131
  const cellStyle = customStyle || table._getCellStyle(range ? range.start.col : col, range ? range.start.row : row), autoWrapText = null !== (_a = cellStyle.autoWrapText) && void 0 !== _a ? _a : table.internalProps.autoWrapText, cellTheme = (0,
131
132
  tableHelper_1.getStyleTheme)(cellStyle, table, isMerge ? range.start.col : col, isMerge ? range.start.row : row, get_prop_1.getProp).theme;
132
133
  if (cellTheme.group.cornerRadius = (0, tableHelper_1.getCellCornerRadius)(col, row, table),
133
- !addNew && !isMerge && !((null == define ? void 0 : define.customLayout) || (null == define ? void 0 : define.customRender) || (null == define ? void 0 : define.headerCustomLayout) || (null == define ? void 0 : define.headerCustomRender)) && (forceFastUpdate || canUseFastUpdate(col, row, oldCellGroup, autoWrapText, mayHaveIcon, table))) {
134
+ !addNew && !isMerge && !isVtableMerge && !((null == define ? void 0 : define.customLayout) || (null == define ? void 0 : define.customRender) || (null == define ? void 0 : define.headerCustomLayout) || (null == define ? void 0 : define.headerCustomRender)) && (forceFastUpdate || canUseFastUpdate(col, row, oldCellGroup, autoWrapText, mayHaveIcon, table))) {
134
135
  const cellWidth = table.getColWidth(col), cellHeight = table.getRowHeight(row), strokeArrayWidth = (0,
135
136
  cell_border_stroke_width_1.getCellBorderStrokeWidth)(col, row, cellTheme, table);
136
137
  oldCellGroup.setAttributes({