@visactor/vchart 1.10.5 → 1.10.6-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.
Files changed (47) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +297 -264
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/animation/utils.d.ts +2 -2
  6. package/cjs/component/label/total-label.js +8 -1
  7. package/cjs/component/label/total-label.js.map +1 -1
  8. package/cjs/component/label/util.d.ts +4 -1
  9. package/cjs/component/label/util.js +16 -8
  10. package/cjs/component/label/util.js.map +1 -1
  11. package/cjs/component/legend/util.d.ts +2 -2
  12. package/cjs/core/factory.d.ts +1 -1
  13. package/cjs/core/index.d.ts +1 -1
  14. package/cjs/core/index.js +1 -1
  15. package/cjs/core/index.js.map +1 -1
  16. package/cjs/data/transforms/waterfall.js +4 -2
  17. package/cjs/data/transforms/waterfall.js.map +1 -1
  18. package/cjs/plugin/components/tooltip-handler/base.d.ts +1 -1
  19. package/cjs/series/interface/series.d.ts +3 -0
  20. package/cjs/series/interface/series.js.map +1 -1
  21. package/cjs/series/waterfall/interface.d.ts +6 -1
  22. package/cjs/series/waterfall/interface.js.map +1 -1
  23. package/cjs/series/waterfall/waterfall.d.ts +9 -0
  24. package/cjs/series/waterfall/waterfall.js +21 -3
  25. package/cjs/series/waterfall/waterfall.js.map +1 -1
  26. package/esm/animation/utils.d.ts +2 -2
  27. package/esm/component/label/total-label.js +8 -1
  28. package/esm/component/label/total-label.js.map +1 -1
  29. package/esm/component/label/util.d.ts +4 -1
  30. package/esm/component/label/util.js +12 -5
  31. package/esm/component/label/util.js.map +1 -1
  32. package/esm/component/legend/util.d.ts +2 -2
  33. package/esm/core/factory.d.ts +1 -1
  34. package/esm/core/index.d.ts +1 -1
  35. package/esm/core/index.js +1 -1
  36. package/esm/core/index.js.map +1 -1
  37. package/esm/data/transforms/waterfall.js +5 -1
  38. package/esm/data/transforms/waterfall.js.map +1 -1
  39. package/esm/plugin/components/tooltip-handler/base.d.ts +1 -1
  40. package/esm/series/interface/series.d.ts +3 -0
  41. package/esm/series/interface/series.js.map +1 -1
  42. package/esm/series/waterfall/interface.d.ts +6 -1
  43. package/esm/series/waterfall/interface.js.map +1 -1
  44. package/esm/series/waterfall/waterfall.d.ts +9 -0
  45. package/esm/series/waterfall/waterfall.js +21 -2
  46. package/esm/series/waterfall/waterfall.js.map +1 -1
  47. package/package.json +2 -2
@@ -9,6 +9,7 @@ import type { ITextMark } from '../../mark/text';
9
9
  import type { IModelEvaluateOption } from '../../model/interface';
10
10
  import type { Datum } from '../../typings';
11
11
  import type { ILabelMark } from '../../mark/label';
12
+ import type { ILabelInfo } from '../../component/label/label';
12
13
  export declare const DefaultBandWidth = 6;
13
14
  export declare class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfallSeriesSpec> extends BarSeries<any> {
14
15
  static readonly type: string;
@@ -33,6 +34,14 @@ export declare class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfall
33
34
  onEvaluateEnd(ctx: IModelEvaluateOption): void;
34
35
  initMark(): void;
35
36
  initLabelMarkStyle(labelMark: ILabelMark): void;
37
+ initTotalLabelMarkStyle(labelMark: ILabelMark): void;
38
+ getTotalLabelComponentStyle(info: Pick<ILabelInfo, 'baseMark' | 'labelMark'>): {
39
+ customLayoutFunc: (labels: import("@visactor/vrender-components").LabelItem[]) => import("@visactor/vrender-core").IText[];
40
+ dataFilter: (labels: import("@visactor/vrender-components").LabelItem[]) => import("@visactor/vrender-components").LabelItem[];
41
+ overlap: {
42
+ strategy: any;
43
+ };
44
+ };
36
45
  totalPositionX(datum: Datum, field: string, pos?: number): number;
37
46
  totalPositionY(datum: Datum, field: string, pos?: number): number;
38
47
  initMarkStyle(): void;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
5
  }), exports.registerWaterfallSeries = exports.WaterfallSeries = exports.DefaultBandWidth = void 0;
6
6
 
7
- const vutils_1 = require("@visactor/vutils"), index_1 = require("../../constant/index"), waterfall_1 = require("../../data/transforms/waterfall"), bar_1 = require("../bar/bar"), scale_1 = require("../../util/scale"), animation_1 = require("./animation"), utils_1 = require("../../animation/utils"), type_1 = require("../interface/type"), config_1 = require("../../animation/config"), register_1 = require("../../data/register"), series_data_1 = require("../base/series-data"), initialize_1 = require("../../data/initialize"), rule_1 = require("../../mark/rule"), constant_1 = require("./constant"), group_1 = require("../base/group"), factory_1 = require("../../core/factory"), rect_1 = require("../../mark/rect"), utils_2 = require("../util/utils"), waterfall_transformer_1 = require("./waterfall-transformer");
7
+ const vutils_1 = require("@visactor/vutils"), index_1 = require("../../constant/index"), waterfall_1 = require("../../data/transforms/waterfall"), bar_1 = require("../bar/bar"), scale_1 = require("../../util/scale"), animation_1 = require("./animation"), utils_1 = require("../../animation/utils"), type_1 = require("../interface/type"), config_1 = require("../../animation/config"), register_1 = require("../../data/register"), series_data_1 = require("../base/series-data"), initialize_1 = require("../../data/initialize"), rule_1 = require("../../mark/rule"), constant_1 = require("./constant"), group_1 = require("../base/group"), factory_1 = require("../../core/factory"), rect_1 = require("../../mark/rect"), utils_2 = require("../util/utils"), waterfall_transformer_1 = require("./waterfall-transformer"), util_1 = require("../../component/label/util");
8
8
 
9
9
  exports.DefaultBandWidth = 6;
10
10
 
@@ -62,7 +62,7 @@ class WaterfallSeries extends bar_1.BarSeries {
62
62
  }, !1);
63
63
  }
