@visactor/vchart 1.9.6-alpha.4 → 1.9.6

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 (91) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +83 -256
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/component/axis/base-axis.js +1 -1
  6. package/cjs/component/axis/base-axis.js.map +1 -1
  7. package/cjs/component/brush/brush.d.ts +0 -5
  8. package/cjs/component/brush/brush.js +14 -60
  9. package/cjs/component/brush/brush.js.map +1 -1
  10. package/cjs/component/brush/interface.d.ts +0 -3
  11. package/cjs/component/brush/interface.js.map +1 -1
  12. package/cjs/component/data-zoom/data-filter-base-component.d.ts +2 -11
  13. package/cjs/component/data-zoom/data-filter-base-component.js +12 -31
  14. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  15. package/cjs/component/data-zoom/data-zoom/data-zoom.d.ts +0 -1
  16. package/cjs/component/data-zoom/data-zoom/data-zoom.js +8 -11
  17. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  18. package/cjs/component/data-zoom/data-zoom/interface.d.ts +0 -1
  19. package/cjs/component/data-zoom/data-zoom/interface.js.map +1 -1
  20. package/cjs/component/data-zoom/interface.d.ts +0 -2
  21. package/cjs/component/data-zoom/interface.js.map +1 -1
  22. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js +1 -2
  23. package/cjs/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  24. package/cjs/component/data-zoom/util.js +1 -5
  25. package/cjs/component/data-zoom/util.js.map +1 -1
  26. package/cjs/component/label/base-label.d.ts +2 -1
  27. package/cjs/component/label/base-label.js +3 -0
  28. package/cjs/component/label/base-label.js.map +1 -1
  29. package/cjs/component/label/label.d.ts +1 -2
  30. package/cjs/component/label/label.js +7 -10
  31. package/cjs/component/label/label.js.map +1 -1
  32. package/cjs/component/label/total-label.d.ts +1 -0
  33. package/cjs/component/label/total-label.js +9 -1
  34. package/cjs/component/label/total-label.js.map +1 -1
  35. package/cjs/core/index.d.ts +1 -1
  36. package/cjs/core/index.js +1 -1
  37. package/cjs/core/index.js.map +1 -1
  38. package/cjs/event/interface.d.ts +1 -1
  39. package/cjs/event/interface.js.map +1 -1
  40. package/cjs/interaction/zoom/zoomable.js +4 -6
  41. package/cjs/interaction/zoom/zoomable.js.map +1 -1
  42. package/cjs/mark/base/base-mark.js +2 -2
  43. package/cjs/mark/base/base-mark.js.map +1 -1
  44. package/cjs/series/funnel/funnel.js +2 -1
  45. package/cjs/series/funnel/funnel.js.map +1 -1
  46. package/cjs/series/map/geo-source.d.ts +1 -1
  47. package/cjs/series/map/geo-source.js.map +1 -1
  48. package/esm/component/axis/base-axis.js +1 -1
  49. package/esm/component/axis/base-axis.js.map +1 -1
  50. package/esm/component/brush/brush.d.ts +0 -5
  51. package/esm/component/brush/brush.js +13 -60
  52. package/esm/component/brush/brush.js.map +1 -1
  53. package/esm/component/brush/interface.d.ts +0 -3
  54. package/esm/component/brush/interface.js.map +1 -1
  55. package/esm/component/data-zoom/data-filter-base-component.d.ts +2 -11
  56. package/esm/component/data-zoom/data-filter-base-component.js +12 -31
  57. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  58. package/esm/component/data-zoom/data-zoom/data-zoom.d.ts +0 -1
  59. package/esm/component/data-zoom/data-zoom/data-zoom.js +9 -12
  60. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  61. package/esm/component/data-zoom/data-zoom/interface.d.ts +0 -1
  62. package/esm/component/data-zoom/data-zoom/interface.js.map +1 -1
  63. package/esm/component/data-zoom/interface.d.ts +0 -2
  64. package/esm/component/data-zoom/interface.js.map +1 -1
  65. package/esm/component/data-zoom/scroll-bar/scroll-bar.js +2 -3
  66. package/esm/component/data-zoom/scroll-bar/scroll-bar.js.map +1 -1
  67. package/esm/component/data-zoom/util.js +1 -5
  68. package/esm/component/data-zoom/util.js.map +1 -1
  69. package/esm/component/label/base-label.d.ts +2 -1
  70. package/esm/component/label/base-label.js +3 -0
  71. package/esm/component/label/base-label.js.map +1 -1
  72. package/esm/component/label/label.d.ts +1 -2
  73. package/esm/component/label/label.js +8 -9
  74. package/esm/component/label/label.js.map +1 -1
  75. package/esm/component/label/total-label.d.ts +1 -0
  76. package/esm/component/label/total-label.js +10 -0
  77. package/esm/component/label/total-label.js.map +1 -1
  78. package/esm/core/index.d.ts +1 -1
  79. package/esm/core/index.js +1 -1
  80. package/esm/core/index.js.map +1 -1
  81. package/esm/event/interface.d.ts +1 -1
  82. package/esm/event/interface.js.map +1 -1
  83. package/esm/interaction/zoom/zoomable.js +4 -6
  84. package/esm/interaction/zoom/zoomable.js.map +1 -1
  85. package/esm/mark/base/base-mark.js +1 -1
  86. package/esm/mark/base/base-mark.js.map +1 -1
  87. package/esm/series/funnel/funnel.js +2 -1
  88. package/esm/series/funnel/funnel.js.map +1 -1
  89. package/esm/series/map/geo-source.d.ts +1 -1
  90. package/esm/series/map/geo-source.js.map +1 -1
  91. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/brush/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { SymbolType } from '@visactor/vrender-core';\nimport type { IPolygonMarkSpec } from '../../typings';\nimport type { IComponent } from '../interface';\nimport type { IDelayType } from '../../typings/event';\n\nexport type IBrush = IComponent;\n\ninterface IBrushDataBindSpec {\n /**\n * 可刷取的regionIndex\n */\n regionIndex?: number | number[]; // 默认为所有region\n /**\n * 可刷取的regionId\n */\n regionId?: string | string[]; // 默认为所有region\n /**\n * 可刷取的seriesIndex\n */\n seriesIndex?: number | number[]; // 默认为所有系列\n /**\n * 可刷取的seriesId\n */\n seriesId?: string | string[]; // 默认为所有系列\n /**\n * 刷取联动的seriesIndex\n */\n brushLinkSeriesIndex?: number | number[]; // 默认无系列\n /**\n * 刷取联动的seriesId\n */\n brushLinkSeriesId?: string | string[]; // 默认无系列\n /**\n * 刷取关联的dataZoom id, 只有当前操作的region/series与dataZoom关联同一个axis时生效\n * @since 1.10.0\n */\n dataZoomId?: string | string[];\n /**\n * 刷取关联的dataZoom index, 只有当前操作的region/series与dataZoom关联同一个axis时生效\n * @since 1.10.0\n */\n dataZoomIndex?: number | number[];\n /**\n * 更新dataZoom范围时, 按百分比进行范围拓展, 比如: dataZoomRangeExpand = 0.05, 则代表更新时newStart - 0.05 & newEnd + 0.05\n * @since 1.10.0\n * 原因:\n * 1) 轴的zero、nice、min、max等配置可能导致轴范围与dataZoom范围不一致)\n * 2) 散点图按照散点中心定位, 如果严格按照中心范围更新,会出现散点超出画布的现象\n */\n dataZoomRangeExpand?: number;\n}\n\nexport interface IBrushTheme {\n /**\n * brush 的框选样式\n */\n style?: Partial<IPolygonMarkSpec>;\n\n /**\n * 框选范围内的图元样式\n */\n inBrush?: selectedItemStyle;\n /**\n * 框选范围外的图元样式\n */\n outOfBrush?: selectedItemStyle;\n /**\n * 框选模式\n * @default 'single'\n */\n brushMode?: IBrushMode;\n /**\n * 框选类型\n * @default 'rect'\n */\n brushType?: IBrushType;\n /**\n * 是否可被平移\n * @default true\n */\n brushMoved?: boolean;\n /**\n * brushMode为'single'时,是否单击清除选框\n * @default true\n */\n removeOnClick?: boolean;\n /**\n * 事件触发延迟类型\n * @default 'throttle'\n */\n delayType?: IDelayType;\n /**\n * 事件触发延迟时长\n * @default 10\n */\n delayTime?: number;\n /**\n * brush选框的大小阈值\n * @default 5\n * @since 1.2.0\n */\n sizeThreshold?: number;\n}\n\nexport interface IBrushSpec extends IBrushTheme, IBrushDataBindSpec {\n /** 组件 id */\n id?: string;\n /**\n * 组件可见性\n * @default true\n */\n visible?: boolean;\n}\n\nexport type IBrushType = 'x' | 'y' | 'rect' | 'polygon';\nexport type IBrushMode = 'single' | 'multiple';\n\nexport type selectedItemStyle = {\n /**\n * 图元的图形类别\n */\n symbol?: SymbolType;\n /**\n * 图元的大小\n */\n symbolSize?: number;\n /**\n * 图元的颜色\n */\n color?: string;\n /**\n * 图元的颜色透明度\n */\n colorAlpha?: number;\n} & Partial<IPolygonMarkSpec>;\n\nexport type BrushInteractiveRangeAttr = {\n interactiveRange: {\n minY: number;\n maxY: number;\n minX: number;\n maxX: number;\n };\n xRange: [number, number];\n yRange: [number, number];\n};\n"]}
1
+ {"version":3,"sources":["../src/component/brush/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { SymbolType } from '@visactor/vrender-core';\nimport type { IPolygonMarkSpec } from '../../typings';\nimport type { IComponent } from '../interface';\nimport type { IDelayType } from '../../typings/event';\n\nexport type IBrush = IComponent;\n\ninterface IBrushDataBindSpec {\n /**\n * 可刷取的regionIndex\n */\n regionIndex?: number | number[]; // 默认为所有region\n /**\n * 可刷取的regionId\n */\n regionId?: string | string[]; // 默认为所有region\n /**\n * 可刷取的seriesIndex\n */\n seriesIndex?: number | number[]; // 默认为所有系列\n /**\n * 可刷取的seriesId\n */\n seriesId?: string | string[]; // 默认为所有系列\n /**\n * 刷取联动的seriesIndex\n */\n brushLinkSeriesIndex?: number | number[]; // 默认无系列\n /**\n * 刷取联动的seriesId\n */\n brushLinkSeriesId?: string | string[]; // 默认无系列\n}\n\nexport interface IBrushTheme {\n /**\n * brush 的框选样式\n */\n style?: Partial<IPolygonMarkSpec>;\n\n /**\n * 框选范围内的图元样式\n */\n inBrush?: selectedItemStyle;\n /**\n * 框选范围外的图元样式\n */\n outOfBrush?: selectedItemStyle;\n /**\n * 框选模式\n * @default 'single'\n */\n brushMode?: IBrushMode;\n /**\n * 框选类型\n * @default 'rect'\n */\n brushType?: IBrushType;\n /**\n * 是否可被平移\n * @default true\n */\n brushMoved?: boolean;\n /**\n * brushMode为'single'时,是否单击清除选框\n * @default true\n */\n removeOnClick?: boolean;\n /**\n * 事件触发延迟类型\n * @default 'throttle'\n */\n delayType?: IDelayType;\n /**\n * 事件触发延迟时长\n * @default 10\n */\n delayTime?: number;\n /**\n * brush选框的大小阈值\n * @default 5\n * @since 1.2.0\n */\n sizeThreshold?: number;\n}\n\nexport interface IBrushSpec extends IBrushTheme, IBrushDataBindSpec {\n /** 组件 id */\n id?: string;\n /**\n * 组件可见性\n * @default true\n */\n visible?: boolean;\n}\n\nexport type IBrushType = 'x' | 'y' | 'rect' | 'polygon';\nexport type IBrushMode = 'single' | 'multiple';\n\nexport type selectedItemStyle = {\n /**\n * 图元的图形类别\n */\n symbol?: SymbolType;\n /**\n * 图元的大小\n */\n symbolSize?: number;\n /**\n * 图元的颜色\n */\n color?: string;\n /**\n * 图元的颜色透明度\n */\n colorAlpha?: number;\n} & Partial<IPolygonMarkSpec>;\n\nexport type BrushInteractiveRangeAttr = {\n interactiveRange: {\n minY: number;\n maxY: number;\n minX: number;\n maxX: number;\n };\n xRange: [number, number];\n yRange: [number, number];\n};\n"]}
@@ -19,6 +19,7 @@ export declare abstract class DataFilterBaseComponent<T extends IDataFilterCompo
19
19
  protected _fixedBandSize?: number;
20
20
  protected _cacheRect?: ILayoutRect;
21
21
  protected _cacheVisibility?: boolean;
22
+ get orient(): IOrientType;
22
23
  protected _stateScale: IBaseScale;
23
24
  protected _relatedAxisComponent: IComponent;
24
25
  protected _originalStateFields: Record<number, string | number>;
@@ -44,16 +45,6 @@ export declare abstract class DataFilterBaseComponent<T extends IDataFilterCompo
44
45
  protected _zoomAttr: IRoamZoomSpec;
45
46
  protected _dragAttr: IRoamDragSpec;
46
47
  protected _scrollAttr: IRoamScrollSpec;
47
- get orient(): IOrientType;
48
- get isHorizontal(): boolean;
49
- get stateScale(): IBaseScale;
50
- get relatedAxisComponent(): IComponent;
51
- get state(): {
52
- start: number;
53
- end: number;
54
- startValue: string | number;
55
- endValue: string | number;
56
- };
57
48
  setStartAndEnd(start: number | string, end: number | string, rangeMode?: ['percent' | 'value', 'percent' | 'value']): void;
58
49
  enableInteraction(): void;
59
50
  disableInteraction(): void;
@@ -87,7 +78,7 @@ export declare abstract class DataFilterBaseComponent<T extends IDataFilterCompo
87
78
  protected _initData(): void;
88
79
  setAttrFromSpec(): void;
89
80
  protected _statePointToData(state: number): any;
90
- dataToStatePoint(data: number | string): number;
81
+ protected _dataToStatePoint(data: number | string): number;
91
82
  protected _modeCheck(statePoint: 'start' | 'end', mode: string): any;
92
83
  protected _setStateFromSpec(): void;
93
84
  private _parseFieldOfSeries;
@@ -10,25 +10,8 @@ class DataFilterBaseComponent extends base_component_1.BaseComponent {
10
10
  get orient() {
11
11
  return this._orient;
12
12
  }
13
- get isHorizontal() {
14
- return this._isHorizontal;
15
- }
16
- get stateScale() {
17
- return this._stateScale;
18
- }
19
- get relatedAxisComponent() {
20
- return this._relatedAxisComponent;
21
- }
22
- get state() {
23
- return {
24
- start: this._start,
25
- end: this._end,
26
- startValue: this._startValue,
27
- endValue: this._endValue
28
- };
29
- }
30
13
  setStartAndEnd(start, end, rangeMode = [ "percent", "percent" ]) {
31
- const [startMode = "percent", endMode = "percent"] = rangeMode, startPercent = "percent" === startMode ? start : this.dataToStatePoint(start), endPercent = "percent" === endMode ? end : this.dataToStatePoint(end);
14
+ const [startMode = "percent", endMode = "percent"] = rangeMode, startPercent = "percent" === startMode ? start : this._dataToStatePoint(start), endPercent = "percent" === endMode ? end : this._dataToStatePoint(end);
32
15
  this._handleChange(startPercent, endPercent, !0);
33
16
  }
34
17
  enableInteraction() {
@@ -53,7 +36,7 @@ class DataFilterBaseComponent extends base_component_1.BaseComponent {
53
36
  }
54
37
  _handleChange(start, end, updateComponent) {
55
38
  var _a, _b;
56
- null !== (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.zoomLock) && void 0 !== _b && _b && (this._shouldChange = !1);
39
+ (null !== (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.zoomLock) && void 0 !== _b && _b || end - start < this._minSpan || end - start > this._maxSpan) && (this._shouldChange = !1);
57
40
  }
58
41
  _isReverse() {
59
42
  const axis = this._relatedAxisComponent;
@@ -223,7 +206,6 @@ class DataFilterBaseComponent extends base_component_1.BaseComponent {
223
206
  this._stateScale.domain(domain, !0), this._handleChange(this._start, this._end, !0);
224
207
  }
225
208
  _computeDomainOfStateScale(isContinuous) {
226
- if (this._spec.customDomain) return this._spec.customDomain;
227
209
  const domain = this._data.getLatestData().map((d => d[this._stateField]));
228
210
  if (isContinuous) {
229
211
  const domainNum = domain.map((n => 1 * n));
@@ -295,14 +277,13 @@ class DataFilterBaseComponent extends base_component_1.BaseComponent {
295
277
  this._visible = null === (_a = this._spec.visible) || void 0 === _a || _a;
296
278
  }
297
279
  _statePointToData(state) {
298
- const scale = this._stateScale, domain = scale.domain();
299
- if ((0, vscale_1.isContinuous)(scale.type)) return this._isReverse() ? domain[0] + (domain[1] - domain[0]) * (1 - state) : domain[0] + (domain[1] - domain[0]) * state;
280
+ const scale = this._stateScale;
300
281
  let range = scale.range();
301
282
  this._isReverse() && (range = range.slice().reverse());
302
- const posInRange = range[0] + (range[1] - range[0]) * state, bandSize = scale.bandwidth();
303
- return domain[Math.min(Math.max(0, Math.floor(posInRange / bandSize)), domain.length - 1)];
283
+ const posInRange = range[0] + (range[1] - range[0]) * state;
284
+ return scale.invert(posInRange);
304
285
  }
305
- dataToStatePoint(data) {
286
+ _dataToStatePoint(data) {
306
287
  const scale = this._stateScale, pos = scale.scale(data);
307
288
  let range = scale.range();
308
289
  return !this._isHorizontal && (0, vscale_1.isContinuous)(scale.type) && (range = range.slice().reverse()),
@@ -316,10 +297,10 @@ class DataFilterBaseComponent extends base_component_1.BaseComponent {
316
297
  let start, end;
317
298
  if (this._auto = !!this._spec.auto, this._spec.rangeMode) {
318
299
  const [startMode, endMode] = this._spec.rangeMode;
319
- this._modeCheck("start", startMode) && this._modeCheck("end", endMode) && (start = "percent" === startMode ? this._spec.start : this.dataToStatePoint(this._spec.startValue),
320
- end = "percent" === endMode ? this._spec.end : this.dataToStatePoint(this._spec.endValue));
321
- } else start = this._spec.start ? this._spec.start : this._spec.startValue ? this.dataToStatePoint(this._spec.startValue) : 0,
322
- end = this._spec.end ? this._spec.end : this._spec.endValue ? this.dataToStatePoint(this._spec.endValue) : 1;
300
+ this._modeCheck("start", startMode) && this._modeCheck("end", endMode) && (start = "percent" === startMode ? this._spec.start : this._dataToStatePoint(this._spec.startValue),
301
+ end = "percent" === endMode ? this._spec.end : this._dataToStatePoint(this._spec.endValue));
302
+ } else start = this._spec.start ? this._spec.start : this._spec.startValue ? this._dataToStatePoint(this._spec.startValue) : 0,
303
+ end = this._spec.end ? this._spec.end : this._spec.endValue ? this._dataToStatePoint(this._spec.endValue) : 1;
323
304
  this._startValue = this._statePointToData(start), this._endValue = this._statePointToData(end),
324
305
  this._start = start, this._end = end, this._minSpan = null !== (_a = this._spec.minSpan) && void 0 !== _a ? _a : 0,
325
306
  this._maxSpan = null !== (_b = this._spec.maxSpan) && void 0 !== _b ? _b : 1, (0,
@@ -340,8 +321,8 @@ class DataFilterBaseComponent extends base_component_1.BaseComponent {
340
321
  const domainNum = domain.map((n => 1 * n));
341
322
  this._stateScale.domain(domain.length ? [ (0, vutils_1.minInArray)(domainNum), (0,
342
323
  vutils_1.maxInArray)(domainNum) ] : [ 0, 1 ], !0).range(defaultRange);
343
- } else this._stateScale.domain(domain, !0).range(defaultRange).padding(0);
344
- } else this._stateScale = (new vscale_1.BandScale).padding(0), this._stateScale.domain(this._computeDomainOfStateScale(), !0).range(defaultRange);
324
+ } else this._stateScale.domain(domain, !0).range(defaultRange);
325
+ } else this._stateScale = new vscale_1.BandScale, this._stateScale.domain(this._computeDomainOfStateScale(), !0).range(defaultRange);
345
326
  }
346
327
  init(option) {
347
328
  super.init(option), this._addTransformToSeries(), 0 === this._start && 1 === this._end || this.effect.onZoomChange();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/data-zoom/data-filter-base-component.ts"],"names":[],"mappings":"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","file":"data-filter-base-component.js","sourcesContent":["import type { ICartesianSeries, IPolarSeries, ISeries } from '../../series/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { eachSeries } from '../../util/model';\n// eslint-disable-next-line no-duplicate-imports\nimport { BaseComponent } from '../base/base-component';\nimport type { IEffect, IModelInitOption } from '../../model/interface';\nimport type { IComponent, IComponentOption } from '../interface';\nimport type { IGroupMark } from '../../mark/group';\nimport { dataFilterComputeDomain, dataFilterWithNewDomain } from './util';\nimport type { AdaptiveSpec, ILayoutRect, ILayoutType, IOrientType, IRect, StringOrNumber } from '../../typings';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../../data/register';\nimport { BandScale, isContinuous, isDiscrete } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IBandLikeScale, IBaseScale, LinearScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { Direction } from '../../typings/space';\nimport type { CartesianAxis, ICartesianBandAxisSpec } from '../axis/cartesian';\nimport { getDirectionByOrient, getOrient } from '../axis/cartesian/util/common';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { mixin, clamp, isNil, merge, isEqual, isValid, array, minInArray, maxInArray, abs } from '@visactor/vutils';\nimport { IFilterMode } from './constant';\nimport type {\n IDataFilterComponent,\n IDataFilterComponentSpec,\n IRoamDragSpec,\n IRoamScrollSpec,\n IRoamZoomSpec\n} from './interface';\nimport { dataViewParser, DataView } from '@visactor/vdataset';\nimport { CompilableData } from '../../compile/data/compilable-data';\nimport type { BaseEventParams } from '../../event/interface';\nimport type { IZoomable } from '../../interaction/zoom/zoomable';\n// eslint-disable-next-line no-duplicate-imports\nimport { Zoomable } from '../../interaction/zoom/zoomable';\nimport type { AbstractComponent, DataZoom } from '@visactor/vrender-components';\nimport type { IDelayType } from '../../typings/event';\nimport { TransformLevel } from '../../data/initialize';\nimport type { IDataZoomSpec } from './data-zoom/interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport { AttributeLevel } from '../../constant';\n\nexport abstract class DataFilterBaseComponent<T extends IDataFilterComponentSpec = IDataFilterComponentSpec>\n extends BaseComponent<AdaptiveSpec<T, 'width' | 'height'>>\n implements IDataFilterComponent\n{\n layoutType: ILayoutType | 'none' = 'none';\n\n protected _component: AbstractComponent;\n\n protected _orient: IOrientType = 'left';\n protected _isHorizontal: boolean;\n\n // 是否为自动模式\n protected _auto?: boolean;\n protected _fixedBandSize?: number;\n protected _cacheRect?: ILayoutRect;\n protected _cacheVisibility?: boolean = undefined;\n\n // 数据\n protected _stateScale: IBaseScale;\n\n protected _relatedAxisComponent!: IComponent;\n protected _originalStateFields: Record<number, string | number>;\n\n // 与系列的关联关系\n // 优先级:id > index\n // 最终结果:series & region取交集\n protected _seriesUserId?: StringOrNumber[];\n protected _seriesIndex?: number[];\n protected _regionUserId!: string[];\n protected _regionIndex!: number[];\n protected _newDomain: any[];\n\n // 起点数据\n protected _startValue!: number | string;\n // 终点数据\n protected _endValue!: number | string;\n // 开始值,百分比值,0 - 1\n protected _start!: number;\n // 结束值,百分比值,0 - 1\n protected _end!: number;\n // 最小窗口范围\n protected _minSpan!: number;\n // 最大窗口范围\n protected _maxSpan!: number;\n protected _shouldChange: boolean = true;\n\n protected _field!: string | undefined;\n protected _stateField: string = 'x';\n protected _valueField?: string;\n\n protected _width!: number;\n protected _height!: number;\n\n protected _filterMode!: IFilterMode;\n\n protected _activeRoam: boolean = true;\n protected _zoomAttr: IRoamZoomSpec = {\n enable: true,\n rate: 1,\n focus: true\n };\n protected _dragAttr: IRoamDragSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n protected _scrollAttr: IRoamScrollSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n\n get orient() {\n return this._orient;\n }\n get isHorizontal() {\n return this._isHorizontal;\n }\n get stateScale() {\n return this._stateScale;\n }\n\n get relatedAxisComponent() {\n return this._relatedAxisComponent;\n }\n\n get state() {\n return {\n start: this._start,\n end: this._end,\n startValue: this._startValue,\n endValue: this._endValue\n };\n }\n\n /**\n * 外部可以通过此方法强制改变datazoom的start和end,达到聚焦定位的效果\n * @param start datazoom起点所在的相对位置\n * @param end datazoom终点所在的相对位置\n * @returns\n */\n setStartAndEnd(\n start: number | string,\n end: number | string,\n rangeMode: ['percent' | 'value', 'percent' | 'value'] = ['percent', 'percent']\n ) {\n const [startMode = 'percent', endMode = 'percent'] = rangeMode;\n\n const startPercent = (startMode === 'percent' ? start : this.dataToStatePoint(start)) as number;\n const endPercent = (endMode === 'percent' ? end : this.dataToStatePoint(end)) as number;\n\n this._handleChange(startPercent, endPercent, true);\n }\n\n enableInteraction() {\n this._activeRoam = true;\n }\n disableInteraction() {\n this._activeRoam = false;\n }\n zoomIn(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 1.2, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n zoomOut(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 0.8, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n protected abstract _getComponentAttrs(): any;\n protected abstract _createOrUpdateComponent(): void;\n protected abstract _computeWidth(): number;\n protected abstract _computeHeight(): number;\n protected abstract _handleDataCollectionChange(): void;\n\n protected _handleChange(start: number, end: number, updateComponent?: boolean) {\n const zoomLock = this._spec?.zoomLock ?? false;\n if (zoomLock) {\n this._shouldChange = false;\n }\n }\n\n protected _isReverse() {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (!axis) {\n return false;\n }\n const axisScale = axis.getScale() as IBandLikeScale;\n return axisScale.range()[0] > axisScale.range()[1] && (!axis.getInverse() || this._isHorizontal);\n }\n\n protected _updateRangeFactor(tag?: string, label?: string) {\n // 轴的range有时是相反的\n // 比如相同的region范围, 有的场景range为[0, 500], 有的场景range为[500, 0]\n // 而datazoom/scrollbar的range是根据布局强制转化为[0, 500]\n // 所以这里在转换时进行判断并做转置, 有待优化\n // 轴在inverse时,也要做转置处理\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisScale = axis.getScale() as IBandLikeScale;\n const reverse = this._isReverse();\n const newRangeFactor: [number, number] = reverse ? [1 - this._end, 1 - this._start] : [this._start, this._end];\n\n if (reverse) {\n switch (tag) {\n case 'startHandler':\n axisScale.rangeFactorEnd(newRangeFactor[1]);\n break;\n case 'endHandler':\n axisScale.rangeFactorStart(newRangeFactor[0]);\n break;\n default:\n axisScale.rangeFactorStart(newRangeFactor[0], true);\n axisScale.rangeFactorEnd(newRangeFactor[1]); // end 保证为准确值\n }\n } else {\n switch (tag) {\n case 'startHandler':\n axisScale.rangeFactorStart(newRangeFactor[0]);\n break;\n case 'endHandler':\n axisScale.rangeFactorEnd(newRangeFactor[1]);\n break;\n default:\n axisScale.rangeFactorEnd(newRangeFactor[1], true);\n axisScale.rangeFactorStart(newRangeFactor[0]); // start 保证为准确值\n }\n }\n\n const newFactor = axisScale.rangeFactor();\n if (newFactor) {\n this._start = reverse ? 1 - newFactor[1] : newFactor[0];\n this._end = reverse ? 1 - newFactor[0] : newFactor[1];\n } else {\n this._start = 0;\n this._end = 1;\n }\n }\n\n effect: IEffect = {\n onZoomChange: (tag?: string) => {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (axis && this._filterMode === IFilterMode.axis) {\n const axisScale = axis.getScale() as IBandLikeScale;\n const axisSpec = axis.getSpec() as ICartesianBandAxisSpec;\n // 判断是否允许自由更改轴 bandSize\n if (this._auto && this._getAxisBandSize(axisSpec) && (this._spec as IDataZoomSpec).ignoreBandSize) {\n axisScale.bandwidth('auto');\n axisScale.maxBandwidth('auto');\n axisScale.minBandwidth('auto');\n }\n\n this._updateRangeFactor(tag, 'zoomChange');\n\n (this._component as DataZoom)?.setStartAndEnd?.(this._start, this._end);\n axis.effect.scaleUpdate();\n } else {\n eachSeries(\n this._regions,\n s => {\n s.getViewData()?.markRunning();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n eachSeries(\n this._regions,\n s => {\n s.reFilterViewData();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n };\n\n protected _visible: boolean = true;\n get visible() {\n return this._visible;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec as any, options);\n this._orient = getOrient(spec as any);\n this._isHorizontal = getDirectionByOrient(this._orient) === Direction.horizontal;\n }\n\n /**\n * the hook after this component is created\n */\n created() {\n super.created();\n // related axis\n this._setAxisFromSpec();\n // related regions\n this._setRegionsFromSpec();\n this._initEvent();\n // data for background\n this._initData();\n // init the state scale\n this._initStateScale();\n // set state: _start, _end, _startValue, _endValue, _newDomain from spec\n this._setStateFromSpec();\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout && (this._layout.layoutOrient = this._orient);\n }\n\n protected _setAxisFromSpec() {\n if (isValid(this._spec.axisId)) {\n this._relatedAxisComponent = this._option.getComponentByUserId(this._spec.axisId);\n } else if (isValid(this._spec.axisIndex)) {\n this._relatedAxisComponent = this._option.getComponentByIndex('axes', this._spec.axisIndex);\n }\n\n // 如果用户没有配置关联轴 或 用户配置的关联轴和datazoom方向不一致\n // 则 使用与datazoom的orient相同的第一个axis作为关联轴\n if (isNil(this._spec.field) && !this._relatedAxisComponent) {\n const axes = this._option.getComponentsByKey('axes');\n const sameOrientAxis = axes.find((cm: any) => (cm as any)._orient === this._orient);\n\n if (sameOrientAxis) {\n this._relatedAxisComponent = sameOrientAxis;\n } else {\n const bandAxis = axes.find((cm: any) => !isContinuous((cm as any).getScale().type));\n\n this._relatedAxisComponent = bandAxis;\n }\n }\n if (this._relatedAxisComponent && this._filterMode === IFilterMode.axis) {\n (this._relatedAxisComponent as CartesianAxis<any>).autoIndentOnce = true;\n }\n }\n\n protected _setRegionsFromSpec() {\n // 从axis中获取关联的regions\n this._regions = this._relatedAxisComponent ? this._relatedAxisComponent.getRegions() : this._option.getAllRegions();\n // 默认使用关联轴的系列绑定关系\n const bindSeriesFilter = this._relatedAxisComponent ? this._relatedAxisComponent.getBindSeriesFilter?.() : null;\n if (isValid(bindSeriesFilter)) {\n isValid(bindSeriesFilter.userId) && (this._seriesUserId = array(bindSeriesFilter.userId));\n isValid(bindSeriesFilter.specIndex) && (this._seriesIndex = array(bindSeriesFilter.specIndex));\n }\n // spec中的系列绑定关系 取交集\n if (isValid(this._spec.seriesId)) {\n const specSeriesId = array(this._spec.seriesId);\n if (this._seriesUserId) {\n this._seriesUserId = this._seriesUserId.filter(s => specSeriesId.includes(s));\n } else {\n this._seriesUserId = specSeriesId;\n }\n }\n if (isValid(this._spec.seriesIndex)) {\n const specSeriesIndex = array(this._spec.seriesIndex);\n if (this._seriesIndex) {\n this._seriesIndex = this._seriesIndex.filter(s => specSeriesIndex.includes(s));\n } else {\n this._seriesIndex = specSeriesIndex;\n }\n }\n if (isValid(this._spec.regionIndex)) {\n const regionsFromSpec = this._option.getRegionsInIndex(array(this._spec.regionIndex));\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = this._regions.filter(r => regionsFromSpec.includes(r));\n return;\n }\n if (isValid(this._spec.regionId)) {\n const ids = array(this._spec.regionId);\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = ids.length ? this._regions.filter(r => ids.includes(r.id)) : [];\n return;\n }\n return;\n }\n\n onDataUpdate(): void {\n const domain = this._computeDomainOfStateScale(isContinuous(this._stateScale.type));\n\n this._stateScale.domain(domain, true);\n this._handleChange(this._start, this._end, true);\n }\n\n protected _computeDomainOfStateScale(isContinuous?: boolean) {\n if ((this._spec as IDataZoomSpec).customDomain) {\n return (this._spec as IDataZoomSpec).customDomain;\n }\n\n const domain = this._data.getLatestData().map((d: any) => d[this._stateField]);\n\n if (isContinuous) {\n const domainNum = domain.map((n: any) => n * 1);\n return domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [-Infinity, Infinity];\n }\n\n return domain;\n }\n\n protected _initEvent() {\n this._initCommonEvent();\n }\n\n protected _initData() {\n const dataCollection: any[] = [];\n const stateFields: string[] = [];\n const valueFields: string[] = [];\n let hasValidateValueField = false;\n\n if (this._relatedAxisComponent) {\n const originalStateFields = {};\n eachSeries(\n this._regions,\n s => {\n // 如果副轴的类型是time或band,则无法进行数据统计\n const xAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getXAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).angleAxisHelper\n : null;\n const yAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getYAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).radiusAxisHelper\n : null;\n if (!xAxisHelper || !yAxisHelper) {\n return;\n }\n const stateAxisHelper =\n xAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? xAxisHelper\n : yAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? yAxisHelper\n : this._isHorizontal\n ? xAxisHelper\n : yAxisHelper;\n const valueAxisHelper = stateAxisHelper === xAxisHelper ? yAxisHelper : xAxisHelper;\n const isValidateValueAxis = isContinuous(valueAxisHelper.getScale(0).type);\n\n if (isValidateValueAxis) {\n hasValidateValueField = true;\n }\n\n dataCollection.push(s.getRawData());\n // 这里获取原始的spec中的xField和yField,而非经过stack处理后的fieldX和fieldY,原因如下:\n // 1. dataFilterComputeDomain处理时拿到的viewData中没有__VCHART_STACK_START等属性,也就是还没处理\n // 2. datazoom计算的是原始的value值,如果要根据stack后的数据来算,则需要__VCHART_STACK_END - __VCHART_STACK_START\n const seriesSpec = s.getSpec();\n\n const xFields = array(seriesSpec.xField);\n const yFields = array(seriesSpec.yField);\n const xField = s.coordinate === 'cartesian' ? xFields[0] : seriesSpec.angleField ?? seriesSpec.categoryField;\n const yField = s.coordinate === 'cartesian' ? yFields[0] : seriesSpec.radiusField ?? seriesSpec.valueField;\n\n originalStateFields[s.id] =\n s.type === 'link' ? 'from_xField' : stateAxisHelper === xAxisHelper ? xField : yField;\n\n stateFields.push(originalStateFields[s.id]);\n if (this._valueField) {\n const valueField = s.type === 'link' ? 'from_yField' : valueAxisHelper === xAxisHelper ? xField : yField;\n valueFields.push(isValidateValueAxis ? valueField : null);\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n\n this._originalStateFields = originalStateFields;\n } else {\n hasValidateValueField = isNil(this._spec.valueField);\n eachSeries(\n this._regions,\n s => {\n dataCollection.push(s.getRawData());\n\n stateFields.push(this._field);\n if (this._valueField) {\n valueFields.push(this._spec.valueField);\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n const { dataSet } = this._option;\n registerDataSetInstanceParser(dataSet, 'dataview', dataViewParser);\n registerDataSetInstanceTransform(dataSet, 'dataFilterComputeDomain', dataFilterComputeDomain);\n const data = new DataView(dataSet, { name: `${this.type}_${this.id}_data` });\n data.transform(\n {\n type: 'dataFilterComputeDomain',\n options: {\n input: {\n dataCollection: dataCollection,\n stateFields,\n valueFields\n },\n output: {\n stateField: this._stateField,\n valueField: this._valueField\n }\n }\n },\n false\n );\n\n this._data = new CompilableData(this._option, data);\n data.reRunAllTransform();\n dataSet.multipleDataViewAddListener(dataCollection, 'change', this._handleDataCollectionChange.bind(this));\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n // interaction相关\n if (this._spec.roamZoom === true || this._spec.roamZoom) {\n this._zoomAttr = merge({}, this._zoomAttr, this._spec.roamZoom);\n } else {\n this._zoomAttr.enable = false;\n }\n\n if (this._spec.roamDrag === true || this._spec.roamDrag) {\n this._dragAttr = merge({}, this._dragAttr, this._spec.roamDrag);\n } else {\n this._dragAttr.enable = false;\n }\n\n if (this._spec.roamScroll === true || this._spec.roamScroll) {\n this._scrollAttr = merge({}, this._scrollAttr, this._spec.roamScroll);\n } else {\n this._scrollAttr.enable = false;\n }\n\n // style相关\n this._field = this._spec.field;\n this._width = this._computeWidth();\n this._height = this._computeHeight();\n this._visible = this._spec.visible ?? true;\n }\n\n protected _statePointToData(state: number) {\n const scale = this._stateScale;\n const domain = scale.domain();\n\n // 下面整体的逻辑本来可以用scale invert,但scale invert在大数据场景下性能不太好,所以这里自行计算\n if (isContinuous(scale.type)) {\n if (this._isReverse()) {\n return domain[0] + (domain[1] - domain[0]) * (1 - state);\n }\n return domain[0] + (domain[1] - domain[0]) * state;\n }\n let range = scale.range();\n\n if (this._isReverse()) {\n range = range.slice().reverse();\n }\n const posInRange: number = range[0] + (range[1] - range[0]) * state;\n const bandSize = (scale as BandScale).bandwidth();\n const domainIndex = Math.min(Math.max(0, Math.floor(posInRange / bandSize)), domain.length - 1);\n return domain[domainIndex];\n }\n\n dataToStatePoint(data: number | string) {\n const scale = this._stateScale;\n const pos = scale.scale(data);\n let range = scale.range();\n\n if (!this._isHorizontal && isContinuous(scale.type)) {\n range = range.slice().reverse();\n }\n\n return (pos - range[0]) / (range[1] - range[0]);\n }\n\n protected _modeCheck(statePoint: 'start' | 'end', mode: string): any {\n if (statePoint === 'start') {\n return (mode === 'percent' && this._spec.start) || (mode === 'value' && this._spec.startValue);\n }\n return (mode === 'percent' && this._spec.end) || (mode === 'value' && this._spec.endValue);\n }\n\n protected _setStateFromSpec() {\n this._auto = !!this._spec.auto;\n let start;\n let end;\n if (this._spec.rangeMode) {\n const [startMode, endMode] = this._spec.rangeMode;\n // 只有mode与配置相符时,才会生效\n // 比如rangeMode为['value', 'percent'],那么start为dataValue, end为[0, 1]\n if (this._modeCheck('start', startMode) && this._modeCheck('end', endMode)) {\n start = startMode === 'percent' ? this._spec.start : this.dataToStatePoint(this._spec.startValue);\n end = endMode === 'percent' ? this._spec.end : this.dataToStatePoint(this._spec.endValue);\n }\n } else {\n start = this._spec.start\n ? this._spec.start\n : this._spec.startValue\n ? this.dataToStatePoint(this._spec.startValue)\n : 0;\n end = this._spec.end ? this._spec.end : this._spec.endValue ? this.dataToStatePoint(this._spec.endValue) : 1;\n }\n this._startValue = this._statePointToData(start);\n this._endValue = this._statePointToData(end);\n this._start = start;\n this._end = end;\n this._minSpan = this._spec.minSpan ?? 0;\n this._maxSpan = this._spec.maxSpan ?? 1;\n if (isContinuous(this._stateScale.type) && this._stateScale.domain[0] !== this._stateScale.domain[1]) {\n if (this._spec.minValueSpan) {\n this._minSpan = this._spec.minValueSpan / (this._stateScale.domain()[1] - this._stateScale.domain()[0]);\n }\n if (this._spec.maxValueSpan) {\n this._maxSpan = this._spec.maxValueSpan / (this._stateScale.domain()[1] - this._stateScale.domain()[0]);\n }\n }\n this._minSpan = Math.max(0, this._minSpan);\n this._maxSpan = Math.min(this._maxSpan, 1);\n\n // eslint-disable-next-line max-len\n if (\n (!this._relatedAxisComponent || this._filterMode !== IFilterMode.axis) &&\n (this._start !== 0 || this._end !== 1)\n ) {\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n }\n }\n\n private _parseFieldOfSeries(s: ISeries) {\n return this._originalStateFields?.[s.id];\n }\n\n protected _initStateScale() {\n const defaultRange = [0, 1];\n\n if (this._relatedAxisComponent) {\n const scale = (this._relatedAxisComponent as CartesianAxis<any>).getScale();\n const isContinuousScale = isContinuous(scale.type);\n const domain = this._computeDomainOfStateScale(isContinuousScale);\n\n this._stateScale = scale.clone();\n if (isContinuousScale) {\n const domainNum = domain.map((n: any) => n * 1);\n this._stateScale\n .domain(domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [0, 1], true)\n .range(defaultRange);\n } else {\n this._stateScale.domain(domain, true).range(defaultRange).padding(0);\n }\n } else {\n this._stateScale = new BandScale().padding(0);\n this._stateScale.domain(this._computeDomainOfStateScale(), true).range(defaultRange);\n }\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n // 添加 transform\n this._addTransformToSeries();\n // 增加datazoom 数据统计\n // 只有在轴没有被设置数据时才有用\n // this.addZoomStatistics();\n\n if (this._start !== 0 || this._end !== 1) {\n this.effect.onZoomChange();\n }\n }\n\n protected _addTransformToSeries() {\n if (!this._relatedAxisComponent || this._filterMode !== IFilterMode.axis) {\n registerDataSetInstanceTransform(this._option.dataSet, 'dataFilterWithNewDomain', dataFilterWithNewDomain);\n\n eachSeries(\n this._regions,\n s => {\n s.addViewDataFilter({\n type: 'dataFilterWithNewDomain',\n options: {\n getNewDomain: () => this._newDomain,\n field: () => {\n return this._field ?? this._parseFieldOfSeries(s);\n },\n isContinuous: () => isContinuous(this._stateScale.type)\n },\n level: TransformLevel.dataZoomFilter\n });\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n\n /** LifeCycle API**/\n onRender(ctx: any): void {\n // do nothing\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: AdaptiveSpec<T, 'width' | 'height'>, prevSpec: AdaptiveSpec<T, 'width' | 'height'>) {\n const result = super._compareSpec(spec, prevSpec);\n if (!result.reMake && !isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n\n return result;\n }\n\n reInit(spec?: AdaptiveSpec<T, 'width' | 'height'>) {\n super.reInit(spec);\n\n this._marks.forEach(g => {\n (<IGroupMark>g).getMarks().forEach(m => {\n this.initMarkStyleWithSpec(m, this._spec[m.name]);\n });\n });\n }\n\n changeRegions() {\n // do nothing\n }\n protected update(ctx: IComponentOption) {\n // do nothing\n }\n protected resize(ctx: IComponentOption) {\n // do nothing\n }\n\n protected _parseDomainFromState(startValue: number | string, endValue: number | string) {\n if (isContinuous(this._stateScale.type)) {\n return [Math.min(endValue as number, startValue as number), Math.max(endValue as number, startValue as number)];\n }\n const allDomain = this._stateScale.domain();\n const startIndex = allDomain.indexOf(startValue);\n const endIndex = allDomain.indexOf(endValue);\n return allDomain.slice(Math.min(startIndex, endIndex), Math.max(startIndex, endIndex) + 1);\n }\n\n protected _handleStateChange = (startValue: number, endValue: number, tag?: string) => {\n this._startValue = startValue;\n this._endValue = endValue;\n\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n\n this.effect.onZoomChange?.(tag);\n return true;\n };\n\n protected _handleChartZoom = (params: { zoomDelta: number; zoomX?: number; zoomY?: number }) => {\n if (!this._activeRoam) {\n return;\n }\n\n const { zoomDelta, zoomX, zoomY } = params;\n const { x, y } = this._regions[0].getLayoutStartPoint();\n const { width, height } = this._regions[0].getLayoutRect();\n\n const delta = Math.abs(this._start - this._end);\n const zoomRate = (this._spec.roamZoom as IRoamZoomSpec)?.rate ?? 1;\n // zoomDelta > 1表示放大, zoomDelta < 1表示缩小\n if (delta >= 1 && zoomDelta < 1) {\n return;\n }\n if (delta <= 0.01 && zoomDelta > 1) {\n return;\n }\n const focusLoc = this._isHorizontal ? zoomX : zoomY;\n const totalValue = delta * (zoomDelta - 1) * zoomRate;\n let startValue = totalValue / 2;\n let endValue = totalValue / 2;\n if (focusLoc) {\n const startLoc = this._isHorizontal ? x : y;\n const endLoc = this._isHorizontal ? width : height;\n startValue = (Math.abs(startLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n endValue = (Math.abs(endLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n }\n const start = clamp(this._start + startValue, 0, 1);\n const end = clamp(this._end - endValue, 0, 1);\n\n this._handleChange(Math.min(start, end), Math.max(start, end), true);\n };\n\n protected _handleChartScroll = (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => {\n if (!this._activeRoam) {\n return false;\n }\n const { scrollX, scrollY } = params;\n let value = this._isHorizontal ? scrollX : scrollY;\n // 判断这次是否应该要滚动,最少\n const active = this._isHorizontal ? abs(scrollX / scrollY) >= 0.5 : abs(scrollY / scrollX) >= 0.5;\n if (!this._scrollAttr.reverse) {\n value = -value;\n }\n\n if (active) {\n this._handleChartMove(value, this._scrollAttr.rate ?? 1);\n }\n return active;\n };\n\n protected _handleChartDrag = (delta: [number, number], e: BaseEventParams['event']) => {\n if (!this._activeRoam) {\n return;\n }\n const [dx, dy] = delta;\n let value = this._isHorizontal ? dx : dy;\n if (this._dragAttr.reverse) {\n value = -value;\n }\n\n this._handleChartMove(value, this._dragAttr.rate ?? 1);\n };\n\n protected _handleChartMove = (value: number, rate: number) => {\n const totalValue = this._isHorizontal ? this.getLayoutRect().width : this.getLayoutRect().height;\n if (Math.abs(value) >= 1e-6) {\n if (value > 0 && this._end < 1) {\n const moveDelta = Math.min(1 - this._end, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n } else if (value < 0 && this._start > 0) {\n const moveDelta = Math.max(-this._start, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n }\n }\n };\n\n protected _initCommonEvent() {\n const delayType: IDelayType = this._spec?.delayType ?? 'throttle';\n const delayTime = isValid(this._spec?.delayType) ? this._spec?.delayTime ?? 30 : 0;\n const realTime = this._spec?.realTime ?? true;\n const option = { delayType, delayTime, realTime };\n if (this._zoomAttr.enable) {\n (this as unknown as IZoomable).initZoomEventOfRegions(this._regions, null, this._handleChartZoom, option);\n }\n if (this._scrollAttr.enable) {\n (this as unknown as IZoomable).initScrollEventOfRegions(this._regions, null, this._handleChartScroll, option);\n }\n if (this._dragAttr.enable) {\n (this as unknown as IZoomable).initDragEventOfRegions(this._regions, null, this._handleChartDrag, option);\n }\n }\n\n updateLayoutAttribute(): void {\n // create or update component\n if (this._visible) {\n this._createOrUpdateComponent();\n }\n super.updateLayoutAttribute();\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n super.onLayoutStart(layoutRect, viewRect, ctx);\n const isShown = this._autoUpdate(layoutRect);\n const sizeKey = this._isHorizontal ? 'height' : 'width';\n this.layout.setLayoutRect(\n {\n [sizeKey]: isShown ? this[`_${sizeKey}`] : 0\n },\n {\n [sizeKey]: AttributeLevel.Built_In\n }\n );\n }\n\n /**\n * bounds预计算\n * @param rect\n * @returns\n */\n getBoundsInRect(rect: ILayoutRect): IBoundsLike {\n const result: IBoundsLike = { x1: this.getLayoutStartPoint().x, y1: this.getLayoutStartPoint().y, x2: 0, y2: 0 };\n\n if (this._isHorizontal) {\n result.y2 = result.y1 + this._height;\n result.x2 = result.x1 + rect.width;\n } else {\n result.x2 = result.x1 + this._width;\n result.y2 = result.y1 + rect.height;\n }\n return result;\n }\n\n hide() {\n this._component?.hideAll();\n }\n\n show() {\n this._component?.showAll();\n }\n\n protected _getAxisBandSize(axisSpec?: ICartesianBandAxisSpec) {\n const bandSize = axisSpec?.bandSize;\n const maxBandSize = axisSpec?.maxBandSize;\n const minBandSize = axisSpec?.minBandSize;\n if (bandSize || minBandSize || maxBandSize) {\n return { bandSize, maxBandSize, minBandSize };\n }\n return undefined;\n }\n\n protected _autoUpdate(rect?: ILayoutRect): boolean {\n if (!this._auto) {\n this._cacheVisibility = undefined;\n return true;\n }\n\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisSpec = axis?.getSpec() as ICartesianBandAxisSpec | undefined;\n const axisScale = axis?.getScale() as IBandLikeScale;\n const bandSizeResult = this._getAxisBandSize(axisSpec);\n\n if (\n isDiscrete(axisScale.type) &&\n rect?.height === this._cacheRect?.height &&\n rect?.width === this._cacheRect?.width &&\n this._fixedBandSize === bandSizeResult?.bandSize\n ) {\n return this._cacheVisibility;\n }\n\n let isShown = true;\n if (this._isHorizontal && rect?.width !== this._cacheRect?.width) {\n axisScale.range(axis.getInverse() ? [rect.width, 0] : [0, rect.width]);\n } else if (rect?.height !== this._cacheRect?.height) {\n axisScale.range(axis.getInverse() ? [0, rect.height] : [rect.height, 0]);\n }\n\n this._cacheRect = {\n width: rect?.width,\n height: rect?.height\n };\n this._fixedBandSize = bandSizeResult?.bandSize;\n\n if (isDiscrete(axisScale.type)) {\n if (bandSizeResult && (this._start || this._end)) {\n this._updateRangeFactor(null, 'auto');\n }\n const [start, end] = axisScale.rangeFactor() ?? [];\n if (isNil(start) && isNil(end)) {\n isShown = false;\n } else {\n isShown = !(start === 0 && end === 1);\n }\n } else {\n const [start, end] = axisScale.rangeFactor() ?? [this._start, this._end];\n isShown = !(start === 0 && end === 1);\n }\n this.setStartAndEnd(this._start, this._end);\n if (isShown) {\n this.show();\n } else {\n this.hide();\n }\n this._cacheVisibility = isShown;\n return isShown;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._component] as unknown as IGroup[];\n }\n}\n\nmixin(DataFilterBaseComponent, Zoomable);\n"]}
1
+ {"version":3,"sources":["../src/component/data-zoom/data-filter-base-component.ts"],"names":[],"mappings":"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","file":"data-filter-base-component.js","sourcesContent":["import type { ICartesianSeries, IPolarSeries, ISeries } from '../../series/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { eachSeries } from '../../util/model';\n// eslint-disable-next-line no-duplicate-imports\nimport { BaseComponent } from '../base/base-component';\nimport type { IEffect, IModelInitOption } from '../../model/interface';\nimport type { IComponent, IComponentOption } from '../interface';\nimport type { IGroupMark } from '../../mark/group';\nimport { dataFilterComputeDomain, dataFilterWithNewDomain } from './util';\nimport type { AdaptiveSpec, ILayoutRect, ILayoutType, IOrientType, IRect, StringOrNumber } from '../../typings';\nimport { registerDataSetInstanceParser, registerDataSetInstanceTransform } from '../../data/register';\nimport { BandScale, isContinuous, isDiscrete } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport type { IBandLikeScale, IBaseScale } from '@visactor/vscale';\n// eslint-disable-next-line no-duplicate-imports\nimport { Direction } from '../../typings/space';\nimport type { CartesianAxis, ICartesianBandAxisSpec } from '../axis/cartesian';\nimport { getDirectionByOrient, getOrient } from '../axis/cartesian/util/common';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { mixin, clamp, isNil, merge, isEqual, isValid, array, minInArray, maxInArray, abs } from '@visactor/vutils';\nimport { IFilterMode } from './constant';\nimport type {\n IDataFilterComponent,\n IDataFilterComponentSpec,\n IRoamDragSpec,\n IRoamScrollSpec,\n IRoamZoomSpec\n} from './interface';\nimport { dataViewParser, DataView } from '@visactor/vdataset';\nimport { CompilableData } from '../../compile/data/compilable-data';\nimport type { BaseEventParams } from '../../event/interface';\nimport type { IZoomable } from '../../interaction/zoom/zoomable';\n// eslint-disable-next-line no-duplicate-imports\nimport { Zoomable } from '../../interaction/zoom/zoomable';\nimport type { AbstractComponent, DataZoom } from '@visactor/vrender-components';\nimport type { IDelayType } from '../../typings/event';\nimport { TransformLevel } from '../../data/initialize';\nimport type { IDataZoomSpec } from './data-zoom/interface';\nimport type { IGraphic, IGroup } from '@visactor/vrender-core';\nimport { AttributeLevel } from '../../constant';\n\nexport abstract class DataFilterBaseComponent<T extends IDataFilterComponentSpec = IDataFilterComponentSpec>\n extends BaseComponent<AdaptiveSpec<T, 'width' | 'height'>>\n implements IDataFilterComponent\n{\n layoutType: ILayoutType | 'none' = 'none';\n\n protected _component: AbstractComponent;\n\n protected _orient: IOrientType = 'left';\n protected _isHorizontal: boolean;\n\n // 是否为自动模式\n protected _auto?: boolean;\n protected _fixedBandSize?: number;\n protected _cacheRect?: ILayoutRect;\n protected _cacheVisibility?: boolean = undefined;\n\n get orient() {\n return this._orient;\n }\n\n // 数据\n protected _stateScale: IBaseScale;\n protected _relatedAxisComponent!: IComponent;\n protected _originalStateFields: Record<number, string | number>;\n\n // 与系列的关联关系\n // 优先级:id > index\n // 最终结果:series & region取交集\n protected _seriesUserId?: StringOrNumber[];\n protected _seriesIndex?: number[];\n protected _regionUserId!: string[];\n protected _regionIndex!: number[];\n protected _newDomain: any[];\n\n // 起点数据\n protected _startValue!: number | string;\n // 终点数据\n protected _endValue!: number | string;\n // 开始值,百分比值,0 - 1\n protected _start!: number;\n // 结束值,百分比值,0 - 1\n protected _end!: number;\n // 最小窗口范围\n protected _minSpan!: number;\n // 最大窗口范围\n protected _maxSpan!: number;\n protected _shouldChange: boolean = true;\n\n protected _field!: string | undefined;\n protected _stateField: string = 'x';\n protected _valueField?: string;\n\n protected _width!: number;\n protected _height!: number;\n\n protected _filterMode!: IFilterMode;\n\n protected _activeRoam: boolean = true;\n protected _zoomAttr: IRoamZoomSpec = {\n enable: true,\n rate: 1,\n focus: true\n };\n protected _dragAttr: IRoamDragSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n protected _scrollAttr: IRoamScrollSpec = {\n enable: true,\n rate: 1,\n reverse: true\n };\n\n /**\n * 外部可以通过此方法强制改变datazoom的start和end,达到聚焦定位的效果\n * @param start datazoom起点所在的相对位置\n * @param end datazoom终点所在的相对位置\n * @returns\n */\n setStartAndEnd(\n start: number | string,\n end: number | string,\n rangeMode: ['percent' | 'value', 'percent' | 'value'] = ['percent', 'percent']\n ) {\n const [startMode = 'percent', endMode = 'percent'] = rangeMode;\n\n const startPercent = (startMode === 'percent' ? start : this._dataToStatePoint(start)) as number;\n const endPercent = (endMode === 'percent' ? end : this._dataToStatePoint(end)) as number;\n\n this._handleChange(startPercent, endPercent, true);\n }\n\n enableInteraction() {\n this._activeRoam = true;\n }\n disableInteraction() {\n this._activeRoam = false;\n }\n zoomIn(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 1.2, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n zoomOut(location?: { x: number; y: number }) {\n this._handleChartZoom({\n zoomDelta: 0.8, // 经验值\n zoomX: location?.x,\n zoomY: location?.y\n });\n }\n\n protected abstract _getComponentAttrs(): any;\n protected abstract _createOrUpdateComponent(): void;\n protected abstract _computeWidth(): number;\n protected abstract _computeHeight(): number;\n protected abstract _handleDataCollectionChange(): void;\n\n protected _handleChange(start: number, end: number, updateComponent?: boolean) {\n const zoomLock = this._spec?.zoomLock ?? false;\n if (zoomLock || end - start < this._minSpan || end - start > this._maxSpan) {\n this._shouldChange = false;\n }\n }\n\n protected _isReverse() {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (!axis) {\n return false;\n }\n const axisScale = axis.getScale() as IBandLikeScale;\n return axisScale.range()[0] > axisScale.range()[1] && (!axis.getInverse() || this._isHorizontal);\n }\n\n protected _updateRangeFactor(tag?: string, label?: string) {\n // 轴的range有时是相反的\n // 比如相同的region范围, 有的场景range为[0, 500], 有的场景range为[500, 0]\n // 而datazoom/scrollbar的range是根据布局强制转化为[0, 500]\n // 所以这里在转换时进行判断并做转置, 有待优化\n // 轴在inverse时,也要做转置处理\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisScale = axis.getScale() as IBandLikeScale;\n const reverse = this._isReverse();\n const newRangeFactor: [number, number] = reverse ? [1 - this._end, 1 - this._start] : [this._start, this._end];\n\n if (reverse) {\n switch (tag) {\n case 'startHandler':\n axisScale.rangeFactorEnd(newRangeFactor[1]);\n break;\n case 'endHandler':\n axisScale.rangeFactorStart(newRangeFactor[0]);\n break;\n default:\n axisScale.rangeFactorStart(newRangeFactor[0], true);\n axisScale.rangeFactorEnd(newRangeFactor[1]); // end 保证为准确值\n }\n } else {\n switch (tag) {\n case 'startHandler':\n axisScale.rangeFactorStart(newRangeFactor[0]);\n break;\n case 'endHandler':\n axisScale.rangeFactorEnd(newRangeFactor[1]);\n break;\n default:\n axisScale.rangeFactorEnd(newRangeFactor[1], true);\n axisScale.rangeFactorStart(newRangeFactor[0]); // start 保证为准确值\n }\n }\n\n const newFactor = axisScale.rangeFactor();\n if (newFactor) {\n this._start = reverse ? 1 - newFactor[1] : newFactor[0];\n this._end = reverse ? 1 - newFactor[0] : newFactor[1];\n } else {\n this._start = 0;\n this._end = 1;\n }\n }\n\n effect: IEffect = {\n onZoomChange: (tag?: string) => {\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n if (axis && this._filterMode === IFilterMode.axis) {\n const axisScale = axis.getScale() as IBandLikeScale;\n const axisSpec = axis.getSpec() as ICartesianBandAxisSpec;\n // 判断是否允许自由更改轴 bandSize\n if (this._auto && this._getAxisBandSize(axisSpec) && (this._spec as IDataZoomSpec).ignoreBandSize) {\n axisScale.bandwidth('auto');\n axisScale.maxBandwidth('auto');\n axisScale.minBandwidth('auto');\n }\n\n this._updateRangeFactor(tag, 'zoomChange');\n\n (this._component as DataZoom)?.setStartAndEnd?.(this._start, this._end);\n axis.effect.scaleUpdate();\n } else {\n eachSeries(\n this._regions,\n s => {\n s.getViewData()?.markRunning();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n eachSeries(\n this._regions,\n s => {\n s.reFilterViewData();\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n };\n\n protected _visible: boolean = true;\n get visible() {\n return this._visible;\n }\n\n constructor(spec: T, options: IComponentOption) {\n super(spec as any, options);\n this._orient = getOrient(spec as any);\n this._isHorizontal = getDirectionByOrient(this._orient) === Direction.horizontal;\n }\n\n /**\n * the hook after this component is created\n */\n created() {\n super.created();\n // related axis\n this._setAxisFromSpec();\n // related regions\n this._setRegionsFromSpec();\n this._initEvent();\n // data for background\n this._initData();\n // init the state scale\n this._initStateScale();\n // set state: _start, _end, _startValue, _endValue, _newDomain from spec\n this._setStateFromSpec();\n }\n\n initLayout(): void {\n super.initLayout();\n this._layout && (this._layout.layoutOrient = this._orient);\n }\n\n protected _setAxisFromSpec() {\n if (isValid(this._spec.axisId)) {\n this._relatedAxisComponent = this._option.getComponentByUserId(this._spec.axisId);\n } else if (isValid(this._spec.axisIndex)) {\n this._relatedAxisComponent = this._option.getComponentByIndex('axes', this._spec.axisIndex);\n }\n\n // 如果用户没有配置关联轴 或 用户配置的关联轴和datazoom方向不一致\n // 则 使用与datazoom的orient相同的第一个axis作为关联轴\n if (isNil(this._spec.field) && !this._relatedAxisComponent) {\n const axes = this._option.getComponentsByKey('axes');\n const sameOrientAxis = axes.find((cm: any) => (cm as any)._orient === this._orient);\n\n if (sameOrientAxis) {\n this._relatedAxisComponent = sameOrientAxis;\n } else {\n const bandAxis = axes.find((cm: any) => !isContinuous((cm as any).getScale().type));\n\n this._relatedAxisComponent = bandAxis;\n }\n }\n if (this._relatedAxisComponent && this._filterMode === IFilterMode.axis) {\n (this._relatedAxisComponent as CartesianAxis<any>).autoIndentOnce = true;\n }\n }\n\n protected _setRegionsFromSpec() {\n // 从axis中获取关联的regions\n this._regions = this._relatedAxisComponent ? this._relatedAxisComponent.getRegions() : this._option.getAllRegions();\n // 默认使用关联轴的系列绑定关系\n const bindSeriesFilter = this._relatedAxisComponent ? this._relatedAxisComponent.getBindSeriesFilter?.() : null;\n if (isValid(bindSeriesFilter)) {\n isValid(bindSeriesFilter.userId) && (this._seriesUserId = array(bindSeriesFilter.userId));\n isValid(bindSeriesFilter.specIndex) && (this._seriesIndex = array(bindSeriesFilter.specIndex));\n }\n // spec中的系列绑定关系 取交集\n if (isValid(this._spec.seriesId)) {\n const specSeriesId = array(this._spec.seriesId);\n if (this._seriesUserId) {\n this._seriesUserId = this._seriesUserId.filter(s => specSeriesId.includes(s));\n } else {\n this._seriesUserId = specSeriesId;\n }\n }\n if (isValid(this._spec.seriesIndex)) {\n const specSeriesIndex = array(this._spec.seriesIndex);\n if (this._seriesIndex) {\n this._seriesIndex = this._seriesIndex.filter(s => specSeriesIndex.includes(s));\n } else {\n this._seriesIndex = specSeriesIndex;\n }\n }\n if (isValid(this._spec.regionIndex)) {\n const regionsFromSpec = this._option.getRegionsInIndex(array(this._spec.regionIndex));\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = this._regions.filter(r => regionsFromSpec.includes(r));\n return;\n }\n if (isValid(this._spec.regionId)) {\n const ids = array(this._spec.regionId);\n // 如果用户配置了region就取 axis关联 和 用户配置 的交集\n this._regions = ids.length ? this._regions.filter(r => ids.includes(r.id)) : [];\n return;\n }\n return;\n }\n\n onDataUpdate(): void {\n const domain = this._computeDomainOfStateScale(isContinuous(this._stateScale.type));\n\n this._stateScale.domain(domain, true);\n this._handleChange(this._start, this._end, true);\n }\n\n protected _computeDomainOfStateScale(isContinuous?: boolean) {\n const domain = this._data.getLatestData().map((d: any) => d[this._stateField]);\n\n if (isContinuous) {\n const domainNum = domain.map((n: any) => n * 1);\n return domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [-Infinity, Infinity];\n }\n\n return domain;\n }\n\n protected _initEvent() {\n this._initCommonEvent();\n }\n\n protected _initData() {\n const dataCollection: any[] = [];\n const stateFields: string[] = [];\n const valueFields: string[] = [];\n let hasValidateValueField = false;\n\n if (this._relatedAxisComponent) {\n const originalStateFields = {};\n eachSeries(\n this._regions,\n s => {\n // 如果副轴的类型是time或band,则无法进行数据统计\n const xAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getXAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).angleAxisHelper\n : null;\n const yAxisHelper =\n s.coordinate === 'cartesian'\n ? (s as ICartesianSeries).getYAxisHelper()\n : s.coordinate === 'polar'\n ? (s as IPolarSeries).radiusAxisHelper\n : null;\n if (!xAxisHelper || !yAxisHelper) {\n return;\n }\n const stateAxisHelper =\n xAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? xAxisHelper\n : yAxisHelper.getAxisId() === this._relatedAxisComponent.id\n ? yAxisHelper\n : this._isHorizontal\n ? xAxisHelper\n : yAxisHelper;\n const valueAxisHelper = stateAxisHelper === xAxisHelper ? yAxisHelper : xAxisHelper;\n const isValidateValueAxis = isContinuous(valueAxisHelper.getScale(0).type);\n\n if (isValidateValueAxis) {\n hasValidateValueField = true;\n }\n\n dataCollection.push(s.getRawData());\n // 这里获取原始的spec中的xField和yField,而非经过stack处理后的fieldX和fieldY,原因如下:\n // 1. dataFilterComputeDomain处理时拿到的viewData中没有__VCHART_STACK_START等属性,也就是还没处理\n // 2. datazoom计算的是原始的value值,如果要根据stack后的数据来算,则需要__VCHART_STACK_END - __VCHART_STACK_START\n const seriesSpec = s.getSpec();\n\n const xFields = array(seriesSpec.xField);\n const yFields = array(seriesSpec.yField);\n const xField = s.coordinate === 'cartesian' ? xFields[0] : seriesSpec.angleField ?? seriesSpec.categoryField;\n const yField = s.coordinate === 'cartesian' ? yFields[0] : seriesSpec.radiusField ?? seriesSpec.valueField;\n\n originalStateFields[s.id] =\n s.type === 'link' ? 'from_xField' : stateAxisHelper === xAxisHelper ? xField : yField;\n\n stateFields.push(originalStateFields[s.id]);\n if (this._valueField) {\n const valueField = s.type === 'link' ? 'from_yField' : valueAxisHelper === xAxisHelper ? xField : yField;\n valueFields.push(isValidateValueAxis ? valueField : null);\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n\n this._originalStateFields = originalStateFields;\n } else {\n hasValidateValueField = isNil(this._spec.valueField);\n eachSeries(\n this._regions,\n s => {\n dataCollection.push(s.getRawData());\n\n stateFields.push(this._field);\n if (this._valueField) {\n valueFields.push(this._spec.valueField);\n }\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n const { dataSet } = this._option;\n registerDataSetInstanceParser(dataSet, 'dataview', dataViewParser);\n registerDataSetInstanceTransform(dataSet, 'dataFilterComputeDomain', dataFilterComputeDomain);\n const data = new DataView(dataSet, { name: `${this.type}_${this.id}_data` });\n data.transform(\n {\n type: 'dataFilterComputeDomain',\n options: {\n input: {\n dataCollection: dataCollection,\n stateFields,\n valueFields\n },\n output: {\n stateField: this._stateField,\n valueField: this._valueField\n }\n }\n },\n false\n );\n\n this._data = new CompilableData(this._option, data);\n data.reRunAllTransform();\n dataSet.multipleDataViewAddListener(dataCollection, 'change', this._handleDataCollectionChange.bind(this));\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n\n // interaction相关\n if (this._spec.roamZoom === true || this._spec.roamZoom) {\n this._zoomAttr = merge({}, this._zoomAttr, this._spec.roamZoom);\n } else {\n this._zoomAttr.enable = false;\n }\n\n if (this._spec.roamDrag === true || this._spec.roamDrag) {\n this._dragAttr = merge({}, this._dragAttr, this._spec.roamDrag);\n } else {\n this._dragAttr.enable = false;\n }\n\n if (this._spec.roamScroll === true || this._spec.roamScroll) {\n this._scrollAttr = merge({}, this._scrollAttr, this._spec.roamScroll);\n } else {\n this._scrollAttr.enable = false;\n }\n\n // style相关\n this._field = this._spec.field;\n this._width = this._computeWidth();\n this._height = this._computeHeight();\n this._visible = this._spec.visible ?? true;\n }\n\n protected _statePointToData(state: number) {\n const scale = this._stateScale;\n let range = scale.range();\n\n if (this._isReverse()) {\n range = range.slice().reverse();\n }\n const posInRange: number = range[0] + (range[1] - range[0]) * state;\n\n return scale.invert(posInRange);\n }\n\n protected _dataToStatePoint(data: number | string) {\n const scale = this._stateScale;\n const pos = scale.scale(data);\n let range = scale.range();\n\n if (!this._isHorizontal && isContinuous(scale.type)) {\n range = range.slice().reverse();\n }\n\n return (pos - range[0]) / (range[1] - range[0]);\n }\n\n protected _modeCheck(statePoint: 'start' | 'end', mode: string): any {\n if (statePoint === 'start') {\n return (mode === 'percent' && this._spec.start) || (mode === 'value' && this._spec.startValue);\n }\n return (mode === 'percent' && this._spec.end) || (mode === 'value' && this._spec.endValue);\n }\n\n protected _setStateFromSpec() {\n this._auto = !!this._spec.auto;\n let start;\n let end;\n if (this._spec.rangeMode) {\n const [startMode, endMode] = this._spec.rangeMode;\n // 只有mode与配置相符时,才会生效\n // 比如rangeMode为['value', 'percent'],那么start为dataValue, end为[0, 1]\n if (this._modeCheck('start', startMode) && this._modeCheck('end', endMode)) {\n start = startMode === 'percent' ? this._spec.start : this._dataToStatePoint(this._spec.startValue);\n end = endMode === 'percent' ? this._spec.end : this._dataToStatePoint(this._spec.endValue);\n }\n } else {\n start = this._spec.start\n ? this._spec.start\n : this._spec.startValue\n ? this._dataToStatePoint(this._spec.startValue)\n : 0;\n end = this._spec.end ? this._spec.end : this._spec.endValue ? this._dataToStatePoint(this._spec.endValue) : 1;\n }\n this._startValue = this._statePointToData(start);\n this._endValue = this._statePointToData(end);\n this._start = start;\n this._end = end;\n this._minSpan = this._spec.minSpan ?? 0;\n this._maxSpan = this._spec.maxSpan ?? 1;\n if (isContinuous(this._stateScale.type) && this._stateScale.domain[0] !== this._stateScale.domain[1]) {\n if (this._spec.minValueSpan) {\n this._minSpan = this._spec.minValueSpan / (this._stateScale.domain()[1] - this._stateScale.domain()[0]);\n }\n if (this._spec.maxValueSpan) {\n this._maxSpan = this._spec.maxValueSpan / (this._stateScale.domain()[1] - this._stateScale.domain()[0]);\n }\n }\n this._minSpan = Math.max(0, this._minSpan);\n this._maxSpan = Math.min(this._maxSpan, 1);\n\n // eslint-disable-next-line max-len\n if (\n (!this._relatedAxisComponent || this._filterMode !== IFilterMode.axis) &&\n (this._start !== 0 || this._end !== 1)\n ) {\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n }\n }\n\n private _parseFieldOfSeries(s: ISeries) {\n return this._originalStateFields?.[s.id];\n }\n\n protected _initStateScale() {\n const defaultRange = [0, 1];\n\n if (this._relatedAxisComponent) {\n const scale = (this._relatedAxisComponent as CartesianAxis<any>).getScale();\n const isContinuousScale = isContinuous(scale.type);\n const domain = this._computeDomainOfStateScale(isContinuousScale);\n\n this._stateScale = scale.clone();\n if (isContinuousScale) {\n const domainNum = domain.map((n: any) => n * 1);\n this._stateScale\n .domain(domain.length ? [minInArray(domainNum), maxInArray(domainNum)] : [0, 1], true)\n .range(defaultRange);\n } else {\n this._stateScale.domain(domain, true).range(defaultRange);\n }\n } else {\n this._stateScale = new BandScale();\n this._stateScale.domain(this._computeDomainOfStateScale(), true).range(defaultRange);\n }\n }\n\n init(option: IModelInitOption): void {\n super.init(option);\n // 添加 transform\n this._addTransformToSeries();\n // 增加datazoom 数据统计\n // 只有在轴没有被设置数据时才有用\n // this.addZoomStatistics();\n\n if (this._start !== 0 || this._end !== 1) {\n this.effect.onZoomChange();\n }\n }\n\n protected _addTransformToSeries() {\n if (!this._relatedAxisComponent || this._filterMode !== IFilterMode.axis) {\n registerDataSetInstanceTransform(this._option.dataSet, 'dataFilterWithNewDomain', dataFilterWithNewDomain);\n\n eachSeries(\n this._regions,\n s => {\n s.addViewDataFilter({\n type: 'dataFilterWithNewDomain',\n options: {\n getNewDomain: () => this._newDomain,\n field: () => {\n return this._field ?? this._parseFieldOfSeries(s);\n },\n isContinuous: () => isContinuous(this._stateScale.type)\n },\n level: TransformLevel.dataZoomFilter\n });\n },\n {\n userId: this._seriesUserId,\n specIndex: this._seriesIndex\n }\n );\n }\n }\n\n /** LifeCycle API**/\n onRender(ctx: any): void {\n // do nothing\n }\n\n /**\n * updateSpec\n */\n _compareSpec(spec: AdaptiveSpec<T, 'width' | 'height'>, prevSpec: AdaptiveSpec<T, 'width' | 'height'>) {\n const result = super._compareSpec(spec, prevSpec);\n if (!result.reMake && !isEqual(prevSpec, spec)) {\n result.reRender = true;\n result.reMake = true;\n }\n\n return result;\n }\n\n reInit(spec?: AdaptiveSpec<T, 'width' | 'height'>) {\n super.reInit(spec);\n\n this._marks.forEach(g => {\n (<IGroupMark>g).getMarks().forEach(m => {\n this.initMarkStyleWithSpec(m, this._spec[m.name]);\n });\n });\n }\n\n changeRegions() {\n // do nothing\n }\n protected update(ctx: IComponentOption) {\n // do nothing\n }\n protected resize(ctx: IComponentOption) {\n // do nothing\n }\n\n protected _parseDomainFromState(startValue: number | string, endValue: number | string) {\n if (isContinuous(this._stateScale.type)) {\n return [Math.min(endValue as number, startValue as number), Math.max(endValue as number, startValue as number)];\n }\n const allDomain = this._stateScale.domain();\n const startIndex = allDomain.indexOf(startValue);\n const endIndex = allDomain.indexOf(endValue);\n return allDomain.slice(Math.min(startIndex, endIndex), Math.max(startIndex, endIndex) + 1);\n }\n\n protected _handleStateChange = (startValue: number, endValue: number, tag?: string) => {\n this._startValue = startValue;\n this._endValue = endValue;\n\n this._newDomain = this._parseDomainFromState(this._startValue, this._endValue);\n\n this.effect.onZoomChange?.(tag);\n return true;\n };\n\n protected _handleChartZoom = (params: { zoomDelta: number; zoomX?: number; zoomY?: number }) => {\n if (!this._activeRoam) {\n return;\n }\n\n const { zoomDelta, zoomX, zoomY } = params;\n const { x, y } = this._regions[0].getLayoutStartPoint();\n const { width, height } = this._regions[0].getLayoutRect();\n\n const delta = Math.abs(this._start - this._end);\n const zoomRate = (this._spec.roamZoom as IRoamZoomSpec)?.rate ?? 1;\n // zoomDelta > 1表示放大, zoomDelta < 1表示缩小\n if (delta >= 1 && zoomDelta < 1) {\n return;\n }\n if (delta <= 0.01 && zoomDelta > 1) {\n return;\n }\n const focusLoc = this._isHorizontal ? zoomX : zoomY;\n const totalValue = delta * (zoomDelta - 1) * zoomRate;\n let startValue = totalValue / 2;\n let endValue = totalValue / 2;\n if (focusLoc) {\n const startLoc = this._isHorizontal ? x : y;\n const endLoc = this._isHorizontal ? width : height;\n startValue = (Math.abs(startLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n endValue = (Math.abs(endLoc - focusLoc) / Math.abs(endLoc - startLoc)) * totalValue;\n }\n const start = clamp(this._start + startValue, 0, 1);\n const end = clamp(this._end - endValue, 0, 1);\n\n this._handleChange(Math.min(start, end), Math.max(start, end), true);\n };\n\n protected _handleChartScroll = (params: { scrollX: number; scrollY: number }, e: BaseEventParams['event']) => {\n if (!this._activeRoam) {\n return false;\n }\n const { scrollX, scrollY } = params;\n let value = this._isHorizontal ? scrollX : scrollY;\n // 判断这次是否应该要滚动,最少\n const active = this._isHorizontal ? abs(scrollX / scrollY) >= 0.5 : abs(scrollY / scrollX) >= 0.5;\n if (!this._scrollAttr.reverse) {\n value = -value;\n }\n\n if (active) {\n this._handleChartMove(value, this._scrollAttr.rate ?? 1);\n }\n return active;\n };\n\n protected _handleChartDrag = (delta: [number, number], e: BaseEventParams['event']) => {\n if (!this._activeRoam) {\n return;\n }\n const [dx, dy] = delta;\n let value = this._isHorizontal ? dx : dy;\n if (this._dragAttr.reverse) {\n value = -value;\n }\n\n this._handleChartMove(value, this._dragAttr.rate ?? 1);\n };\n\n protected _handleChartMove = (value: number, rate: number) => {\n const totalValue = this._isHorizontal ? this.getLayoutRect().width : this.getLayoutRect().height;\n if (Math.abs(value) >= 1e-6) {\n if (value > 0 && this._end < 1) {\n const moveDelta = Math.min(1 - this._end, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n } else if (value < 0 && this._start > 0) {\n const moveDelta = Math.max(-this._start, value / totalValue) * rate;\n this._handleChange(this._start + moveDelta, this._end + moveDelta, true);\n }\n }\n };\n\n protected _initCommonEvent() {\n const delayType: IDelayType = this._spec?.delayType ?? 'throttle';\n const delayTime = isValid(this._spec?.delayType) ? this._spec?.delayTime ?? 30 : 0;\n const realTime = this._spec?.realTime ?? true;\n const option = { delayType, delayTime, realTime };\n if (this._zoomAttr.enable) {\n (this as unknown as IZoomable).initZoomEventOfRegions(this._regions, null, this._handleChartZoom, option);\n }\n if (this._scrollAttr.enable) {\n (this as unknown as IZoomable).initScrollEventOfRegions(this._regions, null, this._handleChartScroll, option);\n }\n if (this._dragAttr.enable) {\n (this as unknown as IZoomable).initDragEventOfRegions(this._regions, null, this._handleChartDrag, option);\n }\n }\n\n updateLayoutAttribute(): void {\n // create or update component\n if (this._visible) {\n this._createOrUpdateComponent();\n }\n super.updateLayoutAttribute();\n }\n\n onLayoutStart(layoutRect: IRect, viewRect: ILayoutRect, ctx: any): void {\n super.onLayoutStart(layoutRect, viewRect, ctx);\n const isShown = this._autoUpdate(layoutRect);\n const sizeKey = this._isHorizontal ? 'height' : 'width';\n this.layout.setLayoutRect(\n {\n [sizeKey]: isShown ? this[`_${sizeKey}`] : 0\n },\n {\n [sizeKey]: AttributeLevel.Built_In\n }\n );\n }\n\n /**\n * bounds预计算\n * @param rect\n * @returns\n */\n getBoundsInRect(rect: ILayoutRect): IBoundsLike {\n const result: IBoundsLike = { x1: this.getLayoutStartPoint().x, y1: this.getLayoutStartPoint().y, x2: 0, y2: 0 };\n\n if (this._isHorizontal) {\n result.y2 = result.y1 + this._height;\n result.x2 = result.x1 + rect.width;\n } else {\n result.x2 = result.x1 + this._width;\n result.y2 = result.y1 + rect.height;\n }\n return result;\n }\n\n hide() {\n this._component?.hideAll();\n }\n\n show() {\n this._component?.showAll();\n }\n\n protected _getAxisBandSize(axisSpec?: ICartesianBandAxisSpec) {\n const bandSize = axisSpec?.bandSize;\n const maxBandSize = axisSpec?.maxBandSize;\n const minBandSize = axisSpec?.minBandSize;\n if (bandSize || minBandSize || maxBandSize) {\n return { bandSize, maxBandSize, minBandSize };\n }\n return undefined;\n }\n\n protected _autoUpdate(rect?: ILayoutRect): boolean {\n if (!this._auto) {\n this._cacheVisibility = undefined;\n return true;\n }\n\n const axis = this._relatedAxisComponent as CartesianAxis<any>;\n const axisSpec = axis?.getSpec() as ICartesianBandAxisSpec | undefined;\n const axisScale = axis?.getScale() as IBandLikeScale;\n const bandSizeResult = this._getAxisBandSize(axisSpec);\n\n if (\n isDiscrete(axisScale.type) &&\n rect?.height === this._cacheRect?.height &&\n rect?.width === this._cacheRect?.width &&\n this._fixedBandSize === bandSizeResult?.bandSize\n ) {\n return this._cacheVisibility;\n }\n\n let isShown = true;\n if (this._isHorizontal && rect?.width !== this._cacheRect?.width) {\n axisScale.range(axis.getInverse() ? [rect.width, 0] : [0, rect.width]);\n } else if (rect?.height !== this._cacheRect?.height) {\n axisScale.range(axis.getInverse() ? [0, rect.height] : [rect.height, 0]);\n }\n\n this._cacheRect = {\n width: rect?.width,\n height: rect?.height\n };\n this._fixedBandSize = bandSizeResult?.bandSize;\n\n if (isDiscrete(axisScale.type)) {\n if (bandSizeResult && (this._start || this._end)) {\n this._updateRangeFactor(null, 'auto');\n }\n const [start, end] = axisScale.rangeFactor() ?? [];\n if (isNil(start) && isNil(end)) {\n isShown = false;\n } else {\n isShown = !(start === 0 && end === 1);\n }\n } else {\n const [start, end] = axisScale.rangeFactor() ?? [this._start, this._end];\n isShown = !(start === 0 && end === 1);\n }\n this.setStartAndEnd(this._start, this._end);\n if (isShown) {\n this.show();\n } else {\n this.hide();\n }\n this._cacheVisibility = isShown;\n return isShown;\n }\n\n protected _getNeedClearVRenderComponents(): IGraphic[] {\n return [this._component] as unknown as IGroup[];\n }\n}\n\nmixin(DataFilterBaseComponent, Zoomable);\n"]}
@@ -26,7 +26,6 @@ export declare class DataZoom<T extends IDataZoomSpec = IDataZoomSpec> extends D
26
26
  protected _middleHandlerSize: number;
27
27
  protected _startHandlerSize: number;
28
28
  protected _endHandlerSize: number;
29
- protected _isReverseCache: boolean;
30
29
  static getSpecInfo(chartSpec: any): Maybe<IModelSpecInfo[]>;
31
30
  constructor(spec: T, options: IComponentOption);
32
31
  created(): void;
@@ -31,7 +31,7 @@ class DataZoom extends data_filter_base_component_1.DataFilterBaseComponent {
31
31
  super(spec, options), this.type = type_1.ComponentTypeEnum.dataZoom, this.name = type_1.ComponentTypeEnum.dataZoom,
32
32
  this.transformerConstructor = data_zoom_transformer_1.DataZoomSpecTransformer, this.specKey = "dataZoom",
33
33
  this.layoutZIndex = constant_1.LayoutZIndex.DataZoom, this.layoutLevel = constant_1.LayoutLevel.DataZoom,
34
- this.layoutType = "region-relative", this._isReverseCache = !1, this._dataToPositionX = datum => {
34
+ this.layoutType = "region-relative", this._dataToPositionX = datum => {
35
35
  const offsetLeft = "left" === this._orient ? this._middleHandlerSize : 0, offsetHandler = this._isHorizontal ? this._startHandlerSize / 2 : 0, xScale = this._isHorizontal ? this._stateScale : this._valueScale, xField = this._isHorizontal ? this._stateField : this._valueField;
36
36
  return xScale.scale(datum[xField]) + this.getLayoutStartPoint().x + offsetLeft + offsetHandler;
37
37
  }, this._dataToPositionX2 = datum => {
@@ -62,8 +62,7 @@ class DataZoom extends data_filter_base_component_1.DataFilterBaseComponent {
62
62
  this._endHandlerSize = endHandlerVisble ? this._spec.endHandler.style.size : 0;
63
63
  }
64
64
  onLayoutEnd(ctx) {
65
- this._updateScaleRange(), this._isReverse() && !this._isReverseCache && (this._isReverseCache = this._isReverse(),
66
- this.effect.onZoomChange()), !1 !== this._cacheVisibility && super.onLayoutEnd(ctx);
65
+ this._updateScaleRange(), !1 !== this._cacheVisibility && super.onLayoutEnd(ctx);
67
66
  }
68
67
  _initValueScale() {
69
68
  const domain = this._computeDomainOfValueScale();
@@ -77,10 +76,10 @@ class DataZoom extends data_filter_base_component_1.DataFilterBaseComponent {
77
76
  const handlerSize = (this._startHandlerSize + this._endHandlerSize) / 2;
78
77
  if (!this._stateScale || !this._valueScale) return;
79
78
  let stateScaleRange;
80
- const defaultSize = this._isHorizontal ? this.getLayoutRect().width - handlerSize : this.getLayoutRect().height - handlerSize, defaultRange = null !== (_b = null === (_a = this._relatedAxisComponent) || void 0 === _a ? void 0 : _a.getScale().range()) && void 0 !== _b ? _b : [ this._startHandlerSize / 2, defaultSize - this._endHandlerSize / 2 ];
81
- this._isHorizontal ? (stateScaleRange = this._visible ? [ this._startHandlerSize / 2, this._computeWidth() - this._endHandlerSize / 2 ] : defaultRange,
82
- this._stateScale.range(stateScaleRange), this._valueScale.range([ this._computeHeight() - this._middleHandlerSize, 0 ])) : "left" === this.layoutOrient ? (stateScaleRange = this._visible ? [ this._startHandlerSize / 2, this._computeHeight() - this._endHandlerSize / 2 ] : defaultRange,
83
- this._stateScale.range(stateScaleRange), this._valueScale.range([ this._computeWidth() - this._middleHandlerSize, 0 ])) : (stateScaleRange = this._visible ? [ this._startHandlerSize / 2, this._computeHeight() - this._endHandlerSize / 2 ] : defaultRange,
79
+ const defaultSize = this._isHorizontal ? this.getLayoutRect().width - handlerSize : this.getLayoutRect().height - handlerSize, defaultRange = null !== (_b = null === (_a = this._relatedAxisComponent) || void 0 === _a ? void 0 : _a.getScale().range()) && void 0 !== _b ? _b : [ 0, defaultSize ];
80
+ this._isHorizontal ? (stateScaleRange = this._visible ? [ 0, this._computeWidth() - handlerSize ] : defaultRange,
81
+ this._stateScale.range(stateScaleRange), this._valueScale.range([ this._computeHeight() - this._middleHandlerSize, 0 ])) : "left" === this.layoutOrient ? (stateScaleRange = this._visible ? [ 0, this._computeHeight() - handlerSize ] : defaultRange,
82
+ this._stateScale.range(stateScaleRange), this._valueScale.range([ this._computeWidth() - this._middleHandlerSize, 0 ])) : (stateScaleRange = this._visible ? [ 0, this._computeHeight() - handlerSize ] : defaultRange,
84
83
  this._stateScale.range(stateScaleRange), this._valueScale.range([ 0, this._computeWidth() - this._middleHandlerSize ])),
85
84
  this._component && !1 !== this._cacheVisibility && this._component.setAttributes({
86
85
  size: {
@@ -144,8 +143,7 @@ class DataZoom extends data_filter_base_component_1.DataFilterBaseComponent {
144
143
  realTime: null === (_e = spec.realTime) || void 0 === _e || _e,
145
144
  previewData: isNeedPreview && this._data.getLatestData(),
146
145
  previewPointsX: isNeedPreview && this._dataToPositionX,
147
- previewPointsY: isNeedPreview && this._dataToPositionY,
148
- tolerance: this._spec.tolerance
146
+ previewPointsY: isNeedPreview && this._dataToPositionY
149
147
  }, this._getComponentAttrs());
150
148
  }
151
149
  _createOrUpdateComponent() {
@@ -165,8 +163,7 @@ class DataZoom extends data_filter_base_component_1.DataFilterBaseComponent {
165
163
  if (super._handleChange(start, end, updateComponent), this._shouldChange) {
166
164
  updateComponent && this._component && this._component.setStartAndEnd(start, end),
167
165
  this._start = start, this._end = end;
168
- const startValue = this._statePointToData(start), endValue = this._statePointToData(end);
169
- ((0, vutils_1.isFunction)(this._spec.updateDataAfterChange) ? this._spec.updateDataAfterChange(start, end, startValue, endValue) : this._handleStateChange(startValue, endValue, tag)) && this.event.emit(constant_1.ChartEvent.dataZoomChange, {
166
+ this._handleStateChange(this._statePointToData(start), this._statePointToData(end), tag) && this.event.emit(constant_1.ChartEvent.dataZoomChange, {
170
167
  model: this,
171
168
  value: {
172
169
  filterData: "axis" !== this._filterMode,