@visactor/vchart 1.12.7 → 1.12.8
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/build/es5/index.js +1 -1
- package/build/index.js +1117 -1665
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/gauge/interface.d.ts +1 -1
- package/cjs/chart/gauge/interface.js.map +1 -1
- package/cjs/chart/treemap/interface.d.ts +1 -1
- package/cjs/chart/treemap/interface.js.map +1 -1
- package/cjs/chart/venn/interface.d.ts +2 -2
- package/cjs/chart/venn/interface.js.map +1 -1
- package/cjs/compile/compilable-base.js +1 -2
- package/cjs/compile/util.js +2 -1
- package/cjs/component/axis/base-axis.js +1 -1
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/cartesian/axis.js +5 -4
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/axis/cartesian/interface/common.d.ts +1 -0
- package/cjs/component/axis/cartesian/interface/common.js.map +1 -1
- package/cjs/component/axis/polar/axis.js.map +1 -1
- package/cjs/component/geo/geo-coordinate.js +5 -2
- package/cjs/component/geo/geo-coordinate.js.map +1 -1
- package/cjs/component/interface/index.d.ts +0 -1
- package/cjs/component/interface/index.js +1 -1
- package/cjs/component/interface/index.js.map +1 -1
- package/cjs/component/label/util.js +1 -1
- package/cjs/component/label/util.js.map +1 -1
- package/cjs/component/title/interface/spec.d.ts +3 -3
- package/cjs/component/title/interface/spec.js.map +1 -1
- package/cjs/component/tooltip/constant.d.ts +5 -4
- package/cjs/component/tooltip/constant.js +7 -7
- package/cjs/component/tooltip/constant.js.map +1 -1
- package/cjs/component/tooltip/interface/common.d.ts +1 -1
- package/cjs/component/tooltip/interface/common.js.map +1 -1
- package/cjs/component/tooltip/interface/spec.d.ts +8 -0
- package/cjs/component/tooltip/interface/spec.js.map +1 -1
- package/cjs/component/tooltip/interface/theme.d.ts +2 -2
- package/cjs/component/tooltip/interface/theme.js.map +1 -1
- package/cjs/component/tooltip/processor/base.d.ts +3 -5
- package/cjs/component/tooltip/processor/base.js +24 -27
- package/cjs/component/tooltip/processor/base.js.map +1 -1
- package/cjs/component/tooltip/processor/group-tooltip.js +1 -1
- package/cjs/component/tooltip/processor/group-tooltip.js.map +1 -1
- package/cjs/component/tooltip/processor/mark-tooltip.js +2 -2
- package/cjs/component/tooltip/processor/mark-tooltip.js.map +1 -1
- package/cjs/component/tooltip/tooltip-transformer.js +0 -1
- package/cjs/component/tooltip/tooltip-transformer.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +9 -4
- package/cjs/component/tooltip/tooltip.js +64 -53
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/component/tooltip/utils/common.d.ts +6 -4
- package/cjs/component/tooltip/utils/common.js +52 -7
- package/cjs/component/tooltip/utils/common.js.map +1 -1
- package/cjs/component/tooltip/utils/get-spec.d.ts +4 -4
- package/cjs/component/tooltip/utils/get-spec.js +20 -82
- package/cjs/component/tooltip/utils/get-spec.js.map +1 -1
- package/cjs/component/tooltip/utils/get-value.d.ts +1 -2
- package/cjs/component/tooltip/utils/get-value.js +2 -12
- package/cjs/component/tooltip/utils/get-value.js.map +1 -1
- package/cjs/component/tooltip/utils/index.d.ts +0 -1
- package/cjs/component/tooltip/utils/index.js +1 -2
- package/cjs/component/tooltip/utils/index.js.map +1 -1
- package/cjs/constant/correlation.js +2 -1
- package/cjs/constant/layout.js +1 -2
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/vchart.js +14 -11
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/transforms/pie.d.ts +3 -0
- package/cjs/data/transforms/pie.js +8 -3
- package/cjs/data/transforms/pie.js.map +1 -1
- package/cjs/model/interface.d.ts +14 -0
- package/cjs/model/interface.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/base.d.ts +1 -13
- package/cjs/plugin/components/tooltip-handler/base.js +83 -220
- package/cjs/plugin/components/tooltip-handler/base.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +1 -1
- package/cjs/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.d.ts +0 -1
- package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +7 -19
- package/cjs/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js +16 -14
- package/cjs/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js +2 -2
- package/cjs/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/interface/style.d.ts +1 -2
- package/cjs/plugin/components/tooltip-handler/interface/style.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/attribute.js +7 -7
- package/cjs/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/common.js.map +1 -1
- package/cjs/plugin/components/tooltip-handler/utils/position.d.ts +3 -5
- package/cjs/plugin/components/tooltip-handler/utils/position.js +22 -29
- package/cjs/plugin/components/tooltip-handler/utils/position.js.map +1 -1
- package/cjs/region/interface.d.ts +3 -1
- package/cjs/region/interface.js.map +1 -1
- package/cjs/series/base/base-series.js +1 -1
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/base/tooltip-helper.d.ts +30 -6
- package/cjs/series/base/tooltip-helper.js +80 -73
- package/cjs/series/base/tooltip-helper.js.map +1 -1
- package/cjs/series/box-plot/tooltip-helper.d.ts +2 -2
- package/cjs/series/box-plot/tooltip-helper.js +26 -67
- package/cjs/series/box-plot/tooltip-helper.js.map +1 -1
- package/cjs/series/cartesian/cartesian.d.ts +1 -1
- package/cjs/series/circle-packing/circle-packing.js +1 -2
- package/cjs/series/circle-packing/circle-packing.js.map +1 -1
- package/cjs/series/dot/tooltip-helper.d.ts +8 -2
- package/cjs/series/dot/tooltip-helper.js +42 -41
- package/cjs/series/dot/tooltip-helper.js.map +1 -1
- package/cjs/series/gauge/pointer-tooltip-helper.d.ts +2 -1
- package/cjs/series/gauge/pointer-tooltip-helper.js +3 -8
- package/cjs/series/gauge/pointer-tooltip-helper.js.map +1 -1
- package/cjs/series/heatmap/tooltip-helper.d.ts +2 -3
- package/cjs/series/heatmap/tooltip-helper.js +3 -5
- package/cjs/series/heatmap/tooltip-helper.js.map +1 -1
- package/cjs/series/interface/tooltip-helper.d.ts +5 -4
- package/cjs/series/interface/tooltip-helper.js.map +1 -1
- package/cjs/series/link/tooltip-helper.d.ts +5 -2
- package/cjs/series/link/tooltip-helper.js +26 -27
- package/cjs/series/link/tooltip-helper.js.map +1 -1
- package/cjs/series/liquid/tooltip-helper.d.ts +4 -5
- package/cjs/series/liquid/tooltip-helper.js +2 -22
- package/cjs/series/liquid/tooltip-helper.js.map +1 -1
- package/cjs/series/pie/pie.js +6 -2
- package/cjs/series/pie/pie.js.map +1 -1
- package/cjs/series/progress/linear/tooltip-helper.d.ts +2 -3
- package/cjs/series/progress/linear/tooltip-helper.js +2 -11
- package/cjs/series/progress/linear/tooltip-helper.js.map +1 -1
- package/cjs/series/range-area/tooltip-helper.d.ts +1 -3
- package/cjs/series/range-area/tooltip-helper.js +2 -50
- package/cjs/series/range-area/tooltip-helper.js.map +1 -1
- package/cjs/series/range-column/tooltip-helper.d.ts +1 -2
- package/cjs/series/range-column/tooltip-helper.js +2 -19
- package/cjs/series/range-column/tooltip-helper.js.map +1 -1
- package/cjs/series/sankey/sankey.d.ts +1 -1
- package/cjs/series/sankey/tooltip-helper.d.ts +3 -3
- package/cjs/series/sankey/tooltip-helper.js +10 -57
- package/cjs/series/sankey/tooltip-helper.js.map +1 -1
- package/cjs/typings/spec/common.d.ts +3 -3
- package/cjs/typings/spec/common.js.map +1 -1
- package/cjs/typings/tooltip/position.d.ts +1 -0
- package/cjs/typings/tooltip/position.js.map +1 -1
- package/cjs/typings/tooltip/shape.d.ts +0 -1
- package/cjs/typings/tooltip/shape.js.map +1 -1
- package/cjs/typings/tooltip/tooltip.d.ts +7 -0
- package/cjs/typings/tooltip/tooltip.js.map +1 -1
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/gauge/interface.d.ts +1 -1
- package/esm/chart/gauge/interface.js.map +1 -1
- package/esm/chart/treemap/interface.d.ts +1 -1
- package/esm/chart/treemap/interface.js.map +1 -1
- package/esm/chart/venn/interface.d.ts +2 -2
- package/esm/chart/venn/interface.js.map +1 -1
- package/esm/compile/compilable-base.js +1 -2
- package/esm/compile/util.js +2 -1
- package/esm/component/axis/base-axis.js +1 -1
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/cartesian/axis.js +5 -4
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/axis/cartesian/interface/common.d.ts +1 -0
- package/esm/component/axis/cartesian/interface/common.js.map +1 -1
- package/esm/component/axis/polar/axis.js.map +1 -1
- package/esm/component/geo/geo-coordinate.js +5 -2
- package/esm/component/geo/geo-coordinate.js.map +1 -1
- package/esm/component/interface/index.d.ts +0 -1
- package/esm/component/interface/index.js +0 -2
- package/esm/component/interface/index.js.map +1 -1
- package/esm/component/label/util.js +1 -1
- package/esm/component/label/util.js.map +1 -1
- package/esm/component/title/interface/spec.d.ts +3 -3
- package/esm/component/title/interface/spec.js.map +1 -1
- package/esm/component/tooltip/constant.d.ts +5 -4
- package/esm/component/tooltip/constant.js +6 -3
- package/esm/component/tooltip/constant.js.map +1 -1
- package/esm/component/tooltip/interface/common.d.ts +1 -1
- package/esm/component/tooltip/interface/common.js.map +1 -1
- package/esm/component/tooltip/interface/spec.d.ts +8 -0
- package/esm/component/tooltip/interface/spec.js.map +1 -1
- package/esm/component/tooltip/interface/theme.d.ts +2 -2
- package/esm/component/tooltip/interface/theme.js.map +1 -1
- package/esm/component/tooltip/processor/base.d.ts +3 -5
- package/esm/component/tooltip/processor/base.js +24 -28
- package/esm/component/tooltip/processor/base.js.map +1 -1
- package/esm/component/tooltip/processor/group-tooltip.js +1 -1
- package/esm/component/tooltip/processor/group-tooltip.js.map +1 -1
- package/esm/component/tooltip/processor/mark-tooltip.js +2 -2
- package/esm/component/tooltip/processor/mark-tooltip.js.map +1 -1
- package/esm/component/tooltip/tooltip-transformer.js +0 -1
- package/esm/component/tooltip/tooltip-transformer.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +9 -4
- package/esm/component/tooltip/tooltip.js +66 -54
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/component/tooltip/utils/common.d.ts +6 -4
- package/esm/component/tooltip/utils/common.js +46 -5
- package/esm/component/tooltip/utils/common.js.map +1 -1
- package/esm/component/tooltip/utils/get-spec.d.ts +4 -4
- package/esm/component/tooltip/utils/get-spec.js +24 -80
- package/esm/component/tooltip/utils/get-spec.js.map +1 -1
- package/esm/component/tooltip/utils/get-value.d.ts +1 -2
- package/esm/component/tooltip/utils/get-value.js +1 -9
- package/esm/component/tooltip/utils/get-value.js.map +1 -1
- package/esm/component/tooltip/utils/index.d.ts +0 -1
- package/esm/component/tooltip/utils/index.js +0 -2
- package/esm/component/tooltip/utils/index.js.map +1 -1
- package/esm/constant/correlation.js +2 -1
- package/esm/constant/layout.js +1 -2
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/vchart.js +14 -10
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/transforms/pie.d.ts +3 -0
- package/esm/data/transforms/pie.js +6 -3
- package/esm/data/transforms/pie.js.map +1 -1
- package/esm/model/interface.d.ts +14 -0
- package/esm/model/interface.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/base.d.ts +1 -13
- package/esm/plugin/components/tooltip-handler/base.js +79 -212
- package/esm/plugin/components/tooltip-handler/base.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js +1 -1
- package/esm/plugin/components/tooltip-handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.d.ts +0 -1
- package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js +6 -19
- package/esm/plugin/components/tooltip-handler/dom/dom-tooltip-handler.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js +16 -14
- package/esm/plugin/components/tooltip-handler/dom/model/content-column-model.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/dom/model/title-model.js +2 -2
- package/esm/plugin/components/tooltip-handler/dom/model/title-model.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/interface/style.d.ts +1 -2
- package/esm/plugin/components/tooltip-handler/interface/style.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/attribute.js +7 -7
- package/esm/plugin/components/tooltip-handler/utils/attribute.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/common.js.map +1 -1
- package/esm/plugin/components/tooltip-handler/utils/position.d.ts +3 -5
- package/esm/plugin/components/tooltip-handler/utils/position.js +20 -25
- package/esm/plugin/components/tooltip-handler/utils/position.js.map +1 -1
- package/esm/region/interface.d.ts +3 -1
- package/esm/region/interface.js.map +1 -1
- package/esm/series/base/base-series.js +1 -1
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/base/tooltip-helper.d.ts +30 -6
- package/esm/series/base/tooltip-helper.js +85 -74
- package/esm/series/base/tooltip-helper.js.map +1 -1
- package/esm/series/box-plot/tooltip-helper.d.ts +2 -2
- package/esm/series/box-plot/tooltip-helper.js +26 -67
- package/esm/series/box-plot/tooltip-helper.js.map +1 -1
- package/esm/series/cartesian/cartesian.d.ts +1 -1
- package/esm/series/circle-packing/circle-packing.js +1 -2
- package/esm/series/circle-packing/circle-packing.js.map +1 -1
- package/esm/series/dot/tooltip-helper.d.ts +8 -2
- package/esm/series/dot/tooltip-helper.js +42 -41
- package/esm/series/dot/tooltip-helper.js.map +1 -1
- package/esm/series/gauge/pointer-tooltip-helper.d.ts +2 -1
- package/esm/series/gauge/pointer-tooltip-helper.js +2 -9
- package/esm/series/gauge/pointer-tooltip-helper.js.map +1 -1
- package/esm/series/heatmap/tooltip-helper.d.ts +2 -3
- package/esm/series/heatmap/tooltip-helper.js +2 -6
- package/esm/series/heatmap/tooltip-helper.js.map +1 -1
- package/esm/series/interface/tooltip-helper.d.ts +5 -4
- package/esm/series/interface/tooltip-helper.js.map +1 -1
- package/esm/series/link/tooltip-helper.d.ts +5 -2
- package/esm/series/link/tooltip-helper.js +26 -27
- package/esm/series/link/tooltip-helper.js.map +1 -1
- package/esm/series/liquid/tooltip-helper.d.ts +4 -5
- package/esm/series/liquid/tooltip-helper.js +2 -22
- package/esm/series/liquid/tooltip-helper.js.map +1 -1
- package/esm/series/pie/pie.js +7 -3
- package/esm/series/pie/pie.js.map +1 -1
- package/esm/series/progress/linear/tooltip-helper.d.ts +2 -3
- package/esm/series/progress/linear/tooltip-helper.js +2 -11
- package/esm/series/progress/linear/tooltip-helper.js.map +1 -1
- package/esm/series/range-area/tooltip-helper.d.ts +1 -3
- package/esm/series/range-area/tooltip-helper.js +2 -50
- package/esm/series/range-area/tooltip-helper.js.map +1 -1
- package/esm/series/range-column/tooltip-helper.d.ts +1 -2
- package/esm/series/range-column/tooltip-helper.js +2 -19
- package/esm/series/range-column/tooltip-helper.js.map +1 -1
- package/esm/series/sankey/sankey.d.ts +1 -1
- package/esm/series/sankey/tooltip-helper.d.ts +3 -3
- package/esm/series/sankey/tooltip-helper.js +10 -57
- package/esm/series/sankey/tooltip-helper.js.map +1 -1
- package/esm/typings/spec/common.d.ts +3 -3
- package/esm/typings/spec/common.js.map +1 -1
- package/esm/typings/tooltip/position.d.ts +1 -0
- package/esm/typings/tooltip/position.js.map +1 -1
- package/esm/typings/tooltip/shape.d.ts +0 -1
- package/esm/typings/tooltip/shape.js.map +1 -1
- package/esm/typings/tooltip/tooltip.d.ts +7 -0
- package/esm/typings/tooltip/tooltip.js.map +1 -1
- package/package.json +13 -13
- package/cjs/component/interface/tooltip-helper.d.ts +0 -5
- package/cjs/component/interface/tooltip-helper.js +0 -6
- package/cjs/component/interface/tooltip-helper.js.map +0 -1
- package/cjs/component/tooltip/utils/compose.d.ts +0 -4
- package/cjs/component/tooltip/utils/compose.js +0 -120
- package/cjs/component/tooltip/utils/compose.js.map +0 -1
- package/cjs/model/tooltip-helper.d.ts +0 -29
- package/cjs/model/tooltip-helper.js +0 -19
- package/cjs/model/tooltip-helper.js.map +0 -1
- package/esm/component/interface/tooltip-helper.d.ts +0 -5
- package/esm/component/interface/tooltip-helper.js +0 -2
- package/esm/component/interface/tooltip-helper.js.map +0 -1
- package/esm/component/tooltip/utils/compose.d.ts +0 -4
- package/esm/component/tooltip/utils/compose.js +0 -105
- package/esm/component/tooltip/utils/compose.js.map +0 -1
- package/esm/model/tooltip-helper.d.ts +0 -29
- package/esm/model/tooltip-helper.js +0 -11
- package/esm/model/tooltip-helper.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/pie.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/pie.ts"],"names":[],"mappings":"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","file":"pie.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport type { Datum } from '../../typings';\nimport { couldBeValidNumber } from '../../util/type';\nimport { getPercentValue } from '../../util/math';\nimport { ARC_TRANSFORM_VALUE } from '../../constant/polar';\nimport { computeQuadrant, isNil } from '@visactor/vutils';\n\nexport interface IPieOpt {\n angleField: () => string;\n startAngle: () => number;\n endAngle: () => number;\n minAngle: () => number;\n\n asStartAngle: string;\n asEndAngle: string;\n asMiddleAngle: string;\n asRadian: string;\n asRatio: string;\n asQuadrant: string;\n asK: string;\n showAllZero: boolean;\n supportNegative: boolean;\n showEmptyCircle: boolean;\n}\n\nfunction transformInvalidValue(value: any) {\n if (!couldBeValidNumber(value)) {\n return 0;\n }\n return Number.parseFloat(value);\n}\n\nexport const pie = (originData: Array<DataView>, op: IPieOpt) => {\n const {\n asStartAngle,\n asEndAngle,\n asMiddleAngle,\n asRadian,\n asRatio,\n asQuadrant,\n asK,\n showAllZero,\n supportNegative,\n showEmptyCircle\n } = op;\n\n const angleField = op.angleField();\n const startAngle = op.startAngle();\n const endAngle = op.endAngle();\n const minAngle = op.minAngle();\n\n const data = originData.map((datum: Datum) => ({ ...datum }));\n if (!data || data.length === 0) {\n return data;\n }\n\n if (!showAllZero && showEmptyCircle && isDataEmpty(data, angleField, supportNegative)) {\n return data;\n }\n\n const appendArcInfo = (data: Datum, startAngle: number, angle: number) => {\n data[asStartAngle] = startAngle;\n data[asEndAngle] = startAngle + angle;\n data[asMiddleAngle] = startAngle + angle / 2;\n data[asRadian] = angle;\n data[asQuadrant] = computeQuadrant(startAngle + angle / 2);\n };\n\n let total = 0;\n let max = -Infinity;\n let isAllZero = true;\n for (let index = 0; index < data.length; index++) {\n const angleFieldValue = supportNegative\n ? Math.abs(transformInvalidValue(data[index][angleField]))\n : transformInvalidValue(data[index][angleField]);\n total += angleFieldValue;\n max = Math.max(angleFieldValue, max);\n if (isAllZero && angleFieldValue !== 0) {\n isAllZero = false;\n }\n\n data[index][ARC_TRANSFORM_VALUE] = angleFieldValue;\n }\n\n const valueList = data.map(d => Number(d[angleField]));\n const angleRange = endAngle - startAngle;\n let lastAngle = startAngle;\n let restAngle = angleRange;\n let largeThanMinAngleTotal = 0;\n const percents = getPercentValue(valueList);\n\n data.forEach((d, i) => {\n const angleFieldValue = d[ARC_TRANSFORM_VALUE];\n const ratio = total ? angleFieldValue / total : 0;\n let radian = ratio * angleRange;\n\n if (radian < minAngle) {\n radian = minAngle;\n restAngle -= minAngle;\n } else {\n largeThanMinAngleTotal += angleFieldValue;\n }\n\n const dStartAngle = lastAngle;\n const dEndAngle = lastAngle + radian;\n\n d[asRatio] = ratio;\n d[asK] = max ? angleFieldValue / max : 0;\n d._percent_ = (percents as number[])[i];\n appendArcInfo(d, dStartAngle, radian);\n\n lastAngle = dEndAngle;\n });\n\n if (restAngle < angleRange) {\n if (restAngle <= 1e-3) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n } else {\n const unitRadian = restAngle / largeThanMinAngleTotal;\n lastAngle = startAngle;\n data.forEach(d => {\n const angle = d[asRadian] === minAngle ? minAngle : d[ARC_TRANSFORM_VALUE] * unitRadian;\n appendArcInfo(d, lastAngle, angle);\n\n lastAngle += angle;\n });\n }\n }\n\n if (total !== 0) {\n // 数据都为 0 时,起始角和结束角相同,不应该强制赋值\n // 防止一个扇区的角度会因为浮点数精度问题和传入的 endAngle 不相等\n data[data.length - 1][asEndAngle] = endAngle;\n }\n\n if (isAllZero && showAllZero) {\n const angle = angleRange / data.length;\n data.forEach((d, index) => {\n appendArcInfo(d, startAngle + index * angle, angle);\n });\n }\n return data;\n};\n\nexport const isDataEmpty = (data: Datum[], angleField: string, supportNegative: boolean) => {\n if (isNil(data)) {\n return true;\n }\n if (data.length === 0) {\n return true;\n }\n if (data.every(datum => transformInvalidValue(datum[angleField]) === 0)) {\n return true;\n }\n // 未支持负数, 并且和为0, 则也认为是空数据\n if (!supportNegative && data.reduce((sum, datum) => sum + transformInvalidValue(datum[angleField]), 0) === 0) {\n return true;\n }\n\n return false;\n};\n"]}
|
package/esm/model/interface.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ import type { ILayoutItem, ILayoutItemSpec } from '../layout/interface';
|
|
|
20
20
|
import type { ILayoutPoint, ILayoutRect } from '../typings/layout';
|
|
21
21
|
import type { ComponentTypeEnum } from '../component/interface';
|
|
22
22
|
import type { SeriesTypeEnum } from '../series';
|
|
23
|
+
import type { ITooltipSpec } from '../component/tooltip/interface';
|
|
24
|
+
import type { TooltipActiveType } from '../typings';
|
|
23
25
|
export interface IModelInitOption {
|
|
24
26
|
}
|
|
25
27
|
export interface IModelLayoutOption {
|
|
@@ -152,3 +154,15 @@ export interface IBaseModelSpecTransformer {
|
|
|
152
154
|
getTheme: (spec: any, chartSpec: any) => any;
|
|
153
155
|
transformSpec: (spec: any, chartSpec: any, chartSpecInfo?: IChartSpecInfo) => IBaseModelSpecTransformerResult<any, any>;
|
|
154
156
|
}
|
|
157
|
+
export interface ITooltipHelper {
|
|
158
|
+
spec: ITooltipSpec | undefined;
|
|
159
|
+
activeType: TooltipActiveType[];
|
|
160
|
+
activeTriggerSet: {
|
|
161
|
+
mark?: Set<IMark>;
|
|
162
|
+
group?: Set<IMark>;
|
|
163
|
+
};
|
|
164
|
+
ignoreTriggerSet: {
|
|
165
|
+
mark?: Set<IMark>;
|
|
166
|
+
};
|
|
167
|
+
updateTooltipSpec: () => void;
|
|
168
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData } from '@visactor/vgrammar-core';\nimport type { StringOrNumber } from '../typings/common';\nimport type { IGroupMarkSpec, ConvertToMarkStyleSpec, ICommonSpec } from '../typings/visual';\nimport type { IRect } from '../typings/space';\nimport type { IPoint, CoordinateType } from '../typings/coordinate';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart, IChartSpecInfo, IChartSpecTransformerOption } from '../chart/interface';\nimport type { IThemeColorScheme } from '../theme/color-scheme/interface';\nimport type { ILayoutItem, ILayoutItemSpec } from '../layout/interface';\nimport type { ILayoutPoint, ILayoutRect } from '../typings/layout';\nimport type { ComponentTypeEnum } from '../component/interface';\nimport type { SeriesTypeEnum } from '../series';\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n reRender?: boolean;\n reSize?: boolean;\n // TODO: compile 的判断应不应该出现在这里?\n reCompile?: boolean;\n reTransformSpec?: boolean;\n reAnimate?: boolean;\n changeTheme?: boolean;\n changeBackground?: boolean;\n}\n\nexport interface IUpdateDataResult {\n reAnimate?: boolean;\n}\n\nexport interface IModelProduct {\n srData: IData;\n}\n\nexport interface IModel extends ICompilable {\n readonly modelType: string;\n readonly type: string;\n readonly specKey: string;\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n\n readonly id: number;\n\n readonly userId?: StringOrNumber;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n coordinate?: CoordinateType;\n\n // 布局\n layout?: ILayoutItem;\n\n /** 是否可见 */\n getVisible: () => boolean;\n\n // 初始化参数\n getOption: () => IModelOption;\n\n getMarks: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n\n getData: () => ICompilableData;\n\n getChart: () => IChart;\n\n //生命周期\n // 创建模块自身内容,设置自身属性\n created: () => void;\n // 用来处理与其他图表模块的联系\n init: (option: IModelInitOption) => void;\n /** updateSpec 或者切换主题后,根据新 spec 执行的初始化过程 */\n reInit: (spec?: any) => void;\n beforeRelease: () => void;\n\n onEvaluateEnd: (ctx: IModelEvaluateOption) => void;\n onRender: (ctx: IModelRenderOption) => void;\n onDataUpdate: () => void;\n\n updateSpec: (spec: any, totalSpec?: any) => IUpdateSpecResult;\n getSpec?: () => any;\n getSpecIndex: () => number;\n getSpecPath: () => Array<string | number>;\n\n //布局周期\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: IModelLayoutOption) => void;\n onLayoutEnd: (ctx: IModelLayoutOption) => void;\n\n getColorScheme: () => IThemeColorScheme | undefined;\n\n setMarkStyle: <T extends ICommonSpec>(\n mark?: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) => void;\n\n initMarkStyleWithSpec: (mark?: IMark, spec?: any, key?: string) => void;\n\n getSpecInfo: () => IModelSpecInfo;\n}\n\nexport interface ILayoutModel extends IModel {\n // 布局相关\n getLayoutStartPoint: () => IPoint;\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n getLayoutRect: () => ILayoutRect;\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) => void;\n\n getLastComputeOutBounds: () => IBoundsLike;\n\n getBoundsInRect: (rect: ILayoutRect, fullRect: ILayoutRect) => IBoundsLike;\n\n //布局周期\n afterSetLayoutStartPoint: (pos: ILayoutPoint) => void;\n}\n\nexport interface IModelOption extends ICompilableInitOption {\n type: string;\n eventDispatcher: IEventDispatcher;\n dataSet: DataSet;\n map: Map<StringOrNumber, IModel | IMark>;\n mode: RenderMode;\n globalInstance: VChart;\n regionIndexes?: Array<number>;\n specKey?: string;\n specPath?: Array<string | number>;\n specInfoPath?: Array<string | number>;\n\n getTheme?: () => ITheme;\n getSpecInfo?: () => IChartSpecInfo;\n getChartLayoutRect: () => IRect;\n getChartViewRect: () => ILayoutRect;\n\n getChart: () => IChart;\n getSeriesData: (id: StringOrNumber | undefined, index: number | undefined) => DataView | undefined;\n\n globalScale: IGlobalScale;\n animation: boolean;\n /**\n * 错误消息回调函数\n */\n onError: (...args: any[]) => void;\n\n /**\n * 是否关闭交互效果\n */\n disableTriggerEvent?: boolean;\n}\n\nexport interface IModelSpecInfo<T extends Record<string, unknown> = any> {\n /** model 具体类型 */\n type: string | ComponentTypeEnum | SeriesTypeEnum;\n /** model spec */\n spec: T;\n /** 该 spec 在图表 spec 上的路径 */\n specPath?: Array<string | number>;\n /** 该 spec 在图表 spec info 上的路径 */\n specInfoPath?: Array<string | number>;\n /** model 当前主题 */\n theme?: any;\n /** model 对应的 region 索引 */\n regionIndexes?: number[];\n /** model 对应的 series 索引 */\n seriesIndexes?: number[];\n}\n\nexport interface IModelConstructor {\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n}\n\nexport type ILayoutModelState = {\n layoutUpdateRank: number;\n [key: string]: unknown;\n};\n\n// TODO: 补充model共有配置\nexport type IModelSpec = ILayoutItemSpec & { id?: StringOrNumber };\n\nexport interface IModelMarkInfo {\n /** mark 类型 */\n type: MarkTypeEnum | string | (MarkTypeEnum | string)[];\n /** mark 名称 */\n name: string;\n}\n\nexport type IBaseModelSpecTransformerOption = IChartSpecTransformerOption;\n\nexport interface IBaseModelSpecTransformerResult<T, K> {\n spec: T;\n theme: K;\n}\n\nexport interface IBaseModelSpecTransformer {\n getTheme: (spec: any, chartSpec: any) => any;\n transformSpec: (\n spec: any,\n chartSpec: any,\n chartSpecInfo?: IChartSpecInfo\n ) => IBaseModelSpecTransformerResult<any, any>;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/model/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { IBoundsLike } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\nimport type { IEvent, IEventDispatcher } from '../event/interface';\nimport type { IMark, IMarkRaw, IMarkStyle, MarkTypeEnum } from '../mark/interface';\nimport type { RenderMode } from '../typings/spec/common';\nimport type { VChart } from '../vchart-all';\nimport type { IData } from '@visactor/vgrammar-core';\nimport type { StringOrNumber } from '../typings/common';\nimport type { IGroupMarkSpec, ConvertToMarkStyleSpec, ICommonSpec } from '../typings/visual';\nimport type { IRect } from '../typings/space';\nimport type { IPoint, CoordinateType } from '../typings/coordinate';\nimport type { ITheme } from '../theme';\nimport type { StateValueType } from '../typings/spec';\nimport type { ICompilable, ICompilableInitOption } from '../compile/interface';\nimport type { ICompilableData } from '../compile/data';\nimport type { IGlobalScale } from '../scale/interface';\nimport type { IChart, IChartSpecInfo, IChartSpecTransformerOption } from '../chart/interface';\nimport type { IThemeColorScheme } from '../theme/color-scheme/interface';\nimport type { ILayoutItem, ILayoutItemSpec } from '../layout/interface';\nimport type { ILayoutPoint, ILayoutRect } from '../typings/layout';\nimport type { ComponentTypeEnum } from '../component/interface';\nimport type { SeriesTypeEnum } from '../series';\nimport type { ITooltipSpec } from '../component/tooltip/interface';\nimport type { TooltipActiveType } from '../typings';\n\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelInitOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelLayoutOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelEvaluateOption {}\n// TODO:\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IModelRenderOption {}\n\nexport interface IEffect {\n [key: string]: (e?: any) => any;\n}\n\nexport interface IMarkTreeGroup extends Partial<IMarkStyle<IGroupMarkSpec>> {\n // 必须要有名字\n type: 'group';\n name: string;\n marks: (IMarkTreeGroup | IMark)[];\n // TODO: 这里要不要支持复杂场景,有图形组合的场景,用自定义mark?\n // from?: IData;\n}\n\nexport type IMarkTree = IMarkTreeGroup | IMark | (IMarkTreeGroup | IMark)[];\n\nexport interface IUpdateSpecResult {\n change: boolean;\n reMake: boolean;\n reRender?: boolean;\n reSize?: boolean;\n // TODO: compile 的判断应不应该出现在这里?\n reCompile?: boolean;\n reTransformSpec?: boolean;\n reAnimate?: boolean;\n changeTheme?: boolean;\n changeBackground?: boolean;\n}\n\nexport interface IUpdateDataResult {\n reAnimate?: boolean;\n}\n\nexport interface IModelProduct {\n srData: IData;\n}\n\nexport interface IModel extends ICompilable {\n readonly modelType: string;\n readonly type: string;\n readonly specKey: string;\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n\n readonly id: number;\n\n readonly userId?: StringOrNumber;\n\n // 事件\n readonly event: IEvent;\n\n // 副作用\n readonly effect: IEffect;\n\n coordinate?: CoordinateType;\n\n // 布局\n layout?: ILayoutItem;\n\n /** 是否可见 */\n getVisible: () => boolean;\n\n // 初始化参数\n getOption: () => IModelOption;\n\n getMarks: () => IMark[];\n getMarkNameMap: () => Record<string, IMark>;\n\n getData: () => ICompilableData;\n\n getChart: () => IChart;\n\n //生命周期\n // 创建模块自身内容,设置自身属性\n created: () => void;\n // 用来处理与其他图表模块的联系\n init: (option: IModelInitOption) => void;\n /** updateSpec 或者切换主题后,根据新 spec 执行的初始化过程 */\n reInit: (spec?: any) => void;\n beforeRelease: () => void;\n\n onEvaluateEnd: (ctx: IModelEvaluateOption) => void;\n onRender: (ctx: IModelRenderOption) => void;\n onDataUpdate: () => void;\n\n updateSpec: (spec: any, totalSpec?: any) => IUpdateSpecResult;\n getSpec?: () => any;\n getSpecIndex: () => number;\n getSpecPath: () => Array<string | number>;\n\n //布局周期\n onLayoutStart: (layoutRect: IRect, viewRect: ILayoutRect, ctx: IModelLayoutOption) => void;\n onLayoutEnd: (ctx: IModelLayoutOption) => void;\n\n getColorScheme: () => IThemeColorScheme | undefined;\n\n setMarkStyle: <T extends ICommonSpec>(\n mark?: IMarkRaw<T>,\n style?: Partial<IMarkStyle<T> | ConvertToMarkStyleSpec<T>>,\n state?: StateValueType,\n level?: number\n ) => void;\n\n initMarkStyleWithSpec: (mark?: IMark, spec?: any, key?: string) => void;\n\n getSpecInfo: () => IModelSpecInfo;\n}\n\nexport interface ILayoutModel extends IModel {\n // 布局相关\n getLayoutStartPoint: () => IPoint;\n setLayoutStartPosition: (pos: Partial<IPoint>) => void;\n getLayoutRect: () => ILayoutRect;\n setLayoutRect: (rect: Partial<ILayoutRect>, levelMap?: Partial<ILayoutRect>) => void;\n\n getLastComputeOutBounds: () => IBoundsLike;\n\n getBoundsInRect: (rect: ILayoutRect, fullRect: ILayoutRect) => IBoundsLike;\n\n //布局周期\n afterSetLayoutStartPoint: (pos: ILayoutPoint) => void;\n}\n\nexport interface IModelOption extends ICompilableInitOption {\n type: string;\n eventDispatcher: IEventDispatcher;\n dataSet: DataSet;\n map: Map<StringOrNumber, IModel | IMark>;\n mode: RenderMode;\n globalInstance: VChart;\n regionIndexes?: Array<number>;\n specKey?: string;\n specPath?: Array<string | number>;\n specInfoPath?: Array<string | number>;\n\n getTheme?: () => ITheme;\n getSpecInfo?: () => IChartSpecInfo;\n getChartLayoutRect: () => IRect;\n getChartViewRect: () => ILayoutRect;\n\n getChart: () => IChart;\n getSeriesData: (id: StringOrNumber | undefined, index: number | undefined) => DataView | undefined;\n\n globalScale: IGlobalScale;\n animation: boolean;\n /**\n * 错误消息回调函数\n */\n onError: (...args: any[]) => void;\n\n /**\n * 是否关闭交互效果\n */\n disableTriggerEvent?: boolean;\n}\n\nexport interface IModelSpecInfo<T extends Record<string, unknown> = any> {\n /** model 具体类型 */\n type: string | ComponentTypeEnum | SeriesTypeEnum;\n /** model spec */\n spec: T;\n /** 该 spec 在图表 spec 上的路径 */\n specPath?: Array<string | number>;\n /** 该 spec 在图表 spec info 上的路径 */\n specInfoPath?: Array<string | number>;\n /** model 当前主题 */\n theme?: any;\n /** model 对应的 region 索引 */\n regionIndexes?: number[];\n /** model 对应的 series 索引 */\n seriesIndexes?: number[];\n}\n\nexport interface IModelConstructor {\n readonly transformerConstructor: new (option: IBaseModelSpecTransformerOption) => IBaseModelSpecTransformer;\n}\n\nexport type ILayoutModelState = {\n layoutUpdateRank: number;\n [key: string]: unknown;\n};\n\n// TODO: 补充model共有配置\nexport type IModelSpec = ILayoutItemSpec & { id?: StringOrNumber };\n\nexport interface IModelMarkInfo {\n /** mark 类型 */\n type: MarkTypeEnum | string | (MarkTypeEnum | string)[];\n /** mark 名称 */\n name: string;\n}\n\nexport type IBaseModelSpecTransformerOption = IChartSpecTransformerOption;\n\nexport interface IBaseModelSpecTransformerResult<T, K> {\n spec: T;\n theme: K;\n}\n\nexport interface IBaseModelSpecTransformer {\n getTheme: (spec: any, chartSpec: any) => any;\n transformSpec: (\n spec: any,\n chartSpec: any,\n chartSpecInfo?: IChartSpecInfo\n ) => IBaseModelSpecTransformerResult<any, any>;\n}\n\nexport interface ITooltipHelper {\n /** tooltip对应spec */\n spec: ITooltipSpec | undefined;\n\n /** 实际生效的tooltip activeType */\n activeType: TooltipActiveType[];\n\n /** 可以响应mark tooltip或者dimension tooltip的对象 */\n activeTriggerSet: {\n mark?: Set<IMark>;\n group?: Set<IMark>;\n };\n /** 不响应tooltip且不会影响已有tooltip的对象 */\n ignoreTriggerSet: {\n mark?: Set<IMark>;\n };\n\n /** 更新spec */\n updateTooltipSpec: () => void;\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Options } from './constants';
|
|
2
|
-
import type { Maybe,
|
|
2
|
+
import type { Maybe, RenderMode } from '../../../typings';
|
|
3
3
|
import type { TooltipData, ITooltipActual, TooltipActiveType, ITooltipHandler, ITooltipPositionActual } from '../../../typings/tooltip';
|
|
4
4
|
import type { IGroup } from '@visactor/vrender-core';
|
|
5
5
|
import type { Compiler } from '../../../compile/compiler';
|
|
@@ -25,12 +25,6 @@ export declare abstract class BaseTooltipHandler extends BasePlugin implements I
|
|
|
25
25
|
protected _attributes?: ITooltipAttributes | null;
|
|
26
26
|
protected _chartContainer: Maybe<HTMLElement>;
|
|
27
27
|
protected _compiler: Compiler;
|
|
28
|
-
protected _isTooltipPaused: boolean;
|
|
29
|
-
protected _isPointerEscaped: boolean;
|
|
30
|
-
protected _cachePointerTimer: number;
|
|
31
|
-
protected _cachePointerPosition: ILayoutPoint;
|
|
32
|
-
protected _cacheTooltipPosition: ILayoutPoint;
|
|
33
|
-
protected _cacheTooltipSize: IContainerSize;
|
|
34
28
|
protected _container: Maybe<IGroup | HTMLElement>;
|
|
35
29
|
protected _isReleased: boolean;
|
|
36
30
|
onAdd(service: IComponentPluginService<any>): void;
|
|
@@ -41,18 +35,12 @@ export declare abstract class BaseTooltipHandler extends BasePlugin implements I
|
|
|
41
35
|
protected _changeTooltipPosition: ChangeTooltipPositionFunc;
|
|
42
36
|
hideTooltip(params: TooltipHandlerParams): TooltipResult;
|
|
43
37
|
release(): void;
|
|
44
|
-
protected _clearAllCache(): void;
|
|
45
38
|
protected abstract _updateTooltip(visible: boolean, params: TooltipHandlerParams): void;
|
|
46
39
|
protected abstract _removeTooltip(): void;
|
|
47
40
|
protected _throttle(callback: any): (...args: unknown[]) => unknown;
|
|
48
41
|
protected _getDefaultOption(): Options;
|
|
49
42
|
protected _getActualTooltipPosition: (actualTooltip: ITooltipActual, params: TooltipHandlerParams, tooltipBoxSize: IContainerSize | undefined) => ITooltipPositionActual;
|
|
50
43
|
protected _getTooltipBoxSize(actualTooltip: ITooltipActual, changePositionOnly: boolean): IContainerSize | undefined;
|
|
51
|
-
protected _getPointerPositionRelativeToTooltipParent(params: TooltipHandlerParams): {
|
|
52
|
-
x: any;
|
|
53
|
-
y: any;
|
|
54
|
-
};
|
|
55
|
-
protected _isPointerMovingToTooltip(params: TooltipHandlerParams): boolean;
|
|
56
44
|
protected _getParentElement(spec: ITooltipSpec): HTMLElement;
|
|
57
45
|
getTooltipContainer(): HTMLElement | IGroup;
|
|
58
46
|
protected _initFromSpec(): void;
|
|
@@ -6,9 +6,9 @@ import { isTrueBrowser } from "../../../util/env";
|
|
|
6
6
|
|
|
7
7
|
import { getScale } from "./utils/common";
|
|
8
8
|
|
|
9
|
-
import { getActualTooltipPositionValue, getCartesianCrosshairRect,
|
|
9
|
+
import { getActualTooltipPositionValue, getCartesianCrosshairRect, getPositionType, isFixedTooltipPositionPattern, isGlobalTooltipPositionPattern } from "./utils/position";
|
|
10
10
|
|
|
11
|
-
import { isNumber, isObject, isValidNumber, isValid, throttle, isNil,
|
|
11
|
+
import { isNumber, isObject, isValidNumber, isValid, throttle, isNil, isFunction } from "@visactor/vutils";
|
|
12
12
|
|
|
13
13
|
import { getTooltipAttributes } from "./utils/attribute";
|
|
14
14
|
|
|
@@ -22,27 +22,20 @@ export class BaseTooltipHandler extends BasePlugin {
|
|
|
22
22
|
this.showTooltip = (activeType, data, params) => {
|
|
23
23
|
const {changePositionOnly: changePositionOnly} = params;
|
|
24
24
|
return changePositionOnly ? this.changeTooltipPosition(params, data) : this.changeTooltip(!0, params, data);
|
|
25
|
-
}, this._changeTooltip = (visible, params, data) => this._isReleased ? 1 : visible ? this._changeTooltipPosition(params, data) : (this.
|
|
26
|
-
|
|
27
|
-
var _a, _b, _c;
|
|
25
|
+
}, this._changeTooltip = (visible, params, data) => this._isReleased ? 1 : visible ? this._changeTooltipPosition(params, data) : (this._updateTooltip(!1, params),
|
|
26
|
+
0), this._changeTooltipPosition = (params, data) => {
|
|
27
|
+
var _a, _b, _c, _d, _e;
|
|
28
28
|
if (this._isReleased) return 1;
|
|
29
|
-
const event = params.event, {tooltipSpec: tooltipSpec,
|
|
30
|
-
if (
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
const activeType = tooltipActual.activeType;
|
|
39
|
-
if (tooltipSpec.handler) return null !== (_c = null === (_b = (_a = tooltipSpec.handler).showTooltip) || void 0 === _b ? void 0 : _b.call(_a, activeType, data, params)) && void 0 !== _c ? _c : 0;
|
|
40
|
-
const pattern = tooltipSpec[activeType];
|
|
41
|
-
if (!pattern) return 1;
|
|
42
|
-
const position = this._getActualTooltipPosition(tooltipActual, params, this._getTooltipBoxSize(tooltipActual, changePositionOnly));
|
|
43
|
-
tooltipActual.position = position, pattern.updatePosition && (tooltipActual.position = pattern.updatePosition(tooltipActual.position, data, params));
|
|
29
|
+
const event = params.event, {tooltipSpec: tooltipSpec, activeTooltipSpec: activeTooltipSpec, changePositionOnly: changePositionOnly} = params;
|
|
30
|
+
if (!activeTooltipSpec) return 1;
|
|
31
|
+
const activeType = activeTooltipSpec.activeType;
|
|
32
|
+
if (activeTooltipSpec.handler) return null !== (_c = null === (_b = (_a = activeTooltipSpec.handler).showTooltip) || void 0 === _b ? void 0 : _b.call(_a, activeType, data, params)) && void 0 !== _c ? _c : 0;
|
|
33
|
+
const pattern = activeTooltipSpec, position = this._getActualTooltipPosition(activeTooltipSpec, params, this._getTooltipBoxSize(activeTooltipSpec, changePositionOnly));
|
|
34
|
+
activeTooltipSpec.position = position;
|
|
35
|
+
const updatePosition = null !== (_d = activeTooltipSpec.updatePosition) && void 0 !== _d ? _d : null === (_e = tooltipSpec[activeType]) || void 0 === _e ? void 0 : _e.updatePosition;
|
|
36
|
+
updatePosition && (activeTooltipSpec.position = updatePosition(activeTooltipSpec.position, data, params));
|
|
44
37
|
let tooltipVisible = !1 !== (null == pattern ? void 0 : pattern.visible);
|
|
45
|
-
return data && "pointerout" !== event.type &&
|
|
38
|
+
return data && "pointerout" !== event.type && activeTooltipSpec.visible && (activeTooltipSpec.title || activeTooltipSpec.content) || (tooltipVisible = !1),
|
|
46
39
|
this._updateTooltip(tooltipVisible, Object.assign(Object.assign({}, params), {
|
|
47
40
|
changePositionOnly: changePositionOnly
|
|
48
41
|
})), 0;
|
|
@@ -52,10 +45,8 @@ export class BaseTooltipHandler extends BasePlugin {
|
|
|
52
45
|
x: 1 / 0,
|
|
53
46
|
y: 1 / 0
|
|
54
47
|
};
|
|
55
|
-
if (!tooltipSpec) return
|
|
56
|
-
const event = params.event, {activeType: activeType, data: data} = actualTooltip, firstDim = "dimension" === activeType ? null === (_b = null === (_a = data[0]) || void 0 === _a ? void 0 : _a.data) || void 0 === _b ? void 0 : _b[0] : null == data ? void 0 : data[0];
|
|
57
|
-
let {offsetX: offsetX, offsetY: offsetY} = this._option;
|
|
58
|
-
const spec = tooltipSpec[activeType], position = getTooltipPatternValue(spec.position, data, params), positionMode = null !== (_c = getTooltipPatternValue(spec.positionMode, data, params)) && void 0 !== _c ? _c : "mark" === activeType ? "mark" : "pointer", {width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0} = null != tooltipBoxSize ? tooltipBoxSize : {}, isCanvas = "canvas" === tooltipSpec.renderMode, canvasRect = null === (_d = null == params ? void 0 : params.chart) || void 0 === _d ? void 0 : _d.getCanvasRect(), canvasWidth = null !== (_e = null == canvasRect ? void 0 : canvasRect.width) && void 0 !== _e ? _e : DEFAULT_CHART_WIDTH, canvasHeight = null !== (_f = null == canvasRect ? void 0 : canvasRect.height) && void 0 !== _f ? _f : DEFAULT_CHART_HEIGHT;
|
|
48
|
+
if (!tooltipSpec) return invalidPosition;
|
|
49
|
+
const event = params.event, {activeType: activeType, data: data} = actualTooltip, firstDim = "dimension" === activeType ? null === (_b = null === (_a = data[0]) || void 0 === _a ? void 0 : _a.data) || void 0 === _b ? void 0 : _b[0] : null == data ? void 0 : data[0], {offsetX: offsetX, offsetY: offsetY} = this._option, spec = tooltipSpec[activeType], position = getTooltipPatternValue(null == spec ? void 0 : spec.position, data, params), positionMode = null !== (_c = getTooltipPatternValue(null == spec ? void 0 : spec.positionMode, data, params)) && void 0 !== _c ? _c : "mark" === activeType ? "mark" : "pointer", {width: tooltipBoxWidth = 0, height: tooltipBoxHeight = 0} = null != tooltipBoxSize ? tooltipBoxSize : {}, isCanvas = "canvas" === tooltipSpec.renderMode, canvasRect = null === (_d = null == params ? void 0 : params.chart) || void 0 === _d ? void 0 : _d.getCanvasRect(), canvasWidth = null !== (_e = null == canvasRect ? void 0 : canvasRect.width) && void 0 !== _e ? _e : DEFAULT_CHART_WIDTH, canvasHeight = null !== (_f = null == canvasRect ? void 0 : canvasRect.height) && void 0 !== _f ? _f : DEFAULT_CHART_HEIGHT;
|
|
59
50
|
let isFixedPosition = !1;
|
|
60
51
|
const containerSize = {
|
|
61
52
|
width: 0,
|
|
@@ -80,146 +71,81 @@ export class BaseTooltipHandler extends BasePlugin {
|
|
|
80
71
|
}, chartElementScale = getScale(chartElement, chartElementRect), tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect);
|
|
81
72
|
}
|
|
82
73
|
} else containerSize.width = canvasWidth, containerSize.height = canvasHeight;
|
|
83
|
-
const tooltipSizeScale = tooltipParentElementScale / chartElementScale
|
|
84
|
-
|
|
85
|
-
|
|
74
|
+
const tooltipSizeScale = tooltipParentElementScale / chartElementScale, calcPos = {}, pointerFixedPosition = {
|
|
75
|
+
x: position,
|
|
76
|
+
y: position
|
|
77
|
+
}, dimToPos = {
|
|
78
|
+
x: [ "left", "right" ],
|
|
79
|
+
y: [ "top", "bottom" ]
|
|
80
|
+
}, processCartesianFixedPosition = ({orient: orient, mode: mode, offset: offset}, dim) => {
|
|
86
81
|
var _a;
|
|
87
|
-
let
|
|
88
|
-
const model = params.model, startPoint = null == model ? void 0 : model.getLayoutStartPoint();
|
|
89
|
-
if (
|
|
82
|
+
let dim1, dim2;
|
|
83
|
+
const model = params.model, startPoint = null == model ? void 0 : model.getLayoutStartPoint(), dimOffset = null != offset ? offset : "x" === dim ? offsetX : offsetY;
|
|
84
|
+
if ("mark" === mode) {
|
|
90
85
|
isFixedPosition = !0;
|
|
91
86
|
const element = params.item, bounds = null == element ? void 0 : element.getBounds();
|
|
92
|
-
bounds && startPoint && (
|
|
87
|
+
bounds && startPoint && (dim1 = ("x" === dim ? bounds.x1 : bounds.y1) + startPoint[dim],
|
|
88
|
+
dim2 = ("x" === dim ? bounds.x2 : bounds.y2) + startPoint[dim]);
|
|
93
89
|
} else if ("crosshair" === mode && "cartesian" === (null === (_a = null == firstDim ? void 0 : firstDim.series) || void 0 === _a ? void 0 : _a.coordinate) && firstDim.datum && firstDim.datum.length) {
|
|
94
90
|
isFixedPosition = !0;
|
|
95
91
|
const rect = getCartesianCrosshairRect(firstDim, startPoint);
|
|
96
|
-
rect && (
|
|
97
|
-
} else
|
|
98
|
-
if (isFixedPosition)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
let y1, y2;
|
|
121
|
-
const model = params.model, startPoint = null == model ? void 0 : model.getLayoutStartPoint();
|
|
122
|
-
if (offsetY = null != offset ? offset : offsetY, "mark" === mode) {
|
|
123
|
-
isFixedPosition = !0;
|
|
124
|
-
const element = params.item, bounds = null == element ? void 0 : element.getBounds();
|
|
125
|
-
bounds && startPoint && (y1 = bounds.y1 + startPoint.y, y2 = bounds.y2 + startPoint.y);
|
|
126
|
-
} else if ("crosshair" === mode && "cartesian" === (null === (_a = null == firstDim ? void 0 : firstDim.series) || void 0 === _a ? void 0 : _a.coordinate) && firstDim.datum && firstDim.datum.length) {
|
|
127
|
-
isFixedPosition = !0;
|
|
128
|
-
const rect = getCartesianCrosshairRect(firstDim, startPoint);
|
|
129
|
-
rect && (y1 = rect.start.y, y2 = rect.end.y);
|
|
130
|
-
} else pointerFixedPositionY = orient;
|
|
131
|
-
if (isFixedPosition) switch (getVerticalPositionType(orient)) {
|
|
132
|
-
case "top":
|
|
133
|
-
top = y1 - tooltipBoxHeight * tooltipSizeScale - offsetY;
|
|
134
|
-
break;
|
|
135
|
-
|
|
136
|
-
case "bottom":
|
|
137
|
-
top = y2 + offsetY;
|
|
138
|
-
break;
|
|
139
|
-
|
|
140
|
-
case "center":
|
|
141
|
-
top = (y1 + y2) / 2 - tooltipBoxHeight * tooltipSizeScale / 2;
|
|
142
|
-
break;
|
|
143
|
-
|
|
144
|
-
case "centerTop":
|
|
145
|
-
top = (y1 + y2) / 2 - tooltipBoxHeight * tooltipSizeScale - offsetY;
|
|
146
|
-
break;
|
|
147
|
-
|
|
148
|
-
case "centerBottom":
|
|
149
|
-
top = (y1 + y2) / 2 + offsetY;
|
|
92
|
+
rect && (dim1 = rect.start[dim], dim2 = rect.end[dim]);
|
|
93
|
+
} else pointerFixedPosition[dim] = orient;
|
|
94
|
+
if (isFixedPosition) {
|
|
95
|
+
const posKey = dimToPos[dim][0], boxSize = "x" === dim ? tooltipBoxWidth : tooltipBoxHeight;
|
|
96
|
+
switch (getPositionType(orient, dim)) {
|
|
97
|
+
case -2:
|
|
98
|
+
calcPos[posKey] = dim1 - boxSize * tooltipSizeScale - dimOffset;
|
|
99
|
+
break;
|
|
100
|
+
|
|
101
|
+
case 0:
|
|
102
|
+
calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * tooltipSizeScale / 2;
|
|
103
|
+
break;
|
|
104
|
+
|
|
105
|
+
case -1:
|
|
106
|
+
calcPos[posKey] = (dim1 + dim2) / 2 - boxSize * tooltipSizeScale - dimOffset;
|
|
107
|
+
break;
|
|
108
|
+
|
|
109
|
+
case 1:
|
|
110
|
+
calcPos[posKey] = (dim1 + dim2) / 2 + dimOffset;
|
|
111
|
+
break;
|
|
112
|
+
|
|
113
|
+
case 2:
|
|
114
|
+
calcPos[posKey] = dim2 + dimOffset;
|
|
115
|
+
}
|
|
150
116
|
}
|
|
151
|
-
};
|
|
152
|
-
if (isObject(position)) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
isNumber(y) || isFunction(y) ? top = getActualTooltipPositionValue(y, event) : processCartesianFixedPositionY(y);
|
|
161
|
-
}
|
|
162
|
-
} else isValid(position) && (processCartesianFixedPositionX({
|
|
117
|
+
}, dims = [ "x", "y" ];
|
|
118
|
+
if (isObject(position)) if (isGlobalTooltipPositionPattern(position)) {
|
|
119
|
+
const {left: posLeft, right: posRight, top: posTop, bottom: posBottom} = position;
|
|
120
|
+
calcPos.left = getActualTooltipPositionValue(posLeft, event), calcPos.top = getActualTooltipPositionValue(posTop, event),
|
|
121
|
+
calcPos.right = getActualTooltipPositionValue(posRight, event), calcPos.bottom = getActualTooltipPositionValue(posBottom, event);
|
|
122
|
+
} else isFixedTooltipPositionPattern(position) && dims.forEach((dim => {
|
|
123
|
+
const dimValue = position[dim];
|
|
124
|
+
isNumber(dimValue) || isFunction(dimValue) ? calcPos[dimToPos[dim][0]] = getActualTooltipPositionValue(dimValue, event) : processCartesianFixedPosition(dimValue, dim);
|
|
125
|
+
})); else isValid(position) && (processCartesianFixedPosition({
|
|
163
126
|
orient: position,
|
|
164
127
|
mode: positionMode
|
|
165
|
-
}),
|
|
128
|
+
}, "x"), processCartesianFixedPosition({
|
|
166
129
|
orient: position,
|
|
167
130
|
mode: positionMode
|
|
168
|
-
}));
|
|
169
|
-
let x, y;
|
|
170
|
-
const {canvasX: canvasX, canvasY: canvasY} = event;
|
|
171
|
-
if (isValidNumber(left)) x = left; else if (isValidNumber(right)) x = canvasWidth - tooltipBoxWidth * tooltipSizeScale - right; else {
|
|
172
|
-
const x0 = canvasX;
|
|
173
|
-
switch (getHorizontalPositionType(pointerFixedPositionX, "right")) {
|
|
174
|
-
case "center":
|
|
175
|
-
x = x0 - tooltipBoxWidth * tooltipSizeScale / 2;
|
|
176
|
-
break;
|
|
177
|
-
|
|
178
|
-
case "left":
|
|
179
|
-
case "centerLeft":
|
|
180
|
-
x = x0 - tooltipBoxWidth * tooltipSizeScale - offsetX;
|
|
181
|
-
break;
|
|
182
|
-
|
|
183
|
-
case "right":
|
|
184
|
-
case "centerRight":
|
|
185
|
-
x = x0 + offsetX;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
if (isValidNumber(top)) y = top; else if (isValidNumber(bottom)) y = canvasHeight - tooltipBoxHeight * tooltipSizeScale - bottom; else {
|
|
189
|
-
const y0 = canvasY;
|
|
190
|
-
switch (getVerticalPositionType(pointerFixedPositionY, "bottom")) {
|
|
191
|
-
case "center":
|
|
192
|
-
y = y0 - tooltipBoxHeight * tooltipSizeScale / 2;
|
|
193
|
-
break;
|
|
194
|
-
|
|
195
|
-
case "top":
|
|
196
|
-
case "centerTop":
|
|
197
|
-
y = y0 - tooltipBoxHeight * tooltipSizeScale - offsetY;
|
|
198
|
-
break;
|
|
199
|
-
|
|
200
|
-
case "bottom":
|
|
201
|
-
case "centerBottom":
|
|
202
|
-
y = y0 + offsetY;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
x *= chartElementScale, y *= chartElementScale, isTrueBrowser(this._env) && (x += relativePosOffset.x,
|
|
206
|
-
y += relativePosOffset.y), x /= tooltipParentElementScale, y /= tooltipParentElementScale;
|
|
207
|
-
const {width: containerWidth, height: containerHeight} = containerSize, isLeftOut = () => x * tooltipParentElementScale + tooltipParentElementRect.x < 0, isRightOut = () => (x + tooltipBoxWidth) * tooltipParentElementScale + tooltipParentElementRect.x > containerWidth, isTopOut = () => y * tooltipParentElementScale + tooltipParentElementRect.y < 0, isBottomOut = () => (y + tooltipBoxHeight) * tooltipParentElementScale + tooltipParentElementRect.y > containerHeight, horizontalType = getHorizontalPositionType(position, "right");
|
|
208
|
-
"left" === horizontalType || horizontalType.includes("center") && isLeftOut() ? (isLeftOut() && (isFixedPosition ? x = -tooltipParentElementRect.x / tooltipParentElementScale : "center" === getHorizontalPositionType(position, "right") ? x += offsetX + tooltipBoxWidth / 2 : x += 2 * offsetX + tooltipBoxWidth),
|
|
209
|
-
isRightOut() && (x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth)) : (isRightOut() && (isFixedPosition ? x = (containerWidth - tooltipParentElementRect.x) / tooltipParentElementScale - tooltipBoxWidth : "center" === getHorizontalPositionType(position, "right") ? x -= offsetX + tooltipBoxWidth / 2 : x -= 2 * offsetX + tooltipBoxWidth),
|
|
210
|
-
isLeftOut() && (x = -tooltipParentElementRect.x / tooltipParentElementScale));
|
|
211
|
-
const verticalType = getVerticalPositionType(position, "bottom");
|
|
212
|
-
"top" === verticalType || verticalType.includes("center") && isTopOut() ? (isTopOut() && (isFixedPosition ? y = -tooltipParentElementRect.y / tooltipParentElementScale : "center" === getVerticalPositionType(position, "bottom") ? y += offsetY + tooltipBoxHeight / 2 : y += 2 * offsetY + tooltipBoxHeight),
|
|
213
|
-
isBottomOut() && (y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight)) : (isBottomOut() && (isFixedPosition ? y = (containerHeight - tooltipParentElementRect.y) / tooltipParentElementScale - tooltipBoxHeight : "center" === getVerticalPositionType(position, "bottom") ? y -= offsetY + tooltipBoxHeight / 2 : y -= 2 * offsetY + tooltipBoxHeight),
|
|
214
|
-
isTopOut() && (y = 0 - tooltipParentElementRect.y / tooltipParentElementScale));
|
|
131
|
+
}, "y"));
|
|
215
132
|
const result = {
|
|
216
|
-
x:
|
|
217
|
-
y:
|
|
218
|
-
};
|
|
219
|
-
return
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
133
|
+
x: null,
|
|
134
|
+
y: null
|
|
135
|
+
}, isBrowser = isTrueBrowser(this._env);
|
|
136
|
+
return dims.forEach((dim => {
|
|
137
|
+
const boxSize = "x" === dim ? tooltipBoxWidth : tooltipBoxHeight, canvasSize = "x" === dim ? canvasWidth : canvasHeight, offset = "x" === dim ? offsetX : offsetY, posType = getPositionType(pointerFixedPosition[dim], dim);
|
|
138
|
+
if (isValidNumber(calcPos[dimToPos[dim][0]])) result[dim] = calcPos[dimToPos[dim][0]]; else if (isValidNumber(calcPos[dimToPos[dim][1]])) result[dim] = canvasSize - boxSize * tooltipSizeScale - calcPos[dimToPos[dim][1]]; else {
|
|
139
|
+
const value0 = "x" === dim ? event.canvasX : event.canvasY;
|
|
140
|
+
result[dim] = posType > 0 ? value0 + offset : value0 - boxSize * tooltipSizeScale / 2 + (posType < 0 ? -1 : 0) * offset;
|
|
141
|
+
}
|
|
142
|
+
result[dim] *= chartElementScale, isBrowser && (result[dim] += relativePosOffset[dim]),
|
|
143
|
+
result[dim] /= tooltipParentElementScale;
|
|
144
|
+
const containerDimSize = "x" === dim ? containerSize.width : containerSize.height, leftOrTop = -tooltipParentElementRect[dim] / tooltipParentElementScale, rightOrBottom = (containerDimSize - tooltipParentElementRect[dim]) / tooltipParentElementScale - boxSize;
|
|
145
|
+
2 !== posType && result[dim] < leftOrTop ? isFixedPosition ? result[dim] = leftOrTop : (result[dim] += 0 === posType ? offset + boxSize / 2 : 2 * offset + boxSize,
|
|
146
|
+
result[dim] > rightOrBottom && (result[dim] = rightOrBottom)) : -2 !== posType && result[dim] > rightOrBottom && (isFixedPosition ? result[dim] = rightOrBottom : (result[dim] -= 0 === posType ? offset + boxSize / 2 : 2 * offset + boxSize,
|
|
147
|
+
result[dim] < leftOrTop && (result[dim] = leftOrTop)));
|
|
148
|
+
})), result;
|
|
223
149
|
};
|
|
224
150
|
}
|
|
225
151
|
get env() {
|
|
@@ -237,16 +163,10 @@ export class BaseTooltipHandler extends BasePlugin {
|
|
|
237
163
|
}
|
|
238
164
|
release() {
|
|
239
165
|
var _a, _b, _c;
|
|
240
|
-
this._clearAllCache();
|
|
241
166
|
const spec = null !== (_a = this._component.getSpec()) && void 0 !== _a ? _a : {};
|
|
242
167
|
spec.handler ? null === (_c = (_b = spec.handler).release) || void 0 === _c || _c.call(_b) : (this._removeTooltip(),
|
|
243
168
|
this._isReleased = !0);
|
|
244
169
|
}
|
|
245
|
-
_clearAllCache() {
|
|
246
|
-
this._isTooltipPaused = !1, this._isPointerEscaped = !1, clearTimeout(this._cachePointerTimer),
|
|
247
|
-
this._cachePointerTimer = -1, this._cachePointerPosition = void 0, this._cacheTooltipPosition = void 0,
|
|
248
|
-
this._cacheTooltipSize = void 0;
|
|
249
|
-
}
|
|
250
170
|
_throttle(callback) {
|
|
251
171
|
const tooltipSpec = this._component.getSpec();
|
|
252
172
|
let wait;
|
|
@@ -273,59 +193,6 @@ export class BaseTooltipHandler extends BasePlugin {
|
|
|
273
193
|
height: (null != panelDomHeight ? panelDomHeight : null == panel ? void 0 : panel.height) + (isCanvas ? panel.lineWidth : 0)
|
|
274
194
|
};
|
|
275
195
|
}
|
|
276
|
-
_getPointerPositionRelativeToTooltipParent(params) {
|
|
277
|
-
var _a, _b;
|
|
278
|
-
let {canvasX: x, canvasY: y} = params.event;
|
|
279
|
-
const {tooltipSpec: tooltipSpec} = params, invalidPosition = {
|
|
280
|
-
x: 1 / 0,
|
|
281
|
-
y: 1 / 0
|
|
282
|
-
}, isCanvas = "canvas" === tooltipSpec.renderMode, tooltipParentElement = this._getParentElement(tooltipSpec);
|
|
283
|
-
let relativePosOffset = {
|
|
284
|
-
x: 0,
|
|
285
|
-
y: 0
|
|
286
|
-
}, tooltipParentElementRect = {
|
|
287
|
-
x: 0,
|
|
288
|
-
y: 0
|
|
289
|
-
}, chartElementScale = 1, tooltipParentElementScale = 1;
|
|
290
|
-
if (isTrueBrowser(this._env) && !tooltipSpec.confine && !isCanvas) {
|
|
291
|
-
tooltipParentElementRect = null !== (_a = null == tooltipParentElement ? void 0 : tooltipParentElement.getBoundingClientRect()) && void 0 !== _a ? _a : invalidPosition;
|
|
292
|
-
const chartElement = null !== (_b = this._compiler.getCanvas()) && void 0 !== _b ? _b : this._chartContainer, chartElementRect = null == chartElement ? void 0 : chartElement.getBoundingClientRect();
|
|
293
|
-
relativePosOffset = {
|
|
294
|
-
x: chartElementRect.x - tooltipParentElementRect.x,
|
|
295
|
-
y: chartElementRect.y - tooltipParentElementRect.y
|
|
296
|
-
}, chartElementScale = getScale(chartElement, chartElementRect), tooltipParentElementScale = getScale(tooltipParentElement, tooltipParentElementRect);
|
|
297
|
-
}
|
|
298
|
-
return x *= chartElementScale, y *= chartElementScale, isTrueBrowser(this._env) && (x += relativePosOffset.x,
|
|
299
|
-
y += relativePosOffset.y), x /= tooltipParentElementScale, y /= tooltipParentElementScale,
|
|
300
|
-
{
|
|
301
|
-
x: x,
|
|
302
|
-
y: y
|
|
303
|
-
};
|
|
304
|
-
}
|
|
305
|
-
_isPointerMovingToTooltip(params) {
|
|
306
|
-
if (!this._cacheTooltipPosition || !this._cacheTooltipSize || !this._cachePointerPosition) return !1;
|
|
307
|
-
const {width: tooltipWidth, height: tooltipHeight} = this._cacheTooltipSize, {x: tooltipX = 0, y: tooltipY} = this._cacheTooltipPosition, pos = this._getPointerPositionRelativeToTooltipParent(params);
|
|
308
|
-
if (pointInRect(pos, {
|
|
309
|
-
x1: tooltipX,
|
|
310
|
-
y1: tooltipY,
|
|
311
|
-
x2: tooltipX + tooltipWidth,
|
|
312
|
-
y2: tooltipY + tooltipHeight
|
|
313
|
-
}, !1)) return !0;
|
|
314
|
-
const a = {
|
|
315
|
-
x: tooltipX,
|
|
316
|
-
y: tooltipY
|
|
317
|
-
}, b = {
|
|
318
|
-
x: a.x + tooltipWidth,
|
|
319
|
-
y: a.y
|
|
320
|
-
}, c = {
|
|
321
|
-
x: a.x,
|
|
322
|
-
y: a.y + tooltipHeight
|
|
323
|
-
}, d = {
|
|
324
|
-
x: b.x,
|
|
325
|
-
y: c.y
|
|
326
|
-
}, oldPos = this._cachePointerPosition;
|
|
327
|
-
return polygonContainPoint([ oldPos, a, b ], pos.x, pos.y) || polygonContainPoint([ oldPos, c, d ], pos.x, pos.y) || polygonContainPoint([ oldPos, a, d ], pos.x, pos.y) || polygonContainPoint([ oldPos, b, c ], pos.x, pos.y);
|
|
328
|
-
}
|
|
329
196
|
_getParentElement(spec) {
|
|
330
197
|
return spec.parentElement;
|
|
331
198
|
}
|