64
64
  initAnimation() {
65
- var _a, _b, _c, _d;
65
+ var _a, _b, _c, _e;
66
66
  const waterfallAnimationParams = {
67
67
  yField: "horizontal" === this.direction ? this._fieldY[0] : this.getStackValueField(),
68
68
  xField: "horizontal" === this.direction ? this.getStackValueField() : this._fieldX[0],
@@ -75,7 +75,7 @@ class WaterfallSeries extends bar_1.BarSeries {
75
75
  utils_2.getGroupAnimationParams)(this);
76
76
  this._barMark.setAnimationConfig((0, utils_1.animationConfig)(null === (_c = factory_1.Factory.getAnimationInKey("waterfall")) || void 0 === _c ? void 0 : _c(waterfallAnimationParams, appearPreset), (0,
77
77
  utils_1.userAnimationConfig)("bar", this._spec, this._markAttributeContext), animationParams)),
78
- this._leaderLineMark && this._leaderLineMark.setAnimationConfig((0, utils_1.animationConfig)(null === (_d = factory_1.Factory.getAnimationInKey("fadeInOut")) || void 0 === _d ? void 0 : _d(), (0,
78
+ this._leaderLineMark && this._leaderLineMark.setAnimationConfig((0, utils_1.animationConfig)(null === (_e = factory_1.Factory.getAnimationInKey("fadeInOut")) || void 0 === _e ? void 0 : _e(), (0,
79
79
  utils_1.userAnimationConfig)("leaderLine", this._spec, this._markAttributeContext)));
80
80
  }
81
81
  viewDataUpdate(d) {
@@ -113,6 +113,24 @@ class WaterfallSeries extends bar_1.BarSeries {
113
113
  });
114
114
  }
115
115
  }
116
+ initTotalLabelMarkStyle(labelMark) {
117
+ this.setMarkStyle(labelMark, {
118
+ text: datum => {
119
+ var _a;
120
+ return "end" in datum ? "absolute" === (null === (_a = this._spec.totalLabel) || void 0 === _a ? void 0 : _a.valueType) ? datum.end : (0,
121
+ vutils_1.precisionSub)(datum.end, datum.start) : "horizontal" === this.direction ? datum[this._fieldX[0]] : datum[this._fieldY[0]];
122
+ }
123
+ });
124
+ }
125
+ getTotalLabelComponentStyle(info) {
126
+ return (0, util_1.stackLabel)(Object.assign(Object.assign({}, info), {
127
+ series: this,
128
+ labelSpec: this._spec.totalLabel
129
+ }), (d => {
130
+ const index = "vertical" === this.direction ? d[this._fieldX[0]] : d[this._fieldY[0]];
131
+ return this._totalData.getLatestData().find((_d => _d.index === index));
132
+ }));
133
+ }
116
134
  totalPositionX(datum, field, pos = .5) {
117
135
  const {dataToPosition: dataToPosition, getBandwidth: getBandwidth} = this._xAxisHelper;
118
136
  return "horizontal" === this._direction ? (0, scale_1.valueInScaleRange)(dataToPosition([ datum[field] ], {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/waterfall/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IRuleMark } from '../../mark/rule';\nimport { isNil, precisionSub } from '@visactor/vutils';\nimport {\n AttributeLevel,\n PREFIX,\n STACK_FIELD_END,\n STACK_FIELD_START,\n WaterfallDefaultSeriesField\n} from '../../constant/index';\nimport { waterfall, waterfallFillTotal } from '../../data/transforms/waterfall';\nimport { BarSeries } from '../bar/bar';\nimport { valueInScaleRange } from '../../util/scale';\nimport type { WaterfallAppearPreset } from './animation';\nimport { registerWaterfallAnimation } from './animation';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport type { IWaterfallSeriesSpec } from './interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport type { ITransformOptions, DataView } from '@visactor/vdataset';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { SeriesData } from '../base/series-data';\nimport { dataViewFromDataView } from '../../data/initialize';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { ITextMark } from '../../mark/text';\nimport type { IModelEvaluateOption } from '../../model/interface';\nimport type { Datum } from '../../typings';\nimport { Direction } from '../../typings/space';\nimport type { IBarAnimationParams } from '../bar/animation';\nimport { registerRuleMark } from '../../mark/rule';\nimport { waterfallSeriesMark } from './constant';\nimport { Group } from '../base/group';\nimport type { ILabelMark } from '../../mark/label';\nimport { Factory } from '../../core/factory';\nimport { registerRectMark } from '../../mark/rect';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { WaterfallSeriesSpecTransformer } from './waterfall-transformer';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfallSeriesSpec> extends BarSeries<any> {\n static readonly type: string = SeriesTypeEnum.waterfall;\n type = SeriesTypeEnum.waterfall;\n\n static readonly mark: SeriesMarkMap = waterfallSeriesMark;\n static readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n\n protected _totalData?: SeriesData;\n getTotalData() {\n return this._totalData?.getLatestData();\n }\n\n protected declare _spec: T;\n\n protected _leaderLineMark: IRuleMark = null;\n protected _stackLabelMark: ITextMark = null;\n protected _labelMark: ITextMark = null;\n\n protected initGroups() {\n const groupFields = this.getGroupFields();\n if (groupFields && groupFields.length) {\n this._groups = new Group(groupFields);\n this._data && this._groups.initData(this._data.getDataView(), this._dataSet);\n }\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n // waterfall data stack data\n this.setValueFieldToStack();\n // 不支持多维度;\n this._fieldX = [this._fieldX[0]];\n this._fieldY = [this._fieldY[0]];\n if (isNil(this._seriesField)) {\n this._seriesField = WaterfallDefaultSeriesField;\n }\n }\n\n getSeriesKeys(): string[] {\n if (this._seriesField === WaterfallDefaultSeriesField) {\n return [\n this._theme.seriesFieldName.increase,\n this._theme.seriesFieldName.decrease,\n this._theme.seriesFieldName.total\n ];\n }\n return super.getSeriesKeys();\n }\n\n protected initData(): void {\n super.initData();\n registerDataSetInstanceTransform(this._dataSet, 'waterfallFillTotal', waterfallFillTotal);\n registerDataSetInstanceTransform(this._dataSet, 'waterfall', waterfall);\n // 如果要在最后添加总计\n if (isNil(this._spec.total) || this._spec.total.type === 'end') {\n this._rawData?.transform(\n {\n type: 'waterfallFillTotal',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n total: this._spec.total\n }\n },\n false\n );\n }\n // 总计数据\n const totalData = dataViewFromDataView(this.getViewData(), this._dataSet, {\n name: `${PREFIX}_series_${this.id}_totalData`\n });\n this.getViewData().target.removeListener('change', totalData.reRunAllTransform);\n this._totalData = new SeriesData(this._option, totalData);\n totalData.transform(\n {\n type: 'waterfall',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n startAs: STACK_FIELD_START,\n endAs: STACK_FIELD_END,\n total: this._spec.total,\n groupData: () => this.getGroups().groupData\n }\n },\n false\n );\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const waterfallAnimationParams: IBarAnimationParams = {\n yField: this.direction === 'horizontal' ? this._fieldY[0] : this.getStackValueField(),\n xField: this.direction === 'horizontal' ? this.getStackValueField() : this._fieldX[0],\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<WaterfallAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('waterfall')?.(waterfallAnimationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.bar, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n\n if (this._leaderLineMark) {\n this._leaderLineMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(SeriesMarkNameEnum.leaderLine, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n viewDataUpdate(d: DataView): void {\n this._totalData.getDataView().reRunAllTransform();\n this._totalData.updateData();\n super.viewDataUpdate(d);\n }\n /**\n * data\n */\n // waterfall 不支持任何的 data filter\n addViewDataFilter(_option: ITransformOptions) {\n // do nothing\n }\n reFilterViewData() {\n // do nothing\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption): void {\n super.onEvaluateEnd(ctx);\n this._totalData.updateData();\n }\n\n initMark(): void {\n super.initMark();\n const leaderLine = this._createMark(WaterfallSeries.mark.leaderLine, {\n key: 'index',\n customShape: this._spec.leaderLine?.customShape,\n stateSort: this._spec.leaderLine?.stateSort\n }) as IRuleMark;\n if (leaderLine) {\n this._leaderLineMark = leaderLine;\n leaderLine.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n }\n }\n\n initLabelMarkStyle(labelMark: ILabelMark): void {\n if (!labelMark) {\n return;\n }\n\n if (!this._labelMark && this._spec.label?.visible) {\n super.initLabelMarkStyle(labelMark);\n this._labelMark = labelMark;\n return;\n }\n\n this._stackLabelMark = labelMark;\n // 瀑布图标签 encode 在自定义布局中计算\n labelMark.skipEncode = true;\n labelMark.setRule('stackLabel');\n labelMark.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n return this._spec.stackLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n totalPositionX(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._xAxisHelper;\n if (this._direction === Direction.horizontal) {\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('width', datum) as number) * (0.5 - pos)\n );\n }\n\n totalPositionY(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._yAxisHelper;\n if (this._direction === Direction.horizontal) {\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('height', datum) as number) * (0.5 - pos)\n );\n }\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n\n initMarkStyle(): void {\n super.initMarkStyle();\n if (this._leaderLineMark) {\n if (this._direction === Direction.horizontal) {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => !isNil(datum.lastIndex),\n x: (datum: Datum) => this.totalPositionX(datum, 'lastEnd', 0),\n x1: (datum: Datum) => this.totalPositionX(datum, datum.isTotal ? 'end' : 'start', 0),\n y: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionY(datum, 'lastIndex', 1);\n },\n y1: (datum: Datum) => this.totalPositionY(datum, 'index', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => !isNil(datum.lastIndex),\n x: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionX(datum, 'lastIndex', 1);\n },\n x1: (datum: Datum) => this.totalPositionX(datum, 'index', 0),\n y: (datum: Datum) => this.totalPositionY(datum, 'lastEnd', 0),\n y1: (datum: Datum) => this.totalPositionY(datum, datum.isTotal ? 'end' : 'start', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n }\n}\n\nexport const registerWaterfallSeries = () => {\n registerRuleMark();\n registerRectMark();\n registerWaterfallAnimation();\n registerFadeInOutAnimation();\n Factory.registerSeries(WaterfallSeries.type, WaterfallSeries);\n};\n"]}
1
+ {"version":3,"sources":["../src/series/waterfall/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IRuleMark } from '../../mark/rule';\nimport { isNil, precisionSub } from '@visactor/vutils';\nimport {\n AttributeLevel,\n PREFIX,\n STACK_FIELD_END,\n STACK_FIELD_START,\n WaterfallDefaultSeriesField\n} from '../../constant/index';\nimport { waterfall, waterfallFillTotal } from '../../data/transforms/waterfall';\nimport { BarSeries } from '../bar/bar';\nimport { valueInScaleRange } from '../../util/scale';\nimport type { WaterfallAppearPreset } from './animation';\nimport { registerWaterfallAnimation } from './animation';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport type { IWaterfallSeriesSpec } from './interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport type { ITransformOptions, DataView } from '@visactor/vdataset';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { SeriesData } from '../base/series-data';\nimport { dataViewFromDataView } from '../../data/initialize';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { ITextMark } from '../../mark/text';\nimport type { IModelEvaluateOption } from '../../model/interface';\nimport type { Datum } from '../../typings';\nimport { Direction } from '../../typings/space';\nimport type { IBarAnimationParams } from '../bar/animation';\nimport { registerRuleMark } from '../../mark/rule';\nimport { waterfallSeriesMark } from './constant';\nimport { Group } from '../base/group';\nimport type { ILabelMark } from '../../mark/label';\nimport { Factory } from '../../core/factory';\nimport { registerRectMark } from '../../mark/rect';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { WaterfallSeriesSpecTransformer } from './waterfall-transformer';\nimport { stackLabel } from '../../component/label/util';\nimport type { ILabelInfo } from '../../component/label/label';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfallSeriesSpec> extends BarSeries<any> {\n static readonly type: string = SeriesTypeEnum.waterfall;\n type = SeriesTypeEnum.waterfall;\n\n static readonly mark: SeriesMarkMap = waterfallSeriesMark;\n static readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n\n protected _totalData?: SeriesData;\n getTotalData() {\n return this._totalData?.getLatestData();\n }\n\n protected declare _spec: T;\n\n protected _leaderLineMark: IRuleMark = null;\n protected _stackLabelMark: ITextMark = null;\n protected _labelMark: ITextMark = null;\n\n protected initGroups() {\n const groupFields = this.getGroupFields();\n if (groupFields && groupFields.length) {\n this._groups = new Group(groupFields);\n this._data && this._groups.initData(this._data.getDataView(), this._dataSet);\n }\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n // waterfall data stack data\n this.setValueFieldToStack();\n // 不支持多维度;\n this._fieldX = [this._fieldX[0]];\n this._fieldY = [this._fieldY[0]];\n if (isNil(this._seriesField)) {\n this._seriesField = WaterfallDefaultSeriesField;\n }\n }\n\n getSeriesKeys(): string[] {\n if (this._seriesField === WaterfallDefaultSeriesField) {\n return [\n this._theme.seriesFieldName.increase,\n this._theme.seriesFieldName.decrease,\n this._theme.seriesFieldName.total\n ];\n }\n return super.getSeriesKeys();\n }\n\n protected initData(): void {\n super.initData();\n registerDataSetInstanceTransform(this._dataSet, 'waterfallFillTotal', waterfallFillTotal);\n registerDataSetInstanceTransform(this._dataSet, 'waterfall', waterfall);\n // 如果要在最后添加总计\n if (isNil(this._spec.total) || this._spec.total.type === 'end') {\n this._rawData?.transform(\n {\n type: 'waterfallFillTotal',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n total: this._spec.total\n }\n },\n false\n );\n }\n // 总计数据\n const totalData = dataViewFromDataView(this.getViewData(), this._dataSet, {\n name: `${PREFIX}_series_${this.id}_totalData`\n });\n this.getViewData().target.removeListener('change', totalData.reRunAllTransform);\n this._totalData = new SeriesData(this._option, totalData);\n totalData.transform(\n {\n type: 'waterfall',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n startAs: STACK_FIELD_START,\n endAs: STACK_FIELD_END,\n total: this._spec.total,\n groupData: () => this.getGroups().groupData\n }\n },\n false\n );\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const waterfallAnimationParams: IBarAnimationParams = {\n yField: this.direction === 'horizontal' ? this._fieldY[0] : this.getStackValueField(),\n xField: this.direction === 'horizontal' ? this.getStackValueField() : this._fieldX[0],\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<WaterfallAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('waterfall')?.(waterfallAnimationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.bar, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n\n if (this._leaderLineMark) {\n this._leaderLineMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(SeriesMarkNameEnum.leaderLine, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n viewDataUpdate(d: DataView): void {\n this._totalData.getDataView().reRunAllTransform();\n this._totalData.updateData();\n super.viewDataUpdate(d);\n }\n /**\n * data\n */\n // waterfall 不支持任何的 data filter\n addViewDataFilter(_option: ITransformOptions) {\n // do nothing\n }\n reFilterViewData() {\n // do nothing\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption): void {\n super.onEvaluateEnd(ctx);\n this._totalData.updateData();\n }\n\n initMark(): void {\n super.initMark();\n const leaderLine = this._createMark(WaterfallSeries.mark.leaderLine, {\n key: 'index',\n customShape: this._spec.leaderLine?.customShape,\n stateSort: this._spec.leaderLine?.stateSort\n }) as IRuleMark;\n if (leaderLine) {\n this._leaderLineMark = leaderLine;\n leaderLine.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n }\n }\n\n initLabelMarkStyle(labelMark: ILabelMark): void {\n if (!labelMark) {\n return;\n }\n\n if (!this._labelMark && this._spec.label?.visible) {\n super.initLabelMarkStyle(labelMark);\n this._labelMark = labelMark;\n return;\n }\n\n this._stackLabelMark = labelMark;\n // 瀑布图标签 encode 在自定义布局中计算\n labelMark.skipEncode = true;\n labelMark.setRule('stackLabel');\n labelMark.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n return this._spec.stackLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n // 样式设置在这里的原因是执行顺序的问题\n // 首先执行这里的 mark.style\n // 然后执行用户的 formatMethod\n // 最后执行下方的 getTotalLabelComponentStyle 。如果在下方实现值函数,就会导致用户format无法生效\n initTotalLabelMarkStyle(labelMark: ILabelMark) {\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n if (!('end' in datum)) {\n return this.direction === Direction.horizontal ? datum[this._fieldX[0]] : datum[this._fieldY[0]];\n }\n return this._spec.totalLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n getTotalLabelComponentStyle(info: Pick<ILabelInfo, 'baseMark' | 'labelMark'>) {\n return stackLabel(\n {\n ...info,\n series: this,\n // @ts-ignore\n labelSpec: this._spec.totalLabel\n },\n d => {\n const index = this.direction === Direction.vertical ? d[this._fieldX[0]] : d[this._fieldY[0]];\n return this._totalData.getLatestData().find((_d: Datum) => _d.index === index);\n }\n );\n }\n\n totalPositionX(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._xAxisHelper;\n if (this._direction === Direction.horizontal) {\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('width', datum) as number) * (0.5 - pos)\n );\n }\n\n totalPositionY(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._yAxisHelper;\n if (this._direction === Direction.horizontal) {\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('height', datum) as number) * (0.5 - pos)\n );\n }\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n\n initMarkStyle(): void {\n super.initMarkStyle();\n if (this._leaderLineMark) {\n if (this._direction === Direction.horizontal) {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => !isNil(datum.lastIndex),\n x: (datum: Datum) => this.totalPositionX(datum, 'lastEnd', 0),\n x1: (datum: Datum) => this.totalPositionX(datum, datum.isTotal ? 'end' : 'start', 0),\n y: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionY(datum, 'lastIndex', 1);\n },\n y1: (datum: Datum) => this.totalPositionY(datum, 'index', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => !isNil(datum.lastIndex),\n x: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionX(datum, 'lastIndex', 1);\n },\n x1: (datum: Datum) => this.totalPositionX(datum, 'index', 0),\n y: (datum: Datum) => this.totalPositionY(datum, 'lastEnd', 0),\n y1: (datum: Datum) => this.totalPositionY(datum, datum.isTotal ? 'end' : 'start', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n }\n}\n\nexport const registerWaterfallSeries = () => {\n registerRuleMark();\n registerRectMark();\n registerWaterfallAnimation();\n registerFadeInOutAnimation();\n Factory.registerSeries(WaterfallSeries.type, WaterfallSeries);\n};\n"]}
@@ -10,9 +10,9 @@ export declare function animationConfig<Preset extends string>(defaultConfig?: M
10
10
  dataIndex: (datum: any) => number;
11
11
  dataCount: () => number;
12
12
  }): MarkAnimationSpec;
13
- export declare function userAnimationConfig<M extends string, Preset extends string>(markName: SeriesMarkNameEnum | string, spec: IAnimationSpec<M, Preset>, ctx: IModelMarkAttributeContext): Partial<Record<"none" | "normal" | "state" | "exit" | "update" | "appear" | "enter" | "disappear", boolean | IAnimationConfig | IAnimationConfig[] | IStateAnimateSpec<Preset>>>;
13
+ export declare function userAnimationConfig<M extends string, Preset extends string>(markName: SeriesMarkNameEnum | string, spec: IAnimationSpec<M, Preset>, ctx: IModelMarkAttributeContext): Partial<Record<"none" | "normal" | "state" | "appear" | "enter" | "exit" | "disappear" | "update", boolean | IAnimationConfig | IAnimationConfig[] | IStateAnimateSpec<Preset>>>;
14
14
  export declare function shouldMarkDoMorph(spec: ISeriesSpec & IAnimationSpec<string, string>, markName: string): boolean;
15
15
  export declare function isTimeLineAnimation(animationConfig: IAnimationConfig): boolean;
16
16
  export declare function isChannelAnimation(animationConfig: IAnimationConfig): boolean;
17
- export declare function uniformAnimationConfig<Preset extends string>(config: Partial<Record<IAnimationState, boolean | IStateAnimateSpec<Preset> | IAnimationConfig | IAnimationConfig[]>>, ctx: IModelMarkAttributeContext): Partial<Record<"none" | "normal" | "state" | "exit" | "update" | "appear" | "enter" | "disappear", boolean | IAnimationConfig | IAnimationConfig[] | IStateAnimateSpec<Preset>>>;
17
+ export declare function uniformAnimationConfig<Preset extends string>(config: Partial<Record<IAnimationState, boolean | IStateAnimateSpec<Preset> | IAnimationConfig | IAnimationConfig[]>>, ctx: IModelMarkAttributeContext): Partial<Record<"none" | "normal" | "state" | "appear" | "enter" | "exit" | "disappear" | "update", boolean | IAnimationConfig | IAnimationConfig[] | IStateAnimateSpec<Preset>>>;
18
18
  export declare function isAnimationEnabledForSeries(series: ISeries): boolean;
@@ -59,9 +59,12 @@ export class TotalLabel extends BaseLabelComponent {
59
59
  }
60
60
  }
61
61
  _initTextMarkStyle() {
62
+ var _a;
62
63
  super.initMarkStyleWithSpec(this._textMark, this._spec), this.setMarkStyle(this._textMark, {
63
64
  text: datum => datum[STACK_FIELD_TOTAL]
64
65
  }, "normal", AttributeLevel.Default);
66
+ const series = this._getSeries();
67
+ null === (_a = series.initTotalLabelMarkStyle) || void 0 === _a || _a.call(series, this._textMark);
65
68
  }
66
69
  _initLabelComponent() {
67
70
  const series = this._getSeries(), component = this._createMark({
@@ -89,6 +92,7 @@ export class TotalLabel extends BaseLabelComponent {
89
92
  componentMark.getProduct().target(this._baseMark.getProduct()).configure({
90
93
  interactive: !1
91
94
  }).labelStyle((() => {
95
+ var _a, _b;
92
96
  if (this._baseMark) {
93
97
  const {offset: offset, animation: animation, overlap: overlap} = this._spec, interactive = this._interactiveConfig(this._spec);
94
98
  return mergeSpec({
@@ -98,7 +102,10 @@ export class TotalLabel extends BaseLabelComponent {
98
102
  position: totalLabelPosition(series, this._baseMark.type),
99
103
  x: 0,
100
104
  y: 0
101
- }, Object.assign({
105
+ }, null !== (_b = null === (_a = series.getTotalLabelComponentStyle) || void 0 === _a ? void 0 : _a.call(series, {
106
+ baseMark: this._baseMark,
107
+ labelMark: this._textMark
108
+ })) && void 0 !== _b ? _b : {}, Object.assign({
102
109
  offset: offset,
103
110
  animation: animation,
104
111
  overlap: overlap,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/label/total-label.ts"],"names":[],"mappings":"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","file":"total-label.js","sourcesContent":["import type { ILabelMark } from '../../mark/label';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerLabelMark } from '../../mark/label';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport { AttributeLevel, LayoutZIndex, STACK_FIELD_TOTAL, STACK_FIELD_TOTAL_TOP } from '../../constant';\nimport type { IMark, MarkType } from '../../mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { MarkTypeEnum } from '../../mark/interface';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport type { ICartesianSeries, ISeries } from '../../series/interface';\nimport type { IGroupMark, IView } from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerLabel as registerVGrammarLabel } from '@visactor/vgrammar-core';\nimport { textAttribute } from './util';\nimport { BaseLabelComponent } from './base-label';\nimport type { IModelInitOption, IModelSpecInfo } from '../../model/interface';\nimport type { Datum, Maybe } from '../../typings';\nimport { Factory } from '../../core/factory';\nimport { registerComponentMark } from '../../mark/component';\nimport type { IChartSpecInfo } from '../../chart/interface';\nimport { HOOK_EVENT } from '@visactor/vgrammar-core';\n\nexport class TotalLabel extends BaseLabelComponent {\n static type = ComponentTypeEnum.totalLabel;\n type = ComponentTypeEnum.totalLabel;\n name: string = ComponentTypeEnum.totalLabel;\n\n static specKey = 'totalLabel';\n specKey = 'totalLabel';\n\n layoutZIndex: number = LayoutZIndex.Label;\n\n private _textMark?: ILabelMark;\n private _baseMark?: IMark;\n\n static getSpecInfo(chartSpec: any, chartSpecInfo?: IChartSpecInfo): Maybe<IModelSpecInfo[]> {\n const specInfo: IModelSpecInfo[] = [];\n chartSpecInfo?.region?.forEach((regionInfo, regionIndex) => {\n regionInfo.seriesIndexes?.forEach(seriesIndex => {\n const { spec } = chartSpecInfo.series[seriesIndex];\n const labelSpec = spec[this.specKey];\n if (labelSpec?.visible) {\n specInfo.push({\n spec: labelSpec,\n type: ComponentTypeEnum.totalLabel,\n specPath: ['series', seriesIndex, this.specKey],\n specInfoPath: ['component', this.specKey, seriesIndex],\n regionIndexes: [regionIndex],\n seriesIndexes: [seriesIndex]\n });\n }\n });\n });\n return specInfo;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this._initTextMark();\n this._initLabelComponent();\n }\n\n protected _initTextMark() {\n const series = this._getSeries();\n if (series.getSpec().totalLabel?.visible) {\n const mark = series.getSeriesMark();\n if (mark) {\n const textMark = this._createMark({ type: MarkTypeEnum.label, name: `${mark.name}-total-label` }) as ILabelMark;\n this._baseMark = mark;\n this._textMark = textMark;\n this._initTextMarkStyle();\n }\n }\n }\n\n _initTextMarkStyle() {\n super.initMarkStyleWithSpec(this._textMark, this._spec);\n this.setMarkStyle(\n this._textMark,\n {\n text: (datum: Datum) => {\n return datum[STACK_FIELD_TOTAL];\n }\n },\n 'normal',\n AttributeLevel.Default\n );\n }\n\n protected _initLabelComponent() {\n const series = this._getSeries();\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${series.name}-total-label-component` },\n {\n componentType: 'label',\n noSeparateStyle: true,\n support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n }\n }\n\n afterCompile() {\n this._marks.forEach((componentMark, index) => {\n const product = componentMark.getProduct() as ReturnType<IView['label']>;\n if (product) {\n product.addEventListener(HOOK_EVENT.AFTER_ELEMENT_ENCODE, () => {\n if (this._isLayout === false) {\n this._delegateLabelEvent(product.getGroupGraphicItem());\n }\n });\n }\n });\n }\n\n updateLayoutAttribute(): void {\n super.updateLayoutAttribute();\n const series = this._getSeries();\n this._marks.forEach((componentMark, index) => {\n const component = componentMark.getProduct() as ReturnType<IView['label']>;\n component\n .target(this._baseMark.getProduct())\n .configure({ interactive: false })\n .labelStyle(() => {\n if (this._baseMark) {\n const { offset, animation, overlap } = this._spec;\n const interactive = this._interactiveConfig(this._spec);\n return mergeSpec(\n {\n textStyle: { pickable: this._spec.interactive === true },\n position: totalLabelPosition(series, this._baseMark.type),\n x: 0,\n y: 0\n },\n {\n offset,\n animation,\n overlap,\n dataFilter: (data: any) => {\n return data.filter((d: any) => d.data[STACK_FIELD_TOTAL_TOP]);\n },\n ...interactive\n }\n );\n }\n })\n .encode(datum => {\n return textAttribute(\n {\n baseMark: this._baseMark,\n labelMark: this._textMark,\n series,\n labelSpec: series.getSpec().totalLabel\n },\n datum,\n this._spec.formatMethod\n );\n })\n .size(() => this._regions[0].getLayoutRect());\n });\n }\n\n compileMarks() {\n this.getMarks().forEach(m => {\n const group = this._regions[0].getGroupMark().getProduct() as IGroupMark;\n m.compile({ group });\n m.getProduct()?.configure({\n context: {\n model: this\n }\n });\n });\n }\n\n getVRenderComponents() {\n const labels: any[] = [];\n this.getMarks().forEach(m => {\n const graphicItem = m.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n labels.push(graphicItem);\n }\n });\n return labels;\n }\n\n protected _getSeries() {\n return this._option.getSeriesInIndex([this.getSpecPath()[1] as number])[0];\n }\n}\n\nexport function totalLabelPosition(series: ISeries, type: MarkType) {\n let position;\n const { direction } = series as ICartesianSeries;\n const isInverse =\n direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n const positionMap = { vertical: ['top', 'bottom'], horizontal: ['right', 'left'] };\n const index = isInverse ? 1 : 0;\n switch (type) {\n case 'rect':\n case 'symbol':\n position = positionMap[direction][index];\n break;\n default:\n position = 'top';\n }\n return position;\n}\n\nexport const registerTotalLabel = () => {\n registerVGrammarLabel();\n registerLabelMark();\n registerComponentMark();\n Factory.registerComponent(TotalLabel.type, TotalLabel, true);\n};\n"]}
1
+ {"version":3,"sources":["../src/component/label/total-label.ts"],"names":[],"mappings":"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","file":"total-label.js","sourcesContent":["import type { ILabelMark } from '../../mark/label';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerLabelMark } from '../../mark/label';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface/type';\nimport { AttributeLevel, LayoutZIndex, STACK_FIELD_TOTAL, STACK_FIELD_TOTAL_TOP } from '../../constant';\nimport type { IMark, MarkType } from '../../mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { MarkTypeEnum } from '../../mark/interface';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport type { ICartesianSeries, ISeries } from '../../series/interface';\nimport type { IGroupMark, IView } from '@visactor/vgrammar-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { registerLabel as registerVGrammarLabel } from '@visactor/vgrammar-core';\nimport { textAttribute } from './util';\nimport { BaseLabelComponent } from './base-label';\nimport type { IModelInitOption, IModelSpecInfo } from '../../model/interface';\nimport type { Datum, Maybe } from '../../typings';\nimport { Factory } from '../../core/factory';\nimport { registerComponentMark } from '../../mark/component';\nimport type { IChartSpecInfo } from '../../chart/interface';\nimport { HOOK_EVENT } from '@visactor/vgrammar-core';\n\nexport class TotalLabel extends BaseLabelComponent {\n static type = ComponentTypeEnum.totalLabel;\n type = ComponentTypeEnum.totalLabel;\n name: string = ComponentTypeEnum.totalLabel;\n\n static specKey = 'totalLabel';\n specKey = 'totalLabel';\n\n layoutZIndex: number = LayoutZIndex.Label;\n\n private _textMark?: ILabelMark;\n private _baseMark?: IMark;\n\n static getSpecInfo(chartSpec: any, chartSpecInfo?: IChartSpecInfo): Maybe<IModelSpecInfo[]> {\n const specInfo: IModelSpecInfo[] = [];\n chartSpecInfo?.region?.forEach((regionInfo, regionIndex) => {\n regionInfo.seriesIndexes?.forEach(seriesIndex => {\n const { spec } = chartSpecInfo.series[seriesIndex];\n const labelSpec = spec[this.specKey];\n if (labelSpec?.visible) {\n specInfo.push({\n spec: labelSpec,\n type: ComponentTypeEnum.totalLabel,\n specPath: ['series', seriesIndex, this.specKey],\n specInfoPath: ['component', this.specKey, seriesIndex],\n regionIndexes: [regionIndex],\n seriesIndexes: [seriesIndex]\n });\n }\n });\n });\n return specInfo;\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this._initTextMark();\n this._initLabelComponent();\n }\n\n protected _initTextMark() {\n const series = this._getSeries();\n if (series.getSpec().totalLabel?.visible) {\n const mark = series.getSeriesMark();\n if (mark) {\n const textMark = this._createMark({ type: MarkTypeEnum.label, name: `${mark.name}-total-label` }) as ILabelMark;\n this._baseMark = mark;\n this._textMark = textMark;\n this._initTextMarkStyle();\n }\n }\n }\n\n _initTextMarkStyle() {\n super.initMarkStyleWithSpec(this._textMark, this._spec);\n this.setMarkStyle(\n this._textMark,\n {\n text: (datum: Datum) => {\n return datum[STACK_FIELD_TOTAL];\n }\n },\n 'normal',\n AttributeLevel.Default\n );\n\n const series = this._getSeries();\n series.initTotalLabelMarkStyle?.(this._textMark);\n }\n\n protected _initLabelComponent() {\n const series = this._getSeries();\n const component = this._createMark(\n { type: MarkTypeEnum.component, name: `${series.name}-total-label-component` },\n {\n componentType: 'label',\n noSeparateStyle: true,\n support3d: this._spec.support3d\n }\n );\n if (component) {\n this._marks.addMark(component);\n }\n }\n\n afterCompile() {\n this._marks.forEach((componentMark, index) => {\n const product = componentMark.getProduct() as ReturnType<IView['label']>;\n if (product) {\n product.addEventListener(HOOK_EVENT.AFTER_ELEMENT_ENCODE, () => {\n if (this._isLayout === false) {\n this._delegateLabelEvent(product.getGroupGraphicItem());\n }\n });\n }\n });\n }\n\n updateLayoutAttribute(): void {\n super.updateLayoutAttribute();\n const series = this._getSeries();\n this._marks.forEach((componentMark, index) => {\n const component = componentMark.getProduct() as ReturnType<IView['label']>;\n component\n .target(this._baseMark.getProduct())\n .configure({ interactive: false })\n .labelStyle(() => {\n if (this._baseMark) {\n const { offset, animation, overlap } = this._spec;\n const interactive = this._interactiveConfig(this._spec);\n return mergeSpec(\n {\n textStyle: { pickable: this._spec.interactive === true },\n position: totalLabelPosition(series, this._baseMark.type),\n x: 0,\n y: 0\n },\n series.getTotalLabelComponentStyle?.({\n baseMark: this._baseMark,\n labelMark: this._textMark\n }) ?? {},\n {\n offset,\n animation,\n overlap,\n dataFilter: (data: any) => {\n return data.filter((d: any) => d.data[STACK_FIELD_TOTAL_TOP]);\n },\n ...interactive\n }\n );\n }\n })\n .encode(datum => {\n return textAttribute(\n {\n baseMark: this._baseMark,\n labelMark: this._textMark,\n series,\n labelSpec: series.getSpec().totalLabel\n },\n datum,\n this._spec.formatMethod\n );\n })\n .size(() => this._regions[0].getLayoutRect());\n });\n }\n\n compileMarks() {\n this.getMarks().forEach(m => {\n const group = this._regions[0].getGroupMark().getProduct() as IGroupMark;\n m.compile({ group });\n m.getProduct()?.configure({\n context: {\n model: this\n }\n });\n });\n }\n\n getVRenderComponents() {\n const labels: any[] = [];\n this.getMarks().forEach(m => {\n const graphicItem = m.getProduct().getGroupGraphicItem();\n if (graphicItem) {\n labels.push(graphicItem);\n }\n });\n return labels;\n }\n\n protected _getSeries() {\n return this._option.getSeriesInIndex([this.getSpecPath()[1] as number])[0];\n }\n}\n\nexport function totalLabelPosition(series: ISeries, type: MarkType) {\n let position;\n const { direction } = series as ICartesianSeries;\n const isInverse =\n direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n const positionMap = { vertical: ['top', 'bottom'], horizontal: ['right', 'left'] };\n const index = isInverse ? 1 : 0;\n switch (type) {\n case 'rect':\n case 'symbol':\n position = positionMap[direction][index];\n break;\n default:\n position = 'top';\n }\n return position;\n}\n\nexport const registerTotalLabel = () => {\n registerVGrammarLabel();\n registerLabelMark();\n registerComponentMark();\n Factory.registerComponent(TotalLabel.type, TotalLabel, true);\n};\n"]}
@@ -1,3 +1,4 @@
1
+ import type { WaterfallSeries } from './../../series/waterfall/waterfall';
1
2
  import type { Datum } from '../../typings/common';
2
3
  import type { ILabelInfo } from './label';
3
4
  import type { LabelItem, Strategy } from '@visactor/vrender-components';
@@ -48,7 +49,9 @@ export declare function pieLabel(labelInfo: ILabelInfo): {
48
49
  position: import("@visactor/vrender-components").Functional<string>;
49
50
  smartInvert: boolean | import("@visactor/vrender-components").SmartInvertAttrs;
50
51
  };
51
- export declare function stackLabel(labelInfo: ILabelInfo): {
52
+ export declare function stackLabelX(datum2: Datum, series: WaterfallSeries, pos: string, offset: number): number;
53
+ export declare function stackLabelY(datum2: Datum, series: WaterfallSeries, pos: string, offset: number): number;
54
+ export declare function stackLabel(labelInfo: ILabelInfo, datumTransform?: (data: any) => any, attributeTransform?: (label: LabelItem, datum: Datum, att: any) => any): {
52
55
  customLayoutFunc: (labels: LabelItem[]) => import("@visactor/vrender-core").IText[];
53
56
  dataFilter: (labels: LabelItem[]) => LabelItem[];
54
57
  overlap: {
@@ -126,15 +126,22 @@ export function pieLabel(labelInfo) {
126
126
  };
127
127
  }
128
128
 
129
- export function stackLabel(labelInfo) {
129
+ export function stackLabelX(datum2, series, pos, offset) {
130
+ return "horizontal" === series.direction ? "middle" === pos ? .5 * (series.totalPositionX(datum2, "end") + series.totalPositionY(datum2, "start")) : "max" === pos ? series.totalPositionX(datum2, datum2.end >= datum2.start ? "end" : "start") + offset : "min" === pos ? series.totalPositionX(datum2, datum2.end >= datum2.start ? "start" : "end") - offset : series.totalPositionX(datum2, "end") + (datum2.end >= datum2.start ? offset : -offset) : series.totalPositionX(datum2, "index", .5);
131
+ }
132
+
133
+ export function stackLabelY(datum2, series, pos, offset) {
134
+ return "horizontal" === series.direction ? series.totalPositionY(datum2, "index", .5) : "middle" === pos ? .5 * (series.totalPositionY(datum2, "end") + series.totalPositionY(datum2, "start")) : "max" === pos ? series.totalPositionY(datum2, datum2.end >= datum2.start ? "end" : "start") - offset : "min" === pos ? series.totalPositionY(datum2, datum2.end >= datum2.start ? "start" : "end") + offset : series.totalPositionY(datum2, "end") + (datum2.end >= datum2.start ? -offset : offset);
135
+ }
136
+
137
+ export function stackLabel(labelInfo, datumTransform, attributeTransform) {
130
138
  const series = labelInfo.series, labelSpec = labelInfo.labelSpec || {}, totalData = series.getTotalData();
131
139
  return {
132
140
  customLayoutFunc: labels => labels.map((label => {
133
- const pos = labelSpec.position || "withChange", offset = labelSpec.offset || 0, datum = label.data, attribute = textAttribute(labelInfo, datum, labelSpec.formatMethod);
134
- return attribute.x = (datum => "horizontal" === series.direction ? "middle" === pos ? .5 * (series.totalPositionX(datum, "end") + series.totalPositionY(datum, "start")) : "max" === pos ? series.totalPositionX(datum, datum.end >= datum.start ? "end" : "start") + offset : "min" === pos ? series.totalPositionX(datum, datum.end >= datum.start ? "start" : "end") - offset : series.totalPositionX(datum, "end") + (datum.end >= datum.start ? offset : -offset) : series.totalPositionX(datum, "index", .5))(datum),
135
- attribute.y = (datum => "horizontal" === series.direction ? series.totalPositionY(datum, "index", .5) : "middle" === pos ? .5 * (series.totalPositionY(datum, "end") + series.totalPositionY(datum, "start")) : "max" === pos ? series.totalPositionY(datum, datum.end >= datum.start ? "end" : "start") - offset : "min" === pos ? series.totalPositionY(datum, datum.end >= datum.start ? "start" : "end") + offset : series.totalPositionY(datum, "end") + (datum.end >= datum.start ? -offset : offset))(datum),
141
+ const pos = labelSpec.position || "withChange", offset = labelSpec.offset || 0, datum = datumTransform ? datumTransform(label.data) : label.data, attribute = textAttribute(labelInfo, datum, labelSpec.formatMethod);
142
+ return attribute.x = stackLabelX(datum, series, pos, offset), attribute.y = stackLabelY(datum, series, pos, offset),
136
143
  "horizontal" === series.direction ? attribute.textAlign = "middle" === pos ? "center" : "withChange" === pos && datum.end - datum.start >= 0 || "max" === pos ? "left" : "right" : attribute.textBaseline = "middle" === pos ? pos : "withChange" === pos && datum.end - datum.start >= 0 || "max" === pos ? "bottom" : "top",
137
- createText(Object.assign(Object.assign({}, attribute), {
144
+ null == attributeTransform || attributeTransform(label, datum, attribute), createText(Object.assign(Object.assign({}, attribute), {
138
145
  id: label.id
139
146
  }));
140
147
  })),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/label/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import type { WaterfallSeries } from './../../series/waterfall/waterfall';\nimport type { Datum } from '../../typings/common';\nimport { Direction } from '../../typings/space';\nimport type { ILabelInfo } from './label';\nimport type { BaseLabelAttrs, LabelItem, OverlapAttrs, Strategy } from '@visactor/vrender-components';\nimport type { ICartesianSeries } from '../../series/interface';\nimport { isBoolean, isFunction, isObject, isString } from '@visactor/vutils';\nimport { createText } from '@visactor/vrender-core';\nimport type { IWaterfallSeriesSpec } from '../../series/waterfall/interface';\nimport type { ILabelSpec } from './interface';\nimport { getFormatFunction } from '../util';\n\nexport const labelRuleMap = {\n rect: barLabel,\n symbol: symbolLabel,\n arc: pieLabel,\n point: pointLabel,\n 'line-data': lineDataLabel,\n stackLabel: stackLabel,\n line: LineLabel,\n area: LineLabel,\n rect3d: barLabel,\n arc3d: pieLabel,\n treemap: treemapLabel\n};\n\nexport function defaultLabelConfig(rule: string, labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n if (labelSpec.overlap && !isObject(labelSpec.overlap)) {\n labelSpec.overlap = {};\n }\n const processor = labelRuleMap[rule] ?? labelRuleMap.point;\n return processor(labelInfo);\n}\n\nexport function textAttribute(\n labelInfo: ILabelInfo,\n datum: Datum,\n formatMethod?: ILabelSpec['formatMethod'],\n formatter?: ILabelSpec['formatter']\n) {\n const { labelMark, series } = labelInfo;\n const field = series.getMeasureField()[0];\n const textAttribute = { text: datum[field], data: datum, textType: labelInfo.labelSpec.textType ?? 'text' } as any;\n\n const attributes = Object.keys(labelMark.stateStyle.normal);\n\n for (const key of attributes) {\n const attr = labelMark.getAttribute(key as any, datum);\n textAttribute[key] = attr;\n }\n\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, textAttribute.text, datum);\n if (formatFunc) {\n textAttribute.text = formatFunc(...args, { series });\n }\n\n return textAttribute;\n}\n\nfunction uniformLabelPosition(position?: ILabelSpec['position']) {\n if (isFunction(position)) {\n return (datum: Datum) => {\n return position(datum.data);\n };\n }\n return position;\n}\n\n/**\n * symbol 图元标签规则。\n */\nexport function symbolLabel(labelInfo: ILabelInfo) {\n const { series, labelSpec } = labelInfo;\n\n // encode position config\n const defaultPosition = (series as ICartesianSeries).direction === 'horizontal' ? 'right' : 'top';\n const position = uniformLabelPosition(labelSpec.position) ?? defaultPosition;\n\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n strategy: (labelSpec.overlap as OverlapAttrs)?.strategy ?? symbolLabelOverlapStrategy(),\n avoidBaseMark: position !== 'center'\n };\n }\n\n return { position, overlap };\n}\n\nexport function lineDataLabel(labelInfo: ILabelInfo) {\n const result = symbolLabel(labelInfo);\n if (!isBoolean(result.overlap)) {\n result.overlap.avoidBaseMark = false;\n }\n return result;\n}\n\nfunction symbolLabelOverlapStrategy() {\n const strategy: Strategy[] = [\n {\n type: 'position',\n position: ['top', 'bottom', 'right', 'left', 'top-right', 'top-left', 'bottom-left', 'bottom-right']\n }\n ];\n\n return strategy;\n}\n\n/**\n *\n */\nexport function barLabel(labelInfo: ILabelInfo) {\n const { series, labelSpec = {} as ILabelSpec } = labelInfo;\n\n // encode position config\n const originPosition = uniformLabelPosition(labelSpec.position) ?? 'outside';\n const direction = (series as ICartesianSeries).direction ?? 'vertical';\n const isInverse =\n (series as ICartesianSeries).direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n\n let position = originPosition as BaseLabelAttrs['position'];\n\n if (isString(originPosition) && originPosition === 'outside') {\n position = (data: Datum) => {\n const { data: datum } = data;\n const dataField = series.getMeasureField()[0];\n const positionMap = { vertical: ['top', 'bottom'], horizontal: ['right', 'left'] };\n const index = (datum?.[dataField] >= 0 && isInverse) || (datum?.[dataField] < 0 && !isInverse) ? 1 : 0;\n return positionMap[direction][index];\n };\n }\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n strategy: (labelSpec.overlap as OverlapAttrs)?.strategy ?? barLabelOverlapStrategy(series as ICartesianSeries)\n };\n }\n\n // encode smartInvert\n let smartInvert = false;\n if (isString(originPosition) && originPosition.includes('inside')) {\n smartInvert = true;\n }\n\n return { position, overlap, smartInvert };\n}\n\nfunction barLabelOverlapStrategy(series: ICartesianSeries) {\n const strategy: Strategy[] = [\n {\n type: 'position',\n position: (data: any) => {\n const { data: datum } = data;\n const dataField = series.getMeasureField()[0];\n const isInverse =\n (series as ICartesianSeries).direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n if (isInverse) {\n if (datum?.[dataField] >= 0) {\n return series.direction === 'horizontal' ? ['left', 'inside-left'] : ['bottom', 'inside-bottom'];\n }\n return series.direction === 'horizontal' ? ['right', 'inside-right'] : ['top', 'inside-top'];\n }\n if (datum?.[dataField] >= 0) {\n return series.direction === 'horizontal' ? ['right', 'inside-right'] : ['top', 'inside-top'];\n }\n return series.direction === 'horizontal' ? ['left', 'inside-left'] : ['bottom', 'inside-bottom'];\n }\n }\n ];\n\n return strategy;\n}\n\n/**\n * 无关图元,指定x/y坐标的标签配置规则\n */\nexport function pointLabel(labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n avoidBaseMark: false\n };\n }\n\n return { position: 'center', overlap };\n}\n\n/**\n * pie 图元标签配置规则\n */\n\nexport function pieLabel(labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n // encode position config\n const labelPosition = uniformLabelPosition(labelSpec.position) ?? 'outside';\n const position = labelPosition as BaseLabelAttrs['position'];\n\n // encode smartInvert\n let smartInvert;\n if (labelSpec.smartInvert) {\n smartInvert = labelSpec.smartInvert;\n } else {\n smartInvert = isString(labelPosition) && labelPosition.includes('inside');\n }\n\n return { position, smartInvert };\n}\n\n/**\n * 瀑布图堆积标签配置规则\n */\n\nexport function stackLabel(labelInfo: ILabelInfo) {\n const series = labelInfo.series as WaterfallSeries;\n const labelSpec = labelInfo.labelSpec || ({} as IWaterfallSeriesSpec['stackLabel']);\n const totalData = series.getTotalData();\n return {\n customLayoutFunc: (labels: LabelItem[]) => {\n return labels.map(label => {\n const pos = labelSpec.position || 'withChange';\n const offset = labelSpec.offset || 0;\n\n const datum = label.data;\n const attribute = textAttribute(labelInfo, datum, labelSpec.formatMethod);\n const x = (datum: any) => {\n if (series.direction === Direction.horizontal) {\n if (pos === 'middle') {\n return (series.totalPositionX(datum, 'end') + series.totalPositionY(datum, 'start')) * 0.5;\n } else if (pos === 'max') {\n return series.totalPositionX(datum, datum.end >= datum.start ? 'end' : 'start') + offset;\n } else if (pos === 'min') {\n return series.totalPositionX(datum, datum.end >= datum.start ? 'start' : 'end') - offset;\n }\n return series.totalPositionX(datum, 'end') + (datum.end >= datum.start ? offset : -offset);\n }\n return series.totalPositionX(datum, 'index', 0.5);\n };\n const y = (datum: any) => {\n if (series.direction === Direction.horizontal) {\n return series.totalPositionY(datum, 'index', 0.5);\n }\n if (pos === 'middle') {\n return (series.totalPositionY(datum, 'end') + series.totalPositionY(datum, 'start')) * 0.5;\n } else if (pos === 'max') {\n return series.totalPositionY(datum, datum.end >= datum.start ? 'end' : 'start') - offset;\n } else if (pos === 'min') {\n return series.totalPositionY(datum, datum.end >= datum.start ? 'start' : 'end') + offset;\n }\n return series.totalPositionY(datum, 'end') + (datum.end >= datum.start ? -offset : offset);\n };\n attribute.x = x(datum);\n attribute.y = y(datum);\n if (series.direction === Direction.horizontal) {\n attribute.textAlign =\n pos === 'middle'\n ? 'center'\n : (pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max'\n ? 'left'\n : 'right';\n } else {\n attribute.textBaseline =\n pos === 'middle'\n ? pos\n : (pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max'\n ? 'bottom'\n : 'top';\n }\n return createText({ ...attribute, id: label.id });\n });\n },\n dataFilter: (labels: LabelItem[]) => {\n const result: LabelItem[] = [];\n totalData.forEach((total: any) => {\n const label = labels.find(labelItem => {\n return total.index === labelItem.data?.[series.getDimensionField()[0]];\n });\n if (label) {\n label.data = total;\n result.push(label);\n }\n });\n return result;\n },\n overlap: {\n strategy: [] as any\n }\n };\n}\n\n/**\n * treemap 非叶子节点标签配置规则\n */\nexport function treemapLabel(labelInfo: ILabelInfo) {\n return {\n customLayoutFunc: (labels: LabelItem[], text: any) => text,\n overlap: false\n };\n}\n\n/**\n * line 图元标签\n */\n\nexport function LineLabel(labelInfo: ILabelInfo) {\n const { labelSpec, series } = labelInfo;\n\n const seriesData = series.getViewDataStatistics?.().latestData?.[series.getSeriesField()]?.values;\n const data = seriesData ? seriesData.map((d: Datum, index: number) => ({ [series.getSeriesField()]: d, index })) : [];\n return { position: labelSpec.position ?? 'end', data };\n}\n"]}
1
+ {"version":3,"sources":["../src/component/label/util.ts"],"names":[],"mappings":"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","file":"util.js","sourcesContent":["import type { WaterfallSeries } from './../../series/waterfall/waterfall';\nimport type { Datum } from '../../typings/common';\nimport { Direction } from '../../typings/space';\nimport type { ILabelInfo } from './label';\nimport type { BaseLabelAttrs, LabelItem, OverlapAttrs, Strategy } from '@visactor/vrender-components';\nimport type { ICartesianSeries } from '../../series/interface';\nimport { isBoolean, isFunction, isObject, isString } from '@visactor/vutils';\nimport { createText } from '@visactor/vrender-core';\nimport type { IWaterfallSeriesSpec } from '../../series/waterfall/interface';\nimport type { ILabelSpec } from './interface';\nimport { getFormatFunction } from '../util';\n\nexport const labelRuleMap = {\n rect: barLabel,\n symbol: symbolLabel,\n arc: pieLabel,\n point: pointLabel,\n 'line-data': lineDataLabel,\n stackLabel: stackLabel,\n line: LineLabel,\n area: LineLabel,\n rect3d: barLabel,\n arc3d: pieLabel,\n treemap: treemapLabel\n};\n\nexport function defaultLabelConfig(rule: string, labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n if (labelSpec.overlap && !isObject(labelSpec.overlap)) {\n labelSpec.overlap = {};\n }\n const processor = labelRuleMap[rule] ?? labelRuleMap.point;\n return processor(labelInfo);\n}\n\nexport function textAttribute(\n labelInfo: ILabelInfo,\n datum: Datum,\n formatMethod?: ILabelSpec['formatMethod'],\n formatter?: ILabelSpec['formatter']\n) {\n const { labelMark, series } = labelInfo;\n const field = series.getMeasureField()[0];\n const textAttribute = { text: datum[field], data: datum, textType: labelInfo.labelSpec.textType ?? 'text' } as any;\n\n const attributes = Object.keys(labelMark.stateStyle.normal);\n\n for (const key of attributes) {\n const attr = labelMark.getAttribute(key as any, datum);\n textAttribute[key] = attr;\n }\n\n const { formatFunc, args } = getFormatFunction(formatMethod, formatter, textAttribute.text, datum);\n if (formatFunc) {\n textAttribute.text = formatFunc(...args, { series });\n }\n\n return textAttribute;\n}\n\nfunction uniformLabelPosition(position?: ILabelSpec['position']) {\n if (isFunction(position)) {\n return (datum: Datum) => {\n return position(datum.data);\n };\n }\n return position;\n}\n\n/**\n * symbol 图元标签规则。\n */\nexport function symbolLabel(labelInfo: ILabelInfo) {\n const { series, labelSpec } = labelInfo;\n\n // encode position config\n const defaultPosition = (series as ICartesianSeries).direction === 'horizontal' ? 'right' : 'top';\n const position = uniformLabelPosition(labelSpec.position) ?? defaultPosition;\n\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n strategy: (labelSpec.overlap as OverlapAttrs)?.strategy ?? symbolLabelOverlapStrategy(),\n avoidBaseMark: position !== 'center'\n };\n }\n\n return { position, overlap };\n}\n\nexport function lineDataLabel(labelInfo: ILabelInfo) {\n const result = symbolLabel(labelInfo);\n if (!isBoolean(result.overlap)) {\n result.overlap.avoidBaseMark = false;\n }\n return result;\n}\n\nfunction symbolLabelOverlapStrategy() {\n const strategy: Strategy[] = [\n {\n type: 'position',\n position: ['top', 'bottom', 'right', 'left', 'top-right', 'top-left', 'bottom-left', 'bottom-right']\n }\n ];\n\n return strategy;\n}\n\n/**\n *\n */\nexport function barLabel(labelInfo: ILabelInfo) {\n const { series, labelSpec = {} as ILabelSpec } = labelInfo;\n\n // encode position config\n const originPosition = uniformLabelPosition(labelSpec.position) ?? 'outside';\n const direction = (series as ICartesianSeries).direction ?? 'vertical';\n const isInverse =\n (series as ICartesianSeries).direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n\n let position = originPosition as BaseLabelAttrs['position'];\n\n if (isString(originPosition) && originPosition === 'outside') {\n position = (data: Datum) => {\n const { data: datum } = data;\n const dataField = series.getMeasureField()[0];\n const positionMap = { vertical: ['top', 'bottom'], horizontal: ['right', 'left'] };\n const index = (datum?.[dataField] >= 0 && isInverse) || (datum?.[dataField] < 0 && !isInverse) ? 1 : 0;\n return positionMap[direction][index];\n };\n }\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n strategy: (labelSpec.overlap as OverlapAttrs)?.strategy ?? barLabelOverlapStrategy(series as ICartesianSeries)\n };\n }\n\n // encode smartInvert\n let smartInvert = false;\n if (isString(originPosition) && originPosition.includes('inside')) {\n smartInvert = true;\n }\n\n return { position, overlap, smartInvert };\n}\n\nfunction barLabelOverlapStrategy(series: ICartesianSeries) {\n const strategy: Strategy[] = [\n {\n type: 'position',\n position: (data: any) => {\n const { data: datum } = data;\n const dataField = series.getMeasureField()[0];\n const isInverse =\n (series as ICartesianSeries).direction === 'horizontal'\n ? (series as ICartesianSeries).getXAxisHelper()?.isInverse()\n : (series as ICartesianSeries).getYAxisHelper()?.isInverse();\n if (isInverse) {\n if (datum?.[dataField] >= 0) {\n return series.direction === 'horizontal' ? ['left', 'inside-left'] : ['bottom', 'inside-bottom'];\n }\n return series.direction === 'horizontal' ? ['right', 'inside-right'] : ['top', 'inside-top'];\n }\n if (datum?.[dataField] >= 0) {\n return series.direction === 'horizontal' ? ['right', 'inside-right'] : ['top', 'inside-top'];\n }\n return series.direction === 'horizontal' ? ['left', 'inside-left'] : ['bottom', 'inside-bottom'];\n }\n }\n ];\n\n return strategy;\n}\n\n/**\n * 无关图元,指定x/y坐标的标签配置规则\n */\nexport function pointLabel(labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n\n // encode overlap config\n let overlap;\n if (labelSpec.overlap === false) {\n overlap = false;\n } else {\n overlap = {\n avoidBaseMark: false\n };\n }\n\n return { position: 'center', overlap };\n}\n\n/**\n * pie 图元标签配置规则\n */\n\nexport function pieLabel(labelInfo: ILabelInfo) {\n const { labelSpec } = labelInfo;\n // encode position config\n const labelPosition = uniformLabelPosition(labelSpec.position) ?? 'outside';\n const position = labelPosition as BaseLabelAttrs['position'];\n\n // encode smartInvert\n let smartInvert;\n if (labelSpec.smartInvert) {\n smartInvert = labelSpec.smartInvert;\n } else {\n smartInvert = isString(labelPosition) && labelPosition.includes('inside');\n }\n\n return { position, smartInvert };\n}\n\n/**\n * 瀑布图堆积标签配置规则\n */\n\nexport function stackLabelX(datum2: Datum, series: WaterfallSeries, pos: string, offset: number) {\n if (series.direction === Direction.horizontal) {\n if (pos === 'middle') {\n return (series.totalPositionX(datum2, 'end') + series.totalPositionY(datum2, 'start')) * 0.5;\n } else if (pos === 'max') {\n return series.totalPositionX(datum2, datum2.end >= datum2.start ? 'end' : 'start') + offset;\n } else if (pos === 'min') {\n return series.totalPositionX(datum2, datum2.end >= datum2.start ? 'start' : 'end') - offset;\n }\n return series.totalPositionX(datum2, 'end') + (datum2.end >= datum2.start ? offset : -offset);\n }\n return series.totalPositionX(datum2, 'index', 0.5);\n}\nexport function stackLabelY(datum2: Datum, series: WaterfallSeries, pos: string, offset: number) {\n if (series.direction === Direction.horizontal) {\n return series.totalPositionY(datum2, 'index', 0.5);\n }\n if (pos === 'middle') {\n return (series.totalPositionY(datum2, 'end') + series.totalPositionY(datum2, 'start')) * 0.5;\n } else if (pos === 'max') {\n return series.totalPositionY(datum2, datum2.end >= datum2.start ? 'end' : 'start') - offset;\n } else if (pos === 'min') {\n return series.totalPositionY(datum2, datum2.end >= datum2.start ? 'start' : 'end') + offset;\n }\n return series.totalPositionY(datum2, 'end') + (datum2.end >= datum2.start ? -offset : offset);\n}\n\nexport function stackLabel(\n labelInfo: ILabelInfo,\n datumTransform?: (data: any) => any,\n attributeTransform?: (label: LabelItem, datum: Datum, att: any) => any\n) {\n const series = labelInfo.series as WaterfallSeries;\n const labelSpec = labelInfo.labelSpec || ({} as IWaterfallSeriesSpec['stackLabel']);\n const totalData = series.getTotalData();\n return {\n customLayoutFunc: (labels: LabelItem[]) => {\n return labels.map(label => {\n const pos = labelSpec.position || 'withChange';\n const offset = labelSpec.offset || 0;\n\n const datum = datumTransform ? datumTransform(label.data) : label.data;\n const attribute = textAttribute(labelInfo, datum, labelSpec.formatMethod);\n\n attribute.x = stackLabelX(datum, series, pos, offset);\n attribute.y = stackLabelY(datum, series, pos, offset);\n if (series.direction === Direction.horizontal) {\n attribute.textAlign =\n pos === 'middle'\n ? 'center'\n : (pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max'\n ? 'left'\n : 'right';\n } else {\n attribute.textBaseline =\n pos === 'middle'\n ? pos\n : (pos === 'withChange' && datum.end - datum.start >= 0) || pos === 'max'\n ? 'bottom'\n : 'top';\n }\n attributeTransform?.(label, datum, attribute);\n return createText({ ...attribute, id: label.id });\n });\n },\n dataFilter: (labels: LabelItem[]) => {\n const result: LabelItem[] = [];\n totalData.forEach((total: any) => {\n const label = labels.find(labelItem => {\n return total.index === labelItem.data?.[series.getDimensionField()[0]];\n });\n if (label) {\n label.data = total;\n result.push(label);\n }\n });\n return result;\n },\n overlap: {\n strategy: [] as any\n }\n };\n}\n\n/**\n * treemap 非叶子节点标签配置规则\n */\nexport function treemapLabel(labelInfo: ILabelInfo) {\n return {\n customLayoutFunc: (labels: LabelItem[], text: any) => text,\n overlap: false\n };\n}\n\n/**\n * line 图元标签\n */\n\nexport function LineLabel(labelInfo: ILabelInfo) {\n const { labelSpec, series } = labelInfo;\n\n const seriesData = series.getViewDataStatistics?.().latestData?.[series.getSeriesField()]?.values;\n const data = seriesData ? seriesData.map((d: Datum, index: number) => ({ [series.getSeriesField()]: d, index })) : [];\n return { position: labelSpec.position ?? 'end', data };\n}\n"]}
@@ -15,9 +15,9 @@ export declare function transformLegendTitleAttributes(title: ITitle): {
15
15
  visible?: boolean;
16
16
  style?: Omit<import("./interface").NoVisibleMarkStyle<import("../..").IRectMarkSpec>, "visible" | "width" | "height">;
17
17
  };
18
- text?: string | number | string[] | number[] | {
18
+ text?: string | number | number[] | string[] | {
19
19
  type?: "text";
20
- text: string | number | string[] | number[];
20
+ text: string | number | number[] | string[];
21
21
  } | {
22
22
  type: "rich";
23
23
  text: import("@visactor/vrender-core").IRichTextCharacter[];
@@ -64,5 +64,5 @@ export declare class Factory {
64
64
  static getComponentPlugins(): IComponentPluginConstructor[];
65
65
  static getComponentPluginInType(type: string): IComponentPluginConstructor;
66
66
  static registerFormatter(func: typeof Factory['_formatter']): void;
67
- static getFormatter(): (text: string | number | string[] | number[], datum: any, formatter: string | string[]) => any;
67
+ static getFormatter(): (text: string | number | number[] | string[], datum: any, formatter: string | string[]) => any;
68
68
  }
@@ -1,7 +1,7 @@
1
1
  import { VChart } from './vchart';
2
2
  import { Factory } from './factory';
3
3
  export { VChart, Factory };
4
- export declare const version = "1.10.5";
4
+ export declare const version = "1.10.6-alpha.1";
5
5
  export type { IVChart } from './interface';
6
6
  export type { IStateSpec, StateValueType } from '../compile/mark';
7
7
  export * from '../typings/spec/common';
package/esm/core/index.js CHANGED
@@ -4,7 +4,7 @@ import { Factory } from "./factory";
4
4
 
5
5
  export { VChart, Factory };
6
6
 
7
- export const version = "1.10.5";
7
+ export const version = "1.10.6-alpha.1";
8
8
 
9
9
  export * from "../typings/spec/common";
10
10
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAMhC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAK5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,cAAc,WAAW,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.10.5\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from '../constant';\nexport * from './interface';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport { vglobal } from '@visactor/vrender-core';\n\n// plugin\nexport * from '../plugin';\n"]}
1
+ {"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAG3B,MAAM,CAAC,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAMxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAK5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,cAAc,WAAW,CAAC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.10.6-alpha.1\";\n\n// export necessary types\nexport type { IVChart } from './interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\n\nexport * from '../typings/spec/common';\nexport * from '../event/interface';\nexport * from '../theme/interface';\nexport * from '../constant';\nexport * from './interface';\n\n/**\n * spec\n */\nexport * from '../typings/spec/index';\n\n// tooltip\nexport * from '../typings/tooltip';\n\n// theme\nexport * from '../theme/index';\n\n// vrender\nexport { vglobal } from '@visactor/vrender-core';\n\n// plugin\nexport * from '../plugin';\n"]}
@@ -4,6 +4,8 @@ import { WaterfallDefaultSeriesField } from "../../constant/waterfall";
4
4
 
5
5
  import { warn } from "../../util/debug";
6
6
 
7
+ import { STACK_FIELD_TOTAL_TOP } from "../../constant";
8
+
7
9
  export const waterfall = (lastData, op) => {
8
10
  if (!lastData || 0 === lastData.length) return lastData;
9
11
  const {indexField: indexField, total: totalSpec, groupData: groupData} = op, totalData = [], {dimensionValues: dimensionValues, dimensionData: dimensionData} = groupData().latestData, indexValues = Array.from(dimensionValues[indexField]);
@@ -21,7 +23,9 @@ export const waterfall = (lastData, op) => {
21
23
  index: key,
22
24
  isTotal: !1
23
25
  }, indexData = dimensionData[key];
24
- if (indexData.length > 1) {
26
+ if (null == indexData || indexData.forEach(((d, i) => {
27
+ i === indexData.length - 1 ? d[STACK_FIELD_TOTAL_TOP] = !0 : delete d[STACK_FIELD_TOTAL_TOP];
28
+ })), indexData.length > 1) {
25
29
  const isTotalCheck = d => {
26
30
  if (totalSpec && "end" !== totalSpec.type) {
27
31
  if ("field" === totalSpec.type || "custom" === totalSpec.type) {