@visactor/vtable 1.4.0-alpha.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/ListTable.js +38 -26
- package/cjs/ListTable.js.map +1 -1
- package/cjs/PivotChart.d.ts +1 -3
- package/cjs/PivotChart.js +5 -15
- package/cjs/PivotChart.js.map +1 -1
- package/cjs/PivotTable.d.ts +1 -1
- package/cjs/PivotTable.js +40 -18
- package/cjs/PivotTable.js.map +1 -1
- package/cjs/components/axis/axis.js +2 -3
- package/cjs/components/axis/axis.js.map +1 -1
- package/cjs/components/empty-tip/empty-tip.js +2 -2
- package/cjs/components/empty-tip/empty-tip.js.map +1 -1
- package/cjs/components/legend/discrete-legend/discrete-legend.js +1 -2
- package/cjs/components/legend/discrete-legend/discrete-legend.js.map +1 -1
- package/cjs/components/react/react-custom-layout.d.ts +21 -0
- package/cjs/components/react/react-custom-layout.js +48 -0
- package/cjs/components/react/react-custom-layout.js.map +1 -0
- package/cjs/components/tooltip/TooltipHandler.js +1 -3
- package/cjs/components/tooltip/TooltipHandler.js.map +1 -1
- package/cjs/components/tooltip/logic/BubbleTooltipElement.js +7 -3
- package/cjs/components/tooltip/logic/BubbleTooltipElement.js.map +1 -1
- package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js +1 -1
- package/cjs/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -1
- package/cjs/core/BaseTable.d.ts +10 -28
- package/cjs/core/BaseTable.js +88 -75
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/FouseInput.d.ts +0 -1
- package/cjs/core/FouseInput.js +2 -5
- package/cjs/core/FouseInput.js.map +1 -1
- package/cjs/core/style.js +1 -1
- package/cjs/core/style.js.map +1 -1
- package/cjs/data/DataSource.d.ts +6 -1
- package/cjs/data/DataSource.js +12 -2
- package/cjs/data/DataSource.js.map +1 -1
- package/cjs/dataset/dataset.d.ts +17 -2
- package/cjs/dataset/dataset.js +195 -79
- package/cjs/dataset/dataset.js.map +1 -1
- package/cjs/dataset/statistics-helper.d.ts +43 -3
- package/cjs/dataset/statistics-helper.js +61 -26
- package/cjs/dataset/statistics-helper.js.map +1 -1
- package/cjs/event/event.js +1 -2
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/listener/container-dom.js +4 -3
- package/cjs/event/listener/container-dom.js.map +1 -1
- package/cjs/event/listener/table-group.js +7 -5
- package/cjs/event/listener/table-group.js.map +1 -1
- package/cjs/event/util.js +2 -2
- package/cjs/event/util.js.map +1 -1
- package/cjs/index.d.ts +3 -1
- package/cjs/index.js +13 -4
- package/cjs/index.js.map +1 -1
- package/cjs/layout/layout-helper.js.map +1 -1
- package/cjs/layout/pivot-header-layout.d.ts +1 -0
- package/cjs/layout/pivot-header-layout.js +66 -39
- package/cjs/layout/pivot-header-layout.js.map +1 -1
- package/cjs/layout/row-height-map.js +1 -0
- package/cjs/layout/row-height-map.js.map +1 -1
- package/cjs/scenegraph/component/custom.js +6 -4
- package/cjs/scenegraph/component/custom.js.map +1 -1
- package/cjs/scenegraph/debug-tool/debug-tool.js +1 -4
- package/cjs/scenegraph/debug-tool/debug-tool.js.map +1 -1
- package/cjs/scenegraph/graphic/chart.d.ts +0 -1
- package/cjs/scenegraph/graphic/chart.js +20 -34
- package/cjs/scenegraph/graphic/chart.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/chart-render-helper.js +8 -20
- package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/chart-render.d.ts +1 -2
- package/cjs/scenegraph/graphic/contributions/chart-render.js +24 -40
- package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.js +6 -2
- package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +1 -2
- package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/proxy.d.ts +3 -2
- package/cjs/scenegraph/group-creater/progress/proxy.js +10 -10
- package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.d.ts +2 -1
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +2 -3
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.d.ts +3 -2
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +15 -14
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/update-position/update-auto-row.js +7 -5
- package/cjs/scenegraph/group-creater/progress/update-position/update-auto-row.js.map +1 -1
- package/cjs/scenegraph/layout/compute-col-width.js +2 -2
- package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
- package/cjs/scenegraph/layout/compute-row-height.js +7 -4
- package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
- package/cjs/scenegraph/layout/frozen.js +12 -4
- package/cjs/scenegraph/layout/frozen.js.map +1 -1
- package/cjs/scenegraph/layout/update-width.js +3 -0
- package/cjs/scenegraph/layout/update-width.js.map +1 -1
- package/cjs/scenegraph/refresh-node/update-chart.d.ts +0 -1
- package/cjs/scenegraph/refresh-node/update-chart.js +2 -9
- package/cjs/scenegraph/refresh-node/update-chart.js.map +1 -1
- package/cjs/scenegraph/scenegraph.d.ts +2 -1
- package/cjs/scenegraph/scenegraph.js +18 -15
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/state/cell-move/index.js +1 -1
- package/cjs/state/cell-move/index.js.map +1 -1
- package/cjs/state/sort/index.js +2 -2
- package/cjs/state/sort/index.js.map +1 -1
- package/cjs/themes/theme.js +6 -0
- package/cjs/themes/theme.js.map +1 -1
- package/cjs/ts-types/base-table.d.ts +20 -40
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/customLayout.d.ts +1 -1
- package/cjs/ts-types/customLayout.js.map +1 -1
- package/cjs/ts-types/icon.d.ts +2 -0
- package/cjs/ts-types/icon.js.map +1 -1
- package/cjs/ts-types/new-data-set.d.ts +9 -1
- package/cjs/ts-types/new-data-set.js +1 -1
- package/cjs/ts-types/new-data-set.js.map +1 -1
- package/cjs/ts-types/pivot-table/corner.d.ts +12 -0
- package/cjs/ts-types/pivot-table/corner.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +12 -0
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/ts-types/theme.d.ts +2 -0
- package/cjs/ts-types/theme.js.map +1 -1
- package/cjs/ts-types/tooltip.d.ts +2 -0
- package/cjs/ts-types/tooltip.js.map +1 -1
- package/cjs/vrender.d.ts +4 -0
- package/cjs/vrender.js +39 -11
- package/cjs/vrender.js.map +1 -1
- package/dist/vtable.js +25679 -9801
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.js +34 -23
- package/es/ListTable.js.map +1 -1
- package/es/PivotChart.d.ts +1 -3
- package/es/PivotChart.js +8 -17
- package/es/PivotChart.js.map +1 -1
- package/es/PivotTable.d.ts +1 -1
- package/es/PivotTable.js +41 -19
- package/es/PivotTable.js.map +1 -1
- package/es/components/axis/axis.js +1 -3
- package/es/components/axis/axis.js.map +1 -1
- package/es/components/empty-tip/empty-tip.js +2 -2
- package/es/components/empty-tip/empty-tip.js.map +1 -1
- package/es/components/legend/discrete-legend/discrete-legend.js +1 -2
- package/es/components/legend/discrete-legend/discrete-legend.js.map +1 -1
- package/es/components/react/react-custom-layout.d.ts +21 -0
- package/es/components/react/react-custom-layout.js +38 -0
- package/es/components/react/react-custom-layout.js.map +1 -0
- package/es/components/tooltip/TooltipHandler.js +1 -3
- package/es/components/tooltip/TooltipHandler.js.map +1 -1
- package/es/components/tooltip/logic/BubbleTooltipElement.js +7 -3
- package/es/components/tooltip/logic/BubbleTooltipElement.js.map +1 -1
- package/es/components/tooltip/logic/BubbleTooltipElementStyle.js +1 -1
- package/es/components/tooltip/logic/BubbleTooltipElementStyle.js.map +1 -1
- package/es/core/BaseTable.d.ts +10 -28
- package/es/core/BaseTable.js +90 -74
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/FouseInput.d.ts +0 -1
- package/es/core/FouseInput.js +2 -5
- package/es/core/FouseInput.js.map +1 -1
- package/es/core/style.js +1 -1
- package/es/core/style.js.map +1 -1
- package/es/data/DataSource.d.ts +6 -1
- package/es/data/DataSource.js +12 -2
- package/es/data/DataSource.js.map +1 -1
- package/es/dataset/dataset.d.ts +17 -2
- package/es/dataset/dataset.js +195 -80
- package/es/dataset/dataset.js.map +1 -1
- package/es/dataset/statistics-helper.d.ts +43 -3
- package/es/dataset/statistics-helper.js +55 -23
- package/es/dataset/statistics-helper.js.map +1 -1
- package/es/event/event.js +1 -2
- package/es/event/event.js.map +1 -1
- package/es/event/listener/container-dom.js +4 -3
- package/es/event/listener/container-dom.js.map +1 -1
- package/es/event/listener/table-group.js +7 -5
- package/es/event/listener/table-group.js.map +1 -1
- package/es/event/util.js +2 -2
- package/es/event/util.js.map +1 -1
- package/es/index.d.ts +3 -1
- package/es/index.js +5 -1
- package/es/index.js.map +1 -1
- package/es/layout/layout-helper.js.map +1 -1
- package/es/layout/pivot-header-layout.d.ts +1 -0
- package/es/layout/pivot-header-layout.js +65 -37
- package/es/layout/pivot-header-layout.js.map +1 -1
- package/es/layout/row-height-map.js +1 -0
- package/es/layout/row-height-map.js.map +1 -1
- package/es/scenegraph/component/custom.js +7 -3
- package/es/scenegraph/component/custom.js.map +1 -1
- package/es/scenegraph/debug-tool/debug-tool.js +1 -4
- package/es/scenegraph/debug-tool/debug-tool.js.map +1 -1
- package/es/scenegraph/graphic/chart.d.ts +0 -1
- package/es/scenegraph/graphic/chart.js +21 -33
- package/es/scenegraph/graphic/chart.js.map +1 -1
- package/es/scenegraph/graphic/contributions/chart-render-helper.js +8 -20
- package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
- package/es/scenegraph/graphic/contributions/chart-render.d.ts +1 -2
- package/es/scenegraph/graphic/contributions/chart-render.js +25 -41
- package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
- package/es/scenegraph/group-creater/cell-helper.js +6 -2
- package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/chart-cell.js +1 -2
- package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
- package/es/scenegraph/group-creater/progress/proxy.d.ts +3 -2
- package/es/scenegraph/group-creater/progress/proxy.js +10 -10
- package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.d.ts +2 -1
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +2 -3
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.d.ts +3 -2
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js +15 -13
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-y.js.map +1 -1
- package/es/scenegraph/group-creater/progress/update-position/update-auto-row.js +7 -5
- package/es/scenegraph/group-creater/progress/update-position/update-auto-row.js.map +1 -1
- package/es/scenegraph/layout/compute-col-width.js +3 -3
- package/es/scenegraph/layout/compute-col-width.js.map +1 -1
- package/es/scenegraph/layout/compute-row-height.js +8 -5
- package/es/scenegraph/layout/compute-row-height.js.map +1 -1
- package/es/scenegraph/layout/frozen.js +12 -4
- package/es/scenegraph/layout/frozen.js.map +1 -1
- package/es/scenegraph/layout/update-width.js +3 -0
- package/es/scenegraph/layout/update-width.js.map +1 -1
- package/es/scenegraph/refresh-node/update-chart.d.ts +0 -1
- package/es/scenegraph/refresh-node/update-chart.js +0 -6
- package/es/scenegraph/refresh-node/update-chart.js.map +1 -1
- package/es/scenegraph/scenegraph.d.ts +2 -1
- package/es/scenegraph/scenegraph.js +18 -15
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/state/cell-move/index.js +1 -1
- package/es/state/cell-move/index.js.map +1 -1
- package/es/state/sort/index.js +2 -2
- package/es/state/sort/index.js.map +1 -1
- package/es/themes/theme.js +6 -0
- package/es/themes/theme.js.map +1 -1
- package/es/ts-types/base-table.d.ts +20 -40
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/customLayout.d.ts +1 -1
- package/es/ts-types/customLayout.js.map +1 -1
- package/es/ts-types/icon.d.ts +2 -0
- package/es/ts-types/icon.js.map +1 -1
- package/es/ts-types/new-data-set.d.ts +9 -1
- package/es/ts-types/new-data-set.js +1 -1
- package/es/ts-types/new-data-set.js.map +1 -1
- package/es/ts-types/pivot-table/corner.d.ts +12 -0
- package/es/ts-types/pivot-table/corner.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +12 -0
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/ts-types/theme.d.ts +2 -0
- package/es/ts-types/theme.js.map +1 -1
- package/es/ts-types/tooltip.d.ts +2 -0
- package/es/ts-types/tooltip.js.map +1 -1
- package/es/vrender.d.ts +4 -0
- package/es/vrender.js +9 -3
- package/es/vrender.js.map +1 -1
- package/package.json +7 -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 } from './../../vrender';\nimport { genNumberType, Group } from './../../vrender';\nimport { Bounds, merge } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { PivotChart } from '../../PivotChart';\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}\n\nexport const CHART_NUMBER_TYPE = genNumberType();\n\nexport class Chart extends Group {\n type: GraphicType = 'chart' as any;\n declare attribute: IChartGraphicAttribute;\n chartInstance: any;\n activeChartInstance: any;\n active: boolean;\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 this.active = true;\n const { col, row } = this.parent;\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.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);\n ctx.beginPath();\n ctx.rect(clipBound.x1, clipBound.y1, clipBound.x2 - clipBound.x1, clipBound.y2 - clipBound.y1);\n ctx.clip();\n ctx.clearMatrix();\n\n if (!(chartStage as any).needRender) {\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 })\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 table.scenegraph.updateChartState(params?.datum);\n }\n });\n this.activeChartInstance.on('brushEnd', (params: any) => {\n table.scenegraph.updateChartState(params?.value?.inBrushData);\n Chart.temp = 0;\n setTimeout(() => {\n Chart.temp = 1;\n }, 0);\n });\n (table as PivotChart)._bindChartEvent?.(this.activeChartInstance);\n }\n static temp: number = 1;\n /**\n * 图表失去焦点\n * @param table\n */\n deactivate() {\n this.active = false;\n // move active chart view box out of broswer view\n // to avoid async render when chart is releasd\n this.activeChartInstance?.updateViewBox(\n {\n x1: -1000,\n x2: -800,\n y1: -1000,\n y2: -800\n },\n false,\n false\n );\n this.activeChartInstance?.release();\n this.activeChartInstance = null;\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 return {\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}\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\n 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 } else if (layoutMap.isLeftBottomCorner(col, row) || layoutMap.isRightTopCorner(col, row)) {\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.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 }\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 } from './../../vrender';\nimport { genNumberType, Group } from './../../vrender';\nimport { Bounds } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nimport type { PivotChart } from '../../PivotChart';\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}\n\nexport const CHART_NUMBER_TYPE = genNumberType();\n\nexport class Chart extends Group {\n type: GraphicType = 'chart' as any;\n declare attribute: IChartGraphicAttribute;\n chartInstance: any;\n activeChartInstance: any;\n active: boolean;\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 = new params.ClassType(params.spec, {\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 chartInstance.renderSync();\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 this.active = true;\n const { col, row } = this.parent;\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.activeChartInstance = new this.attribute.ClassType(this.attribute.spec, {\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 dpr: table.internalProps.pixelRatio,\n animation: false,\n interactive: true,\n autoFit: false, //控制当容器变化大小时vchart实例不应响应事件进行内部处理\n beforeRender: (stage: any) => {\n const ctx = stage.window.getContext();\n ctx.inuse = true;\n ctx.clearMatrix();\n ctx.setTransformForCurrent(true);\n ctx.beginPath();\n ctx.rect(clipBound.x1, clipBound.y1, clipBound.x2 - clipBound.x1, clipBound.y2 - clipBound.y1);\n ctx.clip();\n },\n afterRender(stage: any) {\n const ctx = stage.window.getContext();\n ctx.inuse = false;\n }\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 table.scenegraph.updateChartState(params?.datum);\n }\n });\n this.activeChartInstance.on('brushEnd', (params: any) => {\n table.scenegraph.updateChartState(params?.value?.inBrushData);\n Chart.temp = 0;\n setTimeout(() => {\n Chart.temp = 1;\n }, 0);\n });\n (table as PivotChart)._bindChartEvent?.(this.activeChartInstance);\n }\n static temp: number = 1;\n /**\n * 图表失去焦点\n * @param table\n */\n deactivate() {\n this.active = false;\n // move active chart view box out of browser view\n // to avoid async render when chart is releasd\n this.activeChartInstance?.updateViewBox(\n {\n x1: -1000,\n x2: -800,\n y1: -1000,\n y2: -800\n },\n false,\n false\n );\n this.activeChartInstance?.release();\n this.activeChartInstance = null;\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 return {\n x1: Math.ceil(cellGroup.globalAABBBounds.x1 + padding[3] + table.scrollLeft),\n x2: Math.ceil(cellGroup.globalAABBBounds.x1 + cellGroup.attribute.width - padding[1] + table.scrollLeft),\n y1: Math.ceil(cellGroup.globalAABBBounds.y1 + padding[0] + table.scrollTop),\n y2: Math.ceil(cellGroup.globalAABBBounds.y1 + cellGroup.attribute.height - padding[2] + table.scrollTop)\n };\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\n 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 } else if (layoutMap.isLeftBottomCorner(col, row) || layoutMap.isRightTopCorner(col, row)) {\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.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 }\n\n return bodyBound;\n}\n"]}
|
|
@@ -20,25 +20,7 @@ export function renderChart(chart) {
|
|
|
20
20
|
var _a, _b, _c, _d, _e, _f;
|
|
21
21
|
const {axes: axes, dataId: dataId, data: data, spec: spec} = chart.attribute, {chartInstance: chartInstance} = chart, viewBox = chart.getViewBox();
|
|
22
22
|
viewBox.x2 <= viewBox.x1 && (viewBox.x2 = viewBox.x1 + 1), viewBox.y2 <= viewBox.y1 && (viewBox.y2 = viewBox.y1 + 1),
|
|
23
|
-
|
|
24
|
-
x1: 0,
|
|
25
|
-
x2: viewBox.x2 - viewBox.x1,
|
|
26
|
-
y1: 0,
|
|
27
|
-
y2: viewBox.y2 - viewBox.y1
|
|
28
|
-
}, !1, !1);
|
|
29
|
-
const chartStage = chartInstance.getStage(), matrix = chart.globalTransMatrix.clone(), stageMatrix = chart.stage.window.getViewBoxTransform();
|
|
30
|
-
matrix.multiply(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f),
|
|
31
|
-
chartStage.window.setViewBoxTransform && chartStage.window.setViewBoxTransform(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);
|
|
32
|
-
const {table: table} = chart.getRootNode();
|
|
33
|
-
let updateSpec = !1;
|
|
34
|
-
if (table.options.specFormat) {
|
|
35
|
-
const formatResult = table.options.specFormat(chart.attribute.spec);
|
|
36
|
-
if (formatResult.needFormatSpec && formatResult.spec) {
|
|
37
|
-
const spec = formatResult.spec;
|
|
38
|
-
chartInstance.updateSpecSync(spec), updateSpec = !0;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (!updateSpec) if (null == axes || axes.forEach(((axis, index) => {
|
|
23
|
+
null == axes || axes.forEach(((axis, index) => {
|
|
42
24
|
var _a, _b, _c, _d;
|
|
43
25
|
"band" === axis.type ? chartInstance.updateModelSpec({
|
|
44
26
|
type: "axes",
|
|
@@ -52,7 +34,13 @@ export function renderChart(chart) {
|
|
|
52
34
|
min: null !== (_b = null === (_a = axis.range) || void 0 === _a ? void 0 : _a.min) && void 0 !== _b ? _b : 0,
|
|
53
35
|
max: null !== (_d = null === (_c = axis.range) || void 0 === _c ? void 0 : _c.max) && void 0 !== _d ? _d : 0
|
|
54
36
|
}, !0);
|
|
55
|
-
})),
|
|
37
|
+
})), chartInstance.updateViewBox({
|
|
38
|
+
x1: viewBox.x1 - chart.getRootNode().table.scrollLeft,
|
|
39
|
+
x2: viewBox.x2 - chart.getRootNode().table.scrollLeft,
|
|
40
|
+
y1: viewBox.y1 - chart.getRootNode().table.scrollTop,
|
|
41
|
+
y2: viewBox.y2 - chart.getRootNode().table.scrollTop
|
|
42
|
+
}, !1, !1);
|
|
43
|
+
if (null === (_b = null === (_a = chart.getRootNode().table.internalProps.layoutMap) || void 0 === _a ? void 0 : _a.updateDataStateToActiveChartInstance) || void 0 === _b || _b.call(_a, chartInstance),
|
|
56
44
|
"string" == typeof dataId) chartInstance.updateDataSync(dataId, null != data ? data : []); else {
|
|
57
45
|
const dataBatch = [];
|
|
58
46
|
for (const dataIdStr in dataId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/graphic/contributions/chart-render-helper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAa,EAAE,CAAC;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAY,EAAE,CAAC;AAKhD,IAAI,qBAAqB,GAAG,CAAC,CAAC;AAC9B,IAAI,oBAAoB,GAAG,KAAK,CAAC;AACjC,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;QAClB,qBAAqB,GAAG,KAAK,CAAC;KAC/B;AACH,CAAC;AACD,MAAM,UAAU,oBAAoB;IAClC,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,KAAY;;IACtC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;IACrD,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;IAGnC,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE;QAC5B,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;KAC7B;IACD,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE;QAC5B,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;KAC7B;IAGD,aAAa,CAAC,aAAa,CAOzB;QACE,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE;QAC3B,EAAE,EAAE,CAAC;QACL,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE;KAC5B,EACD,KAAK,EACL,KAAK,CACN,CAAC;IAEF,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAC7D,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1G,UAAU,CAAC,MAAM,CAAC,mBAAmB;QACnC,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAEpG,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,WAAW,EAAS,CAAC;IAE7C,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;QAC5B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,YAAY,CAAC,cAAc,IAAI,YAAY,CAAC,IAAI,EAAE;YACpD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;YAC/B,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACnC,UAAU,GAAG,IAAI,CAAC;SACnB;KACF;IAED,IAAI,CAAC,UAAU,EAAE;QACf,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAC,CAAC,IAAS,EAAE,KAAa,EAAE,EAAE;;YACzC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;gBAIxB,aAAa,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;aAChG;iBAAM;gBAML,aAAa,CAAC,mBAAmB,CAC/B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EACvB,EAAE,GAAG,EAAE,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,GAAG,mCAAI,CAAC,EAAE,GAAG,EAAE,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,GAAG,mCAAI,CAAC,EAAE,EACxD,IAAI,CACL,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAGH,MAAA,MAAC,KAAK,CAAC,aAAa,CAAC,SAAiB,0CAAE,oCAAoC,mDAAG,aAAa,CAAC,CAAC;QAE9F,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC,CAAC;SAClD;aAAM;YACL,MAAM,SAAS,GAAG,EAAE,CAAC;YACrB,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE;gBAC9B,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;gBACzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,EAAE,MAAK,SAAS,CAAA,EAAA,CAAC,CAAC;gBAC7E,SAAS,CAAC,IAAI,CAAC;oBACb,EAAE,EAAE,SAAS;oBACb,MAAM,EAAE,cAAc;wBACpB,CAAC,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE;4BACzB,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;wBAC7C,CAAC,CAAC,mCAAI,EAAE;wBACV,CAAC,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE;oBACd,MAAM,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,MAAM;iBAC7B,CAAC,CAAC;gBAEH,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;oBACrC,aAAa,CAAC,cAAc,CAC1B,SAAS,EACT,cAAc;wBACZ,CAAC,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE;4BACzB,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;wBAC7C,CAAC,CAAC,mCAAI,EAAE;wBACV,CAAC,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CACf,CAAC;iBACH;aACF;YACD,MAAA,aAAa,CAAC,kBAAkB,8DAAG,SAAS,CAAC,CAAC;SAC/C;KACF;IAED,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAc9B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAU;IAC9C,oBAAoB,GAAG,IAAI,CAAC;IAG5B,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;QAGnC,qBAAqB,CAAC,GAAG,EAAE;YAEzB,MAAM,cAAc,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC7E,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAEjD,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAE7B,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnB,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;KAKJ;SAAM;QACL,oBAAoB,GAAG,KAAK,CAAC;KAC9B;AACH,CAAC;AAED,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,SAAS,gBAAgB,CAAC,KAAa,EAAE,KAAY;;IACnD,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACxC,IAAI,SAAS,GAAG,oBAAoB,IAAI,UAAU,GAAG,oBAAoB,EAAE;QACzE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAE3B,MAAA,KAAK,CAAC,aAAa,0CAAE,OAAO,EAAE,CAAC;YAC/B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;YAC3B,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;SAC3C;QACD,OAAO;KACR;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE;QACnC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,EAAE,GAAG,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,GAAG,GAAG,oBAAoB,CAAC;YAC1C,MAAM,MAAM,GAAG,GAAG,GAAG,oBAAoB,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,oBAAoB,CAAC;YACnG,MAAM,IAAI,GAAG,MAAM,GAAG,oBAAoB,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,oBAAoB,CAAC;YACrG,MAAM,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAE5C,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC7C,WAAW,CAAC,IAAI,CAAC;gBACf,MAAM;gBACN,CAAC,EAAE,MAAM;gBACT,CAAC,EAAE,MAAM;gBACT,KAAK;gBACL,MAAM;aACP,CAAC,CAAC;SACJ;KACF;IAED,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;AAClC,CAAC","file":"chart-render-helper.js","sourcesContent":["import type { IStage } from './../../../vrender';\nimport type { Chart } from '../chart';\nimport { Bounds, isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\nexport const cancelRenderChartQueue = false;\nexport const chartRenderKeys: string[] = [];\nexport const chartRenderQueueList: Chart[] = [];\ninterface chartRenderQueueItem {\n chart: Chart;\n}\n//每次消费的图表数量\nlet batchRenderChartCount = 5;\nlet isHandlingChartQueue = false;\nexport function setBatchRenderChartCount(count: number) {\n if (isValid(count)) {\n batchRenderChartCount = count;\n }\n}\nexport function IsHandlingChartQueue() {\n return isHandlingChartQueue;\n}\nexport function renderChart(chart: Chart) {\n const { axes, dataId, data, spec } = chart.attribute;\n const { chartInstance } = chart;\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.clone();\n const stageMatrix = chart.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 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);\n if (formatResult.needFormatSpec && formatResult.spec) {\n const spec = formatResult.spec;\n chartInstance.updateSpecSync(spec);\n 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 { min: axis.range?.min ?? 0, max: axis.range?.max ?? 0 },\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') {\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 chartInstance.updateFullDataSync?.(dataBatch);\n }\n }\n\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 requestAnimationFrame(() => {\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;\nfunction cacheStageCanvas(stage: IStage, chart: Chart) {\n const { viewWidth, viewHeight } = stage;\n if (viewWidth < cacheCanvasSizeLimit && viewHeight < cacheCanvasSizeLimit) {\n chart.cacheCanvas = stage.toCanvas();\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 = stage.toCanvas(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"]}
|
|
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 type { IStage } from './../../../vrender';\nimport type { Chart } from '../chart';\nimport { Bounds, isValid } from '@visactor/vutils';\nimport type { BaseTableAPI } from '../../../ts-types/base-table';\nexport const cancelRenderChartQueue = false;\nexport const chartRenderKeys: string[] = [];\nexport const chartRenderQueueList: Chart[] = [];\ninterface chartRenderQueueItem {\n chart: Chart;\n}\n//每次消费的图表数量\nlet batchRenderChartCount = 5;\nlet isHandlingChartQueue = false;\nexport function setBatchRenderChartCount(count: number) {\n if (isValid(count)) {\n batchRenderChartCount = count;\n }\n}\nexport function IsHandlingChartQueue() {\n return isHandlingChartQueue;\n}\nexport function renderChart(chart: Chart) {\n const { axes, dataId, data, spec } = chart.attribute;\n const { chartInstance } = chart;\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 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 { min: axis.range?.min ?? 0, max: axis.range?.max ?? 0 },\n true\n );\n }\n });\n\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 false,\n false\n );\n\n // to be fixed: update state everytimes render, need be fix by vchart\n const table = (chart.getRootNode() as any).table as BaseTableAPI;\n (table.internalProps.layoutMap as any)?.updateDataStateToActiveChartInstance?.(chartInstance);\n\n if (typeof dataId === 'string') {\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 chartInstance.updateFullDataSync?.(dataBatch);\n }\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 requestAnimationFrame(() => {\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;\nfunction cacheStageCanvas(stage: IStage, chart: Chart) {\n const { viewWidth, viewHeight } = stage;\n if (viewWidth < cacheCanvasSizeLimit && viewHeight < cacheCanvasSizeLimit) {\n chart.cacheCanvas = stage.toCanvas();\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 = stage.toCanvas(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"]}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import type { IGraphicAttribute, IContext2d, IDrawContext, IGraphicRender, IGraphicRenderDrawParams, IMarkAttribute, IRenderService, IThemeAttribute } from './../../../vrender';
|
|
2
|
-
import { BaseRender } from './../../../vrender';
|
|
3
2
|
import type { Chart } from '../chart';
|
|
4
3
|
export declare const ChartRender: unique symbol;
|
|
5
4
|
export declare const ChartRenderContribution: unique symbol;
|
|
6
|
-
export declare class DefaultCanvasChartRender
|
|
5
|
+
export declare class DefaultCanvasChartRender implements IGraphicRender {
|
|
7
6
|
type: 'chart';
|
|
8
7
|
numberType: number;
|
|
9
8
|
drawShape(chart: Chart, context: IContext2d, x: number, y: number, drawContext: IDrawContext, params?: IGraphicRenderDrawParams, fillCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean, strokeCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean): void;
|
|
@@ -4,7 +4,7 @@ var __decorate = this && this.__decorate || function(decorators, target, key, de
|
|
|
4
4
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
5
5
|
};
|
|
6
6
|
|
|
7
|
-
import { getTheme, injectable
|
|
7
|
+
import { getTheme, injectable } from "./../../../vrender";
|
|
8
8
|
|
|
9
9
|
import { CHART_NUMBER_TYPE } from "../chart";
|
|
10
10
|
|
|
@@ -16,57 +16,41 @@ export const ChartRender = Symbol.for("ChartRender");
|
|
|
16
16
|
|
|
17
17
|
export const ChartRenderContribution = Symbol.for("ChartRenderContribution");
|
|
18
18
|
|
|
19
|
-
let DefaultCanvasChartRender = class
|
|
19
|
+
let DefaultCanvasChartRender = class {
|
|
20
20
|
constructor() {
|
|
21
|
-
|
|
21
|
+
this.numberType = CHART_NUMBER_TYPE;
|
|
22
22
|
}
|
|
23
23
|
drawShape(chart, context, x, y, drawContext, params, fillCb, strokeCb) {
|
|
24
24
|
var _a, _b, _c, _d;
|
|
25
25
|
const groupAttribute = getTheme(chart, null == params ? void 0 : params.theme).group, {dataId: dataId, data: data, spec: spec} = chart.attribute, {width: width = groupAttribute.width, height: height = groupAttribute.height} = (chart.getViewBox(),
|
|
26
|
-
chart.attribute), {
|
|
26
|
+
chart.attribute), {active: active, cacheCanvas: cacheCanvas, activeChartInstance: activeChartInstance} = chart;
|
|
27
27
|
if (!active && cacheCanvas) isArray(cacheCanvas) ? cacheCanvas.forEach((singleCacheCanvas => {
|
|
28
28
|
const {x: x, y: y, width: width, height: height, canvas: canvas} = singleCacheCanvas;
|
|
29
29
|
context.drawImage(canvas, x, y, width, height);
|
|
30
|
-
})) : context.drawImage(cacheCanvas, x, y, width, height); else if (activeChartInstance) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return void
|
|
36
|
-
}
|
|
30
|
+
})) : context.drawImage(cacheCanvas, x, y, width, height); else if (activeChartInstance) if ("string" == typeof dataId) activeChartInstance.updateDataSync(dataId, null != data ? data : []); else {
|
|
31
|
+
const dataBatch = [];
|
|
32
|
+
for (const dataIdStr in dataId) {
|
|
33
|
+
const dataIdAndField = dataId[dataIdStr], series = spec.series.find((item => {
|
|
34
|
+
var _a;
|
|
35
|
+
return (null === (_a = null == item ? void 0 : item.data) || void 0 === _a ? void 0 : _a.id) === dataIdStr;
|
|
36
|
+
}));
|
|
37
|
+
dataBatch.push({
|
|
38
|
+
id: dataIdStr,
|
|
39
|
+
values: dataIdAndField ? null !== (_a = null == data ? void 0 : data.filter((item => item.hasOwnProperty(dataIdAndField)))) && void 0 !== _a ? _a : [] : null != data ? data : [],
|
|
40
|
+
fields: null === (_b = null == series ? void 0 : series.data) || void 0 === _b ? void 0 : _b.fields
|
|
41
|
+
}), activeChartInstance.updateFullDataSync || activeChartInstance.updateDataSync(dataIdStr, dataIdAndField ? null !== (_c = null == data ? void 0 : data.filter((item => item.hasOwnProperty(dataIdAndField)))) && void 0 !== _c ? _c : [] : null != data ? data : []);
|
|
37
42
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
x2: viewBox.x2 - viewBox.x1,
|
|
42
|
-
y1: 0,
|
|
43
|
-
y2: viewBox.y2 - viewBox.y1
|
|
44
|
-
}, !1, !1);
|
|
45
|
-
const chartStage = activeChartInstance.getStage();
|
|
46
|
-
chartStage.needRender = !0;
|
|
47
|
-
const matrix = chart.globalTransMatrix.clone(), stageMatrix = chart.stage.window.getViewBoxTransform().clone();
|
|
48
|
-
if (stageMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f),
|
|
49
|
-
chartStage.window.setViewBoxTransform(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f),
|
|
50
|
-
"string" == typeof dataId) activeChartInstance.updateDataSync(dataId, null != data ? data : []); else {
|
|
51
|
-
const dataBatch = [];
|
|
52
|
-
for (const dataIdStr in dataId) {
|
|
53
|
-
const dataIdAndField = dataId[dataIdStr], series = spec.series.find((item => {
|
|
54
|
-
var _a;
|
|
55
|
-
return (null === (_a = null == item ? void 0 : item.data) || void 0 === _a ? void 0 : _a.id) === dataIdStr;
|
|
56
|
-
}));
|
|
57
|
-
dataBatch.push({
|
|
58
|
-
id: dataIdStr,
|
|
59
|
-
values: dataIdAndField ? null !== (_a = null == data ? void 0 : data.filter((item => item.hasOwnProperty(dataIdAndField)))) && void 0 !== _a ? _a : [] : null != data ? data : [],
|
|
60
|
-
fields: null === (_b = null == series ? void 0 : series.data) || void 0 === _b ? void 0 : _b.fields
|
|
61
|
-
}), activeChartInstance.updateFullDataSync || activeChartInstance.updateDataSync(dataIdStr, dataIdAndField ? null !== (_c = null == data ? void 0 : data.filter((item => item.hasOwnProperty(dataIdAndField)))) && void 0 !== _c ? _c : [] : null != data ? data : []);
|
|
62
|
-
}
|
|
63
|
-
null === (_d = activeChartInstance.updateFullDataSync) || void 0 === _d || _d.call(activeChartInstance, dataBatch);
|
|
64
|
-
}
|
|
65
|
-
} else table.internalProps.renderChartAsync ? (-1 === chartRenderKeys.indexOf(`${chart.parent.col}+${chart.parent.row}`) && (chartRenderKeys.push(`${chart.parent.col}+${chart.parent.row}`),
|
|
66
|
-
chartRenderQueueList.push(chart)), IsHandlingChartQueue() || startRenderChartQueue(table)) : renderChart(chart);
|
|
43
|
+
null === (_d = activeChartInstance.updateFullDataSync) || void 0 === _d || _d.call(activeChartInstance, dataBatch);
|
|
44
|
+
} else chart.getRootNode().table.internalProps.renderChartAsync ? (-1 === chartRenderKeys.indexOf(`${chart.parent.col}+${chart.parent.row}`) && (chartRenderKeys.push(`${chart.parent.col}+${chart.parent.row}`),
|
|
45
|
+
chartRenderQueueList.push(chart)), IsHandlingChartQueue() || startRenderChartQueue(chart.getRootNode().table)) : renderChart(chart);
|
|
67
46
|
}
|
|
68
47
|
draw(chart, renderService, drawContext, params) {
|
|
69
|
-
|
|
48
|
+
const {context: context} = drawContext;
|
|
49
|
+
if (!context) return;
|
|
50
|
+
const {clip: clip} = chart.attribute;
|
|
51
|
+
clip ? context.save() : context.highPerformanceSave(), context.transformFromMatrix(chart.transMatrix, !0),
|
|
52
|
+
context.beginPath(), params.skipDraw ? this.drawShape(chart, context, 0, 0, drawContext, params, (() => !1), (() => !1)) : this.drawShape(chart, context, 0, 0, drawContext),
|
|
53
|
+
clip ? context.restore() : context.highPerformanceRestore();
|
|
70
54
|
}
|
|
71
55
|
};
|
|
72
56
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scenegraph/graphic/contributions/chart-render.ts"],"names":[],"mappings":";;;;;;AAUA,OAAO,EAEL,QAAQ,EAIR,UAAU,EAEV,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAGtE,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,UAAiB;IAAxD;;QAEL,eAAU,GAAW,iBAAiB,CAAC;IAiLzC,CAAC;IA/KC,SAAS,CACP,KAAY,EACZ,OAAmB,EACnB,CAAS,EACT,CAAS,EACT,WAAyB,EACzB,MAAiC,EACjC,MAIY,EACZ,QAIY;;QAMZ,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,CAAC,KAAK,CAAC;QAE5D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;QAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,EAAE,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;QACzF,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,WAAW,EAAS,CAAC;QAE7C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC;QAE3D,IAAI,CAAC,MAAM,IAAI,WAAW,EAAE;YAC1B,IAAI,OAAO,CAAC,WAAW,CAAC,EAAE;gBACxB,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;oBACtC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC;oBAC1D,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;aACrD;SACF;aAAM,IAAI,mBAAmB,EAAE;YAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC5B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACpE,IAAI,YAAY,CAAC,cAAc,IAAI,YAAY,CAAC,IAAI,EAAE;oBACpD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;oBAC/B,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBACzC,OAAO;iBACR;aACF;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;YACnC,mBAAmB,CAAC,aAAa,CAO/B;gBACE,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE;gBAC3B,EAAE,EAAE,CAAC;gBACL,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE;aAC5B,EACD,KAAK,EACL,KAAK,CACN,CAAC;YAGF,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAClD,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;YAE7B,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,CAAC;YAErE,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;YACjF,UAAU,CAAC,MAAM,CAAC,mBAAmB,CACnC,WAAW,CAAC,CAAC,EACb,WAAW,CAAC,CAAC,EACb,WAAW,CAAC,CAAC,EACb,WAAW,CAAC,CAAC,EACb,WAAW,CAAC,CAAC,EACb,WAAW,CAAC,CAAC,CACd,CAAC;YAEF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC9B,mBAAmB,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC,CAAC;aACxD;iBAAM;gBACL,MAAM,SAAS,GAAG,EAAE,CAAC;gBAErB,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE;oBAC9B,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;oBACzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,0CAAE,EAAE,MAAK,SAAS,CAAA,EAAA,CAAC,CAAC;oBAC7E,SAAS,CAAC,IAAI,CAAC;wBACb,EAAE,EAAE,SAAS;wBACb,MAAM,EAAE,cAAc;4BACpB,CAAC,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE;gCACzB,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;4BAC7C,CAAC,CAAC,mCAAI,EAAE;4BACV,CAAC,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE;wBACd,MAAM,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,MAAM;qBAC7B,CAAC,CAAC;oBACH,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;wBAC3C,mBAAmB,CAAC,cAAc,CAChC,SAAS,EACT,cAAc;4BACZ,CAAC,CAAC,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE;gCACzB,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;4BAC7C,CAAC,CAAC,mCAAI,EAAE;4BACV,CAAC,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CACf,CAAC;qBACH;iBACF;gBACD,MAAA,mBAAmB,CAAC,kBAAkB,oEAAG,SAAS,CAAC,CAAC;aACrD;SAGF;aAAM;YACL,IAAI,KAAK,CAAC,aAAa,CAAC,gBAAgB,EAAE;gBACxC,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC7E,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;oBAChE,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAClC;gBAED,IAAI,CAAC,oBAAoB,EAAE,EAAE;oBAC3B,qBAAqB,CAAC,KAAK,CAAC,CAAC;iBAC9B;aACF;iBAAM;gBACL,WAAW,CAAC,KAAK,CAAC,CAAC;aACpB;SACF;IACH,CAAC;IAwCD,IAAI,CAAC,KAAY,EAAE,aAA6B,EAAE,WAAyB,EAAE,MAAiC;QAE5G,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;CACF,CAAA;AAnLY,wBAAwB;IADpC,UAAU,EAAE;GACA,wBAAwB,CAmLpC;SAnLY,wBAAwB","file":"chart-render.js","sourcesContent":["import type {\n IGraphicAttribute,\n IContext2d,\n IDrawContext,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IMarkAttribute,\n IRenderService,\n IThemeAttribute\n} from './../../../vrender';\nimport {\n ContributionProvider,\n getTheme,\n IGroupRenderContribution,\n createImage,\n inject,\n injectable,\n named,\n BaseRender\n} from './../../../vrender';\nimport type { Chart } from '../chart';\nimport { CHART_NUMBER_TYPE } from '../chart';\nimport {\n IsHandlingChartQueue,\n chartRenderKeys,\n chartRenderQueueList,\n renderChart,\n startRenderChartQueue\n} from './chart-render-helper';\nimport { isArray } from '@visactor/vutils';\n\nexport const ChartRender = Symbol.for('ChartRender');\nexport const ChartRenderContribution = Symbol.for('ChartRenderContribution');\n\n@injectable()\nexport class DefaultCanvasChartRender extends BaseRender<Chart> implements IGraphicRender {\n type: 'chart';\n numberType: number = CHART_NUMBER_TYPE;\n\n drawShape(\n chart: Chart,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // console.log(chart.parent.col, chart.parent.row);\n // if (chart.parent.col !== 2 || chart.parent.row !== 2) {\n // return;\n // }\n const groupAttribute = getTheme(chart, params?.theme).group;\n\n const { dataId, data, spec } = chart.attribute;\n const viewBox = chart.getViewBox();\n const { width = groupAttribute.width, height = groupAttribute.height } = chart.attribute;\n const { table } = chart.getRootNode() as any;\n\n const { active, cacheCanvas, activeChartInstance } = chart;\n // console.log('render chart', chart.parent.col, chart.parent.row, viewBox, cacheCanvas);\n if (!active && cacheCanvas) {\n if (isArray(cacheCanvas)) {\n cacheCanvas.forEach(singleCacheCanvas => {\n const { x, y, width, height, canvas } = singleCacheCanvas;\n context.drawImage(canvas, x, y, width, height);\n });\n } else {\n context.drawImage(cacheCanvas, x, y, width, height);\n }\n } else if (activeChartInstance) {\n if (table.options.specFormat) {\n const formatResult = table.options.specFormat(chart.attribute.spec);\n if (formatResult.needFormatSpec && formatResult.spec) {\n const spec = formatResult.spec;\n activeChartInstance.updateSpecSync(spec);\n return;\n }\n }\n\n const viewBox = chart.getViewBox();\n activeChartInstance.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 // console.log(viewBox);\n\n const chartStage = activeChartInstance.getStage();\n chartStage.needRender = true;\n // chartStage.background = 'red';\n const matrix = chart.globalTransMatrix.clone();\n const stageMatrix = chart.stage.window.getViewBoxTransform().clone();\n // matrix.multiply(stageMatrix.a, stageMatrix.b, stageMatrix.c, stageMatrix.d, stageMatrix.e, stageMatrix.f);\n stageMatrix.multiply(matrix.a, matrix.b, matrix.c, matrix.d, matrix.e, matrix.f);\n chartStage.window.setViewBoxTransform(\n stageMatrix.a,\n stageMatrix.b,\n stageMatrix.c,\n stageMatrix.d,\n stageMatrix.e,\n stageMatrix.f\n );\n\n if (typeof dataId === 'string') {\n activeChartInstance.updateDataSync(dataId, data ?? []);\n } else {\n const dataBatch = [];\n // 如果是组合图有series系列 需要组个设置数据 这里的data包括的单元格完整数据 需要根据key过滤\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 if (!activeChartInstance.updateFullDataSync) {\n activeChartInstance.updateDataSync(\n dataIdStr,\n dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? []\n );\n }\n }\n activeChartInstance.updateFullDataSync?.(dataBatch);\n }\n // debugger;\n // console.log(drawContext.context.canvas.toDataURL());\n } else {\n if (table.internalProps.renderChartAsync) {\n if (chartRenderKeys.indexOf(`${chart.parent.col}+${chart.parent.row}`) === -1) {\n chartRenderKeys.push(`${chart.parent.col}+${chart.parent.row}`);\n chartRenderQueueList.push(chart);\n }\n //判断是否已经开启渲染队列\n if (!IsHandlingChartQueue()) {\n startRenderChartQueue(table);\n }\n } else {\n renderChart(chart);\n }\n }\n }\n\n // draw(chart: Chart, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n // const { context } = drawContext;\n // if (!context) {\n // return;\n // }\n // // debugger;\n // const { clip } = chart.attribute;\n // if (clip) {\n // context.save();\n // } else {\n // context.highPerformanceSave();\n // }\n // // group直接transform\n // context.transformFromMatrix(chart.transMatrix, true);\n\n // context.beginPath();\n // // 如果跳过绘制,那就不绘制\n // if (params.skipDraw) {\n // this.drawShape(\n // chart,\n // context,\n // 0,\n // 0,\n // drawContext,\n // params,\n // () => false,\n // () => false\n // );\n // } else {\n // this.drawShape(chart, context, 0, 0, drawContext);\n // }\n\n // if (clip) {\n // context.restore();\n // } else {\n // context.highPerformanceRestore();\n // }\n // }\n draw(chart: Chart, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n // const circleAttribute = getTheme(circle, params?.theme).circle;\n this._draw(chart, {} as any, false, drawContext, params);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scenegraph/graphic/contributions/chart-render.ts"],"names":[],"mappings":"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","file":"chart-render.js","sourcesContent":["import type {\n IGraphicAttribute,\n IContext2d,\n IDrawContext,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IMarkAttribute,\n IRenderService,\n IThemeAttribute\n} from './../../../vrender';\nimport {\n ContributionProvider,\n getTheme,\n IGroupRenderContribution,\n createImage,\n inject,\n injectable,\n named\n} from './../../../vrender';\nimport type { Chart } from '../chart';\nimport { CHART_NUMBER_TYPE } from '../chart';\nimport {\n IsHandlingChartQueue,\n chartRenderKeys,\n chartRenderQueueList,\n renderChart,\n startRenderChartQueue\n} from './chart-render-helper';\nimport { isArray } from '@visactor/vutils';\n\nexport const ChartRender = Symbol.for('ChartRender');\nexport const ChartRenderContribution = Symbol.for('ChartRenderContribution');\n\n@injectable()\nexport class DefaultCanvasChartRender implements IGraphicRender {\n type: 'chart';\n numberType: number = CHART_NUMBER_TYPE;\n\n drawShape(\n chart: Chart,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n const groupAttribute = getTheme(chart, params?.theme).group;\n\n const { dataId, data, spec } = chart.attribute;\n const viewBox = chart.getViewBox();\n const { width = groupAttribute.width, height = groupAttribute.height } = chart.attribute;\n\n const { active, cacheCanvas, activeChartInstance } = chart;\n // console.log('render chart', chart.parent.col, chart.parent.row, viewBox, cacheCanvas);\n if (!active && cacheCanvas) {\n if (isArray(cacheCanvas)) {\n cacheCanvas.forEach(singleCacheCanvas => {\n const { x, y, width, height, canvas } = singleCacheCanvas;\n context.drawImage(canvas, x, y, width, height);\n });\n } else {\n context.drawImage(cacheCanvas, x, y, width, height);\n }\n } else if (activeChartInstance) {\n if (typeof dataId === 'string') {\n activeChartInstance.updateDataSync(dataId, data ?? []);\n } else {\n const dataBatch = [];\n // 如果是组合图有series系列 需要组个设置数据 这里的data包括的单元格完整数据 需要根据key过滤\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 if (!activeChartInstance.updateFullDataSync) {\n activeChartInstance.updateDataSync(\n dataIdStr,\n dataIdAndField\n ? data?.filter((item: any) => {\n return item.hasOwnProperty(dataIdAndField);\n }) ?? []\n : data ?? []\n );\n }\n }\n activeChartInstance.updateFullDataSync?.(dataBatch);\n }\n } else {\n if ((chart.getRootNode() as any).table.internalProps.renderChartAsync) {\n if (chartRenderKeys.indexOf(`${chart.parent.col}+${chart.parent.row}`) === -1) {\n chartRenderKeys.push(`${chart.parent.col}+${chart.parent.row}`);\n chartRenderQueueList.push(chart);\n }\n //判断是否已经开启渲染队列\n if (!IsHandlingChartQueue()) {\n startRenderChartQueue((chart.getRootNode() as any).table);\n }\n } else {\n renderChart(chart);\n }\n }\n }\n\n draw(chart: Chart, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const { context } = drawContext;\n if (!context) {\n return;\n }\n // debugger;\n const { clip } = chart.attribute;\n if (clip) {\n context.save();\n } else {\n context.highPerformanceSave();\n }\n // group直接transform\n context.transformFromMatrix(chart.transMatrix, true);\n\n context.beginPath();\n // 如果跳过绘制,那就不绘制\n if (params.skipDraw) {\n this.drawShape(\n chart,\n context,\n 0,\n 0,\n drawContext,\n params,\n () => false,\n () => false\n );\n } else {\n this.drawShape(chart, context, 0, 0, drawContext);\n }\n\n if (clip) {\n context.restore();\n } else {\n context.highPerformanceRestore();\n }\n }\n}\n"]}
|
|
@@ -170,6 +170,10 @@ export function updateCell(col, row, table, addNew) {
|
|
|
170
170
|
function updateCellContent(type, value, define, table, col, row, cellWidth, cellHeight, oldCellGroup, padding, textAlign, textBaseline, mayHaveIcon, addNew, cellTheme, range, customResult) {
|
|
171
171
|
var _a, _b;
|
|
172
172
|
if (isPromise(value) && (value = table.getCellValue(col, row)), !addNew && (oldCellGroup.row !== row || oldCellGroup.col !== col)) return null;
|
|
173
|
+
if (!addNew && oldCellGroup.parent && table.reactCustomLayout) {
|
|
174
|
+
const reactGroup = oldCellGroup.getChildByName("custom-container"), {col: col, row: row} = reactGroup;
|
|
175
|
+
table.reactCustomLayout.removeCustomCell(col, row);
|
|
176
|
+
}
|
|
173
177
|
const newCellGroup = createCell(type, value, define, table, col, row, table.getColWidth(col), cellWidth, cellHeight, addNew ? table.scenegraph.getColGroup(col) : oldCellGroup.parent, addNew ? 0 : table.scenegraph.getCellGroupY(row), padding, textAlign, textBaseline, mayHaveIcon, cellTheme, range, customResult);
|
|
174
178
|
return !addNew && oldCellGroup.parent && (oldCellGroup.parent.insertAfter(newCellGroup, oldCellGroup),
|
|
175
179
|
oldCellGroup.parent.removeChild(oldCellGroup), (null === (_a = table.scenegraph) || void 0 === _a ? void 0 : _a.proxy.cellCache.get(col)) && (null === (_b = table.scenegraph) || void 0 === _b || _b.proxy.cellCache.set(col, newCellGroup))),
|
|
@@ -185,8 +189,8 @@ function canUseFastUpdate(col, row, oldCellGroup, autoWrapText, table) {
|
|
|
185
189
|
export function dealWithMergeCellSize(range, cellWidth, cellHeight, padding, textAlign, textBaseline, table) {
|
|
186
190
|
for (let col = range.start.col; col <= range.end.col; col++) for (let row = range.start.row; row <= range.end.row; row++) {
|
|
187
191
|
const cellGroup = table.scenegraph.getCell(col, row, !0);
|
|
188
|
-
"cell" === cellGroup.role && range.start.row !== range.end.row && cellGroup.
|
|
189
|
-
"cell" === cellGroup.role && range.start.col !== range.end.col && cellGroup.
|
|
192
|
+
"cell" === cellGroup.role && range.start.row !== range.end.row && cellGroup.contentHeight !== cellHeight && updateCellContentHeight(cellGroup, cellHeight, cellHeight, table.isAutoRowHeight(row), padding, textAlign, textBaseline),
|
|
193
|
+
"cell" === cellGroup.role && range.start.col !== range.end.col && cellGroup.contentWidth !== cellWidth && updateCellContentWidth(cellGroup, cellWidth, cellHeight, 0, table.isAutoRowHeight(row), padding, textAlign, textBaseline, table.scenegraph),
|
|
190
194
|
cellGroup.contentWidth = cellWidth, cellGroup.contentHeight = cellHeight;
|
|
191
195
|
const rangeHeight = table.getRowHeight(row);
|
|
192
196
|
resizeCellGroup(cellGroup, table.getColWidth(col), rangeHeight, range, table);
|