@visactor/vchart 2.1.0-alpha.0 → 2.1.0-alpha.2

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 (262) hide show
  1. package/build/es5/index.js +3 -3
  2. package/build/index.es.js +2290 -473
  3. package/build/index.js +2290 -473
  4. package/build/index.min.js +2 -2
  5. package/build/tsconfig.tsbuildinfo +1 -1
  6. package/cjs/chart/base/base-chart-transformer.d.ts +3 -0
  7. package/cjs/chart/base/base-chart-transformer.js +21 -1
  8. package/cjs/chart/base/base-chart-transformer.js.map +1 -1
  9. package/cjs/chart/base/base-chart.d.ts +15 -9
  10. package/cjs/chart/base/base-chart.js +115 -24
  11. package/cjs/chart/base/base-chart.js.map +1 -1
  12. package/cjs/chart/interface/chart.d.ts +1 -0
  13. package/cjs/chart/interface/chart.js.map +1 -1
  14. package/cjs/chart/pie/base/pie-transformer.js +2 -2
  15. package/cjs/chart/pie/base/pie-transformer.js.map +1 -1
  16. package/cjs/chart/progress/circular/circular-progress-transformer.js +2 -2
  17. package/cjs/chart/progress/circular/circular-progress-transformer.js.map +1 -1
  18. package/cjs/chart/util.d.ts +4 -1
  19. package/cjs/chart/util.js +40 -4
  20. package/cjs/chart/util.js.map +1 -1
  21. package/cjs/chart/waterfall/waterfall-transformer.js +2 -1
  22. package/cjs/chart/waterfall/waterfall-transformer.js.map +1 -1
  23. package/cjs/compile/compiler.js +2 -2
  24. package/cjs/compile/compiler.js.map +1 -1
  25. package/cjs/compile/data/compilable-data.d.ts +1 -1
  26. package/cjs/compile/data/compilable-data.js +1 -1
  27. package/cjs/compile/data/compilable-data.js.map +1 -1
  28. package/cjs/compile/grammar-item.d.ts +1 -1
  29. package/cjs/compile/grammar-item.js.map +1 -1
  30. package/cjs/compile/interface/compilable-item.d.ts +1 -1
  31. package/cjs/compile/interface/compilable-item.js.map +1 -1
  32. package/cjs/component/axis/base-axis.d.ts +2 -7
  33. package/cjs/component/axis/base-axis.js +25 -3
  34. package/cjs/component/axis/base-axis.js.map +1 -1
  35. package/cjs/component/axis/cartesian/band-axis.d.ts +1 -7
  36. package/cjs/component/base/base-component.d.ts +7 -7
  37. package/cjs/component/base/base-component.js +41 -6
  38. package/cjs/component/base/base-component.js.map +1 -1
  39. package/cjs/component/base/release-vrender-component.d.ts +10 -0
  40. package/cjs/component/base/release-vrender-component.js +37 -0
  41. package/cjs/component/base/release-vrender-component.js.map +1 -0
  42. package/cjs/component/brush/brush.d.ts +2 -7
  43. package/cjs/component/brush/brush.js +3 -0
  44. package/cjs/component/brush/brush.js.map +1 -1
  45. package/cjs/component/crosshair/base.d.ts +1 -7
  46. package/cjs/component/custom-mark/custom-mark.d.ts +1 -7
  47. package/cjs/component/data-zoom/data-filter-base-component.d.ts +1 -7
  48. package/cjs/component/geo/geo-coordinate.d.ts +1 -7
  49. package/cjs/component/index.js +1 -2
  50. package/cjs/component/label/base-label.d.ts +1 -7
  51. package/cjs/component/label/label.js +1 -1
  52. package/cjs/component/label/label.js.map +1 -1
  53. package/cjs/component/legend/base-legend.d.ts +2 -7
  54. package/cjs/component/legend/base-legend.js +20 -3
  55. package/cjs/component/legend/base-legend.js.map +1 -1
  56. package/cjs/component/marker/base-marker.d.ts +7 -7
  57. package/cjs/component/marker/base-marker.js +23 -6
  58. package/cjs/component/marker/base-marker.js.map +1 -1
  59. package/cjs/component/marker/mark-line/base-mark-line.js +2 -4
  60. package/cjs/component/marker/mark-line/base-mark-line.js.map +1 -1
  61. package/cjs/component/title/title.d.ts +1 -7
  62. package/cjs/component/title/title.js +6 -2
  63. package/cjs/component/title/title.js.map +1 -1
  64. package/cjs/constant/attribute.js +2 -1
  65. package/cjs/constant/scatter.js +1 -2
  66. package/cjs/constant/waterfall.js +2 -1
  67. package/cjs/core/factory.js +1 -1
  68. package/cjs/core/index.js +1 -1
  69. package/cjs/core/vchart.d.ts +5 -1
  70. package/cjs/core/vchart.js +28 -12
  71. package/cjs/core/vchart.js.map +1 -1
  72. package/cjs/data/data-view-utils.d.ts +5 -0
  73. package/cjs/data/data-view-utils.js +58 -0
  74. package/cjs/data/data-view-utils.js.map +1 -0
  75. package/cjs/env/env.js +1 -1
  76. package/cjs/env/index.js +1 -1
  77. package/cjs/mark/base/base-mark.d.ts +12 -2
  78. package/cjs/mark/base/base-mark.js +85 -21
  79. package/cjs/mark/base/base-mark.js.map +1 -1
  80. package/cjs/mark/component.d.ts +9 -0
  81. package/cjs/mark/component.js +51 -3
  82. package/cjs/mark/component.js.map +1 -1
  83. package/cjs/mark/group.js +1 -1
  84. package/cjs/mark/group.js.map +1 -1
  85. package/cjs/mark/interface/mark.d.ts +2 -0
  86. package/cjs/mark/interface/mark.js.map +1 -1
  87. package/cjs/model/base-model.d.ts +3 -15
  88. package/cjs/model/base-model.js.map +1 -1
  89. package/cjs/model/interface.d.ts +13 -0
  90. package/cjs/model/interface.js.map +1 -1
  91. package/cjs/region/region.d.ts +1 -7
  92. package/cjs/series/area/area.d.ts +2 -0
  93. package/cjs/series/area/area.js +6 -0
  94. package/cjs/series/area/area.js.map +1 -1
  95. package/cjs/series/bar/bar.d.ts +3 -0
  96. package/cjs/series/bar/bar.js +30 -4
  97. package/cjs/series/bar/bar.js.map +1 -1
  98. package/cjs/series/base/base-series.d.ts +8 -7
  99. package/cjs/series/base/base-series.js +54 -13
  100. package/cjs/series/base/base-series.js.map +1 -1
  101. package/cjs/series/base/constant.d.ts +3 -0
  102. package/cjs/series/base/constant.js +9 -1
  103. package/cjs/series/base/constant.js.map +1 -1
  104. package/cjs/series/box-plot/box-plot.d.ts +2 -0
  105. package/cjs/series/box-plot/box-plot.js +14 -2
  106. package/cjs/series/box-plot/box-plot.js.map +1 -1
  107. package/cjs/series/heatmap/heatmap.d.ts +2 -0
  108. package/cjs/series/heatmap/heatmap.js +10 -0
  109. package/cjs/series/heatmap/heatmap.js.map +1 -1
  110. package/cjs/series/line/line.d.ts +2 -0
  111. package/cjs/series/line/line.js +6 -0
  112. package/cjs/series/line/line.js.map +1 -1
  113. package/cjs/series/mixin/line-mixin.d.ts +1 -0
  114. package/cjs/series/mixin/line-mixin.js +6 -1
  115. package/cjs/series/mixin/line-mixin.js.map +1 -1
  116. package/cjs/series/pie/pie.d.ts +3 -7
  117. package/cjs/series/pie/pie.js +16 -1
  118. package/cjs/series/pie/pie.js.map +1 -1
  119. package/cjs/series/progress/circular/circular.d.ts +2 -0
  120. package/cjs/series/progress/circular/circular.js +9 -1
  121. package/cjs/series/progress/circular/circular.js.map +1 -1
  122. package/cjs/series/progress/linear/linear.d.ts +2 -0
  123. package/cjs/series/progress/linear/linear.js +17 -1
  124. package/cjs/series/progress/linear/linear.js.map +1 -1
  125. package/cjs/series/scatter/scatter.d.ts +2 -0
  126. package/cjs/series/scatter/scatter.js +9 -1
  127. package/cjs/series/scatter/scatter.js.map +1 -1
  128. package/cjs/series/waterfall/waterfall.d.ts +2 -0
  129. package/cjs/series/waterfall/waterfall.js +10 -0
  130. package/cjs/series/waterfall/waterfall.js.map +1 -1
  131. package/cjs/util/graphic-state.d.ts +1 -0
  132. package/cjs/util/graphic-state.js +19 -4
  133. package/cjs/util/graphic-state.js.map +1 -1
  134. package/esm/chart/base/base-chart-transformer.d.ts +3 -0
  135. package/esm/chart/base/base-chart-transformer.js +22 -0
  136. package/esm/chart/base/base-chart-transformer.js.map +1 -1
  137. package/esm/chart/base/base-chart.d.ts +15 -9
  138. package/esm/chart/base/base-chart.js +111 -23
  139. package/esm/chart/base/base-chart.js.map +1 -1
  140. package/esm/chart/interface/chart.d.ts +1 -0
  141. package/esm/chart/interface/chart.js.map +1 -1
  142. package/esm/chart/pie/base/pie-transformer.js +2 -2
  143. package/esm/chart/pie/base/pie-transformer.js.map +1 -1
  144. package/esm/chart/progress/circular/circular-progress-transformer.js +2 -2
  145. package/esm/chart/progress/circular/circular-progress-transformer.js.map +1 -1
  146. package/esm/chart/util.d.ts +4 -1
  147. package/esm/chart/util.js +34 -1
  148. package/esm/chart/util.js.map +1 -1
  149. package/esm/chart/waterfall/waterfall-transformer.js +2 -1
  150. package/esm/chart/waterfall/waterfall-transformer.js.map +1 -1
  151. package/esm/compile/compiler.js +2 -2
  152. package/esm/compile/compiler.js.map +1 -1
  153. package/esm/compile/data/compilable-data.d.ts +1 -1
  154. package/esm/compile/data/compilable-data.js +1 -1
  155. package/esm/compile/data/compilable-data.js.map +1 -1
  156. package/esm/compile/grammar-item.d.ts +1 -1
  157. package/esm/compile/grammar-item.js.map +1 -1
  158. package/esm/compile/interface/compilable-item.d.ts +1 -1
  159. package/esm/compile/interface/compilable-item.js.map +1 -1
  160. package/esm/component/axis/base-axis.d.ts +2 -7
  161. package/esm/component/axis/base-axis.js +25 -2
  162. package/esm/component/axis/base-axis.js.map +1 -1
  163. package/esm/component/axis/cartesian/band-axis.d.ts +1 -7
  164. package/esm/component/base/base-component.d.ts +7 -7
  165. package/esm/component/base/base-component.js +41 -5
  166. package/esm/component/base/base-component.js.map +1 -1
  167. package/esm/component/base/release-vrender-component.d.ts +10 -0
  168. package/esm/component/base/release-vrender-component.js +24 -0
  169. package/esm/component/base/release-vrender-component.js.map +1 -0
  170. package/esm/component/brush/brush.d.ts +2 -7
  171. package/esm/component/brush/brush.js +3 -0
  172. package/esm/component/brush/brush.js.map +1 -1
  173. package/esm/component/crosshair/base.d.ts +1 -7
  174. package/esm/component/custom-mark/custom-mark.d.ts +1 -7
  175. package/esm/component/data-zoom/data-filter-base-component.d.ts +1 -7
  176. package/esm/component/geo/geo-coordinate.d.ts +1 -7
  177. package/esm/component/index.js +1 -2
  178. package/esm/component/label/base-label.d.ts +1 -7
  179. package/esm/component/label/label.js +1 -1
  180. package/esm/component/label/label.js.map +1 -1
  181. package/esm/component/legend/base-legend.d.ts +2 -7
  182. package/esm/component/legend/base-legend.js +20 -2
  183. package/esm/component/legend/base-legend.js.map +1 -1
  184. package/esm/component/marker/base-marker.d.ts +7 -7
  185. package/esm/component/marker/base-marker.js +24 -5
  186. package/esm/component/marker/base-marker.js.map +1 -1
  187. package/esm/component/marker/mark-line/base-mark-line.js +2 -4
  188. package/esm/component/marker/mark-line/base-mark-line.js.map +1 -1
  189. package/esm/component/title/title.d.ts +1 -7
  190. package/esm/component/title/title.js +6 -2
  191. package/esm/component/title/title.js.map +1 -1
  192. package/esm/constant/attribute.js +2 -1
  193. package/esm/constant/scatter.js +1 -2
  194. package/esm/constant/waterfall.js +2 -1
  195. package/esm/core/factory.js +1 -1
  196. package/esm/core/index.js +1 -1
  197. package/esm/core/vchart.d.ts +5 -1
  198. package/esm/core/vchart.js +29 -12
  199. package/esm/core/vchart.js.map +1 -1
  200. package/esm/data/data-view-utils.d.ts +5 -0
  201. package/esm/data/data-view-utils.js +46 -0
  202. package/esm/data/data-view-utils.js.map +1 -0
  203. package/esm/env/env.js +1 -1
  204. package/esm/env/index.js +1 -1
  205. package/esm/mark/base/base-mark.d.ts +12 -2
  206. package/esm/mark/base/base-mark.js +85 -20
  207. package/esm/mark/base/base-mark.js.map +1 -1
  208. package/esm/mark/component.d.ts +9 -0
  209. package/esm/mark/component.js +51 -2
  210. package/esm/mark/component.js.map +1 -1
  211. package/esm/mark/group.js +1 -1
  212. package/esm/mark/group.js.map +1 -1
  213. package/esm/mark/interface/mark.d.ts +2 -0
  214. package/esm/mark/interface/mark.js.map +1 -1
  215. package/esm/model/base-model.d.ts +3 -15
  216. package/esm/model/base-model.js.map +1 -1
  217. package/esm/model/interface.d.ts +13 -0
  218. package/esm/model/interface.js.map +1 -1
  219. package/esm/region/region.d.ts +1 -7
  220. package/esm/series/area/area.d.ts +2 -0
  221. package/esm/series/area/area.js +7 -1
  222. package/esm/series/area/area.js.map +1 -1
  223. package/esm/series/bar/bar.d.ts +3 -0
  224. package/esm/series/bar/bar.js +30 -4
  225. package/esm/series/bar/bar.js.map +1 -1
  226. package/esm/series/base/base-series.d.ts +8 -7
  227. package/esm/series/base/base-series.js +50 -11
  228. package/esm/series/base/base-series.js.map +1 -1
  229. package/esm/series/base/constant.d.ts +3 -0
  230. package/esm/series/base/constant.js +10 -0
  231. package/esm/series/base/constant.js.map +1 -1
  232. package/esm/series/box-plot/box-plot.d.ts +2 -0
  233. package/esm/series/box-plot/box-plot.js +13 -2
  234. package/esm/series/box-plot/box-plot.js.map +1 -1
  235. package/esm/series/heatmap/heatmap.d.ts +2 -0
  236. package/esm/series/heatmap/heatmap.js +10 -0
  237. package/esm/series/heatmap/heatmap.js.map +1 -1
  238. package/esm/series/line/line.d.ts +2 -0
  239. package/esm/series/line/line.js +7 -1
  240. package/esm/series/line/line.js.map +1 -1
  241. package/esm/series/mixin/line-mixin.d.ts +1 -0
  242. package/esm/series/mixin/line-mixin.js +5 -0
  243. package/esm/series/mixin/line-mixin.js.map +1 -1
  244. package/esm/series/pie/pie.d.ts +3 -7
  245. package/esm/series/pie/pie.js +17 -0
  246. package/esm/series/pie/pie.js.map +1 -1
  247. package/esm/series/progress/circular/circular.d.ts +2 -0
  248. package/esm/series/progress/circular/circular.js +10 -0
  249. package/esm/series/progress/circular/circular.js.map +1 -1
  250. package/esm/series/progress/linear/linear.d.ts +2 -0
  251. package/esm/series/progress/linear/linear.js +18 -0
  252. package/esm/series/progress/linear/linear.js.map +1 -1
  253. package/esm/series/scatter/scatter.d.ts +2 -0
  254. package/esm/series/scatter/scatter.js +10 -0
  255. package/esm/series/scatter/scatter.js.map +1 -1
  256. package/esm/series/waterfall/waterfall.d.ts +2 -0
  257. package/esm/series/waterfall/waterfall.js +10 -0
  258. package/esm/series/waterfall/waterfall.js.map +1 -1
  259. package/esm/util/graphic-state.d.ts +1 -0
  260. package/esm/util/graphic-state.js +16 -3
  261. package/esm/util/graphic-state.js.map +1 -1
  262. package/package.json +11 -10
