@visactor/vtable 0.17.9-alpha.8 → 0.17.10-alpha.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/PivotChart.d.ts +1 -0
- package/cjs/PivotChart.js +24 -0
- package/cjs/PivotChart.js.map +1 -1
- package/cjs/components/axis/label-overlap.js.map +1 -1
- package/cjs/components/tooltip/TooltipHandler.js +1 -2
- package/cjs/components/tooltip/TooltipHandler.js.map +1 -1
- package/cjs/core/BaseTable.d.ts +2 -2
- package/cjs/core/BaseTable.js +1 -1
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/core/style.js +1 -2
- package/cjs/core/tableHelper.d.ts +2 -1
- package/cjs/core/tableHelper.js +14 -2
- package/cjs/core/tableHelper.js.map +1 -1
- package/cjs/dataset/dataset.js +5 -5
- package/cjs/dataset/dataset.js.map +1 -1
- package/cjs/event/event.d.ts +1 -1
- package/cjs/event/event.js +1 -1
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/listener/scroll-bar.js.map +1 -1
- package/cjs/event/listener/table-group.js +4 -4
- package/cjs/event/listener/table-group.js.map +1 -1
- package/cjs/event/listener/touch.js.map +1 -1
- package/cjs/event/media-click.js +1 -2
- package/cjs/event/pivot-chart/axis-click.js.map +1 -1
- package/cjs/event/scroll.js +1 -0
- package/cjs/event/util.d.ts +1 -1
- package/cjs/event/util.js.map +1 -1
- package/cjs/index.d.ts +2 -2
- package/cjs/index.js +2 -2
- package/cjs/index.js.map +1 -1
- package/cjs/layout/pivot-header-layout.js +2 -2
- package/cjs/layout/pivot-header-layout.js.map +1 -1
- package/cjs/render/jsx/index.d.ts +2 -3
- package/cjs/render/jsx/index.js +1 -1
- package/cjs/render/jsx/index.js.map +1 -1
- package/cjs/render/layout/arc.d.ts +2 -2
- package/cjs/render/layout/arc.js +1 -1
- package/cjs/render/layout/arc.js.map +1 -1
- package/cjs/render/layout/circle.d.ts +2 -2
- package/cjs/render/layout/circle.js +1 -1
- package/cjs/render/layout/circle.js.map +1 -1
- package/cjs/render/layout/container.d.ts +2 -2
- package/cjs/render/layout/container.js +1 -1
- package/cjs/render/layout/container.js.map +1 -1
- package/cjs/render/layout/group.d.ts +2 -2
- package/cjs/render/layout/group.js +1 -1
- package/cjs/render/layout/group.js.map +1 -1
- package/cjs/render/layout/icon.d.ts +2 -2
- package/cjs/render/layout/icon.js +1 -1
- package/cjs/render/layout/icon.js.map +1 -1
- package/cjs/render/layout/image.d.ts +2 -2
- package/cjs/render/layout/image.js +1 -1
- package/cjs/render/layout/image.js.map +1 -1
- package/cjs/render/layout/rect.d.ts +2 -2
- package/cjs/render/layout/rect.js +1 -1
- package/cjs/render/layout/rect.js.map +1 -1
- package/cjs/render/layout/text.d.ts +1 -1
- package/cjs/render/layout/text.js +1 -1
- package/cjs/render/layout/text.js.map +1 -1
- package/cjs/scenegraph/component/cell-content.d.ts +2 -2
- package/cjs/scenegraph/component/cell-content.js +1 -1
- package/cjs/scenegraph/component/cell-content.js.map +1 -1
- package/cjs/scenegraph/component/cell-mover.d.ts +1 -1
- package/cjs/scenegraph/component/cell-mover.js +1 -1
- package/cjs/scenegraph/component/cell-mover.js.map +1 -1
- package/cjs/scenegraph/component/custom.d.ts +1 -1
- package/cjs/scenegraph/component/custom.js +1 -1
- package/cjs/scenegraph/component/custom.js.map +1 -1
- package/cjs/scenegraph/component/drill-icon.js.map +1 -1
- package/cjs/scenegraph/component/menu.d.ts +1 -1
- package/cjs/scenegraph/component/menu.js +1 -1
- package/cjs/scenegraph/component/menu.js.map +1 -1
- package/cjs/scenegraph/component/table-component.d.ts +1 -1
- package/cjs/scenegraph/component/table-component.js +1 -1
- package/cjs/scenegraph/component/table-component.js.map +1 -1
- package/cjs/scenegraph/debug-tool/debug-tool.d.ts +1 -1
- package/cjs/scenegraph/debug-tool/debug-tool.js +1 -1
- package/cjs/scenegraph/debug-tool/debug-tool.js.map +1 -1
- package/cjs/scenegraph/debug-tool/index.d.ts +1 -1
- package/cjs/scenegraph/debug-tool/index.js.map +1 -1
- package/cjs/scenegraph/graphic/chart.d.ts +2 -2
- package/cjs/scenegraph/graphic/chart.js +1 -1
- package/cjs/scenegraph/graphic/chart.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/chart-render.d.ts +1 -1
- package/cjs/scenegraph/graphic/contributions/chart-render.js +1 -1
- package/cjs/scenegraph/graphic/contributions/chart-render.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.d.ts +2 -2
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js +4 -3
- package/cjs/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/image-contribution-render.d.ts +2 -2
- package/cjs/scenegraph/graphic/contributions/image-contribution-render.js +1 -1
- package/cjs/scenegraph/graphic/contributions/image-contribution-render.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/index.d.ts +1 -1
- package/cjs/scenegraph/graphic/contributions/index.js +1 -1
- package/cjs/scenegraph/graphic/contributions/index.js.map +1 -1
- package/cjs/scenegraph/graphic/contributions/rect-contribution-render.d.ts +2 -2
- package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js +1 -1
- package/cjs/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/scenegraph/graphic/group.d.ts +2 -2
- package/cjs/scenegraph/graphic/group.js +1 -1
- package/cjs/scenegraph/graphic/group.js.map +1 -1
- package/cjs/scenegraph/graphic/icon.d.ts +2 -2
- package/cjs/scenegraph/graphic/icon.js +1 -1
- package/cjs/scenegraph/graphic/icon.js.map +1 -1
- package/cjs/scenegraph/graphic/text.d.ts +2 -2
- package/cjs/scenegraph/graphic/text.js +1 -1
- package/cjs/scenegraph/graphic/text.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-helper.js +9 -6
- package/cjs/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/chart-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/chart-cell.js +2 -1
- package/cjs/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js +2 -1
- package/cjs/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/image-cell.js +3 -2
- package/cjs/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js +1 -1
- package/cjs/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js +3 -2
- package/cjs/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/text-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/text-cell.js +3 -2
- package/cjs/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
- package/cjs/scenegraph/group-creater/cell-type/video-cell.js +3 -2
- package/cjs/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
- package/cjs/scenegraph/group-creater/column-helper.d.ts +1 -1
- package/cjs/scenegraph/group-creater/column-helper.js +1 -0
- package/cjs/scenegraph/group-creater/column-helper.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/proxy.js +1 -1
- package/cjs/scenegraph/group-creater/progress/proxy.js.map +1 -1
- package/cjs/scenegraph/icon/icon-update.js +1 -1
- package/cjs/scenegraph/icon/icon-update.js.map +1 -1
- package/cjs/scenegraph/layout/compute-col-width.js +1 -1
- package/cjs/scenegraph/layout/compute-col-width.js.map +1 -1
- package/cjs/scenegraph/layout/compute-row-height.js +1 -1
- package/cjs/scenegraph/layout/compute-row-height.js.map +1 -1
- package/cjs/scenegraph/layout/move-cell.js.map +1 -1
- package/cjs/scenegraph/layout/update-col.js.map +1 -1
- package/cjs/scenegraph/layout/update-height.js.map +1 -1
- package/cjs/scenegraph/layout/update-width.js.map +1 -1
- package/cjs/scenegraph/scenegraph.d.ts +1 -1
- package/cjs/scenegraph/scenegraph.js +6 -8
- package/cjs/scenegraph/scenegraph.js.map +1 -1
- package/cjs/scenegraph/select/create-select-border.js +1 -1
- package/cjs/scenegraph/select/create-select-border.js.map +1 -1
- package/cjs/scenegraph/select/delete-select-border.js.map +1 -1
- package/cjs/scenegraph/select/update-select-border.js.map +1 -1
- package/cjs/scenegraph/stick-text/index.js.map +1 -1
- package/cjs/scenegraph/style/corner-cell.js.map +1 -1
- package/cjs/scenegraph/style/frame-border.d.ts +3 -1
- package/cjs/scenegraph/style/frame-border.js +21 -3
- package/cjs/scenegraph/style/frame-border.js.map +1 -1
- package/cjs/scenegraph/utils/padding.js +1 -1
- package/cjs/scenegraph/utils/padding.js.map +1 -1
- package/cjs/scenegraph/utils/render-service.d.ts +1 -1
- package/cjs/scenegraph/utils/render-service.js +1 -1
- package/cjs/scenegraph/utils/render-service.js.map +1 -1
- package/cjs/scenegraph/utils/text-icon-layout.d.ts +1 -1
- package/cjs/scenegraph/utils/text-icon-layout.js +1 -1
- package/cjs/scenegraph/utils/text-icon-layout.js.map +1 -1
- package/cjs/scenegraph/utils/text-measure.d.ts +2 -2
- package/cjs/scenegraph/utils/text-measure.js +1 -1
- package/cjs/scenegraph/utils/text-measure.js.map +1 -1
- package/cjs/scenegraph/utils/text-pos.d.ts +1 -1
- package/cjs/scenegraph/utils/text-pos.js.map +1 -1
- package/cjs/state/spark-line/index.js +1 -1
- package/cjs/state/spark-line/index.js.map +1 -1
- package/cjs/state/state.d.ts +1 -1
- package/cjs/state/state.js.map +1 -1
- package/cjs/themes/ARCO.js +1 -2
- package/cjs/themes/BRIGHT.js +2 -1
- package/cjs/tools/NumberMap.js +1 -1
- package/cjs/ts-types/component/title.d.ts +1 -1
- package/cjs/ts-types/component/title.js.map +1 -1
- package/cjs/ts-types/events.d.ts +3 -4
- package/cjs/ts-types/events.js.map +1 -1
- package/cjs/ts-types/table-engine.d.ts +4 -0
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/cjs/vrender.d.ts +3 -0
- package/cjs/vrender.js +34 -0
- package/cjs/vrender.js.map +1 -0
- package/dist/vtable.js +320 -167
- package/dist/vtable.min.js +2 -2
- package/es/PivotChart.d.ts +1 -0
- package/es/PivotChart.js +24 -0
- package/es/PivotChart.js.map +1 -1
- package/es/components/axis/label-overlap.js.map +1 -1
- package/es/components/tooltip/TooltipHandler.js +1 -2
- package/es/components/tooltip/TooltipHandler.js.map +1 -1
- package/es/core/BaseTable.d.ts +2 -2
- package/es/core/BaseTable.js +1 -1
- package/es/core/BaseTable.js.map +1 -1
- package/es/core/style.js +1 -2
- package/es/core/tableHelper.d.ts +2 -1
- package/es/core/tableHelper.js +13 -1
- package/es/core/tableHelper.js.map +1 -1
- package/es/dataset/dataset.js +5 -5
- package/es/dataset/dataset.js.map +1 -1
- package/es/event/event.d.ts +1 -1
- package/es/event/event.js +1 -1
- package/es/event/event.js.map +1 -1
- package/es/event/listener/scroll-bar.js.map +1 -1
- package/es/event/listener/table-group.js +4 -4
- package/es/event/listener/table-group.js.map +1 -1
- package/es/event/listener/touch.js.map +1 -1
- package/es/event/media-click.js +1 -2
- package/es/event/pivot-chart/axis-click.js.map +1 -1
- package/es/event/scroll.js +2 -1
- package/es/event/util.d.ts +1 -1
- package/es/event/util.js.map +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/es/index.js.map +1 -1
- package/es/layout/pivot-header-layout.js +1 -1
- package/es/layout/pivot-header-layout.js.map +1 -1
- package/es/render/jsx/index.d.ts +2 -3
- package/es/render/jsx/index.js +1 -1
- package/es/render/jsx/index.js.map +1 -1
- package/es/render/layout/arc.d.ts +2 -2
- package/es/render/layout/arc.js +1 -1
- package/es/render/layout/arc.js.map +1 -1
- package/es/render/layout/circle.d.ts +2 -2
- package/es/render/layout/circle.js +1 -1
- package/es/render/layout/circle.js.map +1 -1
- package/es/render/layout/container.d.ts +2 -2
- package/es/render/layout/container.js +1 -1
- package/es/render/layout/container.js.map +1 -1
- package/es/render/layout/group.d.ts +2 -2
- package/es/render/layout/group.js +1 -1
- package/es/render/layout/group.js.map +1 -1
- package/es/render/layout/icon.d.ts +2 -2
- package/es/render/layout/icon.js +1 -1
- package/es/render/layout/icon.js.map +1 -1
- package/es/render/layout/image.d.ts +2 -2
- package/es/render/layout/image.js +1 -1
- package/es/render/layout/image.js.map +1 -1
- package/es/render/layout/rect.d.ts +2 -2
- package/es/render/layout/rect.js +1 -1
- package/es/render/layout/rect.js.map +1 -1
- package/es/render/layout/text.d.ts +1 -1
- package/es/render/layout/text.js +1 -1
- package/es/render/layout/text.js.map +1 -1
- package/es/scenegraph/component/cell-content.d.ts +2 -2
- package/es/scenegraph/component/cell-content.js +1 -1
- package/es/scenegraph/component/cell-content.js.map +1 -1
- package/es/scenegraph/component/cell-mover.d.ts +1 -1
- package/es/scenegraph/component/cell-mover.js +1 -1
- package/es/scenegraph/component/cell-mover.js.map +1 -1
- package/es/scenegraph/component/custom.d.ts +1 -1
- package/es/scenegraph/component/custom.js +1 -1
- package/es/scenegraph/component/custom.js.map +1 -1
- package/es/scenegraph/component/drill-icon.js.map +1 -1
- package/es/scenegraph/component/menu.d.ts +1 -1
- package/es/scenegraph/component/menu.js +1 -1
- package/es/scenegraph/component/menu.js.map +1 -1
- package/es/scenegraph/component/table-component.d.ts +1 -1
- package/es/scenegraph/component/table-component.js +1 -1
- package/es/scenegraph/component/table-component.js.map +1 -1
- package/es/scenegraph/debug-tool/debug-tool.d.ts +1 -1
- package/es/scenegraph/debug-tool/debug-tool.js +1 -1
- package/es/scenegraph/debug-tool/debug-tool.js.map +1 -1
- package/es/scenegraph/debug-tool/index.d.ts +1 -1
- package/es/scenegraph/debug-tool/index.js.map +1 -1
- package/es/scenegraph/graphic/chart.d.ts +2 -2
- package/es/scenegraph/graphic/chart.js +1 -1
- package/es/scenegraph/graphic/chart.js.map +1 -1
- package/es/scenegraph/graphic/contributions/chart-render-helper.js.map +1 -1
- package/es/scenegraph/graphic/contributions/chart-render.d.ts +1 -1
- package/es/scenegraph/graphic/contributions/chart-render.js +1 -1
- package/es/scenegraph/graphic/contributions/chart-render.js.map +1 -1
- package/es/scenegraph/graphic/contributions/group-contribution-render.d.ts +2 -2
- package/es/scenegraph/graphic/contributions/group-contribution-render.js +3 -3
- package/es/scenegraph/graphic/contributions/group-contribution-render.js.map +1 -1
- package/es/scenegraph/graphic/contributions/image-contribution-render.d.ts +2 -2
- package/es/scenegraph/graphic/contributions/image-contribution-render.js +1 -1
- package/es/scenegraph/graphic/contributions/image-contribution-render.js.map +1 -1
- package/es/scenegraph/graphic/contributions/index.d.ts +1 -1
- package/es/scenegraph/graphic/contributions/index.js +1 -1
- package/es/scenegraph/graphic/contributions/index.js.map +1 -1
- package/es/scenegraph/graphic/contributions/rect-contribution-render.d.ts +2 -2
- package/es/scenegraph/graphic/contributions/rect-contribution-render.js +1 -1
- package/es/scenegraph/graphic/contributions/rect-contribution-render.js.map +1 -1
- package/es/scenegraph/graphic/group.d.ts +2 -2
- package/es/scenegraph/graphic/group.js +1 -1
- package/es/scenegraph/graphic/group.js.map +1 -1
- package/es/scenegraph/graphic/icon.d.ts +2 -2
- package/es/scenegraph/graphic/icon.js +1 -1
- package/es/scenegraph/graphic/icon.js.map +1 -1
- package/es/scenegraph/graphic/text.d.ts +2 -2
- package/es/scenegraph/graphic/text.js +1 -1
- package/es/scenegraph/graphic/text.js.map +1 -1
- package/es/scenegraph/group-creater/cell-helper.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-helper.js +8 -6
- package/es/scenegraph/group-creater/cell-helper.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/chart-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/chart-cell.js +2 -1
- package/es/scenegraph/group-creater/cell-type/chart-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/checkbox-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/checkbox-cell.js +2 -1
- package/es/scenegraph/group-creater/cell-type/checkbox-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/image-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/image-cell.js +3 -2
- package/es/scenegraph/group-creater/cell-type/image-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js +1 -1
- package/es/scenegraph/group-creater/cell-type/progress-bar-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/spark-line-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/spark-line-cell.js +3 -2
- package/es/scenegraph/group-creater/cell-type/spark-line-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/text-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/text-cell.js +3 -2
- package/es/scenegraph/group-creater/cell-type/text-cell.js.map +1 -1
- package/es/scenegraph/group-creater/cell-type/video-cell.d.ts +1 -1
- package/es/scenegraph/group-creater/cell-type/video-cell.js +3 -2
- package/es/scenegraph/group-creater/cell-type/video-cell.js.map +1 -1
- package/es/scenegraph/group-creater/column-helper.d.ts +1 -1
- package/es/scenegraph/group-creater/column-helper.js +3 -2
- package/es/scenegraph/group-creater/column-helper.js.map +1 -1
- package/es/scenegraph/group-creater/progress/proxy.js +1 -1
- package/es/scenegraph/group-creater/progress/proxy.js.map +1 -1
- package/es/scenegraph/icon/icon-update.js +1 -1
- package/es/scenegraph/icon/icon-update.js.map +1 -1
- package/es/scenegraph/layout/compute-col-width.js +1 -1
- package/es/scenegraph/layout/compute-col-width.js.map +1 -1
- package/es/scenegraph/layout/compute-row-height.js +1 -1
- package/es/scenegraph/layout/compute-row-height.js.map +1 -1
- package/es/scenegraph/layout/move-cell.js.map +1 -1
- package/es/scenegraph/layout/update-col.js.map +1 -1
- package/es/scenegraph/layout/update-height.js.map +1 -1
- package/es/scenegraph/layout/update-width.js.map +1 -1
- package/es/scenegraph/scenegraph.d.ts +1 -1
- package/es/scenegraph/scenegraph.js +6 -5
- package/es/scenegraph/scenegraph.js.map +1 -1
- package/es/scenegraph/select/create-select-border.js +1 -1
- package/es/scenegraph/select/create-select-border.js.map +1 -1
- package/es/scenegraph/select/delete-select-border.js.map +1 -1
- package/es/scenegraph/select/update-select-border.js.map +1 -1
- package/es/scenegraph/stick-text/index.js.map +1 -1
- package/es/scenegraph/style/corner-cell.js.map +1 -1
- package/es/scenegraph/style/frame-border.d.ts +3 -1
- package/es/scenegraph/style/frame-border.js +18 -1
- package/es/scenegraph/style/frame-border.js.map +1 -1
- package/es/scenegraph/utils/padding.js +1 -1
- package/es/scenegraph/utils/padding.js.map +1 -1
- package/es/scenegraph/utils/render-service.d.ts +1 -1
- package/es/scenegraph/utils/render-service.js +1 -1
- package/es/scenegraph/utils/render-service.js.map +1 -1
- package/es/scenegraph/utils/text-icon-layout.d.ts +1 -1
- package/es/scenegraph/utils/text-icon-layout.js +1 -1
- package/es/scenegraph/utils/text-icon-layout.js.map +1 -1
- package/es/scenegraph/utils/text-measure.d.ts +2 -2
- package/es/scenegraph/utils/text-measure.js +1 -1
- package/es/scenegraph/utils/text-measure.js.map +1 -1
- package/es/scenegraph/utils/text-pos.d.ts +1 -1
- package/es/scenegraph/utils/text-pos.js.map +1 -1
- package/es/state/spark-line/index.js +1 -1
- package/es/state/spark-line/index.js.map +1 -1
- package/es/state/state.d.ts +1 -1
- package/es/state/state.js.map +1 -1
- package/es/themes/ARCO.js +1 -2
- package/es/themes/BRIGHT.js +2 -1
- package/es/tools/NumberMap.js +1 -1
- package/es/ts-types/component/title.d.ts +1 -1
- package/es/ts-types/component/title.js.map +1 -1
- package/es/ts-types/events.d.ts +3 -4
- package/es/ts-types/events.js.map +1 -1
- package/es/ts-types/table-engine.d.ts +4 -0
- package/es/ts-types/table-engine.js.map +1 -1
- package/es/vrender.d.ts +3 -0
- package/es/vrender.js +18 -0
- package/es/vrender.js.map +1 -0
- package/package.json +6 -5
package/cjs/PivotChart.d.ts
CHANGED
|
@@ -72,6 +72,7 @@ export declare class PivotChart extends BaseTable implements PivotChartAPI {
|
|
|
72
72
|
x: number;
|
|
73
73
|
y: number;
|
|
74
74
|
};
|
|
75
|
+
getCellAddressByRecord(record: any): CellAddress;
|
|
75
76
|
getChartInstance(cellHeaderPaths: IPivotTableCellHeaderPaths): {
|
|
76
77
|
chartInstance: any;
|
|
77
78
|
bounds: import("@visactor/vutils").Bounds;
|
package/cjs/PivotChart.js
CHANGED
|
@@ -443,6 +443,30 @@ class PivotChart extends BaseTable_1.BaseTable {
|
|
|
443
443
|
}
|
|
444
444
|
return null;
|
|
445
445
|
}
|
|
446
|
+
getCellAddressByRecord(record) {
|
|
447
|
+
const rowHeaderPaths = [], colHeaderPaths = [], recordKeyMapToIndicatorKeys = {}, indicatorRecordKeys = [];
|
|
448
|
+
this.dataset.dataConfig.aggregationRules.forEach((aggregationRule => {
|
|
449
|
+
if ("string" == typeof aggregationRule.field) recordKeyMapToIndicatorKeys[aggregationRule.field] = aggregationRule.indicatorKey,
|
|
450
|
+
indicatorRecordKeys.push(aggregationRule.field); else for (let i = 0; i < aggregationRule.field.length; i++) recordKeyMapToIndicatorKeys[aggregationRule.field[i]] = aggregationRule.indicatorKey,
|
|
451
|
+
indicatorRecordKeys.push(aggregationRule.field[i]);
|
|
452
|
+
}));
|
|
453
|
+
for (const key in record) this.dataset.rows.indexOf(key) >= 0 && rowHeaderPaths.push({
|
|
454
|
+
dimensionKey: key,
|
|
455
|
+
value: record[key]
|
|
456
|
+
}), this.dataset.columns.indexOf(key) >= 0 && colHeaderPaths.push({
|
|
457
|
+
dimensionKey: key,
|
|
458
|
+
value: record[key]
|
|
459
|
+
}), indicatorRecordKeys.indexOf(key) >= 0 && (this.dataset.indicatorsAsCol ? colHeaderPaths.push({
|
|
460
|
+
indicatorKey: recordKeyMapToIndicatorKeys[key]
|
|
461
|
+
}) : rowHeaderPaths.push({
|
|
462
|
+
indicatorKey: recordKeyMapToIndicatorKeys[key]
|
|
463
|
+
}));
|
|
464
|
+
return this.getCellAddressByHeaderPaths({
|
|
465
|
+
rowHeaderPaths: rowHeaderPaths,
|
|
466
|
+
colHeaderPaths: colHeaderPaths,
|
|
467
|
+
cellLocation: "body"
|
|
468
|
+
});
|
|
469
|
+
}
|
|
446
470
|
getChartInstance(cellHeaderPaths) {
|
|
447
471
|
var _a, _b, _c, _d, _e;
|
|
448
472
|
const cellAddr = this.getCellAddressByHeaderPaths(cellHeaderPaths);
|
package/cjs/PivotChart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/PivotChart.ts"],"names":[],"mappings":"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","file":"PivotChart.js","sourcesContent":["import type {\n FieldData,\n FieldDef,\n FieldFormat,\n PivotTableAPI,\n SortRules,\n PivotSortState,\n CellAddress,\n ICellHeaderPaths,\n DropDownMenuEventInfo,\n FieldKeyDef,\n IHeaderTreeDefine,\n IDimensionInfo,\n SortOrder,\n IIndicator,\n PivotChartConstructorOptions,\n CollectValueBy,\n AggregationRules,\n AggregationRule,\n AnyFunction,\n FilterRules,\n IPivotTableCellHeaderPaths,\n PivotChartAPI\n} from './ts-types';\nimport { AggregationType } from './ts-types';\nimport { HierarchyState } from './ts-types';\nimport { getField } from './data/DataSource';\nimport { PivotHeaderLayoutMap } from './layout/pivot-header-layout';\nimport { PIVOT_CHART_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';\nimport { cellInRange, emptyFn } from './tools/helper';\nimport { Dataset } from './dataset/dataset';\nimport { _setDataSource } from './core/tableHelper';\nimport { BaseTable } from './core/BaseTable';\nimport type { BaseTableAPI, PivotChartProtected } from './ts-types/base-table';\nimport type { IChartColumnIndicator } from './ts-types/pivot-table/indicator/chart-indicator';\nimport type { Chart } from './scenegraph/graphic/chart';\nimport { clearChartCacheImage, updateChartData } from './scenegraph/refresh-node/update-chart';\nimport type { ITableAxisOption } from './ts-types/component/axis';\nimport { cloneDeep, isArray } from '@visactor/vutils';\nimport type { DiscreteLegend } from '@visactor/vrender-components';\nimport { Title } from './components/title/title';\nimport { Env } from './tools/env';\nimport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\n\nexport class PivotChart extends BaseTable implements PivotChartAPI {\n declare internalProps: PivotChartProtected;\n declare options: PivotChartConstructorOptions;\n pivotSortState: PivotSortState[];\n\n dataset?: Dataset; //数据处理对象 开启数据透视分析的表\n\n _selectedDataItemsInChart: any[] = [];\n _selectedDimensionInChart: { key: string; value: string }[] = [];\n _chartEventMap: Record<string, { query?: any; callback: AnyFunction }[]> = {};\n\n _axes: ITableAxisOption[];\n constructor(options: PivotChartConstructorOptions);\n constructor(container: HTMLElement, options: PivotChartConstructorOptions);\n constructor(container?: HTMLElement | PivotChartConstructorOptions, options?: PivotChartConstructorOptions) {\n if (Env.mode === 'node') {\n options = container as PivotChartConstructorOptions;\n container = null;\n } else if (!(container instanceof HTMLElement)) {\n options = container as PivotChartConstructorOptions;\n if ((container as PivotChartConstructorOptions).container) {\n container = (container as PivotChartConstructorOptions).container;\n } else {\n container = null;\n }\n }\n super(container as HTMLElement, options);\n if ((options as any).layout) {\n //TODO hack处理之前的demo都是定义到layout上的 所以这里直接并到options中\n Object.assign(options, (options as any).layout);\n }\n this.internalProps.columns = cloneDeep(options.columns);\n this.internalProps.rows = cloneDeep(options.rows);\n this.internalProps.indicators = cloneDeep(options.indicators);\n this.internalProps.columnTree =\n options.indicatorsAsCol && !options.columns?.length && !options.columnTree ? [] : cloneDeep(options.columnTree);\n this.internalProps.rowTree =\n !options.indicatorsAsCol && !options.rows?.length && !options.rowTree ? [] : cloneDeep(options.rowTree);\n this.internalProps.records = options.records;\n\n this.setCustomStateNameToSpec();\n this.internalProps.columnResizeType = options.columnResizeType ?? 'column';\n this.internalProps.dataConfig = { isPivotChart: true };\n this._axes = isArray(options.axes) ? options.axes : [];\n const rowKeys =\n options.rows?.reduce((keys, rowObj) => {\n if (typeof rowObj === 'string') {\n keys.push(rowObj);\n } else {\n keys.push(rowObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const columnKeys =\n options.columns?.reduce((keys, columnObj) => {\n if (typeof columnObj === 'string') {\n keys.push(columnObj);\n } else {\n keys.push(columnObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const indicatorKeys =\n options.indicators?.reduce((keys, indicatorObj) => {\n if (typeof indicatorObj === 'string') {\n keys.push(indicatorObj);\n } else {\n keys.push(indicatorObj.indicatorKey);\n }\n return keys;\n }, []) ?? [];\n this.internalProps.dataConfig.collectValuesBy = this._generateCollectValuesConfig(columnKeys, rowKeys);\n this.internalProps.dataConfig.aggregationRules = this._generateAggregationRules();\n this.internalProps.dataConfig.dimensionSortArray = this._getDimensionSortArray();\n this.dataset = new Dataset(\n this.internalProps.dataConfig,\n // null,\n rowKeys,\n columnKeys,\n indicatorKeys,\n this.internalProps.indicators,\n options.indicatorsAsCol ?? true,\n options.records,\n undefined,\n this.internalProps.columnTree, //传递自定义树形结构会在dataset中补充指标节点children\n this.internalProps.rowTree,\n true\n );\n this.internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset);\n this.refreshHeader();\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n if (options.title) {\n this.internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n //为了确保用户监听得到这个事件 这里做了异步 确保vtable实例已经初始化完成\n setTimeout(() => {\n this.fireListeners(TABLE_EVENT_TYPE.INITIALIZED, null);\n }, 0);\n }\n static get EVENT_TYPE(): typeof PIVOT_CHART_EVENT_TYPE {\n return PIVOT_CHART_EVENT_TYPE;\n }\n get pivotChartAxes() {\n return this._axes;\n }\n\n isListTable(): false {\n return false;\n }\n isPivotTable(): true {\n return true;\n }\n isPivotChart(): true {\n return true;\n }\n _canResizeColumn(col: number, row: number): boolean {\n const ifCan = super._canResizeColumn(col, row);\n if (ifCan) {\n if (!this.internalProps.layoutMap.indicatorsAsCol) {\n // 列上是否配置了禁止拖拽列宽的配置项disableColumnResize\n const cellDefine = this.internalProps.layoutMap.getBody(col, this.columnHeaderLevelCount);\n if (cellDefine?.disableColumnResize) {\n return false;\n }\n }\n }\n return ifCan;\n }\n updateOption(options: PivotChartConstructorOptions, accelerateFirstScreen = false) {\n const internalProps = this.internalProps;\n //维护选中状态\n // const range = internalProps.selection.range; //保留原有单元格选中状态\n super.updateOption(options);\n this.internalProps.columns = cloneDeep(options.columns);\n this.internalProps.rows = cloneDeep(options.rows);\n this.internalProps.indicators = !options.indicators?.length ? [] : cloneDeep(options.indicators);\n this.internalProps.columnTree =\n options.indicatorsAsCol && !options.columns?.length && !options.columnTree ? [] : cloneDeep(options.columnTree);\n this.internalProps.rowTree =\n !options.indicatorsAsCol && !options.rows?.length && !options.rowTree ? [] : cloneDeep(options.rowTree);\n options.records && (this.internalProps.records = options.records);\n this.setCustomStateNameToSpec();\n this._selectedDataItemsInChart = [];\n // 更新protectedSpace\n internalProps.columnResizeType = options.columnResizeType ?? 'column';\n internalProps.dataConfig = { isPivotChart: true };\n\n this._axes = isArray(options.axes) ? options.axes : [];\n\n //TODO 这里需要加上判断 dataConfig是否有配置变化\n // if (options.rows || options.columns) {\n const rowKeys =\n options.rows?.reduce((keys, rowObj) => {\n if (typeof rowObj === 'string') {\n keys.push(rowObj);\n } else {\n keys.push(rowObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const columnKeys =\n options.columns?.reduce((keys, columnObj) => {\n if (typeof columnObj === 'string') {\n keys.push(columnObj);\n } else {\n keys.push(columnObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const indicatorKeys =\n options.indicators?.reduce((keys, indicatorObj) => {\n if (typeof indicatorObj === 'string') {\n keys.push(indicatorObj);\n } else {\n keys.push(indicatorObj.indicatorKey);\n }\n return keys;\n }, []) ?? [];\n\n this.internalProps.dataConfig.collectValuesBy = this._generateCollectValuesConfig(columnKeys, rowKeys);\n this.internalProps.dataConfig.aggregationRules = this._generateAggregationRules();\n this.internalProps.dataConfig.dimensionSortArray = this._getDimensionSortArray();\n this.dataset = new Dataset(\n this.internalProps.dataConfig,\n // null,\n rowKeys,\n columnKeys,\n indicatorKeys,\n this.internalProps.indicators,\n options.indicatorsAsCol ?? true,\n options.records ?? this.internalProps.records,\n undefined,\n this.internalProps.columnTree,\n this.internalProps.rowTree,\n true\n );\n // }\n internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset);\n // else {\n // console.warn('VTable Warn: your option is invalid, please check it!');\n // return this;\n // }\n\n // 更新表头\n this.refreshHeader();\n\n // this.hasMedia = null; // 避免重复绑定\n // 清空目前数据\n if (internalProps.releaseList) {\n internalProps.releaseList.forEach(releaseObj => releaseObj?.release?.());\n internalProps.releaseList = null;\n }\n // // 恢复selection状态\n // internalProps.selection.range = range;\n // this._updateSize();\n // 传入新数据\n // if (options.dataSource) {\n // _setDataSource(this, options.dataSource);\n // }else\n // 清空单元格内容\n this.scenegraph.clearCells();\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n if (options.title) {\n this.internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n return new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n }\n updatePagination() {\n //void\n }\n refreshHeader(): void {\n const internalProps = this.internalProps;\n\n //设置列宽\n for (let col = 0; col < internalProps.layoutMap.columnWidths.length; col++) {\n const { width, minWidth, maxWidth } = internalProps.layoutMap.columnWidths?.[col] ?? {};\n // width 为 \"auto\" 时先不存储ColWidth\n if (width && ((typeof width === 'string' && width !== 'auto') || (typeof width === 'number' && width > 0))) {\n this._setColWidth(col, width);\n }\n if (minWidth && ((typeof minWidth === 'number' && minWidth > 0) || typeof minWidth === 'string')) {\n this.setMinColWidth(col, minWidth);\n }\n if (maxWidth && ((typeof maxWidth === 'number' && maxWidth > 0) || typeof maxWidth === 'string')) {\n this.setMaxColWidth(col, maxWidth);\n }\n }\n //刷新表头,原来这里是_refreshRowCount 后改名为_refreshRowColCount 因为表头定义会影响行数,而转置模式下会影响列数\n this.refreshRowColCount();\n }\n refreshRowColCount(): void {\n const table = this;\n const { layoutMap } = table.internalProps;\n if (!layoutMap) {\n return;\n }\n table.colCount = layoutMap.colCount ?? 0;\n table.rowCount = layoutMap.rowCount ?? 0;\n // table.frozenColCount = layoutMap.rowHeaderLevelCount; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n table.internalProps.frozenColCount = layoutMap.rowHeaderLevelCount ?? 0;\n table.frozenRowCount = layoutMap.headerLevelCount;\n if (table.bottomFrozenRowCount !== (layoutMap?.bottomFrozenRowCount ?? 0)) {\n table.bottomFrozenRowCount = layoutMap?.bottomFrozenRowCount ?? 0;\n }\n if (table.rightFrozenColCount !== (layoutMap?.rightFrozenColCount ?? 0)) {\n table.rightFrozenColCount = layoutMap?.rightFrozenColCount ?? 0;\n }\n this.stateManager.setFrozenCol(this.internalProps.frozenColCount);\n }\n protected _getSortFuncFromHeaderOption(\n columns: undefined,\n field: FieldDef,\n fieldKey?: FieldKeyDef\n ): ((v1: any, v2: any, order: SortOrder) => 0 | 1 | -1) | undefined {\n return undefined;\n }\n /**\n * 将现有tree中的的hierarchyState同步到rows透视树中\n * @param sourceNode\n * @param targetNode\n */\n private syncHierarchyState(sourceNode: any, targetNode: IHeaderTreeDefine) {\n if (sourceNode.value === targetNode.value && sourceNode.dimensionKey === targetNode.dimensionKey) {\n targetNode.hierarchyState =\n targetNode.hierarchyState ?? (targetNode?.children ? sourceNode.hierarchyState : undefined);\n targetNode?.children?.forEach((targetChildNode: IHeaderTreeDefine, index: number) => {\n if (sourceNode?.children?.[index] && targetChildNode) {\n this.syncHierarchyState(sourceNode.children[index], targetChildNode);\n }\n });\n }\n }\n getRecordShowIndexByCell(col: number, row: number): number {\n return undefined;\n }\n\n getTableIndexByRecordIndex(recordIndex: number): number {\n return undefined;\n }\n getTableIndexByField(field: FieldDef): number {\n return undefined;\n }\n getCellAddrByFieldRecord(field: FieldDef, recordIndex: number): CellAddress {\n return undefined;\n }\n getBodyIndexByRow(row: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getBodyIndexByRow(row);\n }\n getBodyIndexByCol(col: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getBodyIndexByCol(col);\n }\n // getFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n // if (field === null || field === undefined) {\n // return null;\n // }\n // const table = this;\n // if (table.internalProps.layoutMap.isHeader(col, row)) {\n // return null;\n // }\n // const rowIndex = this.getBodyIndexByRow(row);\n // const colIndex = this.getBodyIndexByCol(col);\n // const dataValue = table.dataSource?.getField(rowIndex, colIndex, col, row, this);\n // if (typeof field !== 'string') {\n // //field为函数format\n // const cellHeaderPaths = table.internalProps.layoutMap.getCellHeaderPaths(col, row);\n // return getField({ dataValue, ...cellHeaderPaths }, field, col, row, this, emptyFn as any);\n // }\n // return dataValue;\n // }\n\n getCellValue(col: number, row: number): FieldData {\n const customMergeText = this.getCustomMergeValue(col, row);\n if (customMergeText) {\n return customMergeText;\n }\n if (this.internalProps.layoutMap.isHeader(col, row)) {\n const { title, fieldFormat } = this.internalProps.layoutMap.getHeader(col, row);\n return typeof fieldFormat === 'function' ? fieldFormat(title, col, row, this as BaseTableAPI) : title;\n }\n if (this.dataset) {\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any) => {\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any) => {\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row)\n );\n return aggregator.value ? aggregator.value() : undefined;\n }\n const { fieldFormat } = this.internalProps.layoutMap.getBody(col, row);\n const rowIndex = this.getBodyIndexByRow(row);\n const colIndex = this.getBodyIndexByCol(col);\n const dataValue = this.records[rowIndex]?.[colIndex];\n if (typeof fieldFormat === 'function') {\n const fieldResult = fieldFormat(dataValue, col, row, this as BaseTableAPI);\n return fieldResult;\n }\n return dataValue;\n // const { field, fieldFormat } = this.internalProps.layoutMap.getBody(col, row);\n // return this.getFieldData(fieldFormat || field, col, row);\n }\n\n getCellOriginValue(col: number, row: number): FieldData {\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n if (this.dataset) {\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any) => {\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any) => {\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row)\n );\n return aggregator.value ? aggregator.value() : undefined;\n // return ''\n }\n const rowIndex = this.getBodyIndexByRow(row);\n const colIndex = this.getBodyIndexByCol(col);\n const dataValue = this.records[rowIndex]?.[colIndex];\n return dataValue;\n // const { field } = table.internalProps.layoutMap.getBody(col, row);\n // return table.getFieldData(field, col, row);\n }\n\n getCellRawValue(col: number, row: number) {\n return this.getCellOriginValue(col, row);\n }\n\n // 获取原始数据\n getCellOriginRecord(col: number, row: number) {\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return undefined;\n }\n if (this.dataset) {\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any) => {\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any) => {\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row)\n );\n return aggregator.records;\n // return ''\n }\n return undefined;\n }\n\n getCellRawRecord(col: number, row: number) {\n return this.getCellOriginRecord(col, row);\n }\n /**\n * 全量更新排序规则 TODO 待完善\n * @param sortRules\n */\n updateSortRules(sortRules: SortRules) {\n this.internalProps.dataConfig.sortRules = sortRules;\n this.dataset.updateSortRules(sortRules);\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).updateDataset(this.dataset);\n this.render();\n }\n updatePivotSortState(\n pivotSortStateConfig: {\n dimensions: IDimensionInfo[];\n order: SortOrder;\n }[]\n ) {\n // // dimensions: IDimensionInfo[], order: SortOrder\n // // 清空当前 pivot sort 状态\n // const cells = this.pivotSortState.map((cell) => ({ col: cell.col, row: cell.row }));\n // this.pivotSortState.length = 0;\n // cells.map((cell) => {\n // this.invalidateCellRange(this.getCellRange(cell.col, cell.row));\n // });\n\n // 更新 pivot sort 状态\n for (let i = 0; i < pivotSortStateConfig.length; i++) {\n const { dimensions, order } = pivotSortStateConfig[i];\n const cellAddress = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getPivotCellAdress(dimensions);\n\n cellAddress &&\n this.pivotSortState.push({\n col: cellAddress.col,\n row: cellAddress.row,\n order\n });\n }\n\n // // 更新相关单元格样式\n // this.pivotSortState.map((cell) => {\n // this.invalidateCellRange(this.getCellRange(cell.col, cell.row));\n // });\n }\n\n getPivotSortState(col: number, row: number): SortOrder {\n if (!this.pivotSortState) {\n return undefined;\n }\n const cellRange = this.getCellRange(col, row);\n for (let i = 0; i < this.pivotSortState.length; i++) {\n const { col: sortCol, row: sortRow, order } = this.pivotSortState[i];\n\n if (cellInRange(cellRange, sortCol, sortRow)) {\n return order;\n }\n }\n return undefined;\n }\n /**\n * 拖拽移动表头位置\n * @param source 移动源位置\n * @param target 移动目标位置\n */\n moveHeaderPosition(source: CellAddress, target: CellAddress) {\n // 调用布局类 布局数据结构调整为移动位置后的\n const moveContext = (this.internalProps.layoutMap as PivotHeaderLayoutMap).moveHeaderPosition(source, target);\n if (moveContext) {\n if (moveContext.moveType === 'column') {\n // 是扁平数据结构 需要将二维数组this.records进行调整\n if (this.options.records?.[0]?.constructor === Array) {\n for (let row = 0; row < (this.internalProps.records as Array<any>).length; row++) {\n const sourceColumns = (this.internalProps.records[row] as unknown as number[]).splice(\n moveContext.sourceIndex - this.rowHeaderLevelCount,\n moveContext.moveSize\n );\n sourceColumns.unshift((moveContext.targetIndex as any) - this.rowHeaderLevelCount, 0 as any);\n Array.prototype.splice.apply(this.internalProps.records[row] as unknown as number[], sourceColumns);\n }\n }\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n this.colWidthsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.moveSize);\n //下面代码取自refreshHeader列宽设置逻辑\n //设置列宽极限值 TODO 目前是有问题的 最大最小宽度限制 移动列位置后不正确\n for (let col = 0; col < this.internalProps.layoutMap.columnWidths.length; col++) {\n const { minWidth, maxWidth } = this.internalProps.layoutMap.columnWidths?.[col] ?? {};\n if (minWidth && ((typeof minWidth === 'number' && minWidth > 0) || typeof minWidth === 'string')) {\n this.setMinColWidth(col, minWidth);\n }\n if (maxWidth && ((typeof maxWidth === 'number' && maxWidth > 0) || typeof maxWidth === 'string')) {\n this.setMaxColWidth(col, maxWidth);\n }\n }\n } else if (moveContext.moveType === 'row') {\n // 是扁平数据结构 需要将二维数组this.records进行调整\n if (this.options.records?.[0]?.constructor === Array) {\n const sourceRows = (this.internalProps.records as unknown as number[]).splice(\n moveContext.sourceIndex - this.columnHeaderLevelCount,\n moveContext.moveSize\n );\n sourceRows.unshift((moveContext.targetIndex as any) - this.columnHeaderLevelCount, 0 as any);\n Array.prototype.splice.apply(this.internalProps.records, sourceRows);\n }\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n this.rowHeightsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.moveSize);\n }\n return true;\n }\n return false;\n }\n /**\n * 表头切换层级状态\n * @param col\n * @param row\n */\n toggleHierarchyState(col: number, row: number) {\n const hierarchyState = this.getHierarchyState(col, row);\n if (hierarchyState === HierarchyState.expand) {\n this.fireListeners(PIVOT_CHART_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.collapse\n });\n } else if (hierarchyState === HierarchyState.collapse) {\n this.fireListeners(PIVOT_CHART_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.expand,\n originData: this.getCellOriginRecord(col, row)\n });\n }\n\n const result = (this.internalProps.layoutMap as PivotHeaderLayoutMap).toggleHierarchyState(col, row);\n //影响行数\n this.refreshRowColCount();\n // this.scenegraph.clearCells();\n // this.scenegraph.createSceneGraph();\n // this.invalidate();\n this.clearCellStyleCache();\n this.scenegraph.updateHierarchyIcon(col, row);\n this.scenegraph.updateRow(result.removeCellPositions, result.addCellPositions);\n }\n /**\n * 通过表头的维度值路径来计算单元格位置 getCellAddressByHeaderPaths接口更强大一些 不限表头 不限参数格式\n * @param dimensionPaths\n * @returns\n */\n getHeaderCellAddressByPath(dimensionPaths: IDimensionInfo[]): CellAddress {\n const cellAddress = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getPivotCellAdress(dimensionPaths);\n return cellAddress;\n }\n /**\n * 通过表头的维度值路径来计算单元格位置\n * @param dimensionPaths\n * @returns\n */\n getCellAddressByHeaderPaths(\n dimensionPaths: // | {\n // colHeaderPaths: IDimensionInfo[];\n // rowHeaderPaths: IDimensionInfo[];\n // }\n IPivotTableCellHeaderPaths | IDimensionInfo[]\n ): CellAddress {\n const cellAddress = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getCellAdressByHeaderPath(\n dimensionPaths\n );\n return cellAddress;\n }\n\n /**\n * 通过传入的坐标 获取该位置当前单元格的维度路径;\n * @param coordinate 从body左上角为原点 coordinate为偏移距离 去计算单元格的headerPath;\n * 如不传coordinate坐标则按取body中左上角第一个单元格的维度路径\n * @returns\n */\n getHeaderPathByXY(coordinate?: { x: number; y: number }): ICellHeaderPaths {\n let cellAddr;\n if (coordinate) {\n cellAddr = this.getCellAt(\n coordinate.x + this.getFrozenColsWidth() + this.scrollLeft + 1,\n coordinate.y + this.getFrozenRowsHeight() + this.scrollTop + 1\n );\n } else {\n cellAddr = this.getCellAt(\n this.getFrozenColsWidth() + this.scrollLeft + 1,\n this.getFrozenRowsHeight() + this.scrollTop + 1\n );\n }\n const cellHeaderPaths = this.internalProps.layoutMap.getCellHeaderPaths(cellAddr.col, cellAddr.row);\n return cellHeaderPaths;\n }\n getHierarchyState(col: number, row: number): HierarchyState {\n return this._getHeaderLayoutMap(col, row)?.hierarchyState;\n }\n\n _hasHierarchyTreeHeader() {\n return (this.internalProps.layoutMap as PivotHeaderLayoutMap).rowHierarchyType === 'tree';\n }\n\n getMenuInfo(col: number, row: number, type: string): DropDownMenuEventInfo {\n const dimensionInfos = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getPivotDimensionInfo(col, row);\n const result: DropDownMenuEventInfo = {\n dimensionKey: dimensionInfos[dimensionInfos.length - 1].dimensionKey,\n value: this.getCellValue(col, row),\n cellLocation: this.getCellLocation(col, row),\n isPivotCorner: this.isCornerHeader(col, row)\n };\n return result;\n }\n /**\n * 根据用户配置 生成 收集维度值collectValuesBy 的配置 传给dataset用\n * 这个收集规则的逻辑是按照正常使用方式:\n * 指标显示在行表头indicatorsAsCol=false时,图表yField为指标值,xField为维度值(考虑stack)direction为默认值'vertical';\n * 指标显示在列表头indicatorsAsCol=true时,图表xField为指标值,yField为维度值(考虑stack)direction为'horizontal';\n * @param columnKeys\n * @param rowKeys\n * @returns\n */\n private _generateCollectValuesConfig(columnKeys: string[], rowKeys: string[]): Record<string, CollectValueBy> {\n const indicators = this.internalProps.indicators;\n const collectValuesBy: Record<string, CollectValueBy> = {};\n\n for (let i = 0, len = indicators?.length; i < len; i++) {\n if (typeof indicators[i] !== 'string' && (indicators[i] as IChartColumnIndicator).chartSpec) {\n if (this.options.indicatorsAsCol === false) {\n const indicatorDefine = indicators[i] as IIndicator;\n //明确指定 chartSpec.stack为true\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack !== false &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'bar' ||\n (indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'area') &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec.stack = true);\n // 收集指标值的范围\n collectValuesBy[indicatorDefine.indicatorKey] = {\n by: rowKeys,\n range: true,\n // 判断是否需要匹配维度值相同的进行求和计算\n sumBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack &&\n columnKeys.concat((indicatorDefine as IChartColumnIndicator).chartSpec?.xField)\n };\n if ((indicatorDefine as IChartColumnIndicator).chartSpec.series) {\n (indicatorDefine as IChartColumnIndicator).chartSpec.series.forEach((chartSeries: any) => {\n const xField = typeof chartSeries.xField === 'string' ? chartSeries.xField : chartSeries.xField[0];\n collectValuesBy[xField] = {\n by: columnKeys,\n type: chartSeries.direction !== 'horizontal' ? 'xField' : undefined,\n range: chartSeries.direction === 'horizontal',\n sortBy:\n chartSeries.direction !== 'horizontal'\n ? chartSeries?.data?.fields?.[xField]?.domain ??\n (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[xField]?.domain\n : undefined\n };\n\n const yField = chartSeries.yField;\n chartSeries.stack !== false &&\n (chartSeries.type === 'bar' || chartSeries.type === 'area') &&\n (chartSeries.stack = true); //明确指定 chartSpec.stack为true\n collectValuesBy[yField] = {\n by: rowKeys,\n range: chartSeries.direction !== 'horizontal', // direction默认为'vertical'\n sumBy: chartSeries.stack && columnKeys.concat(chartSeries?.xField), // 逻辑严谨的话 这个concat的值也需要结合 chartSeries.direction来判断是xField还是yField\n sortBy:\n chartSeries.direction === 'horizontal'\n ? chartSeries?.data?.fields?.[yField]?.domain ??\n (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[yField]?.domain\n : undefined\n };\n });\n } else {\n const xField =\n typeof (indicatorDefine as IChartColumnIndicator).chartSpec.xField === 'string'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec.xField\n : (indicatorDefine as IChartColumnIndicator).chartSpec.xField[0];\n collectValuesBy[xField] = {\n by: columnKeys,\n type:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction !== 'horizontal' ? 'xField' : undefined,\n range: (indicatorDefine as IChartColumnIndicator).chartSpec.direction === 'horizontal',\n sortBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction !== 'horizontal'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[xField]?.domain\n : undefined\n };\n //明确指定 chartSpec.stack为true\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack !== false &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'bar' ||\n (indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'area') &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec.stack = true);\n //下面这个收集的值 应该是和收集的 collectValuesBy[indicatorDefine.indicatorKey] 相同\n const yField = (indicatorDefine as IChartColumnIndicator).chartSpec.yField;\n collectValuesBy[yField] = {\n by: rowKeys,\n range: (indicators[i] as IChartColumnIndicator).chartSpec.direction !== 'horizontal', // direction默认为'vertical'\n sumBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.stack &&\n columnKeys.concat((indicatorDefine as IChartColumnIndicator).chartSpec?.xField), // 逻辑严谨的话 这个concat的值也需要结合 chartSeries.direction来判断是xField还是yField\n sortBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction === 'horizontal'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[yField]?.domain\n : undefined\n };\n }\n } else {\n const indicatorDefine = indicators[i] as IIndicator;\n //明确指定 chartSpec.stack为true\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack !== false &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'bar' ||\n (indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'area') &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec.stack = true);\n // 收集指标值的范围\n collectValuesBy[indicatorDefine.indicatorKey] = {\n by: columnKeys,\n range: true,\n // 判断是否需要匹配维度值相同的进行求和计算\n sumBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack &&\n rowKeys.concat((indicatorDefine as IChartColumnIndicator).chartSpec?.yField)\n };\n if ((indicatorDefine as IChartColumnIndicator).chartSpec.series) {\n (indicatorDefine as IChartColumnIndicator).chartSpec.series.forEach((chartSeries: any) => {\n const yField = typeof chartSeries.yField === 'string' ? chartSeries.yField : chartSeries.yField[0];\n collectValuesBy[yField] = {\n by: rowKeys,\n type: chartSeries.direction === 'horizontal' ? 'yField' : undefined,\n range: chartSeries.direction !== 'horizontal',\n sortBy:\n chartSeries.direction === 'horizontal'\n ? chartSeries?.data?.fields?.[yField]?.domain ??\n (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[yField]?.domain\n : undefined\n };\n\n const xField = chartSeries.xField;\n chartSeries.stack !== false &&\n (chartSeries.type === 'bar' || chartSeries.type === 'area') &&\n (chartSeries.stack = true); //明确指定 chartSpec.stack为true\n collectValuesBy[xField] = {\n by: columnKeys,\n range: chartSeries.direction === 'horizontal', // direction默认为'vertical'\n sumBy: chartSeries.stack && rowKeys.concat(chartSeries?.yField),\n sortBy:\n chartSeries.direction !== 'horizontal'\n ? chartSeries?.data?.fields?.[xField]?.domain ??\n (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[xField]?.domain\n : undefined\n };\n });\n } else {\n const yField =\n typeof (indicatorDefine as IChartColumnIndicator).chartSpec.yField === 'string'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec.yField\n : (indicatorDefine as IChartColumnIndicator).chartSpec.yField[0];\n collectValuesBy[yField] = {\n by: rowKeys,\n type:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction === 'horizontal' ? 'yField' : undefined,\n range: (indicatorDefine as IChartColumnIndicator).chartSpec.direction !== 'horizontal',\n sortBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction === 'horizontal'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[yField]?.domain\n : undefined\n };\n //明确指定 chartSpec.stack为true\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack !== false &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'bar' ||\n (indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'area') &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec.stack = true);\n //下面这个收集的值 应该是和收集的 collectValuesBy[indicatorDefine.indicatorKey] 相同\n const xField = (indicatorDefine as IChartColumnIndicator).chartSpec.xField;\n collectValuesBy[xField] = {\n by: columnKeys,\n range: (indicators[i] as IChartColumnIndicator).chartSpec.direction === 'horizontal', // direction默认为'vertical'\n sumBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.stack &&\n rowKeys.concat((indicatorDefine as IChartColumnIndicator).chartSpec?.yField),\n sortBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction !== 'horizontal'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[xField]?.domain\n : undefined\n };\n }\n }\n }\n }\n\n return collectValuesBy;\n }\n // private _generateAggregationRules(indicatorKeys: string[]): AggregationRules {\n // return indicatorKeys.map((indicatorKey: string) => {\n // return {\n // indicatorKey, //field转为指标key\n // field: indicatorKey, //指标依据字段\n // aggregationType: AggregationType.RECORD //计算类型\n // };\n // });\n // }\n /**\n *\n * @param indicatorFromChartSpec 是否需要考虑chartSpec中的yField或者xField分析作为指标来分组数据\n * @returns\n */\n private _generateAggregationRules() {\n const aggregationRules: AggregationRules = [];\n // indicatorFromChartSpec = true;\n this.internalProps.indicators?.forEach((indicator: IIndicator | string) => {\n if (typeof indicator === 'string') {\n aggregationRules.push({\n indicatorKey: indicator, //field转为指标key\n field: indicator, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n } as AggregationRule<AggregationType.RECORD>);\n } else {\n if ((indicator as IChartColumnIndicator).chartSpec?.series) {\n // 如果chartSpec配置了组合图 series 则需要考虑 series中存在的多个指标\n const fields: string[] = [];\n (indicator as IChartColumnIndicator).chartSpec?.series.forEach((seriesSpec: any) => {\n const seriesField = this.options.indicatorsAsCol === false ? seriesSpec.yField : seriesSpec.xField;\n if (fields.indexOf(seriesField) === -1) {\n fields.push(seriesField);\n }\n });\n aggregationRules.push({\n indicatorKey: indicator.indicatorKey, //field转为指标key\n field: fields, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n });\n } else {\n const field =\n this.options.indicatorsAsCol === false\n ? (indicator as IChartColumnIndicator).chartSpec.yField\n : (indicator as IChartColumnIndicator).chartSpec.xField;\n aggregationRules.push({\n indicatorKey: indicator.indicatorKey, //field转为指标key\n field: field ?? indicator.indicatorKey, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n });\n }\n }\n });\n\n return aggregationRules;\n }\n /** 将spec中的 selected和selected_reverse 更名为vtable_selected和vtable_selected_reverse */\n private setCustomStateNameToSpec() {\n /** 修改设置的selected 和 dselected_reverse的名字加前缀vtable */\n const setCustomStateName = (spec: any) => {\n if (spec.bar?.state?.selected) {\n spec.bar.state.vtable_selected = spec.bar.state.selected;\n spec.bar.state.vtable_selected_reverse = spec.bar.state.selected_reverse;\n delete spec.bar.state.selected;\n delete spec.bar.state.selected_reverse;\n }\n if (spec.point?.state?.selected) {\n spec.point.state.vtable_selected = spec.point.state.selected;\n spec.point.state.vtable_selected_reverse = spec.point.state.selected_reverse;\n delete spec.point.state.selected;\n delete spec.point.state.selected_reverse;\n }\n if (spec.line?.state?.selected) {\n spec.line.state.vtable_selected = spec.line.state.selected;\n spec.line.state.vtable_selected_reverse = spec.line.state.selected_reverse;\n delete spec.line.state.selected;\n delete spec.line.state.selected_reverse;\n }\n if (spec.area?.state?.selected) {\n spec.area.state.vtable_selected = spec.area.state.selected;\n spec.area.state.vtable_selected_reverse = spec.area.state.selected_reverse;\n delete spec.area.state.selected;\n delete spec.area.state.selected_reverse;\n }\n };\n this.internalProps.indicators?.forEach((indicator: string | IIndicator) => {\n if ((indicator as IChartColumnIndicator).chartSpec) {\n const spec = (indicator as IChartColumnIndicator).chartSpec;\n if (spec.series) {\n spec.series.forEach((series: any) => {\n setCustomStateName(series);\n });\n } else {\n setCustomStateName(spec);\n }\n }\n });\n }\n\n /** 更新数据过滤规则,适用场景:点击图例项后 更新过滤规则 来更新图表 */\n updateFilterRules(filterRules: FilterRules) {\n this.internalProps.dataConfig.filterRules = filterRules;\n this.dataset.updateFilterRules(filterRules);\n clearChartCacheImage(this.scenegraph);\n updateChartData(this.scenegraph);\n this.render();\n }\n /** 获取图例的选择状态 */\n getLegendSelected() {\n return (this.internalProps.legends.legendComponent as any)._getSelectedLegends().map((d: any) => d.label);\n }\n setLegendSelected(selectedData: (string | number)[]) {\n (this.internalProps.legends.legendComponent as DiscreteLegend).setSelected(selectedData);\n // this.updateFilterRules([{ filterKey: '20001', filteredValues: selectedData }]);\n // this.invalidate();\n }\n /**\n * 获取图表上某一个图元的位置\n * @param datum 图元对应的数据\n * @param cellHeaderPaths 单元格的header路径\n * @returns 图元在整个表格上的坐标位置(相对表格左上角视觉坐标)\n */\n getChartDatumPosition(datum: any, cellHeaderPaths: IPivotTableCellHeaderPaths): { x: number; y: number } {\n const { chartInstance, bounds } = this.getChartInstance(cellHeaderPaths);\n if (chartInstance) {\n const position = chartInstance.convertDatumToPosition(datum);\n return position ? { x: Math.round(position.x + bounds.x1), y: Math.round(position.y + bounds.y1) } : null;\n }\n return null;\n }\n\n getChartInstance(cellHeaderPaths: IPivotTableCellHeaderPaths) {\n const cellAddr = this.getCellAddressByHeaderPaths(cellHeaderPaths);\n if (cellAddr) {\n const cellPosition = this.getCellRelativeRect(cellAddr.col, cellAddr.row);\n const cellGroup = this.scenegraph.getCell(cellAddr.col, cellAddr.row);\n // let position;\n let chartInstance: any;\n const chartNode: Chart = cellGroup?.getChildren()?.[0] as Chart;\n if (chartNode.attribute.chartInstance) {\n chartInstance = chartNode.attribute.chartInstance;\n const { dataId, data, axes, spec } = chartNode.attribute;\n const viewBox = chartNode.getViewBox();\n axes.forEach((axis: any, index: number) => {\n if (axis.type === 'linear') {\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 } else 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 }\n });\n\n chartInstance.updateViewBox(\n {\n x1: viewBox.x1 - (chartNode.getRootNode() as any).table.scrollLeft,\n x2: viewBox.x2 - (chartNode.getRootNode() as any).table.scrollLeft,\n y1: viewBox.y1 - (chartNode.getRootNode() as any).table.scrollTop,\n y2: viewBox.y2 - (chartNode.getRootNode() as any).table.scrollTop\n },\n false,\n false\n );\n // chartInstance.updateDataSync(dataId, data);\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 // position = chartInstance.convertDatumToPosition(datum);\n // this.render();\n this.renderAsync();\n }\n // cellPosition.offsetLeft(this.tableX);\n // cellPosition.offsetTop(this.tableY);\n return {\n chartInstance,\n bounds: cellPosition.bounds\n };\n // return position\n // ? { x: Math.round(position.x + cellPosition.bounds.x1), y: Math.round(position.y + cellPosition.bounds.y1) }\n // : null;\n }\n return {};\n }\n\n _getDimensionSortArray(): string[] | undefined {\n if (this.options?.axes?.length) {\n const dimensionAxisOrient = this.options.indicatorsAsCol ? 'left' : 'bottom';\n const dimensionAxisOption = this.options.axes.find(axis => {\n if (axis.orient === dimensionAxisOrient) {\n return true;\n }\n return false;\n });\n if (dimensionAxisOption && isArray((dimensionAxisOption as any).domain)) {\n return (dimensionAxisOption as any).domain;\n }\n }\n return undefined;\n }\n\n /**\n * 设置表格数据 及排序状态\n * @param records\n * @param sort\n */\n setRecords(records: Array<any>): void {\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n this.options.records = this.internalProps.records = records;\n const options = this.options;\n const internalProps = this.internalProps;\n\n this.dataset.setRecords(records);\n internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset);\n\n // 更新表头\n this.refreshHeader();\n\n // 清空单元格内容\n this.scenegraph.clearCells();\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.clearCellStyleCache();\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n if (this.internalProps.title && !this.internalProps.title.isReleased) {\n this._updateSize();\n this.internalProps.title.resize();\n this.scenegraph.resize();\n }\n this.eventManager.updateEventBinder();\n }\n\n hasCustomRenderOrLayout() {\n if (this.options.customRender) {\n return true;\n }\n const { columnsDefine, rowsDefine, indicatorsDefine } = this.internalProps.layoutMap;\n for (let i = 0; i < columnsDefine.length; i++) {\n const columnDefine = columnsDefine[i];\n if (typeof columnDefine !== 'string' && (columnDefine.headerCustomLayout || columnDefine.headerCustomRender)) {\n return true;\n }\n }\n for (let i = 0; i < rowsDefine.length; i++) {\n const rowDefine = rowsDefine[i];\n if (typeof rowDefine !== 'string' && (rowDefine.headerCustomLayout || rowDefine.headerCustomRender)) {\n return true;\n }\n }\n for (let i = 0; i < indicatorsDefine.length; i++) {\n const indicatorDefine = indicatorsDefine[i];\n if (\n typeof indicatorDefine !== 'string' &&\n (indicatorDefine.customLayout ||\n indicatorDefine.headerCustomLayout ||\n indicatorDefine.customRender ||\n indicatorDefine.headerCustomRender)\n ) {\n return true;\n }\n }\n return false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/PivotChart.ts"],"names":[],"mappings":"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","file":"PivotChart.js","sourcesContent":["import type {\n FieldData,\n FieldDef,\n FieldFormat,\n PivotTableAPI,\n SortRules,\n PivotSortState,\n CellAddress,\n ICellHeaderPaths,\n DropDownMenuEventInfo,\n FieldKeyDef,\n IHeaderTreeDefine,\n IDimensionInfo,\n SortOrder,\n IIndicator,\n PivotChartConstructorOptions,\n CollectValueBy,\n AggregationRules,\n AggregationRule,\n AnyFunction,\n FilterRules,\n IPivotTableCellHeaderPaths,\n PivotChartAPI\n} from './ts-types';\nimport { AggregationType } from './ts-types';\nimport { HierarchyState } from './ts-types';\nimport { getField } from './data/DataSource';\nimport { PivotHeaderLayoutMap } from './layout/pivot-header-layout';\nimport { PIVOT_CHART_EVENT_TYPE } from './ts-types/pivot-table/PIVOT_TABLE_EVENT_TYPE';\nimport { cellInRange, emptyFn } from './tools/helper';\nimport { Dataset } from './dataset/dataset';\nimport { _setDataSource } from './core/tableHelper';\nimport { BaseTable } from './core/BaseTable';\nimport type { BaseTableAPI, PivotChartProtected } from './ts-types/base-table';\nimport type { IChartColumnIndicator } from './ts-types/pivot-table/indicator/chart-indicator';\nimport type { Chart } from './scenegraph/graphic/chart';\nimport { clearChartCacheImage, updateChartData } from './scenegraph/refresh-node/update-chart';\nimport type { ITableAxisOption } from './ts-types/component/axis';\nimport { cloneDeep, isArray } from '@visactor/vutils';\nimport type { DiscreteLegend } from '@visactor/vrender-components';\nimport { Title } from './components/title/title';\nimport { Env } from './tools/env';\nimport { TABLE_EVENT_TYPE } from './core/TABLE_EVENT_TYPE';\n\nexport class PivotChart extends BaseTable implements PivotChartAPI {\n declare internalProps: PivotChartProtected;\n declare options: PivotChartConstructorOptions;\n pivotSortState: PivotSortState[];\n\n dataset?: Dataset; //数据处理对象 开启数据透视分析的表\n\n _selectedDataItemsInChart: any[] = [];\n _selectedDimensionInChart: { key: string; value: string }[] = [];\n _chartEventMap: Record<string, { query?: any; callback: AnyFunction }[]> = {};\n\n _axes: ITableAxisOption[];\n constructor(options: PivotChartConstructorOptions);\n constructor(container: HTMLElement, options: PivotChartConstructorOptions);\n constructor(container?: HTMLElement | PivotChartConstructorOptions, options?: PivotChartConstructorOptions) {\n if (Env.mode === 'node') {\n options = container as PivotChartConstructorOptions;\n container = null;\n } else if (!(container instanceof HTMLElement)) {\n options = container as PivotChartConstructorOptions;\n if ((container as PivotChartConstructorOptions).container) {\n container = (container as PivotChartConstructorOptions).container;\n } else {\n container = null;\n }\n }\n super(container as HTMLElement, options);\n if ((options as any).layout) {\n //TODO hack处理之前的demo都是定义到layout上的 所以这里直接并到options中\n Object.assign(options, (options as any).layout);\n }\n this.internalProps.columns = cloneDeep(options.columns);\n this.internalProps.rows = cloneDeep(options.rows);\n this.internalProps.indicators = cloneDeep(options.indicators);\n this.internalProps.columnTree =\n options.indicatorsAsCol && !options.columns?.length && !options.columnTree ? [] : cloneDeep(options.columnTree);\n this.internalProps.rowTree =\n !options.indicatorsAsCol && !options.rows?.length && !options.rowTree ? [] : cloneDeep(options.rowTree);\n this.internalProps.records = options.records;\n\n this.setCustomStateNameToSpec();\n this.internalProps.columnResizeType = options.columnResizeType ?? 'column';\n this.internalProps.dataConfig = { isPivotChart: true };\n this._axes = isArray(options.axes) ? options.axes : [];\n const rowKeys =\n options.rows?.reduce((keys, rowObj) => {\n if (typeof rowObj === 'string') {\n keys.push(rowObj);\n } else {\n keys.push(rowObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const columnKeys =\n options.columns?.reduce((keys, columnObj) => {\n if (typeof columnObj === 'string') {\n keys.push(columnObj);\n } else {\n keys.push(columnObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const indicatorKeys =\n options.indicators?.reduce((keys, indicatorObj) => {\n if (typeof indicatorObj === 'string') {\n keys.push(indicatorObj);\n } else {\n keys.push(indicatorObj.indicatorKey);\n }\n return keys;\n }, []) ?? [];\n this.internalProps.dataConfig.collectValuesBy = this._generateCollectValuesConfig(columnKeys, rowKeys);\n this.internalProps.dataConfig.aggregationRules = this._generateAggregationRules();\n this.internalProps.dataConfig.dimensionSortArray = this._getDimensionSortArray();\n this.dataset = new Dataset(\n this.internalProps.dataConfig,\n // null,\n rowKeys,\n columnKeys,\n indicatorKeys,\n this.internalProps.indicators,\n options.indicatorsAsCol ?? true,\n options.records,\n undefined,\n this.internalProps.columnTree, //传递自定义树形结构会在dataset中补充指标节点children\n this.internalProps.rowTree,\n true\n );\n this.internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset);\n this.refreshHeader();\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n if (options.title) {\n this.internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n //为了确保用户监听得到这个事件 这里做了异步 确保vtable实例已经初始化完成\n setTimeout(() => {\n this.fireListeners(TABLE_EVENT_TYPE.INITIALIZED, null);\n }, 0);\n }\n static get EVENT_TYPE(): typeof PIVOT_CHART_EVENT_TYPE {\n return PIVOT_CHART_EVENT_TYPE;\n }\n get pivotChartAxes() {\n return this._axes;\n }\n\n isListTable(): false {\n return false;\n }\n isPivotTable(): true {\n return true;\n }\n isPivotChart(): true {\n return true;\n }\n _canResizeColumn(col: number, row: number): boolean {\n const ifCan = super._canResizeColumn(col, row);\n if (ifCan) {\n if (!this.internalProps.layoutMap.indicatorsAsCol) {\n // 列上是否配置了禁止拖拽列宽的配置项disableColumnResize\n const cellDefine = this.internalProps.layoutMap.getBody(col, this.columnHeaderLevelCount);\n if (cellDefine?.disableColumnResize) {\n return false;\n }\n }\n }\n return ifCan;\n }\n updateOption(options: PivotChartConstructorOptions, accelerateFirstScreen = false) {\n const internalProps = this.internalProps;\n //维护选中状态\n // const range = internalProps.selection.range; //保留原有单元格选中状态\n super.updateOption(options);\n this.internalProps.columns = cloneDeep(options.columns);\n this.internalProps.rows = cloneDeep(options.rows);\n this.internalProps.indicators = !options.indicators?.length ? [] : cloneDeep(options.indicators);\n this.internalProps.columnTree =\n options.indicatorsAsCol && !options.columns?.length && !options.columnTree ? [] : cloneDeep(options.columnTree);\n this.internalProps.rowTree =\n !options.indicatorsAsCol && !options.rows?.length && !options.rowTree ? [] : cloneDeep(options.rowTree);\n options.records && (this.internalProps.records = options.records);\n this.setCustomStateNameToSpec();\n this._selectedDataItemsInChart = [];\n // 更新protectedSpace\n internalProps.columnResizeType = options.columnResizeType ?? 'column';\n internalProps.dataConfig = { isPivotChart: true };\n\n this._axes = isArray(options.axes) ? options.axes : [];\n\n //TODO 这里需要加上判断 dataConfig是否有配置变化\n // if (options.rows || options.columns) {\n const rowKeys =\n options.rows?.reduce((keys, rowObj) => {\n if (typeof rowObj === 'string') {\n keys.push(rowObj);\n } else {\n keys.push(rowObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const columnKeys =\n options.columns?.reduce((keys, columnObj) => {\n if (typeof columnObj === 'string') {\n keys.push(columnObj);\n } else {\n keys.push(columnObj.dimensionKey);\n }\n return keys;\n }, []) ?? [];\n const indicatorKeys =\n options.indicators?.reduce((keys, indicatorObj) => {\n if (typeof indicatorObj === 'string') {\n keys.push(indicatorObj);\n } else {\n keys.push(indicatorObj.indicatorKey);\n }\n return keys;\n }, []) ?? [];\n\n this.internalProps.dataConfig.collectValuesBy = this._generateCollectValuesConfig(columnKeys, rowKeys);\n this.internalProps.dataConfig.aggregationRules = this._generateAggregationRules();\n this.internalProps.dataConfig.dimensionSortArray = this._getDimensionSortArray();\n this.dataset = new Dataset(\n this.internalProps.dataConfig,\n // null,\n rowKeys,\n columnKeys,\n indicatorKeys,\n this.internalProps.indicators,\n options.indicatorsAsCol ?? true,\n options.records ?? this.internalProps.records,\n undefined,\n this.internalProps.columnTree,\n this.internalProps.rowTree,\n true\n );\n // }\n internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset);\n // else {\n // console.warn('VTable Warn: your option is invalid, please check it!');\n // return this;\n // }\n\n // 更新表头\n this.refreshHeader();\n\n // this.hasMedia = null; // 避免重复绑定\n // 清空目前数据\n if (internalProps.releaseList) {\n internalProps.releaseList.forEach(releaseObj => releaseObj?.release?.());\n internalProps.releaseList = null;\n }\n // // 恢复selection状态\n // internalProps.selection.range = range;\n // this._updateSize();\n // 传入新数据\n // if (options.dataSource) {\n // _setDataSource(this, options.dataSource);\n // }else\n // 清空单元格内容\n this.scenegraph.clearCells();\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.scenegraph.createSceneGraph();\n if (options.title) {\n this.internalProps.title = new Title(options.title, this);\n this.scenegraph.resize();\n }\n return new Promise(resolve => {\n setTimeout(resolve, 0);\n });\n }\n updatePagination() {\n //void\n }\n refreshHeader(): void {\n const internalProps = this.internalProps;\n\n //设置列宽\n for (let col = 0; col < internalProps.layoutMap.columnWidths.length; col++) {\n const { width, minWidth, maxWidth } = internalProps.layoutMap.columnWidths?.[col] ?? {};\n // width 为 \"auto\" 时先不存储ColWidth\n if (width && ((typeof width === 'string' && width !== 'auto') || (typeof width === 'number' && width > 0))) {\n this._setColWidth(col, width);\n }\n if (minWidth && ((typeof minWidth === 'number' && minWidth > 0) || typeof minWidth === 'string')) {\n this.setMinColWidth(col, minWidth);\n }\n if (maxWidth && ((typeof maxWidth === 'number' && maxWidth > 0) || typeof maxWidth === 'string')) {\n this.setMaxColWidth(col, maxWidth);\n }\n }\n //刷新表头,原来这里是_refreshRowCount 后改名为_refreshRowColCount 因为表头定义会影响行数,而转置模式下会影响列数\n this.refreshRowColCount();\n }\n refreshRowColCount(): void {\n const table = this;\n const { layoutMap } = table.internalProps;\n if (!layoutMap) {\n return;\n }\n table.colCount = layoutMap.colCount ?? 0;\n table.rowCount = layoutMap.rowCount ?? 0;\n // table.frozenColCount = layoutMap.rowHeaderLevelCount; //这里不要这样写 这个setter会检查扁头宽度 可能将frozenColCount置为0\n table.internalProps.frozenColCount = layoutMap.rowHeaderLevelCount ?? 0;\n table.frozenRowCount = layoutMap.headerLevelCount;\n if (table.bottomFrozenRowCount !== (layoutMap?.bottomFrozenRowCount ?? 0)) {\n table.bottomFrozenRowCount = layoutMap?.bottomFrozenRowCount ?? 0;\n }\n if (table.rightFrozenColCount !== (layoutMap?.rightFrozenColCount ?? 0)) {\n table.rightFrozenColCount = layoutMap?.rightFrozenColCount ?? 0;\n }\n this.stateManager.setFrozenCol(this.internalProps.frozenColCount);\n }\n protected _getSortFuncFromHeaderOption(\n columns: undefined,\n field: FieldDef,\n fieldKey?: FieldKeyDef\n ): ((v1: any, v2: any, order: SortOrder) => 0 | 1 | -1) | undefined {\n return undefined;\n }\n /**\n * 将现有tree中的的hierarchyState同步到rows透视树中\n * @param sourceNode\n * @param targetNode\n */\n private syncHierarchyState(sourceNode: any, targetNode: IHeaderTreeDefine) {\n if (sourceNode.value === targetNode.value && sourceNode.dimensionKey === targetNode.dimensionKey) {\n targetNode.hierarchyState =\n targetNode.hierarchyState ?? (targetNode?.children ? sourceNode.hierarchyState : undefined);\n targetNode?.children?.forEach((targetChildNode: IHeaderTreeDefine, index: number) => {\n if (sourceNode?.children?.[index] && targetChildNode) {\n this.syncHierarchyState(sourceNode.children[index], targetChildNode);\n }\n });\n }\n }\n getRecordShowIndexByCell(col: number, row: number): number {\n return undefined;\n }\n\n getTableIndexByRecordIndex(recordIndex: number): number {\n return undefined;\n }\n getTableIndexByField(field: FieldDef): number {\n return undefined;\n }\n getCellAddrByFieldRecord(field: FieldDef, recordIndex: number): CellAddress {\n return undefined;\n }\n getBodyIndexByRow(row: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getBodyIndexByRow(row);\n }\n getBodyIndexByCol(col: number): number {\n const { layoutMap } = this.internalProps;\n return layoutMap.getBodyIndexByCol(col);\n }\n // getFieldData(field: FieldDef | FieldFormat | undefined, col: number, row: number): FieldData {\n // if (field === null || field === undefined) {\n // return null;\n // }\n // const table = this;\n // if (table.internalProps.layoutMap.isHeader(col, row)) {\n // return null;\n // }\n // const rowIndex = this.getBodyIndexByRow(row);\n // const colIndex = this.getBodyIndexByCol(col);\n // const dataValue = table.dataSource?.getField(rowIndex, colIndex, col, row, this);\n // if (typeof field !== 'string') {\n // //field为函数format\n // const cellHeaderPaths = table.internalProps.layoutMap.getCellHeaderPaths(col, row);\n // return getField({ dataValue, ...cellHeaderPaths }, field, col, row, this, emptyFn as any);\n // }\n // return dataValue;\n // }\n\n getCellValue(col: number, row: number): FieldData {\n const customMergeText = this.getCustomMergeValue(col, row);\n if (customMergeText) {\n return customMergeText;\n }\n if (this.internalProps.layoutMap.isHeader(col, row)) {\n const { title, fieldFormat } = this.internalProps.layoutMap.getHeader(col, row);\n return typeof fieldFormat === 'function' ? fieldFormat(title, col, row, this as BaseTableAPI) : title;\n }\n if (this.dataset) {\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any) => {\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any) => {\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row)\n );\n return aggregator.value ? aggregator.value() : undefined;\n }\n const { fieldFormat } = this.internalProps.layoutMap.getBody(col, row);\n const rowIndex = this.getBodyIndexByRow(row);\n const colIndex = this.getBodyIndexByCol(col);\n const dataValue = this.records[rowIndex]?.[colIndex];\n if (typeof fieldFormat === 'function') {\n const fieldResult = fieldFormat(dataValue, col, row, this as BaseTableAPI);\n return fieldResult;\n }\n return dataValue;\n // const { field, fieldFormat } = this.internalProps.layoutMap.getBody(col, row);\n // return this.getFieldData(fieldFormat || field, col, row);\n }\n\n getCellOriginValue(col: number, row: number): FieldData {\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n const { title } = table.internalProps.layoutMap.getHeader(col, row);\n return typeof title === 'function' ? title() : title;\n }\n if (this.dataset) {\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any) => {\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any) => {\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row)\n );\n return aggregator.value ? aggregator.value() : undefined;\n // return ''\n }\n const rowIndex = this.getBodyIndexByRow(row);\n const colIndex = this.getBodyIndexByCol(col);\n const dataValue = this.records[rowIndex]?.[colIndex];\n return dataValue;\n // const { field } = table.internalProps.layoutMap.getBody(col, row);\n // return table.getFieldData(field, col, row);\n }\n\n getCellRawValue(col: number, row: number) {\n return this.getCellOriginValue(col, row);\n }\n\n // 获取原始数据\n getCellOriginRecord(col: number, row: number) {\n const table = this;\n if (table.internalProps.layoutMap.isHeader(col, row)) {\n return undefined;\n }\n if (this.dataset) {\n const cellDimensionPath = this.internalProps.layoutMap.getCellHeaderPaths(col, row);\n const colKeys = cellDimensionPath.colHeaderPaths.map((colPath: any) => {\n return colPath.indicatorKey ?? colPath.value;\n });\n const rowKeys = cellDimensionPath.rowHeaderPaths.map((rowPath: any) => {\n return rowPath.indicatorKey ?? rowPath.value;\n });\n const aggregator = this.dataset.getAggregator(\n !this.internalProps.layoutMap.indicatorsAsCol ? rowKeys.slice(0, -1) : rowKeys,\n this.internalProps.layoutMap.indicatorsAsCol ? colKeys.slice(0, -1) : colKeys,\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).getIndicatorKey(col, row)\n );\n return aggregator.records;\n // return ''\n }\n return undefined;\n }\n\n getCellRawRecord(col: number, row: number) {\n return this.getCellOriginRecord(col, row);\n }\n /**\n * 全量更新排序规则 TODO 待完善\n * @param sortRules\n */\n updateSortRules(sortRules: SortRules) {\n this.internalProps.dataConfig.sortRules = sortRules;\n this.dataset.updateSortRules(sortRules);\n (this.internalProps.layoutMap as PivotHeaderLayoutMap).updateDataset(this.dataset);\n this.render();\n }\n updatePivotSortState(\n pivotSortStateConfig: {\n dimensions: IDimensionInfo[];\n order: SortOrder;\n }[]\n ) {\n // // dimensions: IDimensionInfo[], order: SortOrder\n // // 清空当前 pivot sort 状态\n // const cells = this.pivotSortState.map((cell) => ({ col: cell.col, row: cell.row }));\n // this.pivotSortState.length = 0;\n // cells.map((cell) => {\n // this.invalidateCellRange(this.getCellRange(cell.col, cell.row));\n // });\n\n // 更新 pivot sort 状态\n for (let i = 0; i < pivotSortStateConfig.length; i++) {\n const { dimensions, order } = pivotSortStateConfig[i];\n const cellAddress = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getPivotCellAdress(dimensions);\n\n cellAddress &&\n this.pivotSortState.push({\n col: cellAddress.col,\n row: cellAddress.row,\n order\n });\n }\n\n // // 更新相关单元格样式\n // this.pivotSortState.map((cell) => {\n // this.invalidateCellRange(this.getCellRange(cell.col, cell.row));\n // });\n }\n\n getPivotSortState(col: number, row: number): SortOrder {\n if (!this.pivotSortState) {\n return undefined;\n }\n const cellRange = this.getCellRange(col, row);\n for (let i = 0; i < this.pivotSortState.length; i++) {\n const { col: sortCol, row: sortRow, order } = this.pivotSortState[i];\n\n if (cellInRange(cellRange, sortCol, sortRow)) {\n return order;\n }\n }\n return undefined;\n }\n /**\n * 拖拽移动表头位置\n * @param source 移动源位置\n * @param target 移动目标位置\n */\n moveHeaderPosition(source: CellAddress, target: CellAddress) {\n // 调用布局类 布局数据结构调整为移动位置后的\n const moveContext = (this.internalProps.layoutMap as PivotHeaderLayoutMap).moveHeaderPosition(source, target);\n if (moveContext) {\n if (moveContext.moveType === 'column') {\n // 是扁平数据结构 需要将二维数组this.records进行调整\n if (this.options.records?.[0]?.constructor === Array) {\n for (let row = 0; row < (this.internalProps.records as Array<any>).length; row++) {\n const sourceColumns = (this.internalProps.records[row] as unknown as number[]).splice(\n moveContext.sourceIndex - this.rowHeaderLevelCount,\n moveContext.moveSize\n );\n sourceColumns.unshift((moveContext.targetIndex as any) - this.rowHeaderLevelCount, 0 as any);\n Array.prototype.splice.apply(this.internalProps.records[row] as unknown as number[], sourceColumns);\n }\n }\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n this.colWidthsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.moveSize);\n //下面代码取自refreshHeader列宽设置逻辑\n //设置列宽极限值 TODO 目前是有问题的 最大最小宽度限制 移动列位置后不正确\n for (let col = 0; col < this.internalProps.layoutMap.columnWidths.length; col++) {\n const { minWidth, maxWidth } = this.internalProps.layoutMap.columnWidths?.[col] ?? {};\n if (minWidth && ((typeof minWidth === 'number' && minWidth > 0) || typeof minWidth === 'string')) {\n this.setMinColWidth(col, minWidth);\n }\n if (maxWidth && ((typeof maxWidth === 'number' && maxWidth > 0) || typeof maxWidth === 'string')) {\n this.setMaxColWidth(col, maxWidth);\n }\n }\n } else if (moveContext.moveType === 'row') {\n // 是扁平数据结构 需要将二维数组this.records进行调整\n if (this.options.records?.[0]?.constructor === Array) {\n const sourceRows = (this.internalProps.records as unknown as number[]).splice(\n moveContext.sourceIndex - this.columnHeaderLevelCount,\n moveContext.moveSize\n );\n sourceRows.unshift((moveContext.targetIndex as any) - this.columnHeaderLevelCount, 0 as any);\n Array.prototype.splice.apply(this.internalProps.records, sourceRows);\n }\n //colWidthsMap 中存储着每列的宽度 根据移动 sourceCol targetCol 调整其中的位置\n this.rowHeightsMap.adjustOrder(moveContext.sourceIndex, moveContext.targetIndex, moveContext.moveSize);\n }\n return true;\n }\n return false;\n }\n /**\n * 表头切换层级状态\n * @param col\n * @param row\n */\n toggleHierarchyState(col: number, row: number) {\n const hierarchyState = this.getHierarchyState(col, row);\n if (hierarchyState === HierarchyState.expand) {\n this.fireListeners(PIVOT_CHART_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.collapse\n });\n } else if (hierarchyState === HierarchyState.collapse) {\n this.fireListeners(PIVOT_CHART_EVENT_TYPE.TREE_HIERARCHY_STATE_CHANGE, {\n col: col,\n row: row,\n hierarchyState: HierarchyState.expand,\n originData: this.getCellOriginRecord(col, row)\n });\n }\n\n const result = (this.internalProps.layoutMap as PivotHeaderLayoutMap).toggleHierarchyState(col, row);\n //影响行数\n this.refreshRowColCount();\n // this.scenegraph.clearCells();\n // this.scenegraph.createSceneGraph();\n // this.invalidate();\n this.clearCellStyleCache();\n this.scenegraph.updateHierarchyIcon(col, row);\n this.scenegraph.updateRow(result.removeCellPositions, result.addCellPositions);\n }\n /**\n * 通过表头的维度值路径来计算单元格位置 getCellAddressByHeaderPaths接口更强大一些 不限表头 不限参数格式\n * @param dimensionPaths\n * @returns\n */\n getHeaderCellAddressByPath(dimensionPaths: IDimensionInfo[]): CellAddress {\n const cellAddress = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getPivotCellAdress(dimensionPaths);\n return cellAddress;\n }\n /**\n * 通过表头的维度值路径来计算单元格位置\n * @param dimensionPaths\n * @returns\n */\n getCellAddressByHeaderPaths(\n dimensionPaths: // | {\n // colHeaderPaths: IDimensionInfo[];\n // rowHeaderPaths: IDimensionInfo[];\n // }\n IPivotTableCellHeaderPaths | IDimensionInfo[]\n ): CellAddress {\n const cellAddress = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getCellAdressByHeaderPath(\n dimensionPaths\n );\n return cellAddress;\n }\n\n /**\n * 通过传入的坐标 获取该位置当前单元格的维度路径;\n * @param coordinate 从body左上角为原点 coordinate为偏移距离 去计算单元格的headerPath;\n * 如不传coordinate坐标则按取body中左上角第一个单元格的维度路径\n * @returns\n */\n getHeaderPathByXY(coordinate?: { x: number; y: number }): ICellHeaderPaths {\n let cellAddr;\n if (coordinate) {\n cellAddr = this.getCellAt(\n coordinate.x + this.getFrozenColsWidth() + this.scrollLeft + 1,\n coordinate.y + this.getFrozenRowsHeight() + this.scrollTop + 1\n );\n } else {\n cellAddr = this.getCellAt(\n this.getFrozenColsWidth() + this.scrollLeft + 1,\n this.getFrozenRowsHeight() + this.scrollTop + 1\n );\n }\n const cellHeaderPaths = this.internalProps.layoutMap.getCellHeaderPaths(cellAddr.col, cellAddr.row);\n return cellHeaderPaths;\n }\n getHierarchyState(col: number, row: number): HierarchyState {\n return this._getHeaderLayoutMap(col, row)?.hierarchyState;\n }\n\n _hasHierarchyTreeHeader() {\n return (this.internalProps.layoutMap as PivotHeaderLayoutMap).rowHierarchyType === 'tree';\n }\n\n getMenuInfo(col: number, row: number, type: string): DropDownMenuEventInfo {\n const dimensionInfos = (this.internalProps.layoutMap as PivotHeaderLayoutMap).getPivotDimensionInfo(col, row);\n const result: DropDownMenuEventInfo = {\n dimensionKey: dimensionInfos[dimensionInfos.length - 1].dimensionKey,\n value: this.getCellValue(col, row),\n cellLocation: this.getCellLocation(col, row),\n isPivotCorner: this.isCornerHeader(col, row)\n };\n return result;\n }\n /**\n * 根据用户配置 生成 收集维度值collectValuesBy 的配置 传给dataset用\n * 这个收集规则的逻辑是按照正常使用方式:\n * 指标显示在行表头indicatorsAsCol=false时,图表yField为指标值,xField为维度值(考虑stack)direction为默认值'vertical';\n * 指标显示在列表头indicatorsAsCol=true时,图表xField为指标值,yField为维度值(考虑stack)direction为'horizontal';\n * @param columnKeys\n * @param rowKeys\n * @returns\n */\n private _generateCollectValuesConfig(columnKeys: string[], rowKeys: string[]): Record<string, CollectValueBy> {\n const indicators = this.internalProps.indicators;\n const collectValuesBy: Record<string, CollectValueBy> = {};\n\n for (let i = 0, len = indicators?.length; i < len; i++) {\n if (typeof indicators[i] !== 'string' && (indicators[i] as IChartColumnIndicator).chartSpec) {\n if (this.options.indicatorsAsCol === false) {\n const indicatorDefine = indicators[i] as IIndicator;\n //明确指定 chartSpec.stack为true\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack !== false &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'bar' ||\n (indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'area') &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec.stack = true);\n // 收集指标值的范围\n collectValuesBy[indicatorDefine.indicatorKey] = {\n by: rowKeys,\n range: true,\n // 判断是否需要匹配维度值相同的进行求和计算\n sumBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack &&\n columnKeys.concat((indicatorDefine as IChartColumnIndicator).chartSpec?.xField)\n };\n if ((indicatorDefine as IChartColumnIndicator).chartSpec.series) {\n (indicatorDefine as IChartColumnIndicator).chartSpec.series.forEach((chartSeries: any) => {\n const xField = typeof chartSeries.xField === 'string' ? chartSeries.xField : chartSeries.xField[0];\n collectValuesBy[xField] = {\n by: columnKeys,\n type: chartSeries.direction !== 'horizontal' ? 'xField' : undefined,\n range: chartSeries.direction === 'horizontal',\n sortBy:\n chartSeries.direction !== 'horizontal'\n ? chartSeries?.data?.fields?.[xField]?.domain ??\n (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[xField]?.domain\n : undefined\n };\n\n const yField = chartSeries.yField;\n chartSeries.stack !== false &&\n (chartSeries.type === 'bar' || chartSeries.type === 'area') &&\n (chartSeries.stack = true); //明确指定 chartSpec.stack为true\n collectValuesBy[yField] = {\n by: rowKeys,\n range: chartSeries.direction !== 'horizontal', // direction默认为'vertical'\n sumBy: chartSeries.stack && columnKeys.concat(chartSeries?.xField), // 逻辑严谨的话 这个concat的值也需要结合 chartSeries.direction来判断是xField还是yField\n sortBy:\n chartSeries.direction === 'horizontal'\n ? chartSeries?.data?.fields?.[yField]?.domain ??\n (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[yField]?.domain\n : undefined\n };\n });\n } else {\n const xField =\n typeof (indicatorDefine as IChartColumnIndicator).chartSpec.xField === 'string'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec.xField\n : (indicatorDefine as IChartColumnIndicator).chartSpec.xField[0];\n collectValuesBy[xField] = {\n by: columnKeys,\n type:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction !== 'horizontal' ? 'xField' : undefined,\n range: (indicatorDefine as IChartColumnIndicator).chartSpec.direction === 'horizontal',\n sortBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction !== 'horizontal'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[xField]?.domain\n : undefined\n };\n //明确指定 chartSpec.stack为true\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack !== false &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'bar' ||\n (indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'area') &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec.stack = true);\n //下面这个收集的值 应该是和收集的 collectValuesBy[indicatorDefine.indicatorKey] 相同\n const yField = (indicatorDefine as IChartColumnIndicator).chartSpec.yField;\n collectValuesBy[yField] = {\n by: rowKeys,\n range: (indicators[i] as IChartColumnIndicator).chartSpec.direction !== 'horizontal', // direction默认为'vertical'\n sumBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.stack &&\n columnKeys.concat((indicatorDefine as IChartColumnIndicator).chartSpec?.xField), // 逻辑严谨的话 这个concat的值也需要结合 chartSeries.direction来判断是xField还是yField\n sortBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction === 'horizontal'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[yField]?.domain\n : undefined\n };\n }\n } else {\n const indicatorDefine = indicators[i] as IIndicator;\n //明确指定 chartSpec.stack为true\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack !== false &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'bar' ||\n (indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'area') &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec.stack = true);\n // 收集指标值的范围\n collectValuesBy[indicatorDefine.indicatorKey] = {\n by: columnKeys,\n range: true,\n // 判断是否需要匹配维度值相同的进行求和计算\n sumBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack &&\n rowKeys.concat((indicatorDefine as IChartColumnIndicator).chartSpec?.yField)\n };\n if ((indicatorDefine as IChartColumnIndicator).chartSpec.series) {\n (indicatorDefine as IChartColumnIndicator).chartSpec.series.forEach((chartSeries: any) => {\n const yField = typeof chartSeries.yField === 'string' ? chartSeries.yField : chartSeries.yField[0];\n collectValuesBy[yField] = {\n by: rowKeys,\n type: chartSeries.direction === 'horizontal' ? 'yField' : undefined,\n range: chartSeries.direction !== 'horizontal',\n sortBy:\n chartSeries.direction === 'horizontal'\n ? chartSeries?.data?.fields?.[yField]?.domain ??\n (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[yField]?.domain\n : undefined\n };\n\n const xField = chartSeries.xField;\n chartSeries.stack !== false &&\n (chartSeries.type === 'bar' || chartSeries.type === 'area') &&\n (chartSeries.stack = true); //明确指定 chartSpec.stack为true\n collectValuesBy[xField] = {\n by: columnKeys,\n range: chartSeries.direction === 'horizontal', // direction默认为'vertical'\n sumBy: chartSeries.stack && rowKeys.concat(chartSeries?.yField),\n sortBy:\n chartSeries.direction !== 'horizontal'\n ? chartSeries?.data?.fields?.[xField]?.domain ??\n (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[xField]?.domain\n : undefined\n };\n });\n } else {\n const yField =\n typeof (indicatorDefine as IChartColumnIndicator).chartSpec.yField === 'string'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec.yField\n : (indicatorDefine as IChartColumnIndicator).chartSpec.yField[0];\n collectValuesBy[yField] = {\n by: rowKeys,\n type:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction === 'horizontal' ? 'yField' : undefined,\n range: (indicatorDefine as IChartColumnIndicator).chartSpec.direction !== 'horizontal',\n sortBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction === 'horizontal'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[yField]?.domain\n : undefined\n };\n //明确指定 chartSpec.stack为true\n (indicatorDefine as IChartColumnIndicator).chartSpec?.stack !== false &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'bar' ||\n (indicatorDefine as IChartColumnIndicator).chartSpec?.type === 'area') &&\n ((indicatorDefine as IChartColumnIndicator).chartSpec.stack = true);\n //下面这个收集的值 应该是和收集的 collectValuesBy[indicatorDefine.indicatorKey] 相同\n const xField = (indicatorDefine as IChartColumnIndicator).chartSpec.xField;\n collectValuesBy[xField] = {\n by: columnKeys,\n range: (indicators[i] as IChartColumnIndicator).chartSpec.direction === 'horizontal', // direction默认为'vertical'\n sumBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.stack &&\n rowKeys.concat((indicatorDefine as IChartColumnIndicator).chartSpec?.yField),\n sortBy:\n (indicatorDefine as IChartColumnIndicator).chartSpec.direction !== 'horizontal'\n ? (indicatorDefine as IChartColumnIndicator).chartSpec?.data?.fields?.[xField]?.domain\n : undefined\n };\n }\n }\n }\n }\n\n return collectValuesBy;\n }\n // private _generateAggregationRules(indicatorKeys: string[]): AggregationRules {\n // return indicatorKeys.map((indicatorKey: string) => {\n // return {\n // indicatorKey, //field转为指标key\n // field: indicatorKey, //指标依据字段\n // aggregationType: AggregationType.RECORD //计算类型\n // };\n // });\n // }\n /**\n *\n * @param indicatorFromChartSpec 是否需要考虑chartSpec中的yField或者xField分析作为指标来分组数据\n * @returns\n */\n private _generateAggregationRules() {\n const aggregationRules: AggregationRules = [];\n // indicatorFromChartSpec = true;\n this.internalProps.indicators?.forEach((indicator: IIndicator | string) => {\n if (typeof indicator === 'string') {\n aggregationRules.push({\n indicatorKey: indicator, //field转为指标key\n field: indicator, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n } as AggregationRule<AggregationType.RECORD>);\n } else {\n if ((indicator as IChartColumnIndicator).chartSpec?.series) {\n // 如果chartSpec配置了组合图 series 则需要考虑 series中存在的多个指标\n const fields: string[] = [];\n (indicator as IChartColumnIndicator).chartSpec?.series.forEach((seriesSpec: any) => {\n const seriesField = this.options.indicatorsAsCol === false ? seriesSpec.yField : seriesSpec.xField;\n if (fields.indexOf(seriesField) === -1) {\n fields.push(seriesField);\n }\n });\n aggregationRules.push({\n indicatorKey: indicator.indicatorKey, //field转为指标key\n field: fields, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n });\n } else {\n const field =\n this.options.indicatorsAsCol === false\n ? (indicator as IChartColumnIndicator).chartSpec.yField\n : (indicator as IChartColumnIndicator).chartSpec.xField;\n aggregationRules.push({\n indicatorKey: indicator.indicatorKey, //field转为指标key\n field: field ?? indicator.indicatorKey, //指标依据字段\n aggregationType: AggregationType.RECORD //计算类型\n });\n }\n }\n });\n\n return aggregationRules;\n }\n /** 将spec中的 selected和selected_reverse 更名为vtable_selected和vtable_selected_reverse */\n private setCustomStateNameToSpec() {\n /** 修改设置的selected 和 dselected_reverse的名字加前缀vtable */\n const setCustomStateName = (spec: any) => {\n if (spec.bar?.state?.selected) {\n spec.bar.state.vtable_selected = spec.bar.state.selected;\n spec.bar.state.vtable_selected_reverse = spec.bar.state.selected_reverse;\n delete spec.bar.state.selected;\n delete spec.bar.state.selected_reverse;\n }\n if (spec.point?.state?.selected) {\n spec.point.state.vtable_selected = spec.point.state.selected;\n spec.point.state.vtable_selected_reverse = spec.point.state.selected_reverse;\n delete spec.point.state.selected;\n delete spec.point.state.selected_reverse;\n }\n if (spec.line?.state?.selected) {\n spec.line.state.vtable_selected = spec.line.state.selected;\n spec.line.state.vtable_selected_reverse = spec.line.state.selected_reverse;\n delete spec.line.state.selected;\n delete spec.line.state.selected_reverse;\n }\n if (spec.area?.state?.selected) {\n spec.area.state.vtable_selected = spec.area.state.selected;\n spec.area.state.vtable_selected_reverse = spec.area.state.selected_reverse;\n delete spec.area.state.selected;\n delete spec.area.state.selected_reverse;\n }\n };\n this.internalProps.indicators?.forEach((indicator: string | IIndicator) => {\n if ((indicator as IChartColumnIndicator).chartSpec) {\n const spec = (indicator as IChartColumnIndicator).chartSpec;\n if (spec.series) {\n spec.series.forEach((series: any) => {\n setCustomStateName(series);\n });\n } else {\n setCustomStateName(spec);\n }\n }\n });\n }\n\n /** 更新数据过滤规则,适用场景:点击图例项后 更新过滤规则 来更新图表 */\n updateFilterRules(filterRules: FilterRules) {\n this.internalProps.dataConfig.filterRules = filterRules;\n this.dataset.updateFilterRules(filterRules);\n clearChartCacheImage(this.scenegraph);\n updateChartData(this.scenegraph);\n this.render();\n }\n /** 获取图例的选择状态 */\n getLegendSelected() {\n return (this.internalProps.legends.legendComponent as any)._getSelectedLegends().map((d: any) => d.label);\n }\n setLegendSelected(selectedData: (string | number)[]) {\n (this.internalProps.legends.legendComponent as DiscreteLegend).setSelected(selectedData);\n // this.updateFilterRules([{ filterKey: '20001', filteredValues: selectedData }]);\n // this.invalidate();\n }\n /**\n * 获取图表上某一个图元的位置\n * @param datum 图元对应的数据\n * @param cellHeaderPaths 单元格的header路径\n * @returns 图元在整个表格上的坐标位置(相对表格左上角视觉坐标)\n */\n getChartDatumPosition(datum: any, cellHeaderPaths: IPivotTableCellHeaderPaths): { x: number; y: number } {\n const { chartInstance, bounds } = this.getChartInstance(cellHeaderPaths);\n if (chartInstance) {\n const position = chartInstance.convertDatumToPosition(datum);\n return position ? { x: Math.round(position.x + bounds.x1), y: Math.round(position.y + bounds.y1) } : null;\n }\n return null;\n }\n /** 获取某条数据所在的行列位置 */\n getCellAddressByRecord(record: any) {\n const rowHeaderPaths: IDimensionInfo[] = [];\n const colHeaderPaths: IDimensionInfo[] = [];\n const recordKeyMapToIndicatorKeys = {};\n const indicatorRecordKeys: (string | number)[] = [];\n this.dataset.dataConfig.aggregationRules.forEach(aggregationRule => {\n if (typeof aggregationRule.field === 'string') {\n recordKeyMapToIndicatorKeys[aggregationRule.field] = aggregationRule.indicatorKey;\n indicatorRecordKeys.push(aggregationRule.field);\n } else {\n for (let i = 0; i < aggregationRule.field.length; i++) {\n recordKeyMapToIndicatorKeys[aggregationRule.field[i]] = aggregationRule.indicatorKey;\n indicatorRecordKeys.push(aggregationRule.field[i]);\n }\n }\n });\n for (const key in record) {\n if (this.dataset.rows.indexOf(key) >= 0) {\n rowHeaderPaths.push({\n dimensionKey: key,\n value: record[key]\n });\n }\n if (this.dataset.columns.indexOf(key) >= 0) {\n colHeaderPaths.push({\n dimensionKey: key,\n value: record[key]\n });\n }\n if (indicatorRecordKeys.indexOf(key) >= 0) {\n if (this.dataset.indicatorsAsCol) {\n colHeaderPaths.push({\n indicatorKey: recordKeyMapToIndicatorKeys[key]\n });\n } else {\n rowHeaderPaths.push({\n indicatorKey: recordKeyMapToIndicatorKeys[key]\n });\n }\n }\n }\n return this.getCellAddressByHeaderPaths({\n rowHeaderPaths,\n colHeaderPaths,\n cellLocation: 'body'\n });\n }\n\n getChartInstance(cellHeaderPaths: IPivotTableCellHeaderPaths) {\n const cellAddr = this.getCellAddressByHeaderPaths(cellHeaderPaths);\n if (cellAddr) {\n const cellPosition = this.getCellRelativeRect(cellAddr.col, cellAddr.row);\n const cellGroup = this.scenegraph.getCell(cellAddr.col, cellAddr.row);\n // let position;\n let chartInstance: any;\n const chartNode: Chart = cellGroup?.getChildren()?.[0] as Chart;\n if (chartNode.attribute.chartInstance) {\n chartInstance = chartNode.attribute.chartInstance;\n const { dataId, data, axes, spec } = chartNode.attribute;\n const viewBox = chartNode.getViewBox();\n axes.forEach((axis: any, index: number) => {\n if (axis.type === 'linear') {\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 } else 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 }\n });\n\n chartInstance.updateViewBox(\n {\n x1: viewBox.x1 - (chartNode.getRootNode() as any).table.scrollLeft,\n x2: viewBox.x2 - (chartNode.getRootNode() as any).table.scrollLeft,\n y1: viewBox.y1 - (chartNode.getRootNode() as any).table.scrollTop,\n y2: viewBox.y2 - (chartNode.getRootNode() as any).table.scrollTop\n },\n false,\n false\n );\n // chartInstance.updateDataSync(dataId, data);\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 // position = chartInstance.convertDatumToPosition(datum);\n // this.render();\n this.renderAsync();\n }\n // cellPosition.offsetLeft(this.tableX);\n // cellPosition.offsetTop(this.tableY);\n return {\n chartInstance,\n bounds: cellPosition.bounds\n };\n // return position\n // ? { x: Math.round(position.x + cellPosition.bounds.x1), y: Math.round(position.y + cellPosition.bounds.y1) }\n // : null;\n }\n return {};\n }\n\n _getDimensionSortArray(): string[] | undefined {\n if (this.options?.axes?.length) {\n const dimensionAxisOrient = this.options.indicatorsAsCol ? 'left' : 'bottom';\n const dimensionAxisOption = this.options.axes.find(axis => {\n if (axis.orient === dimensionAxisOrient) {\n return true;\n }\n return false;\n });\n if (dimensionAxisOption && isArray((dimensionAxisOption as any).domain)) {\n return (dimensionAxisOption as any).domain;\n }\n }\n return undefined;\n }\n\n /**\n * 设置表格数据 及排序状态\n * @param records\n * @param sort\n */\n setRecords(records: Array<any>): void {\n const oldHoverState = { col: this.stateManager.hover.cellPos.col, row: this.stateManager.hover.cellPos.row };\n this.options.records = this.internalProps.records = records;\n const options = this.options;\n const internalProps = this.internalProps;\n\n this.dataset.setRecords(records);\n internalProps.layoutMap = new PivotHeaderLayoutMap(this, this.dataset);\n\n // 更新表头\n this.refreshHeader();\n\n // 清空单元格内容\n this.scenegraph.clearCells();\n // this.internalProps.frozenColCount = this.options.frozenColCount || this.rowHeaderLevelCount;\n // 生成单元格场景树\n this.clearCellStyleCache();\n this.scenegraph.createSceneGraph();\n this.stateManager.updateHoverPos(oldHoverState.col, oldHoverState.row);\n if (this.internalProps.title && !this.internalProps.title.isReleased) {\n this._updateSize();\n this.internalProps.title.resize();\n this.scenegraph.resize();\n }\n this.eventManager.updateEventBinder();\n }\n\n hasCustomRenderOrLayout() {\n if (this.options.customRender) {\n return true;\n }\n const { columnsDefine, rowsDefine, indicatorsDefine } = this.internalProps.layoutMap;\n for (let i = 0; i < columnsDefine.length; i++) {\n const columnDefine = columnsDefine[i];\n if (typeof columnDefine !== 'string' && (columnDefine.headerCustomLayout || columnDefine.headerCustomRender)) {\n return true;\n }\n }\n for (let i = 0; i < rowsDefine.length; i++) {\n const rowDefine = rowsDefine[i];\n if (typeof rowDefine !== 'string' && (rowDefine.headerCustomLayout || rowDefine.headerCustomRender)) {\n return true;\n }\n }\n for (let i = 0; i < indicatorsDefine.length; i++) {\n const indicatorDefine = indicatorsDefine[i];\n if (\n typeof indicatorDefine !== 'string' &&\n (indicatorDefine.customLayout ||\n indicatorDefine.headerCustomLayout ||\n indicatorDefine.customRender ||\n indicatorDefine.headerCustomRender)\n ) {\n return true;\n }\n }\n return false;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/axis/label-overlap.ts"],"names":[],"mappings":"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","file":"label-overlap.js","sourcesContent":["import type { IGroup, INode, IText } from '
|
|
1
|
+
{"version":3,"sources":["../src/components/axis/label-overlap.ts"],"names":[],"mappings":"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","file":"label-overlap.js","sourcesContent":["import type { IGroup, INode, IText } from './../../vrender';\nimport type { LineAxis } from '@visactor/vrender-components';\nimport type { CartesianAxis } from './axis';\nimport { isXAxis } from '../util/orient';\nimport { isEmpty, last as peek } from '@visactor/vutils';\n\nexport function doOverlap(axisComponent: LineAxis, axis: CartesianAxis) {\n const layer0LabelsContainer = axisComponent.find(\n (node: INode) => node.name === 'axis-label-container-layer-0',\n true\n ) as IGroup;\n const layer1LabelsContainer = axisComponent.find(\n (node: INode) => node.name === 'axis-label-container-layer-1',\n true\n ) as IGroup;\n overlap(layer0LabelsContainer ? (layer0LabelsContainer.getChildren() as IText[]) : [], axis);\n overlap(layer1LabelsContainer ? (layer1LabelsContainer.getChildren() as IText[]) : [], axis);\n}\n\nfunction labelFlush(axisLabels: IText[], axis: CartesianAxis) {\n const { width, height } = axis.getLayoutRect();\n const isX = isXAxis(axis.orient);\n const isInverse = (axis.option as any).inverse === true;\n const first = axisLabels[0];\n const last = peek(axisLabels);\n\n if (isX) {\n if (isInverse) {\n const start = width;\n const end = 0;\n const startBound = first.AABBBounds.x2;\n const endBound = last.AABBBounds.x1;\n\n if (startBound > start) {\n first.setAttributes({\n x: start,\n textAlign: 'right'\n });\n }\n\n if (endBound < end) {\n last.setAttributes({\n x: end,\n textAlign: 'left'\n });\n }\n } else {\n const start = 0;\n const end = width;\n const startBound = first.AABBBounds.x1;\n const endBound = last.AABBBounds.x2;\n if (startBound < start) {\n first.setAttributes({\n x: start,\n textAlign: 'left'\n });\n }\n\n if (endBound > end) {\n last.setAttributes({\n x: end,\n textAlign: 'right'\n });\n }\n }\n } else {\n if (isInverse) {\n const startBound = first.AABBBounds.y1;\n const endBound = last.AABBBounds.y2;\n const start = 0;\n const end = height;\n\n if (startBound < start) {\n first.setAttributes({\n y: start,\n textBaseline: 'top'\n });\n }\n\n if (endBound > end) {\n last.setAttributes({\n y: end,\n textBaseline: 'bottom'\n });\n }\n } else {\n const start = height;\n const end = 0;\n const startBound = first.AABBBounds.y2;\n const endBound = last.AABBBounds.y1;\n\n if (startBound > start) {\n first.setAttributes({\n y: start,\n textBaseline: 'bottom'\n });\n }\n\n if (endBound < end) {\n last.setAttributes({\n y: end,\n textBaseline: 'top'\n });\n }\n }\n }\n}\n\nfunction overlap(axisLabels: IText[], axis: CartesianAxis) {\n const spec = axis.option;\n if (!isEmpty(axisLabels)) {\n // 首尾标签向内偏移\n if (spec?.label?.flush) {\n labelFlush(axisLabels, axis);\n }\n }\n}\n"]}
|
|
@@ -64,7 +64,6 @@ class TooltipHandler {
|
|
|
64
64
|
const {x1: left, x2: right, y1: top, y2: bottom} = table.stateManager.menu.bounds;
|
|
65
65
|
if (table.stateManager.menu.isShow && "number" == typeof e.x && "number" == typeof e.y && e.x > left && e.x < right && e.y > top && e.y < bottom) return;
|
|
66
66
|
const {col: col, row: row} = e;
|
|
67
|
-
if (e.related && this._isBindCell(col, row)) return;
|
|
68
67
|
let tooltipOption;
|
|
69
68
|
const headerDescription = table.getHeaderDescription(col, row);
|
|
70
69
|
if (headerDescription) {
|
|
@@ -107,7 +106,7 @@ class TooltipHandler {
|
|
|
107
106
|
this._attachInfo && table.stateManager.menu.isShow && this._bindToCell(e.col, e.row);
|
|
108
107
|
}
|
|
109
108
|
})), table.on(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.MOUSELEAVE_CELL, (e => {
|
|
110
|
-
|
|
109
|
+
this._unbindFromCell();
|
|
111
110
|
})), table.on(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.SELECTED_CELL, (e => {
|
|
112
111
|
this._isBindCell(e.col, e.row) && this._unbindFromCell();
|
|
113
112
|
})), table.on(TABLE_EVENT_TYPE_1.TABLE_EVENT_TYPE.MOUSELEAVE_TABLE, (e => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/tooltip/TooltipHandler.ts"],"names":[],"mappings":"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","file":"TooltipHandler.js","sourcesContent":["import type { CellRange, RectProps } from '../../ts-types';\nimport { Placement } from '../../ts-types';\nimport type { BaseTooltip } from './BaseTooltip';\nimport { BubbleTooltip } from './Tooltip';\nimport { cellInRange } from '../../tools/helper';\nimport { isMobile } from '../../tools/util';\n// import { DG_EVENT_TYPE } from '../core/DG_EVENT_TYPE';\nimport type { TooltipOptions } from '../../ts-types/tooltip';\nimport { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nconst TOOLTIP_INSTANCE_FACTORY = {\n // tooltip(table: BaseTableAPI): BaseTooltip {\n // return new Tooltip(table);\n // },\n 'bubble-tooltip': function (table: BaseTableAPI): BaseTooltip {\n return new BubbleTooltip(table);\n }\n};\ntype AttachInfo = {\n instance?: BaseTooltip;\n range: CellRange;\n tooltipOptions: TooltipOptions;\n};\n\nexport class TooltipHandler {\n private _table: BaseTableAPI;\n private _tooltipInstances?: { [type: string]: BaseTooltip };\n private _attachInfo?: AttachInfo | null;\n private confine?: boolean; //弹出框是否需要限定在canvas区域\n constructor(table: BaseTableAPI, confine: boolean) {\n this._table = table;\n this._tooltipInstances = {};\n this._bindTableEvent(table);\n this.confine = confine;\n }\n release(): void {\n const tooltipInstances = this._tooltipInstances;\n for (const k in tooltipInstances) {\n tooltipInstances[k]?.release?.();\n }\n delete this._tooltipInstances;\n this._attachInfo = null;\n }\n _bindToCell(col: number, row: number, tooltipOptions?: TooltipOptions): void {\n const info = this._attachInfo;\n const instance = this._getTooltipInstanceInfo(col, row);\n if (info && (!instance || info.instance !== instance)) {\n info.instance?.unbindTooltipElement();\n this._attachInfo = null;\n }\n if (!instance) {\n return;\n }\n // const { instance, info: tooltipInstanceInfo } = instanceInfo;\n const attach = instance && instance.bindTooltipElement(col, row, tooltipOptions, this.confine);\n if (attach) {\n const range = this._table.getCellRange(col, row);\n this._attachInfo = { range, instance, tooltipOptions };\n }\n }\n _move(col: number, row: number, tooltipOptions: TooltipOptions): void {\n const info = this._attachInfo;\n if (!info || !cellInRange(info.range, col, row)) {\n return;\n }\n const { instance } = info;\n instance?.moveTooltipElement(col, row, tooltipOptions, this.confine);\n }\n moveToPosition(\n col: number,\n row: number,\n position?: { x: number; y: number },\n referencePosition?: {\n rect: RectProps;\n placement?: Placement;\n }\n ): void {\n const info = this._attachInfo;\n if (!info || !cellInRange(info.range, col, row)) {\n return;\n }\n const { instance } = info;\n this._attachInfo.tooltipOptions.position = position;\n this._attachInfo.tooltipOptions.referencePosition = referencePosition;\n instance?.locateTooltipElement(col, row, position, referencePosition, this.confine);\n }\n _unbindFromCell(): void {\n const info = this._attachInfo;\n if (!info) {\n return;\n }\n const { instance } = info;\n instance?.unbindTooltipElement();\n this._attachInfo = null;\n }\n _isBindCell(col: number, row: number): boolean {\n const info = this._attachInfo;\n if (!info) {\n return false;\n }\n return cellInRange(info.range, col, row);\n }\n _bindTableEvent(table: BaseTableAPI): void {\n // (table.options.hover?.isShowTooltip || table.options.tooltip?.isShowOverflowTextTooltip) &&\n table.on(TABLE_EVENT_TYPE.MOUSEENTER_CELL, e => {\n //移动端不监听mousemove事件 (修改移动端tooltip时加的isMobile判断)\n if (isMobile()) {\n return;\n }\n // dropDownMenu区域不响应\n const { x1: left, x2: right, y1: top, y2: bottom } = table.stateManager.menu.bounds;\n if (\n table.stateManager.menu.isShow &&\n typeof e.x === 'number' &&\n typeof e.y === 'number' &&\n e.x > left &&\n e.x < right &&\n e.y > top &&\n e.y < bottom\n ) {\n return;\n }\n const { col, row } = e;\n if (e.related) {\n if (this._isBindCell(col, row)) {\n return;\n }\n }\n let tooltipOption;\n const headerDescription = table.getHeaderDescription(col, row);\n if (headerDescription) {\n const rect = table.getCellRangeRelativeRect({ col, row });\n tooltipOption = {\n content: headerDescription,\n referencePosition: {\n placement: Placement.bottom,\n rect\n },\n style: { arrowMark: false }\n };\n } else if (table.internalProps.tooltip?.isShowOverflowTextTooltip) {\n const overflowText = table.getCellOverflowText(col, row);\n const rect = table.getCellRangeRelativeRect({ col, row });\n if (overflowText) {\n tooltipOption = {\n content: headerDescription\n ? `${headerDescription}\n ${overflowText}`\n : overflowText,\n referencePosition: {\n placement: Placement.bottom,\n rect\n },\n style: table.theme.tooltipStyle\n };\n }\n }\n if (tooltipOption) {\n this._bindToCell(e.col, e.row, tooltipOption);\n }\n });\n table.on(TABLE_EVENT_TYPE.MOUSEMOVE_CELL, e => {\n //移动端不监听mousemove事件 (修改移动端tooltip时加的isMobile判断)\n if (isMobile()) {\n return;\n }\n if (this._attachInfo?.tooltipOptions?.referencePosition) {\n const position = this._attachInfo.tooltipOptions.referencePosition;\n const { event } = e;\n const { left, right, top, bottom } = position.rect;\n const abstractPos = table._getMouseAbstractPoint(event, false);\n if (\n !(\n abstractPos.inTable &&\n abstractPos.x >= left - 5 &&\n abstractPos.x <= right + 5 &&\n abstractPos.y >= top - 5 &&\n abstractPos.y <= bottom + 5\n )\n ) {\n // 这里加5px的判断buffer\n this._unbindFromCell();\n }\n }\n // dropDownMenu区域不响应\n if (this._attachInfo && table.stateManager.menu.isShow) {\n this._bindToCell(e.col, e.row);\n }\n });\n table.on(TABLE_EVENT_TYPE.MOUSELEAVE_CELL, e => {\n if (e.related) {\n if (this._isBindCell(e.related.col, e.related.row)) {\n return;\n }\n }\n this._unbindFromCell();\n });\n table.on(TABLE_EVENT_TYPE.SELECTED_CELL, e => {\n if (this._isBindCell(e.col, e.row)) {\n this._unbindFromCell();\n }\n });\n table.on(TABLE_EVENT_TYPE.MOUSELEAVE_TABLE, e => {\n this._unbindFromCell();\n });\n table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n const info = this._attachInfo;\n if (info?.tooltipOptions && info?.range?.start) {\n const { col, row } = info.range.start;\n const rect = table.getCellRangeRelativeRect({ col, row });\n info.tooltipOptions.referencePosition.rect = rect;\n this._move(info.range.start.col, info.range.start.row, info.tooltipOptions);\n }\n });\n }\n _getTooltipInstanceInfo(col: number, row: number): BaseTooltip | null {\n const table = this._table;\n const tooltipInstances = this._tooltipInstances;\n // const info = getTooltipInstanceInfo(table, col, row, tooltipOptions);\n // if (!info) {\n // return null;\n // }\n const tooltipType = 'bubble-tooltip';\n // const { tooltipType } = info;\n const instance =\n (tooltipInstances && tooltipInstances[tooltipType]) ||\n (tooltipInstances && (tooltipInstances[tooltipType] = TOOLTIP_INSTANCE_FACTORY[tooltipType](table)));\n return instance;\n }\n isBinded(tooltipOptions: TooltipOptions) {\n if (JSON.stringify(tooltipOptions) === JSON.stringify(this._attachInfo?.tooltipOptions)) {\n return true;\n }\n return false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/tooltip/TooltipHandler.ts"],"names":[],"mappings":"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","file":"TooltipHandler.js","sourcesContent":["import type { CellRange, RectProps } from '../../ts-types';\nimport { Placement } from '../../ts-types';\nimport type { BaseTooltip } from './BaseTooltip';\nimport { BubbleTooltip } from './Tooltip';\nimport { cellInRange } from '../../tools/helper';\nimport { isMobile } from '../../tools/util';\n// import { DG_EVENT_TYPE } from '../core/DG_EVENT_TYPE';\nimport type { TooltipOptions } from '../../ts-types/tooltip';\nimport { TABLE_EVENT_TYPE } from '../../core/TABLE_EVENT_TYPE';\nimport type { BaseTableAPI } from '../../ts-types/base-table';\nconst TOOLTIP_INSTANCE_FACTORY = {\n // tooltip(table: BaseTableAPI): BaseTooltip {\n // return new Tooltip(table);\n // },\n 'bubble-tooltip': function (table: BaseTableAPI): BaseTooltip {\n return new BubbleTooltip(table);\n }\n};\ntype AttachInfo = {\n instance?: BaseTooltip;\n range: CellRange;\n tooltipOptions: TooltipOptions;\n};\n\nexport class TooltipHandler {\n private _table: BaseTableAPI;\n private _tooltipInstances?: { [type: string]: BaseTooltip };\n private _attachInfo?: AttachInfo | null;\n private confine?: boolean; //弹出框是否需要限定在canvas区域\n constructor(table: BaseTableAPI, confine: boolean) {\n this._table = table;\n this._tooltipInstances = {};\n this._bindTableEvent(table);\n this.confine = confine;\n }\n release(): void {\n const tooltipInstances = this._tooltipInstances;\n for (const k in tooltipInstances) {\n tooltipInstances[k]?.release?.();\n }\n delete this._tooltipInstances;\n this._attachInfo = null;\n }\n _bindToCell(col: number, row: number, tooltipOptions?: TooltipOptions): void {\n const info = this._attachInfo;\n const instance = this._getTooltipInstanceInfo(col, row);\n if (info && (!instance || info.instance !== instance)) {\n info.instance?.unbindTooltipElement();\n this._attachInfo = null;\n }\n if (!instance) {\n return;\n }\n // const { instance, info: tooltipInstanceInfo } = instanceInfo;\n const attach = instance && instance.bindTooltipElement(col, row, tooltipOptions, this.confine);\n if (attach) {\n const range = this._table.getCellRange(col, row);\n this._attachInfo = { range, instance, tooltipOptions };\n }\n }\n _move(col: number, row: number, tooltipOptions: TooltipOptions): void {\n const info = this._attachInfo;\n if (!info || !cellInRange(info.range, col, row)) {\n return;\n }\n const { instance } = info;\n instance?.moveTooltipElement(col, row, tooltipOptions, this.confine);\n }\n moveToPosition(\n col: number,\n row: number,\n position?: { x: number; y: number },\n referencePosition?: {\n rect: RectProps;\n placement?: Placement;\n }\n ): void {\n const info = this._attachInfo;\n if (!info || !cellInRange(info.range, col, row)) {\n return;\n }\n const { instance } = info;\n this._attachInfo.tooltipOptions.position = position;\n this._attachInfo.tooltipOptions.referencePosition = referencePosition;\n instance?.locateTooltipElement(col, row, position, referencePosition, this.confine);\n }\n _unbindFromCell(): void {\n const info = this._attachInfo;\n if (!info) {\n return;\n }\n const { instance } = info;\n instance?.unbindTooltipElement();\n this._attachInfo = null;\n }\n _isBindCell(col: number, row: number): boolean {\n const info = this._attachInfo;\n if (!info) {\n return false;\n }\n return cellInRange(info.range, col, row);\n }\n _bindTableEvent(table: BaseTableAPI): void {\n // (table.options.hover?.isShowTooltip || table.options.tooltip?.isShowOverflowTextTooltip) &&\n table.on(TABLE_EVENT_TYPE.MOUSEENTER_CELL, e => {\n //移动端不监听mousemove事件 (修改移动端tooltip时加的isMobile判断)\n if (isMobile()) {\n return;\n }\n // dropDownMenu区域不响应\n const { x1: left, x2: right, y1: top, y2: bottom } = table.stateManager.menu.bounds;\n if (\n table.stateManager.menu.isShow &&\n typeof e.x === 'number' &&\n typeof e.y === 'number' &&\n e.x > left &&\n e.x < right &&\n e.y > top &&\n e.y < bottom\n ) {\n return;\n }\n const { col, row } = e;\n // if (e.related) {\n // if (this._isBindCell(col, row)) {\n // return;\n // }\n // }\n let tooltipOption;\n const headerDescription = table.getHeaderDescription(col, row);\n if (headerDescription) {\n const rect = table.getCellRangeRelativeRect({ col, row });\n tooltipOption = {\n content: headerDescription,\n referencePosition: {\n placement: Placement.bottom,\n rect\n },\n style: { arrowMark: false }\n };\n } else if (table.internalProps.tooltip?.isShowOverflowTextTooltip) {\n const overflowText = table.getCellOverflowText(col, row);\n const rect = table.getCellRangeRelativeRect({ col, row });\n if (overflowText) {\n tooltipOption = {\n content: headerDescription\n ? `${headerDescription}\n ${overflowText}`\n : overflowText,\n referencePosition: {\n placement: Placement.bottom,\n rect\n },\n style: table.theme.tooltipStyle\n };\n }\n }\n if (tooltipOption) {\n this._bindToCell(e.col, e.row, tooltipOption);\n }\n });\n table.on(TABLE_EVENT_TYPE.MOUSEMOVE_CELL, e => {\n //移动端不监听mousemove事件 (修改移动端tooltip时加的isMobile判断)\n if (isMobile()) {\n return;\n }\n if (this._attachInfo?.tooltipOptions?.referencePosition) {\n const position = this._attachInfo.tooltipOptions.referencePosition;\n const { event } = e;\n const { left, right, top, bottom } = position.rect;\n const abstractPos = table._getMouseAbstractPoint(event, false);\n if (\n !(\n abstractPos.inTable &&\n abstractPos.x >= left - 5 &&\n abstractPos.x <= right + 5 &&\n abstractPos.y >= top - 5 &&\n abstractPos.y <= bottom + 5\n )\n ) {\n // 这里加5px的判断buffer\n this._unbindFromCell();\n }\n }\n // dropDownMenu区域不响应\n if (this._attachInfo && table.stateManager.menu.isShow) {\n this._bindToCell(e.col, e.row);\n }\n });\n table.on(TABLE_EVENT_TYPE.MOUSELEAVE_CELL, e => {\n // if (e.related) {\n // if (this._isBindCell(e.related.col, e.related.row)) {\n // return;\n // }\n // }\n this._unbindFromCell();\n });\n table.on(TABLE_EVENT_TYPE.SELECTED_CELL, e => {\n if (this._isBindCell(e.col, e.row)) {\n this._unbindFromCell();\n }\n });\n table.on(TABLE_EVENT_TYPE.MOUSELEAVE_TABLE, e => {\n this._unbindFromCell();\n });\n table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n const info = this._attachInfo;\n if (info?.tooltipOptions && info?.range?.start) {\n const { col, row } = info.range.start;\n const rect = table.getCellRangeRelativeRect({ col, row });\n info.tooltipOptions.referencePosition.rect = rect;\n this._move(info.range.start.col, info.range.start.row, info.tooltipOptions);\n }\n });\n }\n _getTooltipInstanceInfo(col: number, row: number): BaseTooltip | null {\n const table = this._table;\n const tooltipInstances = this._tooltipInstances;\n // const info = getTooltipInstanceInfo(table, col, row, tooltipOptions);\n // if (!info) {\n // return null;\n // }\n const tooltipType = 'bubble-tooltip';\n // const { tooltipType } = info;\n const instance =\n (tooltipInstances && tooltipInstances[tooltipType]) ||\n (tooltipInstances && (tooltipInstances[tooltipType] = TOOLTIP_INSTANCE_FACTORY[tooltipType](table)));\n return instance;\n }\n isBinded(tooltipOptions: TooltipOptions) {\n if (JSON.stringify(tooltipOptions) === JSON.stringify(this._attachInfo?.tooltipOptions)) {\n return true;\n }\n return false;\n }\n}\n"]}
|