@visactor/vchart 0.2.1-alpha.0 → 1.0.0-alpha.1
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/README.md +1 -1
- package/build/index.js +1053 -1006
- package/build/index.min.js +2 -2
- package/cjs/component/axis/cartesian/axis.js +3 -3
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/tooltip/handler/base.d.ts +5 -4
- package/cjs/component/tooltip/handler/base.js +44 -34
- package/cjs/component/tooltip/handler/base.js.map +1 -1
- package/cjs/component/tooltip/handler/canvas/canvas-tooltip-handler.d.ts +2 -2
- package/cjs/component/tooltip/handler/canvas/canvas-tooltip-handler.js +2 -2
- package/cjs/component/tooltip/handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/constants.d.ts +2 -0
- package/cjs/component/tooltip/handler/dom/constants.js +7 -0
- package/cjs/component/tooltip/handler/dom/constants.js.map +1 -0
- package/cjs/component/tooltip/handler/dom/dom-tooltip-handler.d.ts +9 -3
- package/cjs/component/tooltip/handler/dom/dom-tooltip-handler.js +30 -13
- package/cjs/component/tooltip/handler/dom/dom-tooltip-handler.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/interface.d.ts +16 -5
- package/cjs/component/tooltip/handler/dom/interface.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/base-tooltip-model.d.ts +7 -13
- package/cjs/component/tooltip/handler/dom/model/base-tooltip-model.js +12 -27
- package/cjs/component/tooltip/handler/dom/model/base-tooltip-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/content-column-model.d.ts +13 -3
- package/cjs/component/tooltip/handler/dom/model/content-column-model.js +42 -26
- package/cjs/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/content-model.d.ts +4 -3
- package/cjs/component/tooltip/handler/dom/model/content-model.js +4 -4
- package/cjs/component/tooltip/handler/dom/model/content-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/interface.d.ts +5 -0
- package/cjs/component/tooltip/handler/dom/model/interface.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/shape-model.d.ts +5 -5
- package/cjs/component/tooltip/handler/dom/model/shape-model.js +4 -4
- package/cjs/component/tooltip/handler/dom/model/shape-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/style-constants.d.ts +4 -4
- package/cjs/component/tooltip/handler/dom/model/style-constants.js +16 -15
- package/cjs/component/tooltip/handler/dom/model/style-constants.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/text-model.js +1 -0
- package/cjs/component/tooltip/handler/dom/model/text-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/title-model.d.ts +3 -2
- package/cjs/component/tooltip/handler/dom/model/title-model.js +15 -19
- package/cjs/component/tooltip/handler/dom/model/title-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/tooltip-model.d.ts +1 -2
- package/cjs/component/tooltip/handler/dom/model/tooltip-model.js +20 -16
- package/cjs/component/tooltip/handler/dom/model/tooltip-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/util.d.ts +5 -0
- package/cjs/component/tooltip/handler/dom/{utils/style.js → util.js} +31 -19
- package/cjs/component/tooltip/handler/dom/util.js.map +1 -0
- package/cjs/component/tooltip/handler/interface/index.d.ts +0 -1
- package/cjs/component/tooltip/handler/interface/index.js +1 -1
- package/cjs/component/tooltip/handler/interface/index.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/attribute.js +10 -7
- package/cjs/component/tooltip/handler/utils/attribute.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/common.d.ts +6 -2
- package/cjs/component/tooltip/handler/utils/common.js +19 -5
- package/cjs/component/tooltip/handler/utils/common.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/compose.d.ts +3 -2
- package/cjs/component/tooltip/handler/utils/compose.js +27 -37
- package/cjs/component/tooltip/handler/utils/compose.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/get-spec.js +26 -20
- package/cjs/component/tooltip/handler/utils/get-spec.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/style.d.ts +2 -1
- package/cjs/component/tooltip/handler/utils/style.js +4 -4
- package/cjs/component/tooltip/handler/utils/style.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +3 -1
- package/cjs/component/tooltip/tooltip.js +33 -18
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/constant/box-plot.js +2 -1
- package/cjs/constant/scroll-bar.js +1 -2
- package/cjs/core/instance-manager.d.ts +1 -1
- package/cjs/core/instance-manager.js.map +1 -1
- package/cjs/core/vchart.d.ts +1 -0
- package/cjs/core/vchart.js +6 -0
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/layout/layout3d/index.js +2 -2
- package/cjs/layout/layout3d/index.js.map +1 -1
- package/cjs/mark/area.js +2 -1
- package/cjs/mark/cell.js +1 -1
- package/cjs/mark/component.js +1 -1
- package/cjs/mark/group.js +1 -1
- package/cjs/mark/line.js +1 -1
- package/cjs/mark/linkPath.js +1 -1
- package/cjs/mark/path.js +1 -1
- package/cjs/model/base-model.js +1 -1
- package/cjs/model/interface.js +1 -1
- package/cjs/model/layout-item.js +1 -1
- package/cjs/model/model-state-manager.js +1 -2
- package/cjs/model/tooltip-helper.js +1 -1
- package/cjs/plugin/interface.js +1 -1
- package/cjs/series/base/tooltip-helper.d.ts +8 -7
- package/cjs/series/base/tooltip-helper.js +4 -4
- package/cjs/series/base/tooltip-helper.js.map +1 -1
- package/cjs/series/dot/tooltip-helper.js +2 -2
- package/cjs/series/dot/tooltip-helper.js.map +1 -1
- package/cjs/series/funnel/tooltip-helper.d.ts +5 -3
- package/cjs/series/funnel/tooltip-helper.js +8 -7
- package/cjs/series/funnel/tooltip-helper.js.map +1 -1
- package/cjs/series/interface/tooltip-helper.d.ts +6 -6
- package/cjs/series/interface/tooltip-helper.js.map +1 -1
- package/cjs/theme/buildin-theme/light/component/tooltip.js +1 -0
- package/cjs/theme/buildin-theme/light/component/tooltip.js.map +1 -1
- package/cjs/typings/tooltip/common.d.ts +7 -1
- package/cjs/typings/tooltip/common.js.map +1 -1
- package/cjs/typings/tooltip/handler.d.ts +1 -1
- package/cjs/typings/tooltip/handler.js.map +1 -1
- package/cjs/typings/tooltip/line.d.ts +6 -4
- package/cjs/typings/tooltip/line.js.map +1 -1
- package/cjs/typings/tooltip/shape.d.ts +3 -3
- package/cjs/typings/tooltip/shape.js.map +1 -1
- package/cjs/typings/tooltip/tooltip.d.ts +9 -8
- package/cjs/typings/tooltip/tooltip.js.map +1 -1
- package/esm/component/axis/cartesian/axis.js +3 -3
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/tooltip/handler/base.d.ts +5 -4
- package/esm/component/tooltip/handler/base.js +45 -35
- package/esm/component/tooltip/handler/base.js.map +1 -1
- package/esm/component/tooltip/handler/canvas/canvas-tooltip-handler.d.ts +2 -2
- package/esm/component/tooltip/handler/canvas/canvas-tooltip-handler.js +2 -3
- package/esm/component/tooltip/handler/canvas/canvas-tooltip-handler.js.map +1 -1
- package/esm/component/tooltip/handler/dom/constants.d.ts +2 -0
- package/esm/component/tooltip/handler/dom/constants.js +4 -0
- package/esm/component/tooltip/handler/dom/constants.js.map +1 -0
- package/esm/component/tooltip/handler/dom/dom-tooltip-handler.d.ts +9 -3
- package/esm/component/tooltip/handler/dom/dom-tooltip-handler.js +32 -12
- package/esm/component/tooltip/handler/dom/dom-tooltip-handler.js.map +1 -1
- package/esm/component/tooltip/handler/dom/interface.d.ts +16 -5
- package/esm/component/tooltip/handler/dom/interface.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/base-tooltip-model.d.ts +7 -13
- package/esm/component/tooltip/handler/dom/model/base-tooltip-model.js +11 -29
- package/esm/component/tooltip/handler/dom/model/base-tooltip-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/content-column-model.d.ts +13 -3
- package/esm/component/tooltip/handler/dom/model/content-column-model.js +42 -24
- package/esm/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/content-model.d.ts +4 -3
- package/esm/component/tooltip/handler/dom/model/content-model.js +5 -5
- package/esm/component/tooltip/handler/dom/model/content-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/interface.d.ts +5 -0
- package/esm/component/tooltip/handler/dom/model/interface.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/shape-model.d.ts +5 -5
- package/esm/component/tooltip/handler/dom/model/shape-model.js +4 -4
- package/esm/component/tooltip/handler/dom/model/shape-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/style-constants.d.ts +4 -4
- package/esm/component/tooltip/handler/dom/model/style-constants.js +19 -18
- package/esm/component/tooltip/handler/dom/model/style-constants.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/text-model.js +1 -0
- package/esm/component/tooltip/handler/dom/model/text-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/title-model.d.ts +3 -2
- package/esm/component/tooltip/handler/dom/model/title-model.js +15 -19
- package/esm/component/tooltip/handler/dom/model/title-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/tooltip-model.d.ts +1 -2
- package/esm/component/tooltip/handler/dom/model/tooltip-model.js +21 -16
- package/esm/component/tooltip/handler/dom/model/tooltip-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/util.d.ts +5 -0
- package/esm/component/tooltip/handler/dom/util.js +71 -0
- package/esm/component/tooltip/handler/dom/util.js.map +1 -0
- package/esm/component/tooltip/handler/interface/index.d.ts +0 -1
- package/esm/component/tooltip/handler/interface/index.js +0 -2
- package/esm/component/tooltip/handler/interface/index.js.map +1 -1
- package/esm/component/tooltip/handler/utils/attribute.js +9 -6
- package/esm/component/tooltip/handler/utils/attribute.js.map +1 -1
- package/esm/component/tooltip/handler/utils/common.d.ts +6 -2
- package/esm/component/tooltip/handler/utils/common.js +12 -1
- package/esm/component/tooltip/handler/utils/common.js.map +1 -1
- package/esm/component/tooltip/handler/utils/compose.d.ts +3 -2
- package/esm/component/tooltip/handler/utils/compose.js +22 -35
- package/esm/component/tooltip/handler/utils/compose.js.map +1 -1
- package/esm/component/tooltip/handler/utils/get-spec.js +25 -19
- package/esm/component/tooltip/handler/utils/get-spec.js.map +1 -1
- package/esm/component/tooltip/handler/utils/style.d.ts +2 -1
- package/esm/component/tooltip/handler/utils/style.js +4 -4
- package/esm/component/tooltip/handler/utils/style.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +3 -1
- package/esm/component/tooltip/tooltip.js +33 -18
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/constant/box-plot.js +2 -1
- package/esm/constant/scroll-bar.js +1 -2
- package/esm/core/instance-manager.d.ts +1 -1
- package/esm/core/instance-manager.js.map +1 -1
- package/esm/core/vchart.d.ts +1 -0
- package/esm/core/vchart.js +6 -0
- package/esm/core/vchart.js.map +1 -1
- package/esm/index.d.ts +1 -1
- package/esm/index.js +1 -1
- package/esm/index.js.map +1 -1
- package/esm/layout/layout3d/index.js +2 -2
- package/esm/layout/layout3d/index.js.map +1 -1
- package/esm/mark/area.js +2 -1
- package/esm/mark/cell.js +1 -1
- package/esm/mark/component.js +1 -1
- package/esm/mark/group.js +1 -1
- package/esm/mark/line.js +1 -1
- package/esm/mark/linkPath.js +1 -1
- package/esm/mark/path.js +1 -1
- package/esm/model/base-model.js +1 -1
- package/esm/model/interface.js +1 -1
- package/esm/model/layout-item.js +1 -1
- package/esm/model/model-state-manager.js +1 -2
- package/esm/model/tooltip-helper.js +1 -1
- package/esm/plugin/interface.js +1 -1
- package/esm/series/base/tooltip-helper.d.ts +8 -7
- package/esm/series/base/tooltip-helper.js +4 -4
- package/esm/series/base/tooltip-helper.js.map +1 -1
- package/esm/series/dot/tooltip-helper.js +2 -2
- package/esm/series/dot/tooltip-helper.js.map +1 -1
- package/esm/series/funnel/tooltip-helper.d.ts +5 -3
- package/esm/series/funnel/tooltip-helper.js +8 -5
- package/esm/series/funnel/tooltip-helper.js.map +1 -1
- package/esm/series/interface/tooltip-helper.d.ts +6 -6
- package/esm/series/interface/tooltip-helper.js.map +1 -1
- package/esm/theme/buildin-theme/light/component/tooltip.js +1 -0
- package/esm/theme/buildin-theme/light/component/tooltip.js.map +1 -1
- package/esm/typings/tooltip/common.d.ts +7 -1
- package/esm/typings/tooltip/common.js.map +1 -1
- package/esm/typings/tooltip/handler.d.ts +1 -1
- package/esm/typings/tooltip/handler.js.map +1 -1
- package/esm/typings/tooltip/line.d.ts +6 -4
- package/esm/typings/tooltip/line.js.map +1 -1
- package/esm/typings/tooltip/shape.d.ts +3 -3
- package/esm/typings/tooltip/shape.js.map +1 -1
- package/esm/typings/tooltip/tooltip.d.ts +9 -8
- package/esm/typings/tooltip/tooltip.js.map +1 -1
- package/package.json +3 -3
- package/README.zh-CN.md +0 -1
- package/cjs/component/tooltip/handler/dom/utils/style.d.ts +0 -3
- package/cjs/component/tooltip/handler/dom/utils/style.js.map +0 -1
- package/cjs/component/tooltip/handler/interface/cache.d.ts +0 -28
- package/cjs/component/tooltip/handler/interface/cache.js +0 -6
- package/cjs/component/tooltip/handler/interface/cache.js.map +0 -1
- package/esm/component/tooltip/handler/dom/utils/style.d.ts +0 -3
- package/esm/component/tooltip/handler/dom/utils/style.js +0 -59
- package/esm/component/tooltip/handler/dom/utils/style.js.map +0 -1
- package/esm/component/tooltip/handler/interface/cache.d.ts +0 -28
- package/esm/component/tooltip/handler/interface/cache.js +0 -2
- package/esm/component/tooltip/handler/interface/cache.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/base/tooltip-helper.ts"],"names":[],"mappings":";;;AAEA,qCAA4C;AAE5C,+DAA+D;
|
|
1
|
+
{"version":3,"sources":["../src/series/base/tooltip-helper.ts"],"names":[],"mappings":"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","file":"tooltip-helper.js","sourcesContent":["import type { ITooltipSpec, TooltipHandlerParams } from '../../component/tooltip/interface';\nimport type { IToolTipLinePattern, ITooltipPattern, ShapeType, TooltipActiveType } from '../../typings';\nimport { array, isValid } from '../../util';\nimport type { ISeries, ISeriesTooltipHelper } from '../interface';\nimport { BaseTooltipHelper } from '../../model/tooltip-helper';\nimport type { IDimensionInfo } from '../../event/events/dimension/interface';\nimport type { Datum } from '@visactor/vgrammar';\n\ninterface ISeriesCacheInfo {\n seriesFields: string[];\n dimensionFields: string[];\n measureFields: string[];\n type: string;\n}\n\nexport class BaseSeriesTooltipHelper extends BaseTooltipHelper implements ISeriesTooltipHelper {\n series: ISeries;\n\n protected _seriesCacheInfo: ISeriesCacheInfo;\n\n constructor(series: ISeries) {\n const seriesTooltipSpec = series.getSpec()?.tooltip ?? {};\n const chartTooltipSpec = series.getChart().getSpec()?.tooltip ?? {};\n super({\n ...chartTooltipSpec,\n ...seriesTooltipSpec\n });\n this.series = series;\n this._seriesCacheInfo = this._getSeriesCacheInfo();\n }\n\n updateTooltipSpec(spec: ITooltipSpec) {\n super.updateTooltipSpec(spec);\n this._seriesCacheInfo = this._getSeriesCacheInfo?.();\n }\n\n protected _getSeriesCacheInfo = (): ISeriesCacheInfo => {\n const { series } = this;\n const _seriesField = series.getSeriesField();\n const seriesFields = isValid(_seriesField) ? array(_seriesField) : series.getSeriesKeys() ?? [];\n return {\n seriesFields,\n dimensionFields: series.getDimensionField() ?? [],\n measureFields: series.getMeasureField() ?? [],\n type: series.type\n };\n };\n\n protected _getDimensionData = (datum: any) => {\n const { dimensionFields } = this._seriesCacheInfo;\n return dimensionFields[0] && datum?.[dimensionFields[0]];\n };\n\n protected _getMeasureData = (datum: any) => {\n const { measureFields } = this._seriesCacheInfo;\n return measureFields[0] && datum?.[measureFields[0]];\n };\n\n protected _getSeriesStyle = (datum: any, styleKey: string | string[], defaultValue?: any) => {\n for (const key of array(styleKey)) {\n const value = this.series.getSeriesStyle(datum)?.(key);\n if (isValid(value)) {\n return value;\n }\n }\n return defaultValue;\n };\n\n contentKeyCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n const { dimensionFields, seriesFields } = this._seriesCacheInfo;\n const subDimensionField = dimensionFields[dimensionFields.length - 1];\n\n if (isValid(seriesFields[0]) && datum?.[seriesFields[0]]) {\n return datum?.[seriesFields[0]];\n }\n\n if (dimensionFields.length > 1 && (seriesFields.length === 0 || this.series.getSeriesKeys().length <= 1)) {\n return datum?.[subDimensionField];\n }\n\n return datum?.[subDimensionField];\n };\n\n contentValueCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getMeasureData(datum);\n };\n\n contentShapeTypeCallback = (datum: Datum, params?: TooltipHandlerParams): ShapeType | undefined => {\n return this._getSeriesStyle(datum, 'shape', this.getDefaultShapeType());\n };\n\n contentShapeColorCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getSeriesStyle(datum, ['fill', 'stroke']);\n };\n\n titleValueCallback = (datum: Datum, params?: TooltipHandlerParams): string | undefined => {\n return this._getDimensionData(datum);\n };\n\n /** 获取默认的tooltip pattern */\n getDefaultTooltipPattern(activeType: TooltipActiveType, dimensionInfo?: IDimensionInfo[]): ITooltipPattern | null {\n if (activeType === 'mark') {\n return {\n visible: true,\n activeType,\n title: {\n key: undefined,\n value: this.titleValueCallback,\n hasShape: false\n },\n content: [\n {\n key: this.contentKeyCallback,\n value: this.contentValueCallback,\n hasShape: true,\n shapeType: this.contentShapeTypeCallback,\n shapeColor: this.contentShapeColorCallback,\n shapeHollow: false\n }\n ]\n };\n } else if (activeType === 'dimension' && dimensionInfo) {\n const title: IToolTipLinePattern = {\n key: undefined,\n value: this._getDimensionData,\n hasShape: false\n };\n const content: IToolTipLinePattern[] = [];\n dimensionInfo.forEach(({ data }) =>\n data.forEach(({ series }) => {\n content.push({\n seriesId: series.id,\n key: this.contentKeyCallback,\n value: this.contentValueCallback,\n hasShape: true,\n shapeType: this.contentShapeTypeCallback,\n shapeColor: this.contentShapeColorCallback,\n shapeHollow: false\n });\n })\n );\n return {\n visible: true,\n activeType,\n title,\n content\n };\n }\n\n return null;\n }\n\n /**\n * @override\n */\n getDefaultShapeType() {\n return this.series.getDefaultShapeType();\n }\n}\n"]}
|
|
@@ -8,7 +8,7 @@ const tooltip_helper_1 = require("../base/tooltip-helper"), util_1 = require("..
|
|
|
8
8
|
|
|
9
9
|
class DotSeriesTooltipHelper extends tooltip_helper_1.BaseSeriesTooltipHelper {
|
|
10
10
|
updateTooltipSpec(spec) {
|
|
11
|
-
super.updateTooltipSpec(spec), spec.mark.updateContent = (prev, datum) => {
|
|
11
|
+
super.updateTooltipSpec(spec), spec.mark.updateContent = (prev, datum, params) => {
|
|
12
12
|
const childrenContent = [], childrenPrev = prev.filter((p => "children" === p.key));
|
|
13
13
|
return childrenPrev.length > 0 && childrenPrev[0].value.forEach((element => {
|
|
14
14
|
let flag = !0;
|
|
@@ -55,7 +55,7 @@ class DotSeriesTooltipHelper extends tooltip_helper_1.BaseSeriesTooltipHelper {
|
|
|
55
55
|
key: "children",
|
|
56
56
|
value: datum => datum.children
|
|
57
57
|
} ],
|
|
58
|
-
updateContent: (prev, datum) => {
|
|
58
|
+
updateContent: (prev, datum, params) => {
|
|
59
59
|
const childrenContent = [];
|
|
60
60
|
return prev[3].value.forEach((element => {
|
|
61
61
|
let flag = !0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/dot/tooltip-helper.ts"],"names":[],"mappings":";;;AACA,2DAAiE;AAGjE,8DAA+D;AAE/D,MAAa,sBAAuB,SAAQ,wCAAuB;IACjE,iBAAiB,CAAC,IAAkB;QAClC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAS,EAAE,KAAU,EAAE,EAAE;
|
|
1
|
+
{"version":3,"sources":["../src/series/dot/tooltip-helper.ts"],"names":[],"mappings":"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","file":"tooltip-helper.js","sourcesContent":["import type { ISeriesTooltipHelper } from '../interface';\nimport { BaseSeriesTooltipHelper } from '../base/tooltip-helper';\nimport type { ITooltipPattern, TooltipActiveType } from '../../typings';\nimport type { ITooltipSpec } from '../../component/tooltip/interface';\nimport { TimeUtil } from '../../component/axis/cartesian/util';\n\nexport class DotSeriesTooltipHelper extends BaseSeriesTooltipHelper implements ISeriesTooltipHelper {\n updateTooltipSpec(spec: ITooltipSpec) {\n super.updateTooltipSpec(spec);\n spec.mark.updateContent = (prev: any, datum: any, params: any) => {\n const childrenContent: any = [];\n const childrenPrev = prev.filter((p: any) => p.key === 'children');\n childrenPrev.length > 0 &&\n childrenPrev[0].value.forEach((element: any) => {\n let flag = true;\n for (const key in element) {\n childrenContent.push({\n shapeType: 'circle',\n hasShape: flag,\n shapeColor: this.contentShapeColorCallback(datum[0].datum[0]),\n key: key,\n value: element[key] + ''\n });\n flag = false;\n }\n });\n return prev.concat(childrenContent);\n };\n this.spec = spec;\n }\n\n /** 获取默认的tooltip pattern */\n getDefaultTooltipPattern(activeType: TooltipActiveType): ITooltipPattern | null {\n if (activeType === 'mark') {\n return {\n visible: true,\n activeType,\n title: {\n key: 'event info',\n value: 'event info'\n },\n content: [\n {\n hasShape: true,\n shapeType: 'square',\n shapeColor: this.contentShapeColorCallback,\n key: (datum: any) => datum.type,\n value: (datum: any) => datum.id\n },\n {\n hasShape: true,\n shapeType: 'square',\n shapeColor: this.contentShapeColorCallback,\n key: 'event_time',\n value: (datum: any) => TimeUtil.getInstance().timeFormat('%Y%m%d', datum.event_time)\n },\n {\n hasShape: true,\n shapeType: 'square',\n shapeColor: this.contentShapeColorCallback,\n key: 'action_type',\n value: (datum: any) => datum.action_type\n },\n {\n shapeType: 'square',\n hasShape: true,\n shapeColor: this.contentShapeColorCallback,\n key: 'children',\n value: (datum: any) => {\n return datum.children;\n }\n }\n ],\n updateContent: (prev: any, datum: any, params: any) => {\n const childrenContent: any = [];\n prev[3].value.forEach((element: any) => {\n let flag = true;\n for (const key in element) {\n childrenContent.push({\n shapeType: 'circle',\n hasShape: flag,\n shapeColor: this.contentShapeColorCallback(datum[0].datum[0]),\n key: key,\n value: element[key] + ''\n });\n flag = false;\n }\n });\n return prev.concat(childrenContent);\n }\n };\n }\n return null;\n }\n}\n"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { ISeriesTooltipHelper } from '../interface';
|
|
2
2
|
import { BaseSeriesTooltipHelper } from '../base/tooltip-helper';
|
|
3
|
+
import type { TooltipHandlerParams } from '../../component/tooltip/interface';
|
|
4
|
+
import type { Datum } from '@visactor/vgrammar';
|
|
3
5
|
export declare class FunnelSeriesTooltipHelper extends BaseSeriesTooltipHelper implements ISeriesTooltipHelper {
|
|
4
|
-
titleValueCallback: (datum:
|
|
5
|
-
contentValueCallback: (datum:
|
|
6
|
-
contentKeyCallback: (datum:
|
|
6
|
+
titleValueCallback: (datum: Datum, params?: TooltipHandlerParams) => any;
|
|
7
|
+
contentValueCallback: (datum: Datum) => any;
|
|
8
|
+
contentKeyCallback: (datum: Datum, params?: TooltipHandlerParams) => any;
|
|
7
9
|
}
|
|
@@ -4,21 +4,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.FunnelSeriesTooltipHelper = void 0;
|
|
6
6
|
|
|
7
|
-
const tooltip_helper_1 = require("../base/tooltip-helper"), funnel_1 = require("../../constant/funnel"), vutils_1 = require("@visactor/vutils");
|
|
7
|
+
const tooltip_helper_1 = require("../base/tooltip-helper"), funnel_1 = require("./funnel"), funnel_2 = require("../../constant/funnel"), vutils_1 = require("@visactor/vutils");
|
|
8
8
|
|
|
9
9
|
class FunnelSeriesTooltipHelper extends tooltip_helper_1.BaseSeriesTooltipHelper {
|
|
10
10
|
constructor() {
|
|
11
|
-
super(...arguments), this.titleValueCallback = datum => {
|
|
12
|
-
var _a, _b;
|
|
11
|
+
super(...arguments), this.titleValueCallback = (datum, params) => {
|
|
12
|
+
var _a, _b, _c, _d;
|
|
13
13
|
const series = this.series;
|
|
14
|
-
return
|
|
14
|
+
return (null === (_a = null == params ? void 0 : params.mark) || void 0 === _a ? void 0 : _a.name) === (null === (_b = funnel_1.FunnelSeries.mark.transform) || void 0 === _b ? void 0 : _b.name) ? "转化率" : null !== (_c = this._getDimensionData(datum)) && void 0 !== _c ? _c : null === (_d = datum.properties) || void 0 === _d ? void 0 : _d[`${series.categoryField}`];
|
|
15
15
|
}, this.contentValueCallback = datum => {
|
|
16
16
|
if (this.series.isTransformLevel(datum)) {
|
|
17
|
-
return `${(100 * (null == datum ? void 0 : datum[
|
|
17
|
+
return `${(100 * (null == datum ? void 0 : datum[funnel_2.FUNNEL_REACH_RATIO])).toFixed(1)}%`;
|
|
18
18
|
}
|
|
19
19
|
return this._getMeasureData(datum);
|
|
20
|
-
}, this.contentKeyCallback = datum => {
|
|
21
|
-
|
|
20
|
+
}, this.contentKeyCallback = (datum, params) => {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
if ((null === (_a = null == params ? void 0 : params.mark) || void 0 === _a ? void 0 : _a.name) === (null === (_b = funnel_1.FunnelSeries.mark.transform) || void 0 === _b ? void 0 : _b.name)) return "转化率";
|
|
22
23
|
const {dimensionFields: dimensionFields, seriesFields: seriesFields} = this._seriesCacheInfo, subDimensionField = dimensionFields[dimensionFields.length - 1];
|
|
23
24
|
return (0, vutils_1.isValid)(seriesFields[0]) ? null == datum ? void 0 : datum[seriesFields[0]] : null == datum ? void 0 : datum[subDimensionField];
|
|
24
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/funnel/tooltip-helper.ts"],"names":[],"mappings":";;;AACA,2DAAiE;
|
|
1
|
+
{"version":3,"sources":["../src/series/funnel/tooltip-helper.ts"],"names":[],"mappings":";;;AACA,2DAAiE;AACjE,qCAAwC;AACxC,kDAA2D;AAC3D,6CAA2C;AAI3C,MAAa,yBAA0B,SAAQ,wCAAuB;IAAtE;;QACE,uBAAkB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAE,EAAE;;YACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAsB,CAAC;YAC3C,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,IAAI,OAAK,MAAA,qBAAY,CAAC,IAAI,CAAC,SAAS,0CAAE,IAAI,CAAA,EAAE;gBAE5D,OAAO,KAAK,CAAC;aACd;YACD,OAAO,MAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,mCAAI,MAAA,KAAK,CAAC,UAAU,0CAAG,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QACxF,CAAC,CAAC;QAEF,yBAAoB,GAAG,CAAC,KAAY,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAsB,CAAC;YAC3C,IAAI,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;gBAClC,MAAM,WAAW,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,2BAAkB,CAAC,CAAC;gBAChD,OAAO,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;aAC7C;YACD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,uBAAkB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAE,EAAE;;YACnE,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,IAAI,OAAK,MAAA,qBAAY,CAAC,IAAI,CAAC,SAAS,0CAAE,IAAI,CAAA,EAAE;gBAE5D,OAAO,KAAK,CAAC;aACd;YACD,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAChE,MAAM,iBAAiB,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEtE,IAAI,IAAA,gBAAO,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5B,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aACjC;YACD,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,iBAAiB,CAAC,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC;CAAA;AAhCD,8DAgCC","file":"tooltip-helper.js","sourcesContent":["import type { ISeriesTooltipHelper } from '../interface';\nimport { BaseSeriesTooltipHelper } from '../base/tooltip-helper';\nimport { FunnelSeries } from './funnel';\nimport { FUNNEL_REACH_RATIO } from '../../constant/funnel';\nimport { isValid } from '@visactor/vutils';\nimport type { TooltipHandlerParams } from '../../component/tooltip/interface';\nimport type { Datum } from '@visactor/vgrammar';\n\nexport class FunnelSeriesTooltipHelper extends BaseSeriesTooltipHelper implements ISeriesTooltipHelper {\n titleValueCallback = (datum: Datum, params?: TooltipHandlerParams) => {\n const series = this.series as FunnelSeries;\n if (params?.mark?.name === FunnelSeries.mark.transform?.name) {\n // TODO: i18n\n return `转化率`;\n }\n return this._getDimensionData(datum) ?? datum.properties?.[`${series.categoryField}`];\n };\n\n contentValueCallback = (datum: Datum) => {\n const series = this.series as FunnelSeries;\n if (series.isTransformLevel(datum)) {\n const measureData = datum?.[FUNNEL_REACH_RATIO];\n return `${(measureData * 100).toFixed(1)}%`;\n }\n return this._getMeasureData(datum);\n };\n\n contentKeyCallback = (datum: Datum, params?: TooltipHandlerParams) => {\n if (params?.mark?.name === FunnelSeries.mark.transform?.name) {\n // TODO: i18n\n return `转化率`;\n }\n const { dimensionFields, seriesFields } = this._seriesCacheInfo;\n const subDimensionField = dimensionFields[dimensionFields.length - 1];\n\n if (isValid(seriesFields[0])) {\n return datum?.[seriesFields[0]];\n }\n return datum?.[subDimensionField];\n };\n}\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type { ITooltipPattern, TooltipActiveType, TooltipContentCallback } from '../../typings';
|
|
1
|
+
import type { ITooltipPattern, ShapeType, TooltipActiveType, TooltipContentCallback } from '../../typings';
|
|
2
2
|
import type { ISeries } from './series';
|
|
3
3
|
import type { ITooltipHelper } from '../../model/tooltip-helper';
|
|
4
4
|
import type { IDimensionInfo } from '../../event/events/dimension/interface';
|
|
5
5
|
export interface ISeriesTooltipHelper extends ITooltipHelper {
|
|
6
6
|
series: ISeries;
|
|
7
7
|
getDefaultTooltipPattern: (activeType: TooltipActiveType, dimensionInfo?: IDimensionInfo[]) => ITooltipPattern | null;
|
|
8
|
-
contentKeyCallback: TooltipContentCallback
|
|
9
|
-
contentValueCallback: TooltipContentCallback
|
|
10
|
-
contentShapeTypeCallback: TooltipContentCallback
|
|
11
|
-
contentShapeColorCallback: TooltipContentCallback
|
|
12
|
-
titleValueCallback: TooltipContentCallback
|
|
8
|
+
contentKeyCallback: TooltipContentCallback<string>;
|
|
9
|
+
contentValueCallback: TooltipContentCallback<string>;
|
|
10
|
+
contentShapeTypeCallback: TooltipContentCallback<ShapeType>;
|
|
11
|
+
contentShapeColorCallback: TooltipContentCallback<string>;
|
|
12
|
+
titleValueCallback: TooltipContentCallback<string>;
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/interface/tooltip-helper.ts"],"names":[],"mappings":"","file":"tooltip-helper.js","sourcesContent":["import type { ITooltipPattern, TooltipActiveType, TooltipContentCallback } from '../../typings';\nimport type { ISeries } from './series';\nimport type { ITooltipHelper } from '../../model/tooltip-helper';\nimport type { IDimensionInfo } from '../../event/events/dimension/interface';\n\nexport interface ISeriesTooltipHelper extends ITooltipHelper {\n /** 对应系列 */\n series: ISeries;\n\n /** 获得默认tooltip pattern */\n getDefaultTooltipPattern: (activeType: TooltipActiveType, dimensionInfo?: IDimensionInfo[]) => ITooltipPattern | null;\n\n // 可以继承的原子化回调\n contentKeyCallback: TooltipContentCallback
|
|
1
|
+
{"version":3,"sources":["../src/series/interface/tooltip-helper.ts"],"names":[],"mappings":"","file":"tooltip-helper.js","sourcesContent":["import type { ITooltipPattern, ShapeType, TooltipActiveType, TooltipContentCallback } from '../../typings';\nimport type { ISeries } from './series';\nimport type { ITooltipHelper } from '../../model/tooltip-helper';\nimport type { IDimensionInfo } from '../../event/events/dimension/interface';\n\nexport interface ISeriesTooltipHelper extends ITooltipHelper {\n /** 对应系列 */\n series: ISeries;\n\n /** 获得默认tooltip pattern */\n getDefaultTooltipPattern: (activeType: TooltipActiveType, dimensionInfo?: IDimensionInfo[]) => ITooltipPattern | null;\n\n // 可以继承的原子化回调\n contentKeyCallback: TooltipContentCallback<string>;\n contentValueCallback: TooltipContentCallback<string>;\n contentShapeTypeCallback: TooltipContentCallback<ShapeType>;\n contentShapeColorCallback: TooltipContentCallback<string>;\n titleValueCallback: TooltipContentCallback<string>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/buildin-theme/light/component/tooltip.ts"],"names":[],"mappings":";;;AACA,4CAA+C;AAE/C,MAAM,QAAQ,GAAG,2BAAe,CAAC,eAAe,CAAC;AAEpC,QAAA,OAAO,GAAkB;IACpC,QAAQ,EAAE,GAAG;IACb,MAAM,EAAE;QACN,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;KACN;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;SACX;QACD,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE;YACN,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV;QACD,MAAM,EAAE;YACN,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,oBAAoB;SAC5B;KACF;IACD,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,CAAC;KACX;IACD,KAAK,EAAE;QACL,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,EAAE;QACR,QAAQ;QACR,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,EAAE;KACZ;IACD,UAAU,EAAE;QACV,QAAQ;QACR,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,CAAC;KACX;CACF,CAAC","file":"tooltip.js","sourcesContent":["import type { ITooltipTheme } from '../../../../component/tooltip/interface';\nimport { THEME_CONSTANTS } from '../constants';\n\nconst fontSize = THEME_CONSTANTS.LABEL_FONT_SIZE;\n\nexport const tooltip: ITooltipTheme = {\n maxWidth: 440,\n offset: {\n x: 10,\n y: 10\n },\n panel: {\n padding: {\n top: 10,\n left: 10,\n right: 10,\n bottom: 10\n },\n backgroundColor: '#fff',\n border: {\n color: '#ffffff',\n width: 0,\n radius: 3\n },\n shadow: {\n x: 0,\n y: 4,\n blur: 12,\n spread: 0,\n color: 'rgba(0, 0, 0, 0.1)'\n }\n },\n spaceRow: 6,\n titleLabel: {\n fontSize: 14,\n fontColor: '#4E5969',\n textAlign: 'left',\n lineHeight: 18,\n textBaseline: 'middle',\n spacing: 0\n },\n shape: {\n size: 8,\n spacing: 6\n },\n keyLabel: {\n fontSize,\n fontColor: '#4E5969',\n textAlign: 'left',\n lineHeight: 18,\n textBaseline: 'middle',\n spacing: 26\n },\n valueLabel: {\n fontSize,\n fontColor: '#4E5969',\n lineHeight: 18,\n textBaseline: 'middle',\n spacing: 0\n }\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/theme/buildin-theme/light/component/tooltip.ts"],"names":[],"mappings":";;;AACA,4CAA+C;AAE/C,MAAM,QAAQ,GAAG,2BAAe,CAAC,eAAe,CAAC;AAEpC,QAAA,OAAO,GAAkB;IACpC,QAAQ,EAAE,GAAG;IACb,MAAM,EAAE;QACN,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;KACN;IACD,KAAK,EAAE;QACL,OAAO,EAAE;YACP,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;SACX;QACD,eAAe,EAAE,MAAM;QACvB,MAAM,EAAE;YACN,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV;QACD,MAAM,EAAE;YACN,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;YACJ,IAAI,EAAE,EAAE;YACR,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,oBAAoB;SAC5B;KACF;IACD,QAAQ,EAAE,CAAC;IACX,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,CAAC;KACX;IACD,KAAK,EAAE;QACL,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,EAAE;QACR,QAAQ;QACR,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,EAAE;KACZ;IACD,UAAU,EAAE;QACV,QAAQ;QACR,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,CAAC;KACX;CACF,CAAC","file":"tooltip.js","sourcesContent":["import type { ITooltipTheme } from '../../../../component/tooltip/interface';\nimport { THEME_CONSTANTS } from '../constants';\n\nconst fontSize = THEME_CONSTANTS.LABEL_FONT_SIZE;\n\nexport const tooltip: ITooltipTheme = {\n maxWidth: 440,\n offset: {\n x: 10,\n y: 10\n },\n panel: {\n padding: {\n top: 10,\n left: 10,\n right: 10,\n bottom: 10\n },\n backgroundColor: '#fff',\n border: {\n color: '#ffffff',\n width: 0,\n radius: 3\n },\n shadow: {\n x: 0,\n y: 4,\n blur: 12,\n spread: 0,\n color: 'rgba(0, 0, 0, 0.1)'\n }\n },\n spaceRow: 6,\n titleLabel: {\n fontSize: 14,\n fontColor: '#4E5969',\n fontWeight: 'bold',\n textAlign: 'left',\n lineHeight: 18,\n textBaseline: 'middle',\n spacing: 0\n },\n shape: {\n size: 8,\n spacing: 6\n },\n keyLabel: {\n fontSize,\n fontColor: '#4E5969',\n textAlign: 'left',\n lineHeight: 18,\n textBaseline: 'middle',\n spacing: 26\n },\n valueLabel: {\n fontSize,\n fontColor: '#4E5969',\n lineHeight: 18,\n textBaseline: 'middle',\n spacing: 0\n }\n};\n"]}
|
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
import type { Datum } from '../common';
|
|
2
|
-
|
|
2
|
+
import type { TooltipHandlerParams } from '../../component/tooltip/interface';
|
|
3
|
+
import type { TooltipData } from './handler';
|
|
4
|
+
export type TooltipContentProperty<T> = T | TooltipContentCallback<T>;
|
|
5
|
+
export type TooltipContentCallback<T> = (datum?: Datum, params?: TooltipHandlerParams) => T | undefined;
|
|
6
|
+
export type TooltipPatternProperty<T> = T | TooltipPatternCallback<T>;
|
|
7
|
+
export type TooltipPatternCallback<T> = (data?: TooltipData, params?: TooltipHandlerParams) => T | undefined;
|
|
8
|
+
export type TooltipUpdateCallback<T> = (prev: T | undefined, data?: TooltipData, params?: TooltipHandlerParams) => T | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/typings/tooltip/common.ts"],"names":[],"mappings":"","file":"common.js","sourcesContent":["import type { Datum } from '../common';\n\nexport type TooltipContentCallback = (datum
|
|
1
|
+
{"version":3,"sources":["../src/typings/tooltip/common.ts"],"names":[],"mappings":"","file":"common.js","sourcesContent":["import type { Datum } from '../common';\nimport type { TooltipHandlerParams } from '../../component/tooltip/interface';\nimport type { TooltipData } from './handler';\n\nexport type TooltipContentProperty<T> = T | TooltipContentCallback<T>;\nexport type TooltipContentCallback<T> = (datum?: Datum, params?: TooltipHandlerParams) => T | undefined;\n\nexport type TooltipPatternProperty<T> = T | TooltipPatternCallback<T>;\nexport type TooltipPatternCallback<T> = (data?: TooltipData, params?: TooltipHandlerParams) => T | undefined;\n\nexport type TooltipUpdateCallback<T> = (\n prev: T | undefined,\n data?: TooltipData,\n params?: TooltipHandlerParams\n) => T | undefined;\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ITooltipHandlerSpec } from '../../component/tooltip/interface';
|
|
2
2
|
import type { IDimensionData, IDimensionInfo } from '../../event/events/dimension/interface';
|
|
3
3
|
export interface ITooltipHandler extends ITooltipHandlerSpec {
|
|
4
|
-
visible?: boolean;
|
|
5
4
|
getTooltipContainer?: () => any;
|
|
5
|
+
reInit?: () => any;
|
|
6
6
|
}
|
|
7
7
|
export type TooltipData = IDimensionInfo[] | IDimensionData[];
|
|
8
8
|
export type TooltipActiveType = 'mark' | 'dimension';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/typings/tooltip/handler.ts"],"names":[],"mappings":"","file":"handler.js","sourcesContent":["import type { ITooltipHandlerSpec } from '../../component/tooltip/interface';\nimport type { IDimensionData, IDimensionInfo } from '../../event/events/dimension/interface';\n\nexport interface ITooltipHandler extends ITooltipHandlerSpec {\n
|
|
1
|
+
{"version":3,"sources":["../src/typings/tooltip/handler.ts"],"names":[],"mappings":"","file":"handler.js","sourcesContent":["import type { ITooltipHandlerSpec } from '../../component/tooltip/interface';\nimport type { IDimensionData, IDimensionInfo } from '../../event/events/dimension/interface';\n\nexport interface ITooltipHandler extends ITooltipHandlerSpec {\n /** 可选,获取 tooltip 所在容器 */\n getTooltipContainer?: () => any;\n /** 可选,更新 tooltip spec 或主题后执行的回调 */\n reInit?: () => any;\n}\n\nexport type TooltipData = IDimensionInfo[] | IDimensionData[];\n\nexport type TooltipActiveType = 'mark' | 'dimension';\n"]}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TooltipContentProperty } from './common';
|
|
2
2
|
import type { ITooltipShapeActual, ITooltipShapePattern } from './shape';
|
|
3
3
|
export interface IToolTipLinePattern extends ITooltipShapePattern {
|
|
4
4
|
seriesId?: number;
|
|
5
|
-
key?: string
|
|
6
|
-
value?: string
|
|
7
|
-
visible?: boolean
|
|
5
|
+
key?: TooltipContentProperty<string>;
|
|
6
|
+
value?: TooltipContentProperty<string>;
|
|
7
|
+
visible?: TooltipContentProperty<boolean>;
|
|
8
|
+
isKeyAdaptive?: TooltipContentProperty<boolean>;
|
|
8
9
|
}
|
|
9
10
|
export interface IToolTipLineActual extends ITooltipShapeActual {
|
|
10
11
|
key?: string;
|
|
11
12
|
value?: string;
|
|
12
13
|
visible?: boolean;
|
|
14
|
+
isKeyAdaptive?: boolean;
|
|
13
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/typings/tooltip/line.ts"],"names":[],"mappings":"","file":"line.js","sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../src/typings/tooltip/line.ts"],"names":[],"mappings":"","file":"line.js","sourcesContent":["import type { TooltipContentProperty } from './common';\nimport type { ITooltipShapeActual, ITooltipShapePattern } from './shape';\n\nexport interface IToolTipLinePattern extends ITooltipShapePattern {\n /** 该 pattern 属于哪个系列id(用户不需要设置) */\n seriesId?: number;\n /** tooltip key 值内容 */\n key?: TooltipContentProperty<string>;\n /** tooltip value 值内容 */\n value?: TooltipContentProperty<string>;\n /** 该行是否可见 */\n visible?: TooltipContentProperty<boolean>;\n /** key 列是否适应内容 */\n isKeyAdaptive?: TooltipContentProperty<boolean>;\n}\n\nexport interface IToolTipLineActual extends ITooltipShapeActual {\n /** tooltip key 值内容 */\n key?: string;\n /** tooltip value 值内容 */\n value?: string;\n /** 该行是否可见 */\n visible?: boolean;\n /** key 列是否适应内容 */\n isKeyAdaptive?: boolean;\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { ShapeType } from '../shape';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TooltipContentProperty } from './common';
|
|
3
3
|
export interface ITooltipShapePattern {
|
|
4
4
|
hasShape?: boolean;
|
|
5
|
-
shapeType?: ShapeType
|
|
6
|
-
shapeColor?: string
|
|
5
|
+
shapeType?: TooltipContentProperty<ShapeType>;
|
|
6
|
+
shapeColor?: TooltipContentProperty<string>;
|
|
7
7
|
shapeHollow?: boolean;
|
|
8
8
|
}
|
|
9
9
|
export interface ITooltipShapeActual {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/typings/tooltip/shape.ts"],"names":[],"mappings":"","file":"shape.js","sourcesContent":["import type { ShapeType } from '../shape';\nimport type {
|
|
1
|
+
{"version":3,"sources":["../src/typings/tooltip/shape.ts"],"names":[],"mappings":"","file":"shape.js","sourcesContent":["import type { ShapeType } from '../shape';\nimport type { TooltipContentProperty } from './common';\n\nexport interface ITooltipShapePattern {\n hasShape?: boolean;\n shapeType?: TooltipContentProperty<ShapeType>;\n shapeColor?: TooltipContentProperty<string>;\n shapeHollow?: boolean;\n}\n\nexport interface ITooltipShapeActual {\n hasShape?: boolean;\n shapeType?: ShapeType;\n shapeColor?: string;\n shapeHollow?: boolean;\n}\n"]}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TooltipPatternProperty, TooltipUpdateCallback } from './common';
|
|
2
|
+
import type { TooltipActiveType } from './handler';
|
|
2
3
|
import type { IToolTipLineActual, IToolTipLinePattern } from './line';
|
|
3
4
|
import type { ITooltipPositionActual, TooltipPosition } from './position';
|
|
4
5
|
import type { ITooltipShapePattern } from './shape';
|
|
5
6
|
export interface ITooltipPattern extends ITooltipShapePattern {
|
|
6
|
-
visible?: boolean
|
|
7
|
-
title?: IToolTipLinePattern
|
|
8
|
-
content?: IToolTipLinePattern[]
|
|
9
|
-
position?: TooltipPosition
|
|
10
|
-
updateTitle?:
|
|
11
|
-
updateContent?:
|
|
12
|
-
updatePosition?:
|
|
7
|
+
visible?: TooltipPatternProperty<boolean>;
|
|
8
|
+
title?: TooltipPatternProperty<IToolTipLinePattern>;
|
|
9
|
+
content?: TooltipPatternProperty<IToolTipLinePattern | IToolTipLinePattern[]>;
|
|
10
|
+
position?: TooltipPatternProperty<TooltipPosition>;
|
|
11
|
+
updateTitle?: TooltipUpdateCallback<IToolTipLineActual>;
|
|
12
|
+
updateContent?: TooltipUpdateCallback<IToolTipLineActual[]>;
|
|
13
|
+
updatePosition?: TooltipUpdateCallback<ITooltipPositionActual>;
|
|
13
14
|
activeType?: TooltipActiveType;
|
|
14
15
|
}
|
|
15
16
|
export interface IToolTipActual {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/typings/tooltip/tooltip.ts"],"names":[],"mappings":"","file":"tooltip.js","sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../src/typings/tooltip/tooltip.ts"],"names":[],"mappings":"","file":"tooltip.js","sourcesContent":["import type { TooltipPatternProperty, TooltipUpdateCallback } from './common';\nimport type { TooltipActiveType } from './handler';\nimport type { IToolTipLineActual, IToolTipLinePattern } from './line';\nimport type { ITooltipPositionActual, TooltipPosition } from './position';\nimport type { ITooltipShapePattern } from './shape';\n\nexport interface ITooltipPattern extends ITooltipShapePattern {\n visible?: TooltipPatternProperty<boolean>;\n title?: TooltipPatternProperty<IToolTipLinePattern>;\n content?: TooltipPatternProperty<IToolTipLinePattern | IToolTipLinePattern[]>;\n position?: TooltipPatternProperty<TooltipPosition>;\n\n updateTitle?: TooltipUpdateCallback<IToolTipLineActual>;\n updateContent?: TooltipUpdateCallback<IToolTipLineActual[]>;\n updatePosition?: TooltipUpdateCallback<ITooltipPositionActual>;\n\n /** 方便内部逻辑辨别 tooltip 类型,不暴露给用户 */\n activeType?: TooltipActiveType;\n}\n\nexport interface IToolTipActual {\n visible?: boolean;\n title?: IToolTipLineActual;\n content?: IToolTipLineActual[];\n activeType?: TooltipActiveType;\n position?: ITooltipPositionActual;\n}\n"]}
|
|
@@ -343,9 +343,9 @@ export class CartesianAxis extends AxisComponent {
|
|
|
343
343
|
y: height
|
|
344
344
|
}, gridLength = regionWidth, axisLength = height), isZ) {
|
|
345
345
|
const directionStr = null !== (_a = this.directionStr) && void 0 !== _a ? _a : "r2l", depthZ = this.layout3dBox ? this.layout3dBox.width : 0;
|
|
346
|
-
let anchor3d =
|
|
347
|
-
return "l2r" === directionStr && (z = this.layout3dBox.length, anchor3d =
|
|
348
|
-
alpha =
|
|
346
|
+
let anchor3d = [ 0, 0 ], alpha = -Math.PI / 2, z = 0;
|
|
347
|
+
return "l2r" === directionStr && (z = this.layout3dBox.length, anchor3d = [ 0, 0, 0 ],
|
|
348
|
+
alpha = Math.PI / 2), {
|
|
349
349
|
start: {
|
|
350
350
|
x: 0,
|
|
351
351
|
y: 0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/axis/cartesian/axis.ts"],"names":[],"mappings":"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","file":"axis.js","sourcesContent":["/**\n * @todo vgrammar axis 支持 mode: '3d' 配置传入\n */\nimport type { IBounds, IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IEffect, IModelInitOption, ILayoutRect } from '../../../model/interface';\nimport type { ICartesianSeries } from '../../../series/interface';\nimport type { IRegion } from '../../../region/interface';\nimport type { IAxisLocationCfg, ICartesianAxisCommonSpec, IAxisHelper, ICartesianAxisCommonTheme } from './interface';\nimport { isArray, isValid, isValidNumber, merge, eachSeries, getFieldAlias } from '../../../util';\nimport type { IOrientType } from '../../../typings/space';\n// eslint-disable-next-line no-duplicate-imports\nimport { Direction } from '../../../typings/space';\nimport type { IBaseScale, ILinearScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport type { LayoutItem } from '../../../model/layout-item';\nimport { Factory } from '../../../core/factory';\nimport { autoAxisType, isXAxis, getOrient, isZAxis, isYAxis } from './util';\nimport { ChartEvent, DEFAULT_LAYOUT_RECT_LEVEL, LayoutZIndex } from '../../../constant';\nimport { LayoutLevel } from '../../../constant/index';\nimport pluginMap from '../../../plugin/components';\nimport type { IPoint, StringOrNumber } from '../../../typings';\nimport type { IComponentOption } from '../../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../../interface';\nimport { HOOK_EVENT } from '@visactor/vgrammar';\nimport type { LineAxisAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidCartesianAxis } from '../utils';\nimport type { IAxis, ITick } from '../interface';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../../../data/register';\nimport { scaleParser } from '../../../data/parser/scale';\nimport type { ICartesianTickDataOpt } from '../../../data/transforms/tick-data';\n// eslint-disable-next-line no-duplicate-imports\nimport { ticks } from '../../../data/transforms/tick-data';\nimport type { DataSet } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataView } from '@visactor/vdataset';\nimport { CompilableData } from '../../../compile/data';\nimport { AxisComponent } from '../base-axis';\n\nconst CartesianAxisPlugin = [pluginMap.AxisLabelOverlapPlugin];\n\nexport abstract class CartesianAxis extends AxisComponent implements IAxis {\n static type = ComponentTypeEnum.cartesianAxis;\n type = ComponentTypeEnum.cartesianAxis;\n name: string = ComponentTypeEnum.cartesianAxis;\n\n // 标记这个布局Item的方向(left->right, right->left, top->bottom, bottom->top)\n declare directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t';\n\n layoutType: LayoutItem['layoutType'] = 'region-relative';\n layoutZIndex: number = LayoutZIndex.Axis;\n layoutLevel: number = LayoutLevel.Axis;\n\n protected _dataSet: DataSet;\n\n layout3dBox?: { width: number; height: number; length: number };\n\n protected _orient: IOrientType = 'left';\n get orient() {\n return this._orient;\n }\n\n get layoutOrient() {\n return this._layoutOrient;\n }\n set layoutOrient(v: IOrientType) {\n this._orient = v;\n this._layoutOrient = v;\n }\n\n protected _scales: IBaseScale[] = [];\n getScales() {\n return this._scales;\n }\n\n protected declare _theme: ICartesianAxisCommonTheme;\n\n protected _statisticsDomain: {\n domain: any[];\n index: { [key in StringOrNumber]: number };\n } = { domain: [], index: {} };\n getStatisticsDomain() {\n return this._statisticsDomain;\n }\n\n protected _tick: ITick | undefined = undefined;\n\n private _axisStyle: Partial<LineAxisAttributes>;\n private _latestBounds: IBounds;\n\n constructor(spec: ICartesianAxisCommonSpec, options: IComponentOption) {\n super(spec, {\n ...options\n });\n this._orient = getOrient(spec, ['z']);\n if (isZAxis(this._orient)) {\n this.layoutType = 'absolute';\n }\n isValid(spec.autoIndent) && (this._autoIndent = spec.autoIndent);\n this._layoutOrient = this._orient;\n this._dataSet = options.dataSet;\n }\n\n static createAxis(spec: any, options: IComponentOption, isHorizontal: boolean = false): IAxis {\n const axisType = spec.type ?? autoAxisType(spec.orient, isHorizontal);\n const componentName = `${CartesianAxis.type}-${axisType}`;\n const C = Factory.getComponentInKey(componentName);\n if (C) {\n // 这里处理下 direction === 'horizontal' 下的 Y 轴\n // 因为 Y 轴绘制的时候默认是从下至上绘制的,但是在 direction === 'horizontal' 场景下,图表应该是按照从上至下阅读的\n // 所以这里在这种场景下坐标轴会默认 inverse 已达到效果\n let inverse = spec.inverse;\n if (isHorizontal && !isXAxis(spec.orient)) {\n inverse = isValid(spec.inverse) ? !spec.inverse : true;\n }\n\n return new C(\n {\n ...spec,\n inverse\n },\n options\n ) as IAxis;\n }\n throw `Component ${componentName} not found`;\n }\n\n static createComponent(spec: any, options: IComponentOption) {\n if (this.type !== CartesianAxis.type) {\n return null;\n }\n const regions = options.getRegionsInIndex();\n if (regions.find(r => r.coordinate !== 'cartesian')) {\n return null;\n }\n let axesSpec = spec[CartesianAxis.specKey] || options.defaultSpec;\n if (!axesSpec) {\n return null;\n }\n const isHorizontal = spec.direction === Direction.horizontal;\n if (!isArray(axesSpec)) {\n // 如果非法,或者只有一个z轴就不创建\n if (!isValidCartesianAxis(axesSpec)) {\n return null;\n }\n return CartesianAxis.createAxis(axesSpec, options, isHorizontal);\n }\n // 处理spec\n const zAxis = axesSpec.filter(s => s.orient === 'z')[0];\n let valid = true;\n if (zAxis) {\n const xAxis = axesSpec.filter(s => s.orient === 'bottom')[0];\n const yAxis = axesSpec.filter(s => isYAxis(s.orient))[0];\n // 必须有x和y,且x必须是bottom\n valid = axesSpec.length === 3 && xAxis && yAxis;\n }\n if (!valid) {\n axesSpec = axesSpec.filter(s => s.orient !== 'z');\n }\n const axes: IAxis[] = [];\n axesSpec.forEach((s: any, i: any) => {\n if (!isValidCartesianAxis(s)) {\n return;\n }\n axes.push(\n CartesianAxis.createAxis(\n s,\n {\n ...options,\n specIndex: i,\n specKey: CartesianAxis.specKey\n },\n isHorizontal\n ) as IAxis\n );\n });\n return axes;\n }\n\n setLayout3dBox(box3d: { width: number; height: number; length: number }) {\n this.layout3dBox = box3d;\n }\n\n effect: IEffect = {\n scaleUpdate: () => {\n this.computeData();\n eachSeries(\n this._regions,\n s => {\n if (isXAxis(this.orient)) {\n (s as ICartesianSeries).setXAxisHelper(this.axisHelper());\n } else if (isYAxis(this.orient)) {\n (s as ICartesianSeries).setYAxisHelper(this.axisHelper());\n } else if (isZAxis(this.orient)) {\n (s as ICartesianSeries).setZAxisHelper(this.axisHelper());\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n };\n\n protected abstract computeDomain(data: { min: number; max: number; values: any[] }[]): StringOrNumber[];\n abstract dataToPosition(values: any[], cfg?: IAxisLocationCfg): number;\n abstract valueToPosition(value: any): number;\n\n protected updateScaleRange() {\n let isScaleChange = false;\n const { width, height } = this.getLayoutRect();\n const inverse = this._spec.inverse;\n let newRange: number[] = [];\n if (isXAxis(this.orient)) {\n if (isValidNumber(width)) {\n newRange = inverse ? [width, 0] : [0, width];\n }\n } else if (isZAxis(this.orient)) {\n if (isValidNumber(width)) {\n // TODO 这里需要设置布局\n newRange = inverse ? [width, 0] : [0, width];\n this._scale.range(newRange);\n }\n } else {\n if (isValidNumber(height)) {\n newRange = inverse ? [0, height] : [height, 0];\n }\n }\n\n const [start, end] = this._scale.range();\n if (newRange[0] !== start || newRange[1] !== end) {\n isScaleChange = true;\n this._scale.range(newRange);\n }\n\n return isScaleChange;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this.pluginService?.load(CartesianAxisPlugin.map(P => new P()));\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n const axisStyle: any = this._getAxisAttributes();\n axisStyle.label.formatMethod = this.getLabelFormatMethod();\n axisStyle.verticalFactor = this.orient === 'top' || this.orient === 'right' ? -1 : 1;\n this._axisStyle = axisStyle;\n\n this._tick = this._spec.tick;\n }\n\n protected getSeriesStatisticsField(s: ICartesianSeries) {\n let f: string[];\n if (isXAxis(this.orient)) {\n f = s.fieldX;\n } else if (isZAxis(this.orient)) {\n f = s.fieldZ;\n } else {\n f = s.fieldY;\n }\n if (isContinuous(this._scale.type)) {\n return f;\n }\n return [f[0]];\n }\n\n protected _initData() {\n registerDataSetInstanceParser(this._option.dataSet, 'scale', scaleParser);\n registerDataSetInstanceTransform(this._option.dataSet, 'ticks', ticks);\n\n const label = this._spec.label || {};\n const tick = this._tick || {};\n const tickData = new DataView(this._option.dataSet)\n .parse(this._scale, {\n type: 'scale'\n })\n .transform(\n {\n type: 'ticks',\n options: {\n tickCount: tick.tickCount,\n forceTickCount: tick.forceTickCount,\n tickStep: tick.tickStep,\n\n axisOrientType: this._orient,\n coordinateType: 'cartesian',\n\n labelStyle: label.style,\n labelFormatter: label.formatMethod,\n labelGap: label.minGap,\n\n labelLastVisible: label.lastVisible,\n labelFlush: label.flush\n } as ICartesianTickDataOpt\n },\n false\n );\n tickData.target.addListener('change', this._forceLayout.bind(this));\n\n this._tickData = new CompilableData(this._option, tickData);\n }\n\n protected axisHelper(): IAxisHelper {\n const getScale = (depth: number = 0) => {\n return this._scales[depth];\n };\n return {\n dataToPosition: this.dataToPosition.bind(this),\n getScale,\n // TODO 轴可以设置domain\n getStatisticsDomain: () => this.getStatisticsDomain(),\n getAxisType: () => this.type,\n getAxisId: () => this.id\n };\n }\n\n onLayoutStart(ctx: any): void {\n const product = this.getMarks()[0]?.getProduct();\n if (product) {\n product.addEventListener(HOOK_EVENT.AFTER_ELEMENT_ENCODE, () => {\n if (this._isLayout === false) {\n // 布局结束之后再进行插件的调用\n // 插件在布局后\n if (isXAxis(this.orient)) {\n this.callPlugin(plugin => {\n this.pluginService &&\n plugin.onDidLayoutHorizontal &&\n plugin.onDidLayoutHorizontal(this.pluginService, this);\n });\n } else {\n this.callPlugin(plugin => {\n this.pluginService && plugin.onDidLayoutVertical && plugin.onDidLayoutVertical(this.pluginService, this);\n });\n }\n\n // 代理组件上的事件,目前坐标轴组件比较特殊,包含了网格线,但是事件这块只提供不包含网格线部分的响应\n this._delegateAxisContainerEvent(product.getGroupGraphicItem());\n }\n });\n }\n }\n\n /** LifeCycle API**/\n onLayoutEnd(ctx: any): void {\n const isRangeChange = this.updateScaleRange();\n if (isRangeChange) {\n this.event.emit(ChartEvent.scaleUpdate, { model: this });\n // 这里会执行 computeData ,会执行系列scale更新\n } else {\n this.updateSeriesScale();\n }\n super.onLayoutEnd(ctx);\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n update(ctx: IComponentOption) {\n // TODO\n }\n\n resize(ctx: IComponentOption) {\n // TODO\n }\n\n protected collectScale() {\n const scales: IBaseScale[] = [];\n eachSeries(\n this._regions,\n s => {\n scales.push(\n this.orient === 'left' || this.orient === 'right'\n ? (s as ICartesianSeries).scaleY\n : (s as ICartesianSeries).scaleX\n );\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return scales;\n }\n\n protected collectData(depth?: number) {\n const data: { min: number; max: number; values: any[] }[] = [];\n eachSeries(\n this._regions,\n s => {\n let field: string | string[];\n if (depth > 0) {\n field = s.getGroups()?.fields?.[depth];\n } else {\n if (isXAxis(this.orient)) {\n field = (s as ICartesianSeries).fieldX;\n } else if (isZAxis(this.orient)) {\n field = (s as ICartesianSeries).fieldZ;\n } else {\n field = (s as ICartesianSeries).fieldY;\n }\n }\n field = (isArray(field) ? (isContinuous(this._scale.type) ? field : [field[0]]) : [field]) as string[];\n if (!depth) {\n this._dataFieldText = s.getFieldAlias(field[0]);\n }\n const seriesData = s.getViewDataStatistics?.();\n if (field) {\n field.forEach(f => {\n if (seriesData?.latestData?.[f]) {\n data.push(seriesData.latestData[f]);\n }\n });\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return data;\n }\n\n protected updateSeriesScale() {\n eachSeries(\n this._regions,\n s => {\n if (isXAxis(this.orient)) {\n (s as ICartesianSeries).setScaleX(this._scale);\n (s as ICartesianSeries).setXAxisHelper(this.axisHelper());\n } else if (isYAxis(this.orient)) {\n (s as ICartesianSeries).setScaleY(this._scale);\n (s as ICartesianSeries).setYAxisHelper(this.axisHelper());\n } else if (isZAxis(this.orient)) {\n (s as ICartesianSeries).setScaleZ(this._scale);\n (s as ICartesianSeries).setZAxisHelper(this.axisHelper());\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n\n setLayoutStartPosition(pos: Partial<IPoint>): void {\n let { x, y } = pos;\n\n if (isValidNumber(x)) {\n x += Number(this._orient === 'left') * this.getLayoutRect().width;\n }\n if (isValidNumber(y)) {\n y += Number(this._orient === 'top') * this.getLayoutRect().height;\n }\n super.setLayoutStartPosition({ x, y });\n }\n\n computeBoundsInRect(rect: ILayoutRect) {\n const result = super.computeBoundsInRect(rect);\n if (!this._visible) {\n return result;\n }\n const bounds = this._latestBounds.clone().translate(-this.getLayoutStartPoint().x, -this.getLayoutStartPoint().y);\n switch (this._layoutOrient) {\n case 'left':\n if (this._layoutRectLevelMap.width === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.width = bounds.x1 < 0 ? -bounds.x1 : 0;\n }\n break;\n case 'right':\n if (this._layoutRectLevelMap.width === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.width = bounds.x2 > 0 ? bounds.x2 : 0;\n }\n break;\n case 'top':\n if (this._layoutRectLevelMap.height === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.height = bounds.y1 < 0 ? -bounds.y1 : 0;\n }\n break;\n case 'bottom':\n if (this._layoutRectLevelMap.height === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.height = bounds.y2 > 0 ? bounds.y2 : 0;\n }\n break;\n default:\n break;\n }\n result.width = Math.ceil(result.width);\n result.height = Math.ceil(result.height);\n return result;\n }\n /**\n * bounds 预计算\n * @param rect\n * @returns\n */\n boundsInRect(rect: ILayoutRect): IBoundsLike {\n let result: IBoundsLike = { x1: 0, y1: 0, x2: 0, y2: 0 };\n if (!this._visible) {\n return result;\n }\n\n this.setLayoutRect(rect);\n this.updateScaleRange();\n this.computeData();\n const isX = isXAxis(this.orient);\n const context = { skipLayout: false };\n\n if (isX) {\n // 钩子直接传 vchart 的 component 实例\n this.pluginService &&\n this.callPlugin(plugin => {\n plugin.onWillLayoutHorizontal && plugin.onWillLayoutHorizontal(this.pluginService, context, this);\n });\n } else {\n this.pluginService &&\n this.callPlugin(plugin => {\n plugin.onWillLayoutVertical && plugin.onWillLayoutVertical(this.pluginService, context, this);\n });\n }\n const product = this.getMarks()[0].getProduct();\n this._latestBounds = product.getBounds();\n if (!context.skipLayout) {\n const attrs = this._getUpdateAttribute(true);\n const axisComponent = product.getGroupGraphicItem();\n const updateBounds = axisComponent.getBoundsWithoutRender(\n merge({ ...this.getLayoutStartPoint() }, this._axisStyle, attrs)\n );\n if (isFinite(updateBounds.width())) {\n result = updateBounds;\n this._latestBounds = updateBounds;\n }\n }\n return result;\n }\n\n updateLayoutAttribute(): void {\n if (!this.visible) {\n return;\n }\n // 正式的更新布局属性\n const attrs = this._getUpdateAttribute(false);\n const product = this.getMarks()[0].getProduct(); // 获取语法元素\n const axisAttrs = merge({ ...this.getLayoutStartPoint() }, this._axisStyle, attrs);\n product.encode(axisAttrs);\n\n super.updateLayoutAttribute();\n }\n\n private _getTitleLimit(isX: boolean) {\n if (this._spec.title.visible && !this._spec.title.style?.limit) {\n const angle = this._spec.title.style?.angle || 0;\n if (isX) {\n const width = this.getLayoutRect().width;\n const cosValue = Math.abs(Math.cos(angle));\n // VRender 接收到的limit是考虑角度计算后的宽度\n // TODO:还需要考虑angle后,高度是否太高,综合计算一个limit,比如高度不能超过图表整体高度的1/4\n return cosValue < 1e-6 ? Infinity : width / cosValue;\n }\n const height = this.getLayoutRect().height;\n const sinValue = Math.abs(Math.sin(angle));\n\n // TODO:还需要考虑angle后,宽度是否太宽,综合计算一个limit,比如宽度度不能超过图表整体宽度的1/4\n return sinValue < 1e-6 ? Infinity : height / sinValue;\n }\n\n return null;\n }\n\n private _getUpdateAttribute(ignoreGrid: boolean) {\n // 获取更新的坐标轴属性\n let regionHeight = 0;\n let regionWidth = 0;\n\n if (!ignoreGrid) {\n const regions = this.getRegions();\n let { x: minX, y: minY } = regions[0].getLayoutStartPoint();\n let maxX = minX + regions[0].getLayoutRect().width;\n let maxY = minY + regions[0].getLayoutRect().height;\n\n for (let index = 1; index < regions.length; index++) {\n const region = regions[index];\n const { x, y } = region.getLayoutStartPoint();\n const { width, height } = region.getLayoutRect();\n\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, width + x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, height + y);\n }\n regionHeight = Math.abs(maxY - minY);\n regionWidth = Math.abs(maxX - minX);\n }\n\n const { width, height } = this.getLayoutRect();\n const isX = isXAxis(this._orient);\n const isY = isYAxis(this._orient);\n const isZ = isZAxis(this._orient);\n let end = { x: 0, y: 0 };\n let gridLength = 0;\n let axisLength = 0;\n const depth = this.layout3dBox ? this.layout3dBox.length : 0;\n if (isX) {\n end = { x: width, y: 0 };\n gridLength = regionHeight;\n axisLength = width;\n } else if (isY) {\n end = { x: 0, y: height };\n gridLength = regionWidth;\n axisLength = height;\n }\n if (isZ) {\n const directionStr = this.directionStr ?? 'r2l';\n const depthZ = this.layout3dBox ? this.layout3dBox.width : 0;\n let anchor3d = this._spec.depth ? [0, 0] : undefined;\n let alpha = this._spec.depth ? -Math.PI / 2 : 0;\n let z = 0;\n if (directionStr === 'l2r') {\n z = this.layout3dBox.length;\n anchor3d = this._spec.depth ? [0, 0, 0] : undefined;\n alpha = this._spec.depth ? Math.PI / 2 : 0;\n }\n return {\n start: { x: 0, y: 0 },\n end: { x: depth, y: 0 },\n z: z,\n alpha,\n anchor3d,\n grid: {\n type: 'line',\n depth: depthZ,\n length: regionHeight,\n visible: this._spec.grid.visible && !ignoreGrid\n },\n title: {\n text: this._spec.title.text || this._dataFieldText,\n maxWidth: this._getTitleLimit(isX)\n },\n items: this.getLabelItems(width)\n } as LineAxisAttributes;\n }\n const attrs: LineAxisAttributes = {\n start: { x: 0, y: 0 },\n end,\n grid: {\n type: 'line',\n depth,\n length: gridLength,\n visible: this._spec.grid.visible && !ignoreGrid\n },\n title: {\n text: this._spec.title.text || this._dataFieldText,\n maxWidth: this._getTitleLimit(isX)\n },\n items: this.getLabelItems(axisLength)\n };\n\n return attrs;\n }\n\n protected initEvent() {\n super.initEvent();\n\n if (this.visible) {\n // 布局结束之后处理 0 基线问题\n this.event.on(ChartEvent.layoutEnd, this._fixAxisOnZero);\n }\n }\n\n private _fixAxisOnZero = () => {\n // 在布局结束之后调整坐标轴零基线\n const { onZero, visible } = this._spec.domainLine;\n if (this.visible && onZero && visible !== false) {\n const { onZeroAxisId, onZeroAxisIndex } = this._spec.domainLine;\n const axesComponents = this._option.getComponentsByKey('axes') as IAxis[];\n const isX = isXAxis(this.orient);\n\n // 判断坐标轴是否可用\n const isValidAxis = (item: any) => {\n return (\n (isX ? !isXAxis(item.orient) : isXAxis(item.orient)) &&\n isContinuous(item.getScale().type) &&\n (item.getScale() as ILinearScale).ticks().includes(0)\n );\n };\n const relativeAxes = axesComponents.filter(item => isValidAxis(item));\n if (relativeAxes.length) {\n let bindAxis;\n if (isValid(onZeroAxisId)) {\n bindAxis = relativeAxes.find(axis => axis.id === onZeroAxisId);\n } else if (isValid(onZeroAxisIndex)) {\n const indexAxis = axesComponents[onZeroAxisIndex];\n if (isValidAxis(indexAxis)) {\n bindAxis = indexAxis;\n }\n } else {\n // 默认绑定第一条的相对坐标轴\n bindAxis = relativeAxes[0];\n }\n if (bindAxis) {\n const axisMark = this.getMarks()[0].getProduct();\n // 找到了绑定的 axis,获取基线的位置\n const position = bindAxis.valueToPosition(0);\n // 获取偏移量\n if (isX) {\n axisMark.encode({\n line: {\n ...this._axisStyle.line,\n dy: this._orient === 'bottom' ? -(bindAxis.getScale().range()[0] - position) : position\n }\n });\n } else {\n axisMark.encode({\n line: {\n ...this._axisStyle.line,\n dx: this._orient === 'left' ? position : -(bindAxis.getScale().range()[1] - position)\n }\n });\n }\n }\n }\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/axis/cartesian/axis.ts"],"names":[],"mappings":"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","file":"axis.js","sourcesContent":["/**\n * @todo vgrammar axis 支持 mode: '3d' 配置传入\n */\nimport type { IBounds, IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IEffect, IModelInitOption, ILayoutRect } from '../../../model/interface';\nimport type { ICartesianSeries } from '../../../series/interface';\nimport type { IRegion } from '../../../region/interface';\nimport type { IAxisLocationCfg, ICartesianAxisCommonSpec, IAxisHelper, ICartesianAxisCommonTheme } from './interface';\nimport { isArray, isValid, isValidNumber, merge, eachSeries, getFieldAlias } from '../../../util';\nimport type { IOrientType } from '../../../typings/space';\n// eslint-disable-next-line no-duplicate-imports\nimport { Direction } from '../../../typings/space';\nimport type { IBaseScale, ILinearScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { isContinuous } from '@visactor/vscale';\nimport type { LayoutItem } from '../../../model/layout-item';\nimport { Factory } from '../../../core/factory';\nimport { autoAxisType, isXAxis, getOrient, isZAxis, isYAxis } from './util';\nimport { ChartEvent, DEFAULT_LAYOUT_RECT_LEVEL, LayoutZIndex } from '../../../constant';\nimport { LayoutLevel } from '../../../constant/index';\nimport pluginMap from '../../../plugin/components';\nimport type { IPoint, StringOrNumber } from '../../../typings';\nimport type { IComponentOption } from '../../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../../interface';\nimport { HOOK_EVENT } from '@visactor/vgrammar';\nimport type { LineAxisAttributes } from '@visactor/vrender-components';\n// eslint-disable-next-line no-duplicate-imports\nimport { isValidCartesianAxis } from '../utils';\nimport type { IAxis, ITick } from '../interface';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../../../data/register';\nimport { scaleParser } from '../../../data/parser/scale';\nimport type { ICartesianTickDataOpt } from '../../../data/transforms/tick-data';\n// eslint-disable-next-line no-duplicate-imports\nimport { ticks } from '../../../data/transforms/tick-data';\nimport type { DataSet } from '@visactor/vdataset';\n// eslint-disable-next-line no-duplicate-imports\nimport { DataView } from '@visactor/vdataset';\nimport { CompilableData } from '../../../compile/data';\nimport { AxisComponent } from '../base-axis';\n\nconst CartesianAxisPlugin = [pluginMap.AxisLabelOverlapPlugin];\n\nexport abstract class CartesianAxis extends AxisComponent implements IAxis {\n static type = ComponentTypeEnum.cartesianAxis;\n type = ComponentTypeEnum.cartesianAxis;\n name: string = ComponentTypeEnum.cartesianAxis;\n\n // 标记这个布局Item的方向(left->right, right->left, top->bottom, bottom->top)\n declare directionStr?: 'l2r' | 'r2l' | 't2b' | 'b2t';\n\n layoutType: LayoutItem['layoutType'] = 'region-relative';\n layoutZIndex: number = LayoutZIndex.Axis;\n layoutLevel: number = LayoutLevel.Axis;\n\n protected _dataSet: DataSet;\n\n layout3dBox?: { width: number; height: number; length: number };\n\n protected _orient: IOrientType = 'left';\n get orient() {\n return this._orient;\n }\n\n get layoutOrient() {\n return this._layoutOrient;\n }\n set layoutOrient(v: IOrientType) {\n this._orient = v;\n this._layoutOrient = v;\n }\n\n protected _scales: IBaseScale[] = [];\n getScales() {\n return this._scales;\n }\n\n protected declare _theme: ICartesianAxisCommonTheme;\n\n protected _statisticsDomain: {\n domain: any[];\n index: { [key in StringOrNumber]: number };\n } = { domain: [], index: {} };\n getStatisticsDomain() {\n return this._statisticsDomain;\n }\n\n protected _tick: ITick | undefined = undefined;\n\n private _axisStyle: Partial<LineAxisAttributes>;\n private _latestBounds: IBounds;\n\n constructor(spec: ICartesianAxisCommonSpec, options: IComponentOption) {\n super(spec, {\n ...options\n });\n this._orient = getOrient(spec, ['z']);\n if (isZAxis(this._orient)) {\n this.layoutType = 'absolute';\n }\n isValid(spec.autoIndent) && (this._autoIndent = spec.autoIndent);\n this._layoutOrient = this._orient;\n this._dataSet = options.dataSet;\n }\n\n static createAxis(spec: any, options: IComponentOption, isHorizontal: boolean = false): IAxis {\n const axisType = spec.type ?? autoAxisType(spec.orient, isHorizontal);\n const componentName = `${CartesianAxis.type}-${axisType}`;\n const C = Factory.getComponentInKey(componentName);\n if (C) {\n // 这里处理下 direction === 'horizontal' 下的 Y 轴\n // 因为 Y 轴绘制的时候默认是从下至上绘制的,但是在 direction === 'horizontal' 场景下,图表应该是按照从上至下阅读的\n // 所以这里在这种场景下坐标轴会默认 inverse 已达到效果\n let inverse = spec.inverse;\n if (isHorizontal && !isXAxis(spec.orient)) {\n inverse = isValid(spec.inverse) ? !spec.inverse : true;\n }\n\n return new C(\n {\n ...spec,\n inverse\n },\n options\n ) as IAxis;\n }\n throw `Component ${componentName} not found`;\n }\n\n static createComponent(spec: any, options: IComponentOption) {\n if (this.type !== CartesianAxis.type) {\n return null;\n }\n const regions = options.getRegionsInIndex();\n if (regions.find(r => r.coordinate !== 'cartesian')) {\n return null;\n }\n let axesSpec = spec[CartesianAxis.specKey] || options.defaultSpec;\n if (!axesSpec) {\n return null;\n }\n const isHorizontal = spec.direction === Direction.horizontal;\n if (!isArray(axesSpec)) {\n // 如果非法,或者只有一个z轴就不创建\n if (!isValidCartesianAxis(axesSpec)) {\n return null;\n }\n return CartesianAxis.createAxis(axesSpec, options, isHorizontal);\n }\n // 处理spec\n const zAxis = axesSpec.filter(s => s.orient === 'z')[0];\n let valid = true;\n if (zAxis) {\n const xAxis = axesSpec.filter(s => s.orient === 'bottom')[0];\n const yAxis = axesSpec.filter(s => isYAxis(s.orient))[0];\n // 必须有x和y,且x必须是bottom\n valid = axesSpec.length === 3 && xAxis && yAxis;\n }\n if (!valid) {\n axesSpec = axesSpec.filter(s => s.orient !== 'z');\n }\n const axes: IAxis[] = [];\n axesSpec.forEach((s: any, i: any) => {\n if (!isValidCartesianAxis(s)) {\n return;\n }\n axes.push(\n CartesianAxis.createAxis(\n s,\n {\n ...options,\n specIndex: i,\n specKey: CartesianAxis.specKey\n },\n isHorizontal\n ) as IAxis\n );\n });\n return axes;\n }\n\n setLayout3dBox(box3d: { width: number; height: number; length: number }) {\n this.layout3dBox = box3d;\n }\n\n effect: IEffect = {\n scaleUpdate: () => {\n this.computeData();\n eachSeries(\n this._regions,\n s => {\n if (isXAxis(this.orient)) {\n (s as ICartesianSeries).setXAxisHelper(this.axisHelper());\n } else if (isYAxis(this.orient)) {\n (s as ICartesianSeries).setYAxisHelper(this.axisHelper());\n } else if (isZAxis(this.orient)) {\n (s as ICartesianSeries).setZAxisHelper(this.axisHelper());\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n };\n\n protected abstract computeDomain(data: { min: number; max: number; values: any[] }[]): StringOrNumber[];\n abstract dataToPosition(values: any[], cfg?: IAxisLocationCfg): number;\n abstract valueToPosition(value: any): number;\n\n protected updateScaleRange() {\n let isScaleChange = false;\n const { width, height } = this.getLayoutRect();\n const inverse = this._spec.inverse;\n let newRange: number[] = [];\n if (isXAxis(this.orient)) {\n if (isValidNumber(width)) {\n newRange = inverse ? [width, 0] : [0, width];\n }\n } else if (isZAxis(this.orient)) {\n if (isValidNumber(width)) {\n // TODO 这里需要设置布局\n newRange = inverse ? [width, 0] : [0, width];\n this._scale.range(newRange);\n }\n } else {\n if (isValidNumber(height)) {\n newRange = inverse ? [0, height] : [height, 0];\n }\n }\n\n const [start, end] = this._scale.range();\n if (newRange[0] !== start || newRange[1] !== end) {\n isScaleChange = true;\n this._scale.range(newRange);\n }\n\n return isScaleChange;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this.pluginService?.load(CartesianAxisPlugin.map(P => new P()));\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n const axisStyle: any = this._getAxisAttributes();\n axisStyle.label.formatMethod = this.getLabelFormatMethod();\n axisStyle.verticalFactor = this.orient === 'top' || this.orient === 'right' ? -1 : 1;\n this._axisStyle = axisStyle;\n\n this._tick = this._spec.tick;\n }\n\n protected getSeriesStatisticsField(s: ICartesianSeries) {\n let f: string[];\n if (isXAxis(this.orient)) {\n f = s.fieldX;\n } else if (isZAxis(this.orient)) {\n f = s.fieldZ;\n } else {\n f = s.fieldY;\n }\n if (isContinuous(this._scale.type)) {\n return f;\n }\n return [f[0]];\n }\n\n protected _initData() {\n registerDataSetInstanceParser(this._option.dataSet, 'scale', scaleParser);\n registerDataSetInstanceTransform(this._option.dataSet, 'ticks', ticks);\n\n const label = this._spec.label || {};\n const tick = this._tick || {};\n const tickData = new DataView(this._option.dataSet)\n .parse(this._scale, {\n type: 'scale'\n })\n .transform(\n {\n type: 'ticks',\n options: {\n tickCount: tick.tickCount,\n forceTickCount: tick.forceTickCount,\n tickStep: tick.tickStep,\n\n axisOrientType: this._orient,\n coordinateType: 'cartesian',\n\n labelStyle: label.style,\n labelFormatter: label.formatMethod,\n labelGap: label.minGap,\n\n labelLastVisible: label.lastVisible,\n labelFlush: label.flush\n } as ICartesianTickDataOpt\n },\n false\n );\n tickData.target.addListener('change', this._forceLayout.bind(this));\n\n this._tickData = new CompilableData(this._option, tickData);\n }\n\n protected axisHelper(): IAxisHelper {\n const getScale = (depth: number = 0) => {\n return this._scales[depth];\n };\n return {\n dataToPosition: this.dataToPosition.bind(this),\n getScale,\n // TODO 轴可以设置domain\n getStatisticsDomain: () => this.getStatisticsDomain(),\n getAxisType: () => this.type,\n getAxisId: () => this.id\n };\n }\n\n onLayoutStart(ctx: any): void {\n const product = this.getMarks()[0]?.getProduct();\n if (product) {\n product.addEventListener(HOOK_EVENT.AFTER_ELEMENT_ENCODE, () => {\n if (this._isLayout === false) {\n // 布局结束之后再进行插件的调用\n // 插件在布局后\n if (isXAxis(this.orient)) {\n this.callPlugin(plugin => {\n this.pluginService &&\n plugin.onDidLayoutHorizontal &&\n plugin.onDidLayoutHorizontal(this.pluginService, this);\n });\n } else {\n this.callPlugin(plugin => {\n this.pluginService && plugin.onDidLayoutVertical && plugin.onDidLayoutVertical(this.pluginService, this);\n });\n }\n\n // 代理组件上的事件,目前坐标轴组件比较特殊,包含了网格线,但是事件这块只提供不包含网格线部分的响应\n this._delegateAxisContainerEvent(product.getGroupGraphicItem());\n }\n });\n }\n }\n\n /** LifeCycle API**/\n onLayoutEnd(ctx: any): void {\n const isRangeChange = this.updateScaleRange();\n if (isRangeChange) {\n this.event.emit(ChartEvent.scaleUpdate, { model: this });\n // 这里会执行 computeData ,会执行系列scale更新\n } else {\n this.updateSeriesScale();\n }\n super.onLayoutEnd(ctx);\n }\n\n onRender(ctx: any): void {\n // do nothing\n }\n\n changeRegions(regions: IRegion[]): void {\n // do nothing\n }\n\n update(ctx: IComponentOption) {\n // TODO\n }\n\n resize(ctx: IComponentOption) {\n // TODO\n }\n\n protected collectScale() {\n const scales: IBaseScale[] = [];\n eachSeries(\n this._regions,\n s => {\n scales.push(\n this.orient === 'left' || this.orient === 'right'\n ? (s as ICartesianSeries).scaleY\n : (s as ICartesianSeries).scaleX\n );\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return scales;\n }\n\n protected collectData(depth?: number) {\n const data: { min: number; max: number; values: any[] }[] = [];\n eachSeries(\n this._regions,\n s => {\n let field: string | string[];\n if (depth > 0) {\n field = s.getGroups()?.fields?.[depth];\n } else {\n if (isXAxis(this.orient)) {\n field = (s as ICartesianSeries).fieldX;\n } else if (isZAxis(this.orient)) {\n field = (s as ICartesianSeries).fieldZ;\n } else {\n field = (s as ICartesianSeries).fieldY;\n }\n }\n field = (isArray(field) ? (isContinuous(this._scale.type) ? field : [field[0]]) : [field]) as string[];\n if (!depth) {\n this._dataFieldText = s.getFieldAlias(field[0]);\n }\n const seriesData = s.getViewDataStatistics?.();\n if (field) {\n field.forEach(f => {\n if (seriesData?.latestData?.[f]) {\n data.push(seriesData.latestData[f]);\n }\n });\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n return data;\n }\n\n protected updateSeriesScale() {\n eachSeries(\n this._regions,\n s => {\n if (isXAxis(this.orient)) {\n (s as ICartesianSeries).setScaleX(this._scale);\n (s as ICartesianSeries).setXAxisHelper(this.axisHelper());\n } else if (isYAxis(this.orient)) {\n (s as ICartesianSeries).setScaleY(this._scale);\n (s as ICartesianSeries).setYAxisHelper(this.axisHelper());\n } else if (isZAxis(this.orient)) {\n (s as ICartesianSeries).setScaleZ(this._scale);\n (s as ICartesianSeries).setZAxisHelper(this.axisHelper());\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n\n setLayoutStartPosition(pos: Partial<IPoint>): void {\n let { x, y } = pos;\n\n if (isValidNumber(x)) {\n x += Number(this._orient === 'left') * this.getLayoutRect().width;\n }\n if (isValidNumber(y)) {\n y += Number(this._orient === 'top') * this.getLayoutRect().height;\n }\n super.setLayoutStartPosition({ x, y });\n }\n\n computeBoundsInRect(rect: ILayoutRect) {\n const result = super.computeBoundsInRect(rect);\n if (!this._visible) {\n return result;\n }\n const bounds = this._latestBounds.clone().translate(-this.getLayoutStartPoint().x, -this.getLayoutStartPoint().y);\n switch (this._layoutOrient) {\n case 'left':\n if (this._layoutRectLevelMap.width === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.width = bounds.x1 < 0 ? -bounds.x1 : 0;\n }\n break;\n case 'right':\n if (this._layoutRectLevelMap.width === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.width = bounds.x2 > 0 ? bounds.x2 : 0;\n }\n break;\n case 'top':\n if (this._layoutRectLevelMap.height === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.height = bounds.y1 < 0 ? -bounds.y1 : 0;\n }\n break;\n case 'bottom':\n if (this._layoutRectLevelMap.height === DEFAULT_LAYOUT_RECT_LEVEL) {\n result.height = bounds.y2 > 0 ? bounds.y2 : 0;\n }\n break;\n default:\n break;\n }\n result.width = Math.ceil(result.width);\n result.height = Math.ceil(result.height);\n return result;\n }\n /**\n * bounds 预计算\n * @param rect\n * @returns\n */\n boundsInRect(rect: ILayoutRect): IBoundsLike {\n let result: IBoundsLike = { x1: 0, y1: 0, x2: 0, y2: 0 };\n if (!this._visible) {\n return result;\n }\n\n this.setLayoutRect(rect);\n this.updateScaleRange();\n this.computeData();\n const isX = isXAxis(this.orient);\n const context = { skipLayout: false };\n\n if (isX) {\n // 钩子直接传 vchart 的 component 实例\n this.pluginService &&\n this.callPlugin(plugin => {\n plugin.onWillLayoutHorizontal && plugin.onWillLayoutHorizontal(this.pluginService, context, this);\n });\n } else {\n this.pluginService &&\n this.callPlugin(plugin => {\n plugin.onWillLayoutVertical && plugin.onWillLayoutVertical(this.pluginService, context, this);\n });\n }\n const product = this.getMarks()[0].getProduct();\n this._latestBounds = product.getBounds();\n if (!context.skipLayout) {\n const attrs = this._getUpdateAttribute(true);\n const axisComponent = product.getGroupGraphicItem();\n const updateBounds = axisComponent.getBoundsWithoutRender(\n merge({ ...this.getLayoutStartPoint() }, this._axisStyle, attrs)\n );\n if (isFinite(updateBounds.width())) {\n result = updateBounds;\n this._latestBounds = updateBounds;\n }\n }\n return result;\n }\n\n updateLayoutAttribute(): void {\n if (!this.visible) {\n return;\n }\n // 正式的更新布局属性\n const attrs = this._getUpdateAttribute(false);\n const product = this.getMarks()[0].getProduct(); // 获取语法元素\n const axisAttrs = merge({ ...this.getLayoutStartPoint() }, this._axisStyle, attrs);\n product.encode(axisAttrs);\n\n super.updateLayoutAttribute();\n }\n\n private _getTitleLimit(isX: boolean) {\n if (this._spec.title.visible && !this._spec.title.style?.limit) {\n const angle = this._spec.title.style?.angle || 0;\n if (isX) {\n const width = this.getLayoutRect().width;\n const cosValue = Math.abs(Math.cos(angle));\n // VRender 接收到的limit是考虑角度计算后的宽度\n // TODO:还需要考虑angle后,高度是否太高,综合计算一个limit,比如高度不能超过图表整体高度的1/4\n return cosValue < 1e-6 ? Infinity : width / cosValue;\n }\n const height = this.getLayoutRect().height;\n const sinValue = Math.abs(Math.sin(angle));\n\n // TODO:还需要考虑angle后,宽度是否太宽,综合计算一个limit,比如宽度度不能超过图表整体宽度的1/4\n return sinValue < 1e-6 ? Infinity : height / sinValue;\n }\n\n return null;\n }\n\n private _getUpdateAttribute(ignoreGrid: boolean) {\n // 获取更新的坐标轴属性\n let regionHeight = 0;\n let regionWidth = 0;\n\n if (!ignoreGrid) {\n const regions = this.getRegions();\n let { x: minX, y: minY } = regions[0].getLayoutStartPoint();\n let maxX = minX + regions[0].getLayoutRect().width;\n let maxY = minY + regions[0].getLayoutRect().height;\n\n for (let index = 1; index < regions.length; index++) {\n const region = regions[index];\n const { x, y } = region.getLayoutStartPoint();\n const { width, height } = region.getLayoutRect();\n\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, width + x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, height + y);\n }\n regionHeight = Math.abs(maxY - minY);\n regionWidth = Math.abs(maxX - minX);\n }\n\n const { width, height } = this.getLayoutRect();\n const isX = isXAxis(this._orient);\n const isY = isYAxis(this._orient);\n const isZ = isZAxis(this._orient);\n let end = { x: 0, y: 0 };\n let gridLength = 0;\n let axisLength = 0;\n const depth = this.layout3dBox ? this.layout3dBox.length : 0;\n if (isX) {\n end = { x: width, y: 0 };\n gridLength = regionHeight;\n axisLength = width;\n } else if (isY) {\n end = { x: 0, y: height };\n gridLength = regionWidth;\n axisLength = height;\n }\n if (isZ) {\n const directionStr = this.directionStr ?? 'r2l';\n const depthZ = this.layout3dBox ? this.layout3dBox.width : 0;\n let anchor3d = [0, 0];\n let alpha = -Math.PI / 2;\n let z = 0;\n if (directionStr === 'l2r') {\n z = this.layout3dBox.length;\n anchor3d = [0, 0, 0];\n alpha = Math.PI / 2;\n }\n return {\n start: { x: 0, y: 0 },\n end: { x: depth, y: 0 },\n z: z,\n alpha,\n anchor3d,\n grid: {\n type: 'line',\n depth: depthZ,\n length: regionHeight,\n visible: this._spec.grid.visible && !ignoreGrid\n },\n title: {\n text: this._spec.title.text || this._dataFieldText,\n maxWidth: this._getTitleLimit(isX)\n },\n items: this.getLabelItems(width)\n } as LineAxisAttributes;\n }\n const attrs: LineAxisAttributes = {\n start: { x: 0, y: 0 },\n end,\n grid: {\n type: 'line',\n depth,\n length: gridLength,\n visible: this._spec.grid.visible && !ignoreGrid\n },\n title: {\n text: this._spec.title.text || this._dataFieldText,\n maxWidth: this._getTitleLimit(isX)\n },\n items: this.getLabelItems(axisLength)\n };\n\n return attrs;\n }\n\n protected initEvent() {\n super.initEvent();\n\n if (this.visible) {\n // 布局结束之后处理 0 基线问题\n this.event.on(ChartEvent.layoutEnd, this._fixAxisOnZero);\n }\n }\n\n private _fixAxisOnZero = () => {\n // 在布局结束之后调整坐标轴零基线\n const { onZero, visible } = this._spec.domainLine;\n if (this.visible && onZero && visible !== false) {\n const { onZeroAxisId, onZeroAxisIndex } = this._spec.domainLine;\n const axesComponents = this._option.getComponentsByKey('axes') as IAxis[];\n const isX = isXAxis(this.orient);\n\n // 判断坐标轴是否可用\n const isValidAxis = (item: any) => {\n return (\n (isX ? !isXAxis(item.orient) : isXAxis(item.orient)) &&\n isContinuous(item.getScale().type) &&\n (item.getScale() as ILinearScale).ticks().includes(0)\n );\n };\n const relativeAxes = axesComponents.filter(item => isValidAxis(item));\n if (relativeAxes.length) {\n let bindAxis;\n if (isValid(onZeroAxisId)) {\n bindAxis = relativeAxes.find(axis => axis.id === onZeroAxisId);\n } else if (isValid(onZeroAxisIndex)) {\n const indexAxis = axesComponents[onZeroAxisIndex];\n if (isValidAxis(indexAxis)) {\n bindAxis = indexAxis;\n }\n } else {\n // 默认绑定第一条的相对坐标轴\n bindAxis = relativeAxes[0];\n }\n if (bindAxis) {\n const axisMark = this.getMarks()[0].getProduct();\n // 找到了绑定的 axis,获取基线的位置\n const position = bindAxis.valueToPosition(0);\n // 获取偏移量\n if (isX) {\n axisMark.encode({\n line: {\n ...this._axisStyle.line,\n dy: this._orient === 'bottom' ? -(bindAxis.getScale().range()[0] - position) : position\n }\n });\n } else {\n axisMark.encode({\n line: {\n ...this._axisStyle.line,\n dx: this._orient === 'left' ? position : -(bindAxis.getScale().range()[1] - position)\n }\n });\n }\n }\n }\n }\n };\n}\n"]}
|