@@ -58,6 +58,15 @@ import { bar } from "../../theme/builtin/common/series/bar";
58
58
 
59
59
  export const DefaultBandWidth = 6;
60
60
 
61
+ const BAR_SERIES_COMPILE_ONLY_KEYS = {
62
+ barWidth: !0,
63
+ barMinWidth: !0,
64
+ barMaxWidth: !0,
65
+ barGapInGroup: !0,
66
+ barMinHeight: !0,
67
+ stackCornerRadius: !0
68
+ };
69
+
61
70
  export class BarSeries extends CartesianSeries {
62
71
  constructor() {
63
72
  super(...arguments), this.type = SeriesTypeEnum.bar, this._barMarkName = "bar",
@@ -112,6 +121,12 @@ export class BarSeries extends CartesianSeries {
112
121
  this._barBackgroundPositionYEncoder = encoder.bind(this);
113
122
  };
114
123
  }
124
+ _getSpecUpdatePolicy() {
125
+ const policy = super._getSpecUpdatePolicy();
126
+ return Object.assign(Object.assign({}, policy), {
127
+ compileOnlyKeys: Object.assign(Object.assign({}, policy.compileOnlyKeys), BAR_SERIES_COMPILE_ONLY_KEYS)
128
+ });
129
+ }
115
130
  initMark() {
116
131
  this._initBarBackgroundMark(), this._barMark = this._createMark(Object.assign(Object.assign({}, BarSeries.mark.bar), {
117
132
  name: this._barMarkName,
@@ -133,7 +148,13 @@ export class BarSeries extends CartesianSeries {
133
148
  initMarkStyle() {
134
149
  this._barMark && this.setMarkStyle(this._barMark, {
135
150
  fill: this.getColorAttribute()
136
- }, "normal", AttributeLevel.Series);
151
+ }, "normal", AttributeLevel.Series), this.initRectMarkStyle();
152
+ }
153
+ initRectMarkStyle() {
154
+ var _a;
155
+ if (!this._barMark) return;
156
+ const bandAxisHelper = "vertical" === this.direction ? this._xAxisHelper : this._yAxisHelper, scale = null === (_a = null == bandAxisHelper ? void 0 : bandAxisHelper.getScale) || void 0 === _a ? void 0 : _a.call(bandAxisHelper, 0);
157
+ scale && ("band" === scale.type ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle());
137
158
  }
138
159
  initLabelMarkStyle(textMark) {
139
160
  textMark && this.setMarkStyle(textMark, {
@@ -215,8 +236,7 @@ export class BarSeries extends CartesianSeries {
215
236
  this._barBackgroundViewData = new CompilableData(this._option, barBackgroundData);
216
237
  }
217
238
  init(option) {
218
- var _a, _b;
219
- super.init(option), "vertical" === this.direction ? "band" === (null === (_a = this._xAxisHelper) || void 0 === _a ? void 0 : _a.getScale(0).type) ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle() : "band" === (null === (_b = this._yAxisHelper) || void 0 === _b ? void 0 : _b.getScale(0).type) ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();
239
+ super.init(option), this.initRectMarkStyle();
220
240
  }
221
241
  _shouldDoPreCalculate() {
222
242
  const region = this.getRegion();
@@ -284,7 +304,13 @@ export class BarSeries extends CartesianSeries {
284
304
  }
285
305
  _initStackBarMarkStyle() {
286
306
  var _a, _b, _c, _d;
287
- if (!this._spec.stackCornerRadius) return;
307
+ if (!this._spec.stackCornerRadius) {
308
+ const markConfig = this._barMark.getMarkConfig();
309
+ return void (!markConfig.clip && isNil(markConfig.clipPath) || this._barMark.setMarkConfig({
310
+ clip: !1,
311
+ clipPath: []
312
+ }));
313
+ }
288
314
  const xScale = null === (_b = null === (_a = this._xAxisHelper) || void 0 === _a ? void 0 : _a.getScale) || void 0 === _b ? void 0 : _b.call(_a, 0), yScale = null === (_d = null === (_c = this._yAxisHelper) || void 0 === _c ? void 0 : _c.getScale) || void 0 === _d ? void 0 : _d.call(_c, 0), isVertical = "vertical" === this.direction;
289
315
  this._barMark.setMarkConfig({
290
316
  clip: !0,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/series/bar/bar.ts"],"names":[],"mappings":"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","file":"bar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IBaseScale } from '@visactor/vscale';\nimport { isContinuous } from '@visactor/vscale';\nimport { Direction } from '../../typings/space';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { IMark, IRectMark, ITextMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport {\n DEFAULT_DATA_KEY,\n STACK_FIELD_END,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_START,\n STACK_FIELD_START_PERCENT\n} from '../../constant/data';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { Datum, DirectionType } from '../../typings';\nimport { isValueInScaleDomain, valueInScaleRange } from '../../util/scale';\nimport { getRegionStackGroup } from '../../util/data';\nimport { getActualNumValue } from '../../util/space';\nimport { registerBarAnimation } from './animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport type { BarAppearPreset, IBarAnimationParams, IBarSeriesSpec, IBarSeriesTheme } from './interface';\nimport type { IAxisHelper } from '../../component/axis/cartesian/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport { registerRectMark } from '../../mark/rect';\nimport { array, isFunction, isNil, isValid, last } from '@visactor/vutils';\nimport { barSeriesMark } from './constant';\nimport { stackWithMinHeight } from '../util/stack';\nimport { Factory } from '../../core/factory';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { DataView } from '@visactor/vdataset';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { BarSeriesSpecTransformer } from './bar-transformer';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { RECT_X, RECT_X1, RECT_Y, RECT_Y1 } from '../base/constant';\nimport { createRect } from '@visactor/vrender-core';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport type { ICompilableData } from '../../compile/data';\nimport { CompilableData } from '../../compile/data';\nimport { registerDataSamplingTransform } from '../../mark/transform/data-sampling';\nimport { maxInArr, minInArr } from '../../util/array';\nimport { bar } from '../../theme/builtin/common/series/bar';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class BarSeries<T extends IBarSeriesSpec = IBarSeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.bar;\n type: string = SeriesTypeEnum.bar;\n protected _barMarkName: string = SeriesMarkNameEnum.bar;\n protected _barMarkType: string = MarkTypeEnum.rect;\n\n static readonly builtInTheme: Record<string, IBarSeriesTheme> = { bar };\n static readonly mark: SeriesMarkMap = barSeriesMark;\n static readonly transformerConstructor = BarSeriesSpecTransformer as any;\n readonly transformerConstructor = BarSeriesSpecTransformer;\n\n protected _bandPosition = 0;\n protected _barMark!: IRectMark;\n protected _barBackgroundMark!: IRectMark;\n\n protected _barBackgroundViewData: ICompilableData;\n\n initMark(): void {\n this._initBarBackgroundMark();\n\n this._barMark = this._createMark(\n {\n ...BarSeries.mark.bar,\n name: this._barMarkName,\n type: this._barMarkType\n },\n {\n groupKey: this._seriesField,\n isSeriesMark: true\n },\n {\n morphElementKey: this.getDimensionField()[0],\n morph: shouldMarkDoMorph(this._spec, this._barMarkName)\n }\n ) as IRectMark;\n }\n\n protected _initBarBackgroundMark(): void {\n if (this._spec.barBackground && this._spec.barBackground.visible) {\n this._barBackgroundMark = this._createMark(BarSeries.mark.barBackground, {\n dataView: this._barBackgroundViewData.getDataView(),\n dataProductId: this._barBackgroundViewData.getProductId()\n }) as IRectMark;\n }\n }\n\n initMarkStyle(): void {\n if (this._barMark) {\n this.setMarkStyle(\n this._barMark,\n {\n fill: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getStackValueField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n protected initTooltip() {\n super.initTooltip();\n const { mark, group } = this._tooltipHelper.activeTriggerSet;\n if (this._barMark) {\n mark.add(this._barMark);\n group.add(this._barMark);\n }\n }\n\n protected _statisticViewData(): void {\n super._statisticViewData();\n\n const spec = this._spec.barBackground ?? {};\n if (!spec.visible) {\n return;\n }\n\n const hasBandAxis = this._getRelatedComponentSpecInfo('axes').some(\n axisInfo => axisInfo.type === ComponentTypeEnum.cartesianBandAxis\n );\n\n let barBackgroundData: DataView;\n registerDataSetInstanceTransform(this._option.dataSet, 'addVChartProperty', addVChartProperty);\n\n if (hasBandAxis) {\n type DimensionItemsConfig = { scaleDepth?: number };\n\n /**\n * @description 准备 barBackground 数据(离散轴)\n */\n const dimensionItems = ([data]: DataView[], { scaleDepth }: DimensionItemsConfig) => {\n let dataCollect: Datum[] = [{}];\n const fields = this.getDimensionField();\n // 将维度轴的所有层级 field 的对应数据做笛卡尔积\n const depth = isNil(scaleDepth) ? fields.length : Math.min(fields.length, scaleDepth);\n for (let i = 0; i < depth; i++) {\n const field = fields[i];\n const values = data.latestData[field]?.values;\n if (!values?.length) {\n continue;\n }\n const newDataCollect: Datum[] = [];\n const dataKey = (this._spec.dataKey as string) ?? DEFAULT_DATA_KEY;\n for (let j = 0; j < values.length; j++) {\n for (let k = 0; k < dataCollect.length; k++) {\n newDataCollect.push({\n ...dataCollect[k],\n [field]: values[j],\n [dataKey]: values[j]\n });\n }\n }\n dataCollect = newDataCollect;\n }\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([this._viewDataStatistics], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems',\n options: {\n scaleDepth: isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1\n } as DimensionItemsConfig\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._viewDataStatistics?.target.addListener('change', barBackgroundData.reRunAllTransform);\n } else {\n /**\n * @description 准备 barBackground 数据(连续轴)\n */\n const dimensionItems = ([data]: DataView[]) => {\n const dataCollect: Datum[] = [];\n const [field0, field1] = this.getDimensionContinuousField();\n const map: Record<string, Datum> = {};\n viewData.latestData.forEach((datum: Datum) => {\n const key = `${datum[field0]}-${datum[field1]}`;\n if (!map[key]) {\n map[key] = {\n [field0]: datum[field0],\n [field1]: datum[field1]\n };\n dataCollect.push(map[key]);\n }\n });\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n const viewData = this.getViewData();\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([viewData], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems'\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n viewData?.target.addListener('change', barBackgroundData.reRunAllTransform);\n }\n this._barBackgroundViewData = new CompilableData(this._option, barBackgroundData);\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n if (this.direction === 'vertical') {\n this._xAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n } else {\n this._yAxisHelper?.getScale(0).type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n }\n }\n\n private _shouldDoPreCalculate() {\n const region = this.getRegion();\n return this.getStack() && region.getSeries().filter(s => s.type === this.type && s.getSpec().barMinHeight).length;\n }\n\n private _calculateStackRectPosition(isVertical: boolean) {\n const region = this.getRegion();\n\n // @ts-ignore\n if (region._bar_series_position_calculated) {\n return;\n }\n // @ts-ignore\n region._bar_series_position_calculated = true; // 因为是 region 内堆叠矩形的计算,所以加一个 hack 标识位用于避免重复计算\n let start: string;\n let end: string;\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n start = RECT_Y1;\n end = RECT_Y;\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n start = RECT_X1;\n end = RECT_X;\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n // only reCompute bar\n const stackValueGroup = getRegionStackGroup(region, false, s => s.type === this.type);\n // 按照堆积逻辑 重新计算一次图形的堆积位置并设置到数据上\n for (const stackValue in stackValueGroup) {\n for (const key in stackValueGroup[stackValue].nodes) {\n stackWithMinHeight(stackValueGroup[stackValue].nodes[key], region.getStackInverse(), {\n isVertical,\n start,\n end,\n startMethod,\n endMethod,\n axisHelper\n });\n }\n }\n }\n\n private _calculateRectPosition(datum: Datum, isVertical: boolean, useWholeRange?: boolean) {\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n const seriesScale = this[axisHelper].getScale?.(0);\n const inverse = this[axisHelper].isInverse();\n const barMinHeight = this._spec.barMinHeight;\n const y1 = valueInScaleRange(this[startMethod](datum), seriesScale, useWholeRange);\n const y = valueInScaleRange(this[endMethod](datum), seriesScale, useWholeRange);\n let height = Math.abs(y1 - y);\n if (height <= 0 && !isValueInScaleDomain(datum[this.getStackValueField()], seriesScale)) {\n height = 0;\n } else if (height < barMinHeight) {\n height = barMinHeight;\n }\n\n let flag = 1;\n if (y < y1) {\n flag = -1;\n } else if (y === y1) {\n flag = isVertical ? (inverse ? 1 : -1) : inverse ? -1 : 1;\n }\n return y1 + flag * height;\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX(datum: Datum) {\n return this.dataToPositionX(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX1(datum: Datum) {\n return this.dataToPositionX1(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY(datum: Datum) {\n return this.dataToPositionY(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY1(datum: Datum) {\n return this.dataToPositionY1(datum);\n }\n\n protected _getLinearBarRange = (start: number, end: number) => {\n let [x, x1] = [start, end].sort((a, b) => a - b);\n const realBarWidth = x1 - x;\n if (this._spec.barGap) {\n const halfBarGap = this._spec.barGap * 0.5;\n const tempX = x + halfBarGap;\n const tempX1 = x1 - halfBarGap;\n x = tempX;\n x1 = tempX1;\n }\n\n const curBarWidth = x1 - x;\n const barMinWidth = getActualNumValue(this._spec.barMinWidth || 2, realBarWidth);\n if (curBarWidth < barMinWidth) {\n const widthDiff = barMinWidth - curBarWidth;\n const halfWidthDiff = widthDiff / 2;\n x -= halfWidthDiff;\n x1 += halfWidthDiff;\n }\n\n return [x, x1];\n };\n\n protected _getBarXStart = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, false, useWholeRange);\n }\n\n return valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n };\n\n protected _getBarXEnd = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X1];\n }\n\n return valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n };\n\n protected _getLinearBarXRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const x = valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n const x1 = valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n return this._getLinearBarRange(x, x1);\n };\n\n protected _getBarYStart = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, true);\n }\n\n return valueInScaleRange(this._dataToPosY(datum), scale);\n };\n\n protected _getBarYEnd = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y1];\n }\n\n return valueInScaleRange(this._dataToPosY1(datum), scale);\n };\n\n protected _getLinearBarYRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const y = valueInScaleRange(this._dataToPosY(datum), scale, useWholeRange);\n const y1 = valueInScaleRange(this._dataToPosY1(datum), scale, useWholeRange);\n return this._getLinearBarRange(y, y1);\n };\n\n initBandRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barMark,\n {\n x: datum => this._getBarXStart(datum, xScale),\n x1: datum => this._getBarXEnd(datum, xScale),\n y: datum => this._getPosition(this.direction, datum),\n height: () => this._getBarWidth(this._yAxisHelper),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barMark,\n {\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale),\n x: datum => this._getPosition(this.direction, datum),\n width: () => this._getBarWidth(this._xAxisHelper),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n this._initStackBarMarkStyle();\n\n this._initBandBarBackgroundMarkStyle();\n }\n\n protected _initStackBarMarkStyle() {\n if (!this._spec.stackCornerRadius) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const isVertical = this.direction === Direction.vertical;\n\n this._barMark.setMarkConfig({\n clip: true,\n clipPath: () => {\n const usePreCalculatedRect = !!this._shouldDoPreCalculate();\n if (usePreCalculatedRect) {\n this._calculateStackRectPosition(isVertical);\n }\n const rectPaths: any[] = [];\n this._forEachStackGroup(node => {\n let min = Infinity;\n let max = -Infinity;\n let rectMin = Infinity;\n let rectMax = -Infinity;\n let hasPercent = false;\n let minPercent = Infinity;\n let maxPercent = -Infinity;\n node.values.forEach(datum => {\n const start = datum[STACK_FIELD_START];\n const end = datum[STACK_FIELD_END];\n const startPercent = datum[STACK_FIELD_START_PERCENT];\n const endPercent = datum[STACK_FIELD_END_PERCENT];\n min = Math.min(min, start, end);\n max = Math.max(max, start, end);\n if (usePreCalculatedRect) {\n const rectStart = datum[isVertical ? RECT_Y : RECT_X];\n const rectEnd = datum[isVertical ? RECT_Y1 : RECT_X1];\n rectMin = Math.min(rectMin, rectStart, rectEnd);\n rectMax = Math.max(rectMax, rectStart, rectEnd);\n }\n if (isValid(startPercent) && isValid(endPercent)) {\n hasPercent = true;\n minPercent = Math.min(minPercent, startPercent, endPercent);\n maxPercent = Math.max(maxPercent, startPercent, endPercent);\n }\n });\n const mockDatum = {\n ...node.values[0],\n [STACK_FIELD_START]: min,\n [STACK_FIELD_END]: max,\n ...(hasPercent\n ? {\n [STACK_FIELD_START_PERCENT]: minPercent,\n [STACK_FIELD_END_PERCENT]: maxPercent\n }\n : undefined)\n };\n const rectAttr =\n this.direction === Direction.horizontal\n ? {\n x: usePreCalculatedRect ? rectMin : this._getBarXStart(mockDatum, xScale),\n x1: usePreCalculatedRect ? rectMax : this._getBarXEnd(mockDatum, xScale),\n y: this._getPosition(this.direction, mockDatum),\n height: this._getBarWidth(this._yAxisHelper)\n }\n : {\n y: usePreCalculatedRect ? rectMin : this._getBarYStart(mockDatum, yScale),\n y1: usePreCalculatedRect ? rectMax : this._getBarYEnd(mockDatum, yScale),\n x: this._getPosition(this.direction, mockDatum),\n width: this._getBarWidth(this._xAxisHelper)\n };\n rectPaths.push(\n createRect({\n ...rectAttr,\n cornerRadius: isFunction(this._spec.stackCornerRadius)\n ? this._spec.stackCornerRadius(rectAttr, mockDatum, this._markAttributeContext)\n : this._spec.stackCornerRadius,\n fill: true\n })\n );\n });\n return rectPaths;\n }\n });\n }\n\n initLinearRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n if (this.direction === Direction.horizontal) {\n const yChannels = isValid(this._fieldY2)\n ? {\n y: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[0],\n y1: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[1]\n }\n : {\n y: (datum: Datum) =>\n valueInScaleRange(this._dataToPosY(datum) - this._getBarWidth(this._yAxisHelper) / 2, yScale, true),\n height: (datum: Datum) => this._getBarWidth(this._yAxisHelper)\n };\n\n this.setMarkStyle(\n this._barMark,\n {\n x: (datum: Datum) => this._getBarXStart(datum, xScale, true),\n x1: (datum: Datum) => this._getBarXEnd(datum, xScale, true),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n const xChannels = isValid(this._fieldX2)\n ? {\n x: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[0],\n x1: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[1]\n }\n : {\n x: (datum: Datum) =>\n valueInScaleRange(this._dataToPosX(datum) - this._getBarWidth(this._xAxisHelper) / 2, xScale, true),\n width: (datum: Datum) => this._getBarWidth(this._xAxisHelper)\n };\n this.setMarkStyle(\n this._barMark,\n {\n ...xChannels,\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n ...xChannels,\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected _getBarBackgroundXStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundXEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _getBarBackgroundYStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundYEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _initBandBarBackgroundMarkStyle() {\n if (!this._barBackgroundMark) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const spec = this._spec.barBackground ?? {};\n const scaleDepth = isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1;\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n y: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n height: () => this._getBarWidth(this._yAxisHelper, scaleDepth),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale),\n width: () => this._getBarWidth(this._xAxisHelper, scaleDepth),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const barAnimationParams: IBarAnimationParams = {\n yField: this._fieldY[0],\n xField: this._fieldX[0],\n direction: this.direction,\n growFrom: () => {\n const scale = this.direction === 'horizontal' ? this._xAxisHelper?.getScale(0) : this._yAxisHelper.getScale(0);\n if (scale) {\n const domain = scale.domain();\n const domainMin = minInArr<number>(domain);\n const domainMax = maxInArr<number>(domain);\n if (domainMax < 0) {\n return scale.scale(domainMax);\n } else if (domainMin > 0) {\n return scale.scale(domainMin);\n }\n return scale.scale(0);\n }\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<BarAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('bar')?.(barAnimationParams, appearPreset),\n userAnimationConfig(this._barMarkName, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n }\n\n protected _getBarWidth(axisHelper: IAxisHelper, scaleDepth?: number) {\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const hasBarWidth = isValid(this._spec.barWidth) && depth === depthFromSpec;\n\n const hasBarMinWidth = isValid(this._spec.barMinWidth);\n const hasBarMaxWidth = isValid(this._spec.barMaxWidth);\n let width = bandWidth;\n if (hasBarWidth) {\n width = getActualNumValue(this._spec.barWidth, bandWidth);\n }\n if (hasBarMinWidth) {\n width = Math.max(width, getActualNumValue(this._spec.barMinWidth, bandWidth));\n }\n if (hasBarMaxWidth) {\n width = Math.min(width, getActualNumValue(this._spec.barMaxWidth, bandWidth));\n }\n return width;\n }\n\n protected _getPosition(direction: DirectionType, datum: Datum, scaleDepth?: number, mark?: SeriesMarkNameEnum) {\n let axisHelper;\n let sizeAttribute;\n let dataToPosition;\n if (direction === Direction.horizontal) {\n axisHelper = this.getYAxisHelper();\n sizeAttribute = 'height';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionY.bind(this)\n : this.dataToPositionY.bind(this);\n } else {\n axisHelper = this.getXAxisHelper();\n sizeAttribute = 'width';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionX.bind(this)\n : this.dataToPositionX.bind(this);\n }\n const scale = axisHelper.getScale(0);\n\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const size = depth === depthFromSpec ? (this._barMark.getAttribute(sizeAttribute, datum) as number) : bandWidth;\n\n if (depth > 1 && isValid(this._spec.barGapInGroup)) {\n // 自里向外计算,沿着第一层分组的中心点进行位置调整\n const groupFields = this._groups.fields;\n const barInGroup = array(this._spec.barGapInGroup);\n let totalWidth: number = 0;\n let offSet: number = 0;\n\n for (let index = groupFields.length - 1; index >= 1; index--) {\n const groupField = groupFields[index];\n // const groupValues = this.getViewDataStatistics()?.latestData?.[groupField]?.values ?? [];\n const groupValues = axisHelper.getScale(index)?.domain() ?? [];\n const groupCount = groupValues.length;\n const gap = getActualNumValue(barInGroup[index - 1] ?? last(barInGroup), bandWidth);\n const i = groupValues.indexOf(datum[groupField]);\n if (index === groupFields.length - 1) {\n totalWidth += groupCount * size + (groupCount - 1) * gap;\n offSet += i * (size + gap);\n } else {\n offSet += i * (totalWidth + gap);\n totalWidth += totalWidth + (groupCount - 1) * gap;\n }\n }\n\n const center = scale.scale(datum[groupFields[0]]) + axisHelper.getBandwidth(0) / 2;\n return center - totalWidth / 2 + offSet;\n }\n\n const continuous = isContinuous(scale.type || 'band');\n const pos = dataToPosition(datum, depth);\n\n return pos + (bandWidth - size) * 0.5 + (continuous ? -bandWidth / 2 : 0);\n }\n\n protected _barBackgroundPositionXEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionXEncoder = () => this._barBackgroundPositionXEncoder?.bind(this);\n protected _setBarBackgroundPositionXEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionXEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionX(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._xAxisHelper,\n this.fieldX,\n scaleDepth,\n this._getBarBackgroundPositionXEncoder,\n this._setBarBackgroundPositionXEncoder\n );\n }\n\n protected _barBackgroundPositionYEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionYEncoder = () => this._barBackgroundPositionYEncoder?.bind(this);\n protected _setBarBackgroundPositionYEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionYEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionY(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._yAxisHelper,\n this.fieldY,\n scaleDepth,\n this._getBarBackgroundPositionYEncoder,\n this._setBarBackgroundPositionYEncoder\n );\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n if (this._spec.sampling) {\n this.compile();\n }\n }\n\n onDataUpdate(): void {\n super.onDataUpdate();\n\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n }\n\n compile(): void {\n super.compile();\n\n if (this._spec.sampling) {\n const { width, height } = this._region.getLayoutRect();\n const fieldsY = this._fieldY;\n const fieldsX = this._fieldX;\n\n this._data.setTransform([\n {\n type: 'sampling',\n size: this._direction === Direction.horizontal ? height : width,\n factor: this._spec.samplingFactor,\n yfield: this._direction === Direction.horizontal ? fieldsX[0] : fieldsY[0],\n groupBy: this._seriesField,\n mode: this._spec.sampling\n }\n ]);\n }\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._barMark];\n }\n\n compileData() {\n super.compileData();\n this._barBackgroundViewData?.compile();\n }\n\n fillData() {\n super.fillData();\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n }\n\n viewDataUpdate(d: DataView): void {\n super.viewDataUpdate(d);\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n this._barBackgroundViewData?.updateData();\n }\n\n release() {\n super.release();\n this._barBackgroundViewData?.release();\n this._barBackgroundViewData = null;\n }\n}\n\nexport const registerBarSeries = () => {\n registerDataSamplingTransform();\n registerRectMark();\n registerBarAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(BarSeries.type, BarSeries);\n};\n"]}
1
+ {"version":3,"sources":["../src/series/bar/bar.ts"],"names":[],"mappings":"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","file":"bar.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport type { IBaseScale } from '@visactor/vscale';\nimport { isContinuous } from '@visactor/vscale';\nimport { Direction } from '../../typings/space';\nimport { CartesianSeries } from '../cartesian/cartesian';\nimport type { ISeriesSpecUpdatePolicy } from '../base/base-series';\nimport type { IMark, IRectMark, ITextMark } from '../../mark/interface';\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport {\n DEFAULT_DATA_KEY,\n STACK_FIELD_END,\n STACK_FIELD_END_PERCENT,\n STACK_FIELD_START,\n STACK_FIELD_START_PERCENT\n} from '../../constant/data';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { Datum, DirectionType } from '../../typings';\nimport { isValueInScaleDomain, valueInScaleRange } from '../../util/scale';\nimport { getRegionStackGroup } from '../../util/data';\nimport { getActualNumValue } from '../../util/space';\nimport { registerBarAnimation } from './animation';\nimport { animationConfig, shouldMarkDoMorph, userAnimationConfig } from '../../animation/utils';\nimport type { BarAppearPreset, IBarAnimationParams, IBarSeriesSpec, IBarSeriesTheme } from './interface';\nimport type { IAxisHelper } from '../../component/axis/cartesian/interface';\nimport type { IModelInitOption } from '../../model/interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport { registerRectMark } from '../../mark/rect';\nimport { array, isFunction, isNil, isValid, last } from '@visactor/vutils';\nimport { barSeriesMark } from './constant';\nimport { stackWithMinHeight } from '../util/stack';\nimport { Factory } from '../../core/factory';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { DataView } from '@visactor/vdataset';\nimport { addVChartProperty } from '../../data/transforms/add-property';\nimport { addDataKey, initKeyMap } from '../../data/transforms/data-key';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { BarSeriesSpecTransformer } from './bar-transformer';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport { RECT_X, RECT_X1, RECT_Y, RECT_Y1 } from '../base/constant';\nimport { createRect } from '@visactor/vrender-core';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport type { ICompilableData } from '../../compile/data';\nimport { CompilableData } from '../../compile/data';\nimport { registerDataSamplingTransform } from '../../mark/transform/data-sampling';\nimport { maxInArr, minInArr } from '../../util/array';\nimport { bar } from '../../theme/builtin/common/series/bar';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\ntype BarSeriesCompileOnlyKey =\n | 'barWidth'\n | 'barMinWidth'\n | 'barMaxWidth'\n | 'barGapInGroup'\n | 'barMinHeight'\n | 'stackCornerRadius';\n\nconst BAR_SERIES_COMPILE_ONLY_KEYS: Record<BarSeriesCompileOnlyKey, true> = {\n barWidth: true,\n barMinWidth: true,\n barMaxWidth: true,\n barGapInGroup: true,\n barMinHeight: true,\n stackCornerRadius: true\n};\n\nexport class BarSeries<T extends IBarSeriesSpec = IBarSeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = SeriesTypeEnum.bar;\n type: string = SeriesTypeEnum.bar;\n protected _barMarkName: string = SeriesMarkNameEnum.bar;\n protected _barMarkType: string = MarkTypeEnum.rect;\n\n static readonly builtInTheme: Record<string, IBarSeriesTheme> = { bar };\n static readonly mark: SeriesMarkMap = barSeriesMark;\n static readonly transformerConstructor = BarSeriesSpecTransformer as any;\n readonly transformerConstructor = BarSeriesSpecTransformer;\n\n protected _bandPosition = 0;\n protected _barMark!: IRectMark;\n protected _barBackgroundMark!: IRectMark;\n\n protected _barBackgroundViewData: ICompilableData;\n\n protected _getSpecUpdatePolicy(): ISeriesSpecUpdatePolicy {\n const policy = super._getSpecUpdatePolicy();\n return {\n ...policy,\n compileOnlyKeys: {\n ...policy.compileOnlyKeys,\n ...BAR_SERIES_COMPILE_ONLY_KEYS\n }\n };\n }\n\n initMark(): void {\n this._initBarBackgroundMark();\n\n this._barMark = this._createMark(\n {\n ...BarSeries.mark.bar,\n name: this._barMarkName,\n type: this._barMarkType\n },\n {\n groupKey: this._seriesField,\n isSeriesMark: true\n },\n {\n morphElementKey: this.getDimensionField()[0],\n morph: shouldMarkDoMorph(this._spec, this._barMarkName)\n }\n ) as IRectMark;\n }\n\n protected _initBarBackgroundMark(): void {\n if (this._spec.barBackground && this._spec.barBackground.visible) {\n this._barBackgroundMark = this._createMark(BarSeries.mark.barBackground, {\n dataView: this._barBackgroundViewData.getDataView(),\n dataProductId: this._barBackgroundViewData.getProductId()\n }) as IRectMark;\n }\n }\n\n initMarkStyle(): void {\n if (this._barMark) {\n this.setMarkStyle(\n this._barMark,\n {\n fill: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n this.initRectMarkStyle();\n }\n\n protected initRectMarkStyle() {\n if (!this._barMark) {\n return;\n }\n\n const bandAxisHelper = this.direction === Direction.vertical ? this._xAxisHelper : this._yAxisHelper;\n const scale = bandAxisHelper?.getScale?.(0);\n if (!scale) {\n return;\n }\n\n scale.type === 'band' ? this.initBandRectMarkStyle() : this.initLinearRectMarkStyle();\n }\n\n initLabelMarkStyle(textMark: ITextMark) {\n if (!textMark) {\n return;\n }\n this.setMarkStyle(textMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getStackValueField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n protected initTooltip() {\n super.initTooltip();\n const { mark, group } = this._tooltipHelper.activeTriggerSet;\n if (this._barMark) {\n mark.add(this._barMark);\n group.add(this._barMark);\n }\n }\n\n protected _statisticViewData(): void {\n super._statisticViewData();\n\n const spec = this._spec.barBackground ?? {};\n if (!spec.visible) {\n return;\n }\n\n const hasBandAxis = this._getRelatedComponentSpecInfo('axes').some(\n axisInfo => axisInfo.type === ComponentTypeEnum.cartesianBandAxis\n );\n\n let barBackgroundData: DataView;\n registerDataSetInstanceTransform(this._option.dataSet, 'addVChartProperty', addVChartProperty);\n\n if (hasBandAxis) {\n type DimensionItemsConfig = { scaleDepth?: number };\n\n /**\n * @description 准备 barBackground 数据(离散轴)\n */\n const dimensionItems = ([data]: DataView[], { scaleDepth }: DimensionItemsConfig) => {\n let dataCollect: Datum[] = [{}];\n const fields = this.getDimensionField();\n // 将维度轴的所有层级 field 的对应数据做笛卡尔积\n const depth = isNil(scaleDepth) ? fields.length : Math.min(fields.length, scaleDepth);\n for (let i = 0; i < depth; i++) {\n const field = fields[i];\n const values = data.latestData[field]?.values;\n if (!values?.length) {\n continue;\n }\n const newDataCollect: Datum[] = [];\n const dataKey = (this._spec.dataKey as string) ?? DEFAULT_DATA_KEY;\n for (let j = 0; j < values.length; j++) {\n for (let k = 0; k < dataCollect.length; k++) {\n newDataCollect.push({\n ...dataCollect[k],\n [field]: values[j],\n [dataKey]: values[j]\n });\n }\n }\n dataCollect = newDataCollect;\n }\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([this._viewDataStatistics], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems',\n options: {\n scaleDepth: isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1\n } as DimensionItemsConfig\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n this._viewDataStatistics?.target.addListener('change', barBackgroundData.reRunAllTransform);\n } else {\n /**\n * @description 准备 barBackground 数据(连续轴)\n */\n const dimensionItems = ([data]: DataView[]) => {\n const dataCollect: Datum[] = [];\n const [field0, field1] = this.getDimensionContinuousField();\n const map: Record<string, Datum> = {};\n viewData.latestData.forEach((datum: Datum) => {\n const key = `${datum[field0]}-${datum[field1]}`;\n if (!map[key]) {\n map[key] = {\n [field0]: datum[field0],\n [field1]: datum[field1]\n };\n dataCollect.push(map[key]);\n }\n });\n return dataCollect;\n };\n\n registerDataSetInstanceTransform(this._option.dataSet, 'dimensionItems', dimensionItems);\n\n const viewData = this.getViewData();\n barBackgroundData = new DataView(this._option.dataSet)\n .parse([viewData], {\n type: 'dataview'\n })\n .transform(\n {\n type: 'dimensionItems'\n },\n false\n )\n .transform(\n {\n type: 'addVChartProperty',\n options: {\n beforeCall: initKeyMap.bind(this),\n call: addDataKey\n }\n },\n false\n );\n\n viewData?.target.addListener('change', barBackgroundData.reRunAllTransform);\n }\n this._barBackgroundViewData = new CompilableData(this._option, barBackgroundData);\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n this.initRectMarkStyle();\n }\n\n private _shouldDoPreCalculate() {\n const region = this.getRegion();\n return this.getStack() && region.getSeries().filter(s => s.type === this.type && s.getSpec().barMinHeight).length;\n }\n\n private _calculateStackRectPosition(isVertical: boolean) {\n const region = this.getRegion();\n\n // @ts-ignore\n if (region._bar_series_position_calculated) {\n return;\n }\n // @ts-ignore\n region._bar_series_position_calculated = true; // 因为是 region 内堆叠矩形的计算,所以加一个 hack 标识位用于避免重复计算\n let start: string;\n let end: string;\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n start = RECT_Y1;\n end = RECT_Y;\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n start = RECT_X1;\n end = RECT_X;\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n // only reCompute bar\n const stackValueGroup = getRegionStackGroup(region, false, s => s.type === this.type);\n // 按照堆积逻辑 重新计算一次图形的堆积位置并设置到数据上\n for (const stackValue in stackValueGroup) {\n for (const key in stackValueGroup[stackValue].nodes) {\n stackWithMinHeight(stackValueGroup[stackValue].nodes[key], region.getStackInverse(), {\n isVertical,\n start,\n end,\n startMethod,\n endMethod,\n axisHelper\n });\n }\n }\n }\n\n private _calculateRectPosition(datum: Datum, isVertical: boolean, useWholeRange?: boolean) {\n let startMethod: string;\n let endMethod: string;\n let axisHelper: string;\n if (isVertical) {\n startMethod = '_dataToPosY1';\n endMethod = '_dataToPosY';\n axisHelper = '_yAxisHelper';\n } else {\n startMethod = '_dataToPosX1';\n endMethod = '_dataToPosX';\n axisHelper = '_xAxisHelper';\n }\n\n const seriesScale = this[axisHelper].getScale?.(0);\n const inverse = this[axisHelper].isInverse();\n const barMinHeight = this._spec.barMinHeight;\n const y1 = valueInScaleRange(this[startMethod](datum), seriesScale, useWholeRange);\n const y = valueInScaleRange(this[endMethod](datum), seriesScale, useWholeRange);\n let height = Math.abs(y1 - y);\n if (height <= 0 && !isValueInScaleDomain(datum[this.getStackValueField()], seriesScale)) {\n height = 0;\n } else if (height < barMinHeight) {\n height = barMinHeight;\n }\n\n let flag = 1;\n if (y < y1) {\n flag = -1;\n } else if (y === y1) {\n flag = isVertical ? (inverse ? 1 : -1) : inverse ? -1 : 1;\n }\n return y1 + flag * height;\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX(datum: Datum) {\n return this.dataToPositionX(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosX1(datum: Datum) {\n return this.dataToPositionX1(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY(datum: Datum) {\n return this.dataToPositionY(datum);\n }\n\n // 用于 bar-like 的位置转换,range-column 会重写这个方法\n protected _dataToPosY1(datum: Datum) {\n return this.dataToPositionY1(datum);\n }\n\n protected _getLinearBarRange = (start: number, end: number) => {\n let [x, x1] = [start, end].sort((a, b) => a - b);\n const realBarWidth = x1 - x;\n if (this._spec.barGap) {\n const halfBarGap = this._spec.barGap * 0.5;\n const tempX = x + halfBarGap;\n const tempX1 = x1 - halfBarGap;\n x = tempX;\n x1 = tempX1;\n }\n\n const curBarWidth = x1 - x;\n const barMinWidth = getActualNumValue(this._spec.barMinWidth || 2, realBarWidth);\n if (curBarWidth < barMinWidth) {\n const widthDiff = barMinWidth - curBarWidth;\n const halfWidthDiff = widthDiff / 2;\n x -= halfWidthDiff;\n x1 += halfWidthDiff;\n }\n\n return [x, x1];\n };\n\n protected _getBarXStart = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, false, useWholeRange);\n }\n\n return valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n };\n\n protected _getBarXEnd = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(false);\n return datum[RECT_X1];\n }\n\n return valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n };\n\n protected _getLinearBarXRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const x = valueInScaleRange(this._dataToPosX(datum), scale, useWholeRange);\n const x1 = valueInScaleRange(this._dataToPosX1(datum), scale, useWholeRange);\n return this._getLinearBarRange(x, x1);\n };\n\n protected _getBarYStart = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y];\n }\n\n if (this._spec.barMinHeight) {\n return this._calculateRectPosition(datum, true);\n }\n\n return valueInScaleRange(this._dataToPosY(datum), scale);\n };\n\n protected _getBarYEnd = (datum: Datum, scale: IBaseScale) => {\n if (this._shouldDoPreCalculate()) {\n this._calculateStackRectPosition(true);\n return datum[RECT_Y1];\n }\n\n return valueInScaleRange(this._dataToPosY1(datum), scale);\n };\n\n protected _getLinearBarYRange = (datum: Datum, scale: IBaseScale, useWholeRange?: boolean) => {\n const y = valueInScaleRange(this._dataToPosY(datum), scale, useWholeRange);\n const y1 = valueInScaleRange(this._dataToPosY1(datum), scale, useWholeRange);\n return this._getLinearBarRange(y, y1);\n };\n\n initBandRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barMark,\n {\n x: datum => this._getBarXStart(datum, xScale),\n x1: datum => this._getBarXEnd(datum, xScale),\n y: datum => this._getPosition(this.direction, datum),\n height: () => this._getBarWidth(this._yAxisHelper),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barMark,\n {\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale),\n x: datum => this._getPosition(this.direction, datum),\n width: () => this._getBarWidth(this._xAxisHelper),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n this._initStackBarMarkStyle();\n\n this._initBandBarBackgroundMarkStyle();\n }\n\n protected _initStackBarMarkStyle() {\n if (!this._spec.stackCornerRadius) {\n const markConfig = this._barMark.getMarkConfig();\n\n if (markConfig.clip || !isNil(markConfig.clipPath)) {\n this._barMark.setMarkConfig({\n clip: false,\n clipPath: []\n });\n }\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const isVertical = this.direction === Direction.vertical;\n\n this._barMark.setMarkConfig({\n clip: true,\n clipPath: () => {\n const usePreCalculatedRect = !!this._shouldDoPreCalculate();\n if (usePreCalculatedRect) {\n this._calculateStackRectPosition(isVertical);\n }\n const rectPaths: any[] = [];\n this._forEachStackGroup(node => {\n let min = Infinity;\n let max = -Infinity;\n let rectMin = Infinity;\n let rectMax = -Infinity;\n let hasPercent = false;\n let minPercent = Infinity;\n let maxPercent = -Infinity;\n node.values.forEach(datum => {\n const start = datum[STACK_FIELD_START];\n const end = datum[STACK_FIELD_END];\n const startPercent = datum[STACK_FIELD_START_PERCENT];\n const endPercent = datum[STACK_FIELD_END_PERCENT];\n min = Math.min(min, start, end);\n max = Math.max(max, start, end);\n if (usePreCalculatedRect) {\n const rectStart = datum[isVertical ? RECT_Y : RECT_X];\n const rectEnd = datum[isVertical ? RECT_Y1 : RECT_X1];\n rectMin = Math.min(rectMin, rectStart, rectEnd);\n rectMax = Math.max(rectMax, rectStart, rectEnd);\n }\n if (isValid(startPercent) && isValid(endPercent)) {\n hasPercent = true;\n minPercent = Math.min(minPercent, startPercent, endPercent);\n maxPercent = Math.max(maxPercent, startPercent, endPercent);\n }\n });\n const mockDatum = {\n ...node.values[0],\n [STACK_FIELD_START]: min,\n [STACK_FIELD_END]: max,\n ...(hasPercent\n ? {\n [STACK_FIELD_START_PERCENT]: minPercent,\n [STACK_FIELD_END_PERCENT]: maxPercent\n }\n : undefined)\n };\n const rectAttr =\n this.direction === Direction.horizontal\n ? {\n x: usePreCalculatedRect ? rectMin : this._getBarXStart(mockDatum, xScale),\n x1: usePreCalculatedRect ? rectMax : this._getBarXEnd(mockDatum, xScale),\n y: this._getPosition(this.direction, mockDatum),\n height: this._getBarWidth(this._yAxisHelper)\n }\n : {\n y: usePreCalculatedRect ? rectMin : this._getBarYStart(mockDatum, yScale),\n y1: usePreCalculatedRect ? rectMax : this._getBarYEnd(mockDatum, yScale),\n x: this._getPosition(this.direction, mockDatum),\n width: this._getBarWidth(this._xAxisHelper)\n };\n rectPaths.push(\n createRect({\n ...rectAttr,\n cornerRadius: isFunction(this._spec.stackCornerRadius)\n ? this._spec.stackCornerRadius(rectAttr, mockDatum, this._markAttributeContext)\n : this._spec.stackCornerRadius,\n fill: true\n })\n );\n });\n return rectPaths;\n }\n });\n }\n\n initLinearRectMarkStyle() {\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n\n if (this.direction === Direction.horizontal) {\n const yChannels = isValid(this._fieldY2)\n ? {\n y: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[0],\n y1: (datum: Datum) => this._getLinearBarYRange(datum, yScale, true)[1]\n }\n : {\n y: (datum: Datum) =>\n valueInScaleRange(this._dataToPosY(datum) - this._getBarWidth(this._yAxisHelper) / 2, yScale, true),\n height: (datum: Datum) => this._getBarWidth(this._yAxisHelper)\n };\n\n this.setMarkStyle(\n this._barMark,\n {\n x: (datum: Datum) => this._getBarXStart(datum, xScale, true),\n x1: (datum: Datum) => this._getBarXEnd(datum, xScale, true),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n ...yChannels\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n const xChannels = isValid(this._fieldX2)\n ? {\n x: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[0],\n x1: (datum: Datum) => this._getLinearBarXRange(datum, xScale, true)[1]\n }\n : {\n x: (datum: Datum) =>\n valueInScaleRange(this._dataToPosX(datum) - this._getBarWidth(this._xAxisHelper) / 2, xScale, true),\n width: (datum: Datum) => this._getBarWidth(this._xAxisHelper)\n };\n this.setMarkStyle(\n this._barMark,\n {\n ...xChannels,\n y: datum => this._getBarYStart(datum, yScale),\n y1: datum => this._getBarYEnd(datum, yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n ...xChannels,\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n protected _getBarBackgroundXStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundXEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _getBarBackgroundYStart = (scale: IBaseScale) => {\n const range = scale.range();\n const min = Math.min(range[0], range[range.length - 1]);\n return min;\n };\n\n protected _getBarBackgroundYEnd = (scale: IBaseScale) => {\n const range = scale.range();\n const max = Math.max(range[0], range[range.length - 1]);\n return max;\n };\n\n protected _initBandBarBackgroundMarkStyle() {\n if (!this._barBackgroundMark) {\n return;\n }\n\n const xScale = this._xAxisHelper?.getScale?.(0);\n const yScale = this._yAxisHelper?.getScale?.(0);\n const spec = this._spec.barBackground ?? {};\n const scaleDepth = isNil(spec.fieldLevel) ? undefined : spec.fieldLevel + 1;\n\n // guess the direction which the user want\n if (this.direction === Direction.horizontal) {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: () => this._getBarBackgroundXStart(xScale),\n x1: () => this._getBarBackgroundXEnd(xScale),\n y: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n height: () => this._getBarWidth(this._yAxisHelper, scaleDepth),\n width: () => undefined,\n y1: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._barBackgroundMark,\n {\n x: datum => this._getPosition(this.direction, datum, scaleDepth, SeriesMarkNameEnum.barBackground),\n y: () => this._getBarBackgroundYStart(yScale),\n y1: () => this._getBarBackgroundYEnd(yScale),\n width: () => this._getBarWidth(this._xAxisHelper, scaleDepth),\n x1: () => undefined,\n height: () => undefined\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const barAnimationParams: IBarAnimationParams = {\n yField: this._fieldY[0],\n xField: this._fieldX[0],\n direction: this.direction,\n growFrom: () => {\n const scale = this.direction === 'horizontal' ? this._xAxisHelper?.getScale(0) : this._yAxisHelper.getScale(0);\n if (scale) {\n const domain = scale.domain();\n const domainMin = minInArr<number>(domain);\n const domainMax = maxInArr<number>(domain);\n if (domainMax < 0) {\n return scale.scale(domainMax);\n } else if (domainMin > 0) {\n return scale.scale(domainMin);\n }\n return scale.scale(0);\n }\n }\n };\n const appearPreset = (this._spec.animationAppear as IStateAnimateSpec<BarAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('bar')?.(barAnimationParams, appearPreset),\n userAnimationConfig(this._barMarkName, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n }\n\n protected _getBarWidth(axisHelper: IAxisHelper, scaleDepth?: number) {\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const hasBarWidth = isValid(this._spec.barWidth) && depth === depthFromSpec;\n\n const hasBarMinWidth = isValid(this._spec.barMinWidth);\n const hasBarMaxWidth = isValid(this._spec.barMaxWidth);\n let width = bandWidth;\n if (hasBarWidth) {\n width = getActualNumValue(this._spec.barWidth, bandWidth);\n }\n if (hasBarMinWidth) {\n width = Math.max(width, getActualNumValue(this._spec.barMinWidth, bandWidth));\n }\n if (hasBarMaxWidth) {\n width = Math.min(width, getActualNumValue(this._spec.barMaxWidth, bandWidth));\n }\n return width;\n }\n\n protected _getPosition(direction: DirectionType, datum: Datum, scaleDepth?: number, mark?: SeriesMarkNameEnum) {\n let axisHelper;\n let sizeAttribute;\n let dataToPosition;\n if (direction === Direction.horizontal) {\n axisHelper = this.getYAxisHelper();\n sizeAttribute = 'height';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionY.bind(this)\n : this.dataToPositionY.bind(this);\n } else {\n axisHelper = this.getXAxisHelper();\n sizeAttribute = 'width';\n dataToPosition =\n mark === SeriesMarkNameEnum.barBackground\n ? this.dataToBarBackgroundPositionX.bind(this)\n : this.dataToPositionX.bind(this);\n }\n const scale = axisHelper.getScale(0);\n\n const depthFromSpec = this._groups ? this._groups.fields.length : 1;\n const depth = isNil(scaleDepth) ? depthFromSpec : Math.min(depthFromSpec, scaleDepth);\n\n const bandWidth = axisHelper.getBandwidth?.(depth - 1) ?? DefaultBandWidth;\n const size = depth === depthFromSpec ? (this._barMark.getAttribute(sizeAttribute, datum) as number) : bandWidth;\n\n if (depth > 1 && isValid(this._spec.barGapInGroup)) {\n // 自里向外计算,沿着第一层分组的中心点进行位置调整\n const groupFields = this._groups.fields;\n const barInGroup = array(this._spec.barGapInGroup);\n let totalWidth: number = 0;\n let offSet: number = 0;\n\n for (let index = groupFields.length - 1; index >= 1; index--) {\n const groupField = groupFields[index];\n // const groupValues = this.getViewDataStatistics()?.latestData?.[groupField]?.values ?? [];\n const groupValues = axisHelper.getScale(index)?.domain() ?? [];\n const groupCount = groupValues.length;\n const gap = getActualNumValue(barInGroup[index - 1] ?? last(barInGroup), bandWidth);\n const i = groupValues.indexOf(datum[groupField]);\n if (index === groupFields.length - 1) {\n totalWidth += groupCount * size + (groupCount - 1) * gap;\n offSet += i * (size + gap);\n } else {\n offSet += i * (totalWidth + gap);\n totalWidth += totalWidth + (groupCount - 1) * gap;\n }\n }\n\n const center = scale.scale(datum[groupFields[0]]) + axisHelper.getBandwidth(0) / 2;\n return center - totalWidth / 2 + offSet;\n }\n\n const continuous = isContinuous(scale.type || 'band');\n const pos = dataToPosition(datum, depth);\n\n return pos + (bandWidth - size) * 0.5 + (continuous ? -bandWidth / 2 : 0);\n }\n\n protected _barBackgroundPositionXEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionXEncoder = () => this._barBackgroundPositionXEncoder?.bind(this);\n protected _setBarBackgroundPositionXEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionXEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionX(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._xAxisHelper,\n this.fieldX,\n scaleDepth,\n this._getBarBackgroundPositionXEncoder,\n this._setBarBackgroundPositionXEncoder\n );\n }\n\n protected _barBackgroundPositionYEncoder?: (datum: Datum) => number;\n protected _getBarBackgroundPositionYEncoder = () => this._barBackgroundPositionYEncoder?.bind(this);\n protected _setBarBackgroundPositionYEncoder = (encoder: (datum: Datum) => number) => {\n this._barBackgroundPositionYEncoder = encoder.bind(this);\n };\n\n dataToBarBackgroundPositionY(datum: Datum, scaleDepth?: number): number {\n return this._dataToPosition(\n datum,\n this._yAxisHelper,\n this.fieldY,\n scaleDepth,\n this._getBarBackgroundPositionYEncoder,\n this._setBarBackgroundPositionYEncoder\n );\n }\n\n onLayoutEnd(): void {\n super.onLayoutEnd();\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n if (this._spec.sampling) {\n this.compile();\n }\n }\n\n onDataUpdate(): void {\n super.onDataUpdate();\n\n const region = this.getRegion();\n // @ts-ignore\n region._bar_series_position_calculated = false;\n }\n\n compile(): void {\n super.compile();\n\n if (this._spec.sampling) {\n const { width, height } = this._region.getLayoutRect();\n const fieldsY = this._fieldY;\n const fieldsX = this._fieldX;\n\n this._data.setTransform([\n {\n type: 'sampling',\n size: this._direction === Direction.horizontal ? height : width,\n factor: this._spec.samplingFactor,\n yfield: this._direction === Direction.horizontal ? fieldsX[0] : fieldsY[0],\n groupBy: this._seriesField,\n mode: this._spec.sampling\n }\n ]);\n }\n }\n\n getDefaultShapeType(): string {\n return 'square';\n }\n\n getActiveMarks(): IMark[] {\n return [this._barMark];\n }\n\n compileData() {\n super.compileData();\n this._barBackgroundViewData?.compile();\n }\n\n fillData() {\n super.fillData();\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n }\n\n viewDataUpdate(d: DataView): void {\n super.viewDataUpdate(d);\n this._barBackgroundViewData?.getDataView()?.reRunAllTransform();\n this._barBackgroundViewData?.updateData();\n }\n\n release() {\n super.release();\n this._barBackgroundViewData?.release();\n this._barBackgroundViewData = null;\n }\n}\n\nexport const registerBarSeries = () => {\n registerDataSamplingTransform();\n registerRectMark();\n registerBarAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(BarSeries.type, BarSeries);\n};\n"]}
@@ -16,6 +16,12 @@ import type { StatisticOperations } from '../../data/transforms/interface';
16
16
  import type { GraphicEventType } from '@visactor/vrender-core';
17
17
  import type { ICompilableData } from '../../compile/data';
18
18
  import type { IBaseTriggerOptions } from '../../interaction/interface/trigger';
19
+ export interface ISeriesSpecUpdatePolicy {
20
+ compileOnlyKeys?: Record<string, true>;
21
+ dataRelatedKeys?: Record<string, true>;
22
+ compileOnlySubKeys?: Record<string, Record<string, true>>;
23
+ }
24
+ export declare function markSeriesCompileEffect(compareResult: IUpdateSpecResult, dataRelated?: boolean): void;
19
25
  export declare abstract class BaseSeries<T extends ISeriesSpec> extends BaseModel<T> implements ISeries {
20
26
  readonly specKey: string;
21
27
  readonly type: string;
@@ -170,13 +176,8 @@ export declare abstract class BaseSeries<T extends ISeriesSpec> extends BaseMode
170
176
  protected initTooltip(): void;
171
177
  _compareExtensionMarksSpec(newMarks: (IExtensionMarkSpec<Exclude<EnableMarkType, 'group'>> | IExtensionGroupMarkSpec)[], prevMarks: (IExtensionMarkSpec<Exclude<EnableMarkType, 'group'>> | IExtensionGroupMarkSpec)[], compareResult: IUpdateSpecResult): void;
172
178
  _compareLabelSpec(newLabels: ILabelSpec[], prevLabels: ILabelSpec[], compareResult: IUpdateSpecResult): void;
173
- _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: Record<string, boolean>): {
174
- change: boolean;
175
- reMake: boolean;
176
- reRender: boolean;
177
- reSize: boolean;
178
- reCompile: boolean;
179
- };
179
+ protected _getSpecUpdatePolicy(): ISeriesSpecUpdatePolicy;
180
+ _compareSpec(spec: T, prevSpec: T, ignoreCheckKeys?: Record<string, boolean>): IUpdateSpecResult;
180
181
  _updateSpecData(): void;
181
182
  reInit(spec?: T): void;
182
183
  onEvaluateEnd(ctx: IModelEvaluateOption): void;
@@ -38,7 +38,7 @@ import { array, isEqual, isNil, isValid, isBoolean, isString, isFunction, isArra
38
38
 
39
39
  import { ColorOrdinalScale } from "../../scale/color-ordinal-scale";
40
40
 
41
- import { baseSeriesMark, defaultSeriesIgnoreCheckKeys, defaultSeriesCompileCheckKeys } from "./constant";
41
+ import { baseSeriesMark, defaultSeriesIgnoreCheckKeys, defaultSeriesCompileCheckKeys, defaultSeriesCompileOnlyCheckKeys } from "./constant";
42
42
 
43
43
  import { animationConfig, userAnimationConfig, isAnimationEnabledForSeries } from "../../animation/utils";
44
44
 
@@ -52,6 +52,30 @@ import { CompilableData } from "../../compile/data";
52
52
 
53
53
  import { filterMarksOfInteraction } from "../../interaction/triggers/util";
54
54
 
55
+ const defaultSeriesDataRelatedCheckKeys = Object.keys(defaultSeriesCompileCheckKeys).reduce(((keys, key) => (defaultSeriesCompileOnlyCheckKeys[key] || (keys[key] = !0),
56
+ keys)), {}), defaultSeriesSpecUpdatePolicy = {
57
+ compileOnlyKeys: defaultSeriesCompileOnlyCheckKeys,
58
+ dataRelatedKeys: defaultSeriesDataRelatedCheckKeys
59
+ }, isSpecObject = value => isObject(value) && !isArray(value) && !isFunction(value), hasOnlyAllowedSubKeyChanges = (specValue, prevSpecValue, allowedSubKeys) => {
60
+ if (!isSpecObject(specValue) || !isSpecObject(prevSpecValue)) return !1;
61
+ let changed = !1;
62
+ const subKeys = Array.from(new Set([ ...Object.keys(prevSpecValue), ...Object.keys(specValue) ]));
63
+ for (const subKey of subKeys) if (!isEqual(specValue[subKey], prevSpecValue[subKey])) {
64
+ if (!allowedSubKeys[subKey]) return !1;
65
+ changed = !0;
66
+ }
67
+ return changed;
68
+ };
69
+
70
+ export function markSeriesCompileEffect(compareResult, dataRelated = !1) {
71
+ compareResult.effects = Object.assign(Object.assign({}, compareResult.effects), {
72
+ series: !0,
73
+ compile: !0,
74
+ layout: !0,
75
+ render: !0
76
+ }), dataRelated && (compareResult.effects.data = !0, compareResult.effects.scaleDomain = !0);
77
+ }
78
+
55
79
  export class BaseSeries extends BaseModel {
56
80
  getRegion() {
57
81
  return this._region;
@@ -559,25 +583,36 @@ export class BaseSeries extends BaseModel {
559
583
  newMarks.length !== prevMarks.length || prevMarks.some(((prev, index) => prev.type !== newMarks[index].type || prev.id !== newMarks[index].id || prev.name !== newMarks[index].name)) ? compareResult.reMake = !0 : prevMarks.some(((prev, index) => prev.visible !== newMarks[index].visible)) && (compareResult.reCompile = !0);
560
584
  }
561
585
  _compareLabelSpec(newLabels, prevLabels, compareResult) {
562
- newLabels.length !== prevLabels.length || prevLabels.some(((prev, index) => prev.labelLayout !== newLabels[index].labelLayout || prev.visible !== newLabels[index].visible)) ? compareResult.reMake = !0 : !compareResult.reCompile && prevLabels.some(((prev, index) => !isEqual(prev, newLabels[index]))) && (compareResult.reCompile = !0);
586
+ newLabels.length !== prevLabels.length || prevLabels.some(((prev, index) => prev.labelLayout !== newLabels[index].labelLayout || prev.visible !== newLabels[index].visible)) ? compareResult.reMake = !0 : !compareResult.reCompile && prevLabels.some(((prev, index) => !isEqual(prev, newLabels[index]))) && (compareResult.reCompile = !0,
587
+ markSeriesCompileEffect(compareResult));
588
+ }
589
+ _getSpecUpdatePolicy() {
590
+ return defaultSeriesSpecUpdatePolicy;
563
591
  }
564
592
  _compareSpec(spec, prevSpec, ignoreCheckKeys) {
593
+ var _a, _b, _c, _d;
565
594
  const result = super._compareSpec(spec, prevSpec), currentKeys = Object.keys(prevSpec || {}).sort(), nextKeys = Object.keys(spec || {}).sort();
566
595
  if (!isEqual(currentKeys, nextKeys)) return result.reMake = !0, result;
567
- const ignores = Object.assign(Object.assign(Object.assign(Object.assign({}, defaultSeriesIgnoreCheckKeys), defaultSeriesCompileCheckKeys), ignoreCheckKeys), {
596
+ const specUpdatePolicy = this._getSpecUpdatePolicy(), compileOnlyKeys = null !== (_a = specUpdatePolicy.compileOnlyKeys) && void 0 !== _a ? _a : {}, dataRelatedKeys = null !== (_b = specUpdatePolicy.dataRelatedKeys) && void 0 !== _b ? _b : {}, compileOnlySubKeys = null !== (_c = specUpdatePolicy.compileOnlySubKeys) && void 0 !== _c ? _c : {}, compileCheckKeys = Object.assign(Object.assign({}, compileOnlyKeys), dataRelatedKeys), ignores = Object.assign(Object.assign(Object.assign(Object.assign({}, defaultSeriesIgnoreCheckKeys), compileCheckKeys), ignoreCheckKeys), {
568
597
  extensionMark: !0,
569
598
  label: !0,
570
599
  totalLabel: !0
571
600
  });
572
- return this._compareExtensionMarksSpec(array(spec.extensionMark), array(prevSpec.extensionMark), result),
601
+ if (this._compareExtensionMarksSpec(array(spec.extensionMark), array(prevSpec.extensionMark), result),
573
602
  !result.reMake && this._compareLabelSpec(array(spec.label), array(prevSpec.label), result),
574
603
  !result.reMake && this._compareLabelSpec(array(spec.totalLabel), array(prevSpec.totalLabel), result),
575
- result.reMake ? result : (!result.reCompile && this._marks.getMarks().some((m => {
604
+ result.reMake) return result;
605
+ !result.reCompile && this._marks.getMarks().some((m => {
576
606
  var _a, _b;
577
607
  return ignores[m.name] = !0, (null === (_a = prevSpec[m.name]) || void 0 === _a ? void 0 : _a.visible) !== (null === (_b = spec[m.name]) || void 0 === _b ? void 0 : _b.visible);
578
- })) && (result.reCompile = !0), !result.reCompile && currentKeys.some((k => defaultSeriesCompileCheckKeys[k] && !isEqual(spec[k], prevSpec[k]))) && (result.reCompile = !0),
608
+ })) && (result.reCompile = !0);
609
+ const changedCompileKeys = currentKeys.filter((k => compileCheckKeys[k] && !isEqual(spec[k], prevSpec[k]))), changedCompileOnlySubKeys = currentKeys.filter((k => compileOnlySubKeys[k] && hasOnlyAllowedSubKeyChanges(spec[k], prevSpec[k], compileOnlySubKeys[k])));
610
+ return changedCompileOnlySubKeys.forEach((k => {
611
+ ignores[k] = !0;
612
+ })), result.reCompile || !changedCompileKeys.length && !changedCompileOnlySubKeys.length || (result.reCompile = !0),
613
+ changedCompileKeys.some((k => dataRelatedKeys[k])) ? markSeriesCompileEffect(result, !0) : result.reCompile && !(null === (_d = result.effects) || void 0 === _d ? void 0 : _d.series) && (changedCompileKeys.length || changedCompileOnlySubKeys.length) && markSeriesCompileEffect(result),
579
614
  currentKeys.some((k => !ignores[k] && !isEqual(spec[k], prevSpec[k]))) ? (result.reMake = !0,
580
- result) : result);
615
+ result) : result;
581
616
  }
582
617
  _updateSpecData() {
583
618
  !this._rawData || !this._spec.data || this._spec.data instanceof DataView || updateDataViewInData(this._rawData, this._spec.data, !0);
@@ -703,10 +738,14 @@ export class BaseSeries extends BaseModel {
703
738
  _getSeriesDataKey(datum) {
704
739
  let key = "";
705
740
  if (!datum) return key;
706
- const dimensionFields = this.getDimensionField();
707
- key = dimensionFields.map((field => datum[field])).join("_");
708
- const seriesField = this.getSeriesField();
709
- return seriesField && !dimensionFields.includes(seriesField) && (key += `_${datum[seriesField]}`),
741
+ const seriesField = this.getSeriesField(), dimensionFields = this.getDimensionField(), seriesFieldValue = seriesField ? datum[seriesField] : void 0;
742
+ let lastDimensionValue, hasSeriesFieldInDimension = !1;
743
+ for (let i = 0; i < dimensionFields.length; i++) {
744
+ const field = dimensionFields[i], dimensionValue = datum[field];
745
+ key += `${i > 0 ? "_" : ""}${isNil(dimensionValue) ? "" : dimensionValue}`, hasSeriesFieldInDimension || (hasSeriesFieldInDimension = field === seriesField),
746
+ lastDimensionValue = dimensionValue;
747
+ }
748
+ return !seriesField || hasSeriesFieldInDimension || dimensionFields.length > 1 && lastDimensionValue === seriesFieldValue || (key += `_${seriesFieldValue}`),
710
749
  key;
711
750
  }
712
751
  addViewDataFilter(option) {