@visactor/vchart-extension 2.0.15 → 2.0.16-alpha.0

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 (105) hide show
  1. package/build/index.js +592 -11
  2. package/build/index.min.js +2 -2
  3. package/cjs/charts/conversion-funnel/arrow-data-transform.js +0 -1
  4. package/cjs/charts/funnel-3d/chart.js +2 -1
  5. package/cjs/charts/histogram-3d/chart.js +1 -1
  6. package/cjs/charts/image-cloud/image-cloud-transformer.js +1 -1
  7. package/cjs/charts/ranking-bar/ranking-bar.d.ts +1 -1
  8. package/cjs/charts/ranking-bar/ranking-bar.js.map +1 -1
  9. package/cjs/charts/ranking-list/constant.d.ts +1 -1
  10. package/cjs/charts/ranking-list/constant.js.map +1 -1
  11. package/cjs/charts/ranking-list/ranking-list.d.ts +1 -1
  12. package/cjs/charts/ranking-list/ranking-list.js.map +1 -1
  13. package/cjs/charts/sequence-scatter-kde/sequence-scatter-kde-transformer.js.map +1 -1
  14. package/cjs/charts/sequence-scatter-kde/sequence-scatter-kde.d.ts +1 -1
  15. package/cjs/charts/sequence-scatter-kde/sequence-scatter-kde.js.map +1 -1
  16. package/cjs/charts/sequence-scatter-link/sequence-scatter-link-transformer.js +1 -1
  17. package/cjs/charts/sequence-scatter-link/sequence-scatter-link-transformer.js.map +1 -1
  18. package/cjs/charts/sequence-scatter-link/sequence-scatter-link.d.ts +1 -1
  19. package/cjs/charts/sequence-scatter-link/sequence-scatter-link.js.map +1 -1
  20. package/cjs/charts/sequence-scatter-pixel/sequence-scatter-pixel-transformer.js.map +1 -1
  21. package/cjs/charts/sequence-scatter-pixel/sequence-scatter-pixel.d.ts +1 -1
  22. package/cjs/charts/sequence-scatter-pixel/sequence-scatter-pixel.js.map +1 -1
  23. package/cjs/charts/sequence-scatter-pixel/utils.d.ts +1 -1
  24. package/cjs/charts/sequence-scatter-pixel/utils.js.map +1 -1
  25. package/cjs/charts/timeline/index.d.ts +4 -0
  26. package/cjs/charts/timeline/index.js +31 -0
  27. package/cjs/charts/timeline/index.js.map +1 -0
  28. package/cjs/charts/timeline/interface.d.ts +7 -0
  29. package/cjs/charts/timeline/interface.js +6 -0
  30. package/cjs/charts/timeline/interface.js.map +1 -0
  31. package/cjs/charts/timeline/series/constant.d.ts +1 -0
  32. package/cjs/charts/timeline/series/constant.js +6 -0
  33. package/cjs/charts/timeline/series/constant.js.map +1 -0
  34. package/cjs/charts/timeline/series/event-series.d.ts +53 -0
  35. package/cjs/charts/timeline/series/event-series.js +339 -0
  36. package/cjs/charts/timeline/series/event-series.js.map +1 -0
  37. package/cjs/charts/timeline/series/interface.d.ts +28 -0
  38. package/cjs/charts/timeline/series/interface.js +6 -0
  39. package/cjs/charts/timeline/series/interface.js.map +1 -0
  40. package/cjs/charts/timeline/series/theme.d.ts +2 -0
  41. package/cjs/charts/timeline/series/theme.js +43 -0
  42. package/cjs/charts/timeline/series/theme.js.map +1 -0
  43. package/cjs/charts/timeline/timeline-transformer.d.ts +10 -0
  44. package/cjs/charts/timeline/timeline-transformer.js +84 -0
  45. package/cjs/charts/timeline/timeline-transformer.js.map +1 -0
  46. package/cjs/charts/timeline/timeline.d.ts +12 -0
  47. package/cjs/charts/timeline/timeline.js +25 -0
  48. package/cjs/charts/timeline/timeline.js.map +1 -0
  49. package/cjs/components/map-label/map-label-transformer.d.ts +1 -1
  50. package/cjs/components/map-label/map-label-transformer.js.map +1 -1
  51. package/cjs/index.d.ts +1 -0
  52. package/cjs/index.js +5 -5
  53. package/cjs/index.js.map +1 -1
  54. package/esm/charts/conversion-funnel/arrow-data-transform.js +1 -2
  55. package/esm/charts/funnel-3d/chart.js +2 -1
  56. package/esm/charts/histogram-3d/chart.js +1 -1
  57. package/esm/charts/image-cloud/image-cloud-transformer.js +1 -1
  58. package/esm/charts/ranking-bar/ranking-bar.d.ts +1 -1
  59. package/esm/charts/ranking-bar/ranking-bar.js.map +1 -1
  60. package/esm/charts/ranking-list/constant.d.ts +1 -1
  61. package/esm/charts/ranking-list/constant.js.map +1 -1
  62. package/esm/charts/ranking-list/ranking-list.d.ts +1 -1
  63. package/esm/charts/ranking-list/ranking-list.js.map +1 -1
  64. package/esm/charts/sequence-scatter-kde/sequence-scatter-kde-transformer.js.map +1 -1
  65. package/esm/charts/sequence-scatter-kde/sequence-scatter-kde.d.ts +1 -1
  66. package/esm/charts/sequence-scatter-kde/sequence-scatter-kde.js.map +1 -1
  67. package/esm/charts/sequence-scatter-link/sequence-scatter-link-transformer.js +1 -1
  68. package/esm/charts/sequence-scatter-link/sequence-scatter-link-transformer.js.map +1 -1
  69. package/esm/charts/sequence-scatter-link/sequence-scatter-link.d.ts +1 -1
  70. package/esm/charts/sequence-scatter-link/sequence-scatter-link.js.map +1 -1
  71. package/esm/charts/sequence-scatter-pixel/sequence-scatter-pixel-transformer.js.map +1 -1
  72. package/esm/charts/sequence-scatter-pixel/sequence-scatter-pixel.d.ts +1 -1
  73. package/esm/charts/sequence-scatter-pixel/sequence-scatter-pixel.js.map +1 -1
  74. package/esm/charts/sequence-scatter-pixel/utils.d.ts +1 -1
  75. package/esm/charts/sequence-scatter-pixel/utils.js.map +1 -1
  76. package/esm/charts/timeline/index.d.ts +4 -0
  77. package/esm/charts/timeline/index.js +6 -0
  78. package/esm/charts/timeline/index.js.map +1 -0
  79. package/esm/charts/timeline/interface.d.ts +7 -0
  80. package/esm/charts/timeline/interface.js +2 -0
  81. package/esm/charts/timeline/interface.js.map +1 -0
  82. package/esm/charts/timeline/series/constant.d.ts +1 -0
  83. package/esm/charts/timeline/series/constant.js +2 -0
  84. package/esm/charts/timeline/series/constant.js.map +1 -0
  85. package/esm/charts/timeline/series/event-series.d.ts +53 -0
  86. package/esm/charts/timeline/series/event-series.js +337 -0
  87. package/esm/charts/timeline/series/event-series.js.map +1 -0
  88. package/esm/charts/timeline/series/interface.d.ts +28 -0
  89. package/esm/charts/timeline/series/interface.js +2 -0
  90. package/esm/charts/timeline/series/interface.js.map +1 -0
  91. package/esm/charts/timeline/series/theme.d.ts +2 -0
  92. package/esm/charts/timeline/series/theme.js +39 -0
  93. package/esm/charts/timeline/series/theme.js.map +1 -0
  94. package/esm/charts/timeline/timeline-transformer.d.ts +10 -0
  95. package/esm/charts/timeline/timeline-transformer.js +77 -0
  96. package/esm/charts/timeline/timeline-transformer.js.map +1 -0
  97. package/esm/charts/timeline/timeline.d.ts +12 -0
  98. package/esm/charts/timeline/timeline.js +19 -0
  99. package/esm/charts/timeline/timeline.js.map +1 -0
  100. package/esm/components/map-label/map-label-transformer.d.ts +1 -1
  101. package/esm/components/map-label/map-label-transformer.js.map +1 -1
  102. package/esm/index.d.ts +1 -0
  103. package/esm/index.js +2 -0
  104. package/esm/index.js.map +1 -1
  105. package/package.json +6 -6
@@ -0,0 +1,337 @@
1
+ import { AttributeLevel, CartesianSeries, Factory, baseSeriesMark, registerSymbolMark, registerTextMark, registerLineMark, registerPathMark, STATE_VALUE_ENUM, BaseSeriesSpecTransformer } from "@visactor/vchart";
2
+
3
+ import { EVENT_SERIES_TYPE } from "./constant";
4
+
5
+ import { event } from "./theme";
6
+
7
+ import { isValid } from "@visactor/vutils";
8
+
9
+ const eventSeriesMark = Object.assign(Object.assign({}, baseSeriesMark), {
10
+ line: {
11
+ name: "line",
12
+ type: "line"
13
+ },
14
+ dot: {
15
+ name: "dot",
16
+ type: "symbol"
17
+ },
18
+ icon: {
19
+ name: "icon",
20
+ type: "symbol"
21
+ },
22
+ title: {
23
+ name: "title",
24
+ type: "text"
25
+ },
26
+ subTitle: {
27
+ name: "subTitle",
28
+ type: "text"
29
+ },
30
+ arrow: {
31
+ name: "arrow",
32
+ type: "path"
33
+ }
34
+ });
35
+
36
+ export class EventSeries extends CartesianSeries {
37
+ constructor() {
38
+ super(...arguments), this.type = EVENT_SERIES_TYPE, this.transformerConstructor = BaseSeriesSpecTransformer,
39
+ this.coordinate = "cartesian";
40
+ }
41
+ setAttrFromSpec() {
42
+ super.setAttrFromSpec(), this.setSeriesField(this._spec.seriesField), this._timeField = this._spec.timeField,
43
+ this._eventField = this._spec.eventField, this._subTitleField = this._spec.subTitleField,
44
+ this._iconField = this._spec.iconField, this._labelPosition = this._spec.labelPosition;
45
+ }
46
+ getDimensionField() {
47
+ return this._timeField ? [ this._timeField ] : [];
48
+ }
49
+ getMeasureField() {
50
+ const fields = [];
51
+ return this._eventField && fields.push(this._eventField), this._subTitleField && fields.push(this._subTitleField),
52
+ fields;
53
+ }
54
+ initMark() {
55
+ this._axisLineMark = this._createMark(EventSeries.mark.line, {
56
+ isSeriesMark: !0,
57
+ groupKey: this._seriesField
58
+ }), this._arrowMark = this._createMark(EventSeries.mark.arrow, {
59
+ isSeriesMark: !0
60
+ }), this._dotMark = this._createMark(EventSeries.mark.dot, {
61
+ isSeriesMark: !0
62
+ }), this._iconMark = this._createMark(EventSeries.mark.icon, {
63
+ isSeriesMark: !0
64
+ }), this._titleMark = this._createMark(EventSeries.mark.title), this._subTitleMark = this._createMark(EventSeries.mark.subTitle);
65
+ }
66
+ initTooltip() {
67
+ super.initTooltip(), this._dotMark && this._tooltipHelper.activeTriggerSet.mark.add(this._dotMark),
68
+ this._titleMark && this._tooltipHelper.activeTriggerSet.mark.add(this._titleMark),
69
+ this._subTitleMark && this._tooltipHelper.activeTriggerSet.mark.add(this._subTitleMark),
70
+ this._iconMark && this._tooltipHelper.activeTriggerSet.mark.add(this._iconMark),
71
+ this._arrowMark && this._tooltipHelper.activeTriggerSet.mark.add(this._arrowMark);
72
+ }
73
+ initMarkStyle() {
74
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
75
+ this._axisLineMark && this.setMarkStyle(this._axisLineMark, {
76
+ points: this._getAxisPoints.bind(this),
77
+ visible: this._isFirstDataInGroup.bind(this),
78
+ stroke: "#c0c3c7",
79
+ lineWidth: 1
80
+ }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);
81
+ const dotSpec = this._spec.dot, dotSize = "number" == typeof (null === (_a = null == dotSpec ? void 0 : dotSpec.style) || void 0 === _a ? void 0 : _a.size) ? dotSpec.style.size : 8, titleSpec = this._spec.title, titleStyle = null !== (_b = null == titleSpec ? void 0 : titleSpec.style) && void 0 !== _b ? _b : {}, subTitleSpec = this._spec.subTitle, subTitleStyle = null !== (_c = null == subTitleSpec ? void 0 : subTitleSpec.style) && void 0 !== _c ? _c : {}, titleFontSize = "number" == typeof titleStyle.fontSize ? titleStyle.fontSize : 14, labelOffset = dotSize / 2 + (null !== (_d = null == titleSpec ? void 0 : titleSpec.offset) && void 0 !== _d ? _d : 6);
82
+ this._dotMark && this.setMarkStyle(this._dotMark, {
83
+ x: datum => this._getPoint(datum).x,
84
+ y: datum => this._getPoint(datum).y,
85
+ size: dotSize,
86
+ fill: null !== (_f = null === (_e = null == dotSpec ? void 0 : dotSpec.style) || void 0 === _e ? void 0 : _e.fill) && void 0 !== _f ? _f : this.getColorAttribute()
87
+ }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series), this._arrowMark && this.setMarkStyle(this._arrowMark, {
88
+ path: datum => this._getArrowPath(datum),
89
+ fill: null !== (_h = null === (_g = null == dotSpec ? void 0 : dotSpec.style) || void 0 === _g ? void 0 : _g.fill) && void 0 !== _h ? _h : this.getColorAttribute()
90
+ }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series), this._titleMark && this.setMarkStyle(this._titleMark, Object.assign(Object.assign({
91
+ fontSize: 14
92
+ }, titleStyle), {
93
+ x: datum => this._getTitlePosition(datum, labelOffset).x,
94
+ y: datum => this._getTitlePosition(datum, labelOffset).y,
95
+ textAlign: datum => this._getLabelTextAlign(datum),
96
+ textBaseline: datum => this._getLabelTextBaseline(datum, !0),
97
+ text: datum => this._getDatumString(datum, this._eventField)
98
+ }), STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series), this._subTitleMark && this.setMarkStyle(this._subTitleMark, Object.assign(Object.assign({}, subTitleStyle), {
99
+ x: datum => this._getSubTitlePosition(datum, labelOffset, titleFontSize).x,
100
+ y: datum => this._getSubTitlePosition(datum, labelOffset, titleFontSize).y,
101
+ textAlign: datum => this._getLabelTextAlign(datum),
102
+ textBaseline: datum => this._getLabelTextBaseline(datum, !1),
103
+ text: datum => this._getDatumString(datum, this._subTitleField)
104
+ }), STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);
105
+ const iconSpec = this._spec.icon, iconSize = "number" == typeof (null === (_j = null == iconSpec ? void 0 : iconSpec.style) || void 0 === _j ? void 0 : _j.size) ? iconSpec.style.size : 20, iconOffset = (isValid(null == iconSpec ? void 0 : iconSpec.offset) ? iconSpec.offset + dotSize / 2 : labelOffset) + iconSize / 2;
106
+ this._iconMark && this.setMarkStyle(this._iconMark, {
107
+ x: datum => this._getIconPosition(datum, iconOffset).x,
108
+ y: datum => this._getIconPosition(datum, iconOffset).y,
109
+ size: iconSize,
110
+ fill: null !== (_l = null === (_k = null == iconSpec ? void 0 : iconSpec.style) || void 0 === _k ? void 0 : _k.fill) && void 0 !== _l ? _l : this.getColorAttribute(),
111
+ shape: datum => this._getDatumString(datum, this._iconField) || "circle"
112
+ }, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);
113
+ }
114
+ _getLabelSide(datum) {
115
+ const index = this._getViewDataList().indexOf(datum), position = this._labelPosition;
116
+ if ("vertical" === this.direction) switch (position) {
117
+ case "left":
118
+ default:
119
+ return "primary";
120
+
121
+ case "right":
122
+ return "secondary";
123
+
124
+ case "left-right":
125
+ return index % 2 == 0 ? "primary" : "secondary";
126
+
127
+ case "right-left":
128
+ return index % 2 == 0 ? "secondary" : "primary";
129
+ } else switch (position) {
130
+ case "top":
131
+ default:
132
+ return "primary";
133
+
134
+ case "bottom":
135
+ return "secondary";
136
+
137
+ case "top-bottom":
138
+ return index % 2 == 0 ? "primary" : "secondary";
139
+
140
+ case "bottom-top":
141
+ return index % 2 == 0 ? "secondary" : "primary";
142
+ }
143
+ }
144
+ _getLabelTextAlign(datum) {
145
+ if ("vertical" === this.direction) {
146
+ return "primary" === this._getLabelSide(datum) ? "right" : "left";
147
+ }
148
+ return "center";
149
+ }
150
+ _getLabelTextBaseline(datum, isTitle) {
151
+ if ("vertical" === this.direction) return "middle";
152
+ return "primary" === this._getLabelSide(datum) ? "bottom" : "top";
153
+ }
154
+ _getTitlePosition(datum, offset) {
155
+ const point = this._getPoint(datum), side = this._getLabelSide(datum);
156
+ return "vertical" === this.direction ? {
157
+ x: "primary" === side ? point.x - offset : point.x + offset,
158
+ y: point.y
159
+ } : {
160
+ x: point.x,
161
+ y: "primary" === side ? point.y - offset : point.y + offset
162
+ };
163
+ }
164
+ _getSubTitlePosition(datum, offset, titleFontSize) {
165
+ var _a, _b, _c, _d;
166
+ const point = this._getPoint(datum), side = this._getLabelSide(datum), gap = null !== (_b = null === (_a = this._spec.title) || void 0 === _a ? void 0 : _a.subTitleGap) && void 0 !== _b ? _b : 4;
167
+ if ("vertical" === this.direction) {
168
+ const titleStyle = null !== (_d = null === (_c = this._spec.title) || void 0 === _c ? void 0 : _c.style) && void 0 !== _d ? _d : {}, titleLineHeight = "number" == typeof titleStyle.lineHeight ? titleStyle.lineHeight : 1.2 * titleFontSize;
169
+ return {
170
+ x: "primary" === side ? point.x - offset : point.x + offset,
171
+ y: point.y + titleLineHeight + gap
172
+ };
173
+ }
174
+ return {
175
+ x: point.x,
176
+ y: "primary" === side ? point.y - (offset + titleFontSize + gap) : point.y + (offset + titleFontSize + gap)
177
+ };
178
+ }
179
+ _getIconPosition(datum, offset) {
180
+ const point = this._getPoint(datum), side = this._getLabelSide(datum);
181
+ return "vertical" === this.direction ? {
182
+ x: "primary" === side ? point.x + offset : point.x - offset,
183
+ y: point.y
184
+ } : {
185
+ x: point.x,
186
+ y: "primary" === side ? point.y + offset : point.y - offset
187
+ };
188
+ }
189
+ _getViewDataList() {
190
+ var _a, _b;
191
+ return null !== (_b = null === (_a = this.getViewData()) || void 0 === _a ? void 0 : _a.latestData) && void 0 !== _b ? _b : [];
192
+ }
193
+ _getPoint(datum) {
194
+ if ("vertical" === this.direction) {
195
+ return {
196
+ x: this._getPositionFromAxis(datum, this.getXAxisHelper(), this._seriesField),
197
+ y: this._getPositionFromAxis(datum, this.getYAxisHelper(), this._timeField)
198
+ };
199
+ }
200
+ return {
201
+ x: this._getPositionFromAxis(datum, this.getXAxisHelper(), this._timeField),
202
+ y: this._getPositionFromAxis(datum, this.getYAxisHelper(), this._seriesField)
203
+ };
204
+ }
205
+ _getPositionFromAxis(datum, axisHelper, field) {
206
+ var _a, _b, _c, _d, _e, _f;
207
+ if (!axisHelper) return this._getDefaultPosition(field);
208
+ if (!field || !(field in datum)) return this._getDefaultPosition(field);
209
+ const value = datum[field];
210
+ return "band" !== (null === (_b = null === (_a = axisHelper.getSpec) || void 0 === _a ? void 0 : _a.call(axisHelper)) || void 0 === _b ? void 0 : _b.type) && axisHelper.isContinuous ? null !== (_f = null === (_e = axisHelper.valueToPosition) || void 0 === _e ? void 0 : _e.call(axisHelper, value)) && void 0 !== _f ? _f : this._getDefaultPosition(field) : null !== (_d = null === (_c = axisHelper.dataToPosition) || void 0 === _c ? void 0 : _c.call(axisHelper, [ value ], {
211
+ bandPosition: .5
212
+ })) && void 0 !== _d ? _d : this._getDefaultPosition(field);
213
+ }
214
+ onXAxisHelperUpdate() {
215
+ var _a;
216
+ null === (_a = super.onXAxisHelperUpdate) || void 0 === _a || _a.call(this), this.onMarkPositionUpdate();
217
+ }
218
+ onYAxisHelperUpdate() {
219
+ var _a;
220
+ null === (_a = super.onYAxisHelperUpdate) || void 0 === _a || _a.call(this), this.onMarkPositionUpdate();
221
+ }
222
+ _getDefaultPosition(field) {
223
+ const rect = this._region.getLayoutRect();
224
+ if (!this._seriesField || field === this._seriesField) {
225
+ return "vertical" !== this.direction ? .5 * rect.height : .5 * rect.width;
226
+ }
227
+ return 0;
228
+ }
229
+ _getAxisPoints(datum) {
230
+ const rect = this._region.getLayoutRect();
231
+ if ("vertical" === this.direction) {
232
+ const x = this._getPositionFromAxis(datum, this.getXAxisHelper(), this._seriesField);
233
+ return [ {
234
+ x: x,
235
+ y: 0
236
+ }, {
237
+ x: x,
238
+ y: rect.height
239
+ } ];
240
+ }
241
+ const y = this._getPositionFromAxis(datum, this.getYAxisHelper(), this._seriesField);
242
+ return [ {
243
+ x: 0,
244
+ y: y
245
+ }, {
246
+ x: rect.width,
247
+ y: y
248
+ } ];
249
+ }
250
+ _isFirstDataInGroup(datum) {
251
+ if (!this._seriesField) {
252
+ return 0 === this._getViewDataList().indexOf(datum);
253
+ }
254
+ const data = this._getViewDataList(), categoryValue = datum[this._seriesField];
255
+ return datum === data.find((d => this._seriesField && d[this._seriesField] === categoryValue));
256
+ }
257
+ _getNextDatum(datum) {
258
+ const data = this._getViewDataList(), currentIndex = data.indexOf(datum);
259
+ if (-1 === currentIndex || currentIndex === data.length - 1) return null;
260
+ if (!this._seriesField) return data[currentIndex + 1];
261
+ const categoryValue = datum[this._seriesField];
262
+ for (let i = currentIndex + 1; i < data.length; i++) {
263
+ const nextDatum = data[i];
264
+ if (nextDatum[this._seriesField] === categoryValue) return nextDatum;
265
+ }
266
+ return null;
267
+ }
268
+ _getPreviousDatum(datum) {
269
+ const data = this._getViewDataList(), currentIndex = data.indexOf(datum);
270
+ if (-1 === currentIndex || 0 === currentIndex) return null;
271
+ if (!this._seriesField) return data[currentIndex - 1];
272
+ const categoryValue = datum[this._seriesField];
273
+ for (let i = currentIndex - 1; i >= 0; i--) {
274
+ const prevDatum = data[i];
275
+ if (prevDatum[this._seriesField] === categoryValue) return prevDatum;
276
+ }
277
+ return null;
278
+ }
279
+ _getArrowPath(datum) {
280
+ var _a, _b;
281
+ const point = this._getPoint(datum), nextDatum = this._getNextDatum(datum), prevDatum = this._getPreviousDatum(datum), arrowThickness = null !== (_b = null === (_a = this._spec.arrow) || void 0 === _a ? void 0 : _a.thickness) && void 0 !== _b ? _b : 16, rect = this._region.getLayoutRect();
282
+ if ("vertical" === this.direction) {
283
+ const inverse = this.getYAxisHelper().isInverse(), startPoint = prevDatum ? {
284
+ x: point.x,
285
+ y: (this._getPoint(prevDatum).y + point.y) / 2
286
+ } : {
287
+ x: point.x,
288
+ y: inverse ? 0 : rect.height
289
+ }, endPoint = nextDatum ? {
290
+ x: point.x,
291
+ y: (this._getPoint(nextDatum).y + point.y) / 2
292
+ } : {
293
+ x: point.x,
294
+ y: inverse ? rect.height : 0
295
+ }, tag = inverse ? 1 : -1, arrowHeight = arrowThickness / 3, arrowWidth = arrowThickness / 2;
296
+ return `M ${startPoint.x - arrowWidth} ${startPoint.y} L ${startPoint.x} ${startPoint.y + tag * arrowHeight} L ${startPoint.x + arrowWidth} ${startPoint.y} \n L ${endPoint.x + arrowWidth} ${endPoint.y - tag * arrowHeight} \n L ${endPoint.x} ${endPoint.y}\n L ${endPoint.x - arrowWidth} ${endPoint.y - tag * arrowHeight} Z`;
297
+ }
298
+ const inverse = this.getXAxisHelper().isInverse(), startPoint = prevDatum ? {
299
+ x: (this._getPoint(prevDatum).x + point.x) / 2,
300
+ y: point.y
301
+ } : {
302
+ x: inverse ? rect.width : 0,
303
+ y: point.y
304
+ }, endPoint = nextDatum ? {
305
+ x: (this._getPoint(nextDatum).x + point.x) / 2,
306
+ y: point.y
307
+ } : {
308
+ x: inverse ? 0 : rect.width,
309
+ y: point.y
310
+ }, tag = inverse ? -1 : 1, arrowHeight = arrowThickness / 2, arrowWidth = arrowThickness / 3;
311
+ return `M ${startPoint.x} ${startPoint.y - arrowHeight} L ${startPoint.x + tag * arrowWidth} ${startPoint.y} L ${startPoint.x} ${startPoint.y + arrowHeight} \n L ${endPoint.x - tag * arrowWidth} ${endPoint.y + arrowHeight} \n L ${endPoint.x} ${endPoint.y} \n L ${endPoint.x - tag * arrowWidth} ${endPoint.y - arrowHeight} Z`;
312
+ }
313
+ _getDatumString(datum, field) {
314
+ if (!datum || !field) return "";
315
+ const value = datum[field];
316
+ return "string" == typeof value ? value : null == value ? "" : String(value);
317
+ }
318
+ valueToPosition(timeValue, eventValue) {
319
+ if (timeValue && "object" == typeof timeValue) return this.dataToPosition(timeValue);
320
+ const mockDatum = {};
321
+ return this._timeField && (mockDatum[this._timeField] = timeValue), this._eventField && void 0 !== eventValue && (mockDatum[this._eventField] = eventValue),
322
+ this._getPoint(mockDatum);
323
+ }
324
+ getActiveMarks() {
325
+ return [ this._axisLineMark, this._dotMark, this._iconMark, this._arrowMark, this._titleMark, this._subTitleMark ].filter(Boolean);
326
+ }
327
+ }
328
+
329
+ EventSeries.type = EVENT_SERIES_TYPE, EventSeries.mark = eventSeriesMark, EventSeries.builtInTheme = {
330
+ event: event
331
+ }, EventSeries.transformerConstructor = BaseSeriesSpecTransformer;
332
+
333
+ export const registerEventSeries = () => {
334
+ registerSymbolMark(), registerTextMark(), registerLineMark(), registerPathMark(),
335
+ Factory.registerSeries(EventSeries.type, EventSeries);
336
+ };
337
+ //# sourceMappingURL=event-series.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charts/timeline/series/event-series.ts"],"names":[],"mappings":"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","file":"event-series.js","sourcesContent":["import type { StringOrNumber } from '@visactor/vchart';\nimport {\n AttributeLevel,\n CartesianSeries,\n Factory,\n MarkTypeEnum,\n SeriesMarkNameEnum,\n baseSeriesMark,\n registerSymbolMark,\n registerTextMark,\n registerLineMark,\n registerPathMark,\n STATE_VALUE_ENUM,\n type Datum,\n type IMark,\n type IPoint,\n type SeriesMarkMap,\n BaseSeriesSpecTransformer\n} from '@visactor/vchart';\nimport { EVENT_SERIES_TYPE } from './constant';\nimport type { IEventSeriesSpec, LabelPosition } from './interface';\nimport { event } from './theme';\nimport { isValid } from '@visactor/vutils';\n\ntype AxisHelper = {\n isContinuous?: boolean;\n getSpec?: () => { type?: string };\n dataToPosition?: (values: unknown[], cfg?: { bandPosition?: number }) => number;\n valueToPosition?: (value: unknown) => number;\n};\n\nconst eventSeriesMark = {\n ...baseSeriesMark,\n [SeriesMarkNameEnum.line]: { name: SeriesMarkNameEnum.line, type: MarkTypeEnum.line },\n [SeriesMarkNameEnum.dot]: { name: SeriesMarkNameEnum.dot, type: MarkTypeEnum.symbol },\n icon: { name: 'icon', type: MarkTypeEnum.symbol },\n [SeriesMarkNameEnum.title]: { name: SeriesMarkNameEnum.title, type: MarkTypeEnum.text },\n [SeriesMarkNameEnum.subTitle]: { name: SeriesMarkNameEnum.subTitle, type: MarkTypeEnum.text },\n arrow: { name: 'arrow', type: MarkTypeEnum.path }\n} as any;\n\nexport class EventSeries<T extends IEventSeriesSpec = IEventSeriesSpec> extends CartesianSeries<T> {\n static readonly type: string = EVENT_SERIES_TYPE;\n type = EVENT_SERIES_TYPE as any;\n\n static readonly mark: SeriesMarkMap = eventSeriesMark;\n static readonly builtInTheme = { event };\n static readonly transformerConstructor = BaseSeriesSpecTransformer as any;\n readonly transformerConstructor = BaseSeriesSpecTransformer as any;\n\n readonly coordinate: 'cartesian' = 'cartesian';\n\n protected declare _spec: T;\n\n private _dotMark?: IMark;\n private _iconMark?: IMark;\n private _titleMark?: IMark;\n private _subTitleMark?: IMark;\n private _axisLineMark?: IMark;\n private _arrowMark?: IMark;\n\n private _timeField?: string;\n private _eventField?: string;\n private _subTitleField?: string;\n private _iconField?: string;\n private _labelPosition?: LabelPosition;\n\n setAttrFromSpec(): void {\n super.setAttrFromSpec();\n this.setSeriesField(this._spec.seriesField);\n this._timeField = this._spec.timeField as string | undefined;\n this._eventField = this._spec.eventField;\n this._subTitleField = this._spec.subTitleField;\n this._iconField = this._spec.iconField;\n this._labelPosition = this._spec.labelPosition;\n }\n\n getDimensionField(): string[] {\n return this._timeField ? [this._timeField] : [];\n }\n\n getMeasureField(): string[] {\n const fields: string[] = [];\n if (this._eventField) {\n fields.push(this._eventField);\n }\n if (this._subTitleField) {\n fields.push(this._subTitleField);\n }\n return fields;\n }\n\n initMark(): void {\n this._axisLineMark = this._createMark(EventSeries.mark.line, {\n isSeriesMark: true,\n groupKey: this._seriesField\n });\n this._arrowMark = this._createMark((EventSeries.mark as any).arrow, {\n isSeriesMark: true\n });\n\n this._dotMark = this._createMark(EventSeries.mark.dot, {\n isSeriesMark: true\n });\n\n this._iconMark = this._createMark((EventSeries.mark as any).icon, {\n isSeriesMark: true\n });\n this._titleMark = this._createMark(EventSeries.mark.title);\n\n this._subTitleMark = this._createMark(EventSeries.mark.subTitle);\n }\n\n protected initTooltip() {\n super.initTooltip();\n\n // 将 dot、icon 和 arrow mark 添加到 tooltip 触发器集合中\n this._dotMark && this._tooltipHelper.activeTriggerSet.mark.add(this._dotMark);\n this._titleMark && this._tooltipHelper.activeTriggerSet.mark.add(this._titleMark);\n this._subTitleMark && this._tooltipHelper.activeTriggerSet.mark.add(this._subTitleMark);\n this._iconMark && this._tooltipHelper.activeTriggerSet.mark.add(this._iconMark);\n this._arrowMark && this._tooltipHelper.activeTriggerSet.mark.add(this._arrowMark);\n }\n\n initMarkStyle(): void {\n if (this._axisLineMark) {\n this.setMarkStyle(\n this._axisLineMark,\n {\n points: this._getAxisPoints.bind(this),\n visible: this._isFirstDataInGroup.bind(this),\n stroke: '#c0c3c7',\n lineWidth: 1\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n const dotSpec = this._spec.dot as { style?: { size?: number; fill?: unknown } } | undefined;\n const dotSize = typeof dotSpec?.style?.size === 'number' ? dotSpec.style.size : 8;\n\n const titleSpec = this._spec.title;\n const titleStyle = titleSpec?.style ?? {};\n const subTitleSpec = this._spec.subTitle;\n const subTitleStyle = subTitleSpec?.style ?? {};\n\n // 获取 title 字体大小,用于计算 subTitle 的位置\n const titleFontSize = typeof titleStyle.fontSize === 'number' ? titleStyle.fontSize : 14;\n\n // dot 和 label 之间的间距\n const labelOffset = dotSize / 2 + (titleSpec?.offset ?? 6);\n\n if (this._dotMark) {\n this.setMarkStyle(\n this._dotMark,\n {\n x: (datum: Datum) => this._getPoint(datum).x,\n y: (datum: Datum) => this._getPoint(datum).y,\n size: dotSize,\n fill: dotSpec?.style?.fill ?? this.getColorAttribute()\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n if (this._arrowMark) {\n this.setMarkStyle(\n this._arrowMark,\n {\n path: (datum: Datum) => this._getArrowPath(datum),\n fill: dotSpec?.style?.fill ?? this.getColorAttribute()\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n if (this._titleMark) {\n this.setMarkStyle(\n this._titleMark,\n {\n fontSize: 14,\n ...titleStyle,\n x: (datum: Datum) => this._getTitlePosition(datum, labelOffset).x,\n y: (datum: Datum) => this._getTitlePosition(datum, labelOffset).y,\n textAlign: (datum: Datum) => this._getLabelTextAlign(datum),\n textBaseline: (datum: Datum) => this._getLabelTextBaseline(datum, true),\n text: (datum: Datum) => this._getDatumString(datum, this._eventField)\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n if (this._subTitleMark) {\n this.setMarkStyle(\n this._subTitleMark,\n {\n ...subTitleStyle,\n x: (datum: Datum) => this._getSubTitlePosition(datum, labelOffset, titleFontSize).x,\n y: (datum: Datum) => this._getSubTitlePosition(datum, labelOffset, titleFontSize).y,\n textAlign: (datum: Datum) => this._getLabelTextAlign(datum),\n textBaseline: (datum: Datum) => this._getLabelTextBaseline(datum, false),\n text: (datum: Datum) => this._getDatumString(datum, this._subTitleField)\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n\n // icon 和 line 之间的间距\n\n const iconSpec = this._spec.icon as { offset?: number; style?: { size?: number; fill?: unknown } } | undefined;\n const iconSize = typeof iconSpec?.style?.size === 'number' ? iconSpec.style.size : 20;\n const iconOffset = (isValid(iconSpec?.offset) ? iconSpec.offset + dotSize / 2 : labelOffset) + iconSize / 2;\n\n if (this._iconMark) {\n this.setMarkStyle(\n this._iconMark,\n {\n x: (datum: Datum) => this._getIconPosition(datum, iconOffset).x,\n y: (datum: Datum) => this._getIconPosition(datum, iconOffset).y,\n size: iconSize,\n fill: iconSpec?.style?.fill ?? this.getColorAttribute(),\n shape: (datum: Datum) => this._getDatumString(datum, this._iconField) || 'circle'\n },\n STATE_VALUE_ENUM.STATE_NORMAL,\n AttributeLevel.Series\n );\n }\n }\n\n /**\n * 根据数据索引判断标签应该放在哪一侧\n * @returns 'primary' 表示 top/left,'secondary' 表示 bottom/right\n */\n private _getLabelSide(datum: Datum): 'primary' | 'secondary' {\n const data = this._getViewDataList();\n const index = data.indexOf(datum);\n const position = this._labelPosition;\n\n if (this.direction === 'vertical') {\n // vertical 布局: left/right\n switch (position) {\n case 'left':\n return 'primary';\n case 'right':\n return 'secondary';\n case 'left-right':\n return index % 2 === 0 ? 'primary' : 'secondary';\n case 'right-left':\n return index % 2 === 0 ? 'secondary' : 'primary';\n default:\n return 'primary'; // 默认 left\n }\n } else {\n // horizontal 布局: top/bottom\n switch (position) {\n case 'top':\n return 'primary';\n case 'bottom':\n return 'secondary';\n case 'top-bottom':\n return index % 2 === 0 ? 'primary' : 'secondary';\n case 'bottom-top':\n return index % 2 === 0 ? 'secondary' : 'primary';\n default:\n return 'primary'; // 默认 top\n }\n }\n }\n\n /**\n * 获取标签的文本对齐方式\n */\n private _getLabelTextAlign(datum: Datum): 'left' | 'right' | 'center' {\n if (this.direction === 'vertical') {\n const side = this._getLabelSide(datum);\n return side === 'primary' ? 'right' : 'left';\n }\n return 'center';\n }\n\n /**\n * 获取标签的文本基线\n */\n private _getLabelTextBaseline(datum: Datum, isTitle: boolean): 'top' | 'bottom' | 'middle' {\n if (this.direction === 'vertical') {\n // vertical 布局时:title 用 top,subTitle 用 top\n return 'middle';\n }\n const side = this._getLabelSide(datum);\n return side === 'primary' ? 'bottom' : 'top';\n }\n\n /**\n * 获取 title 的位置\n */\n private _getTitlePosition(datum: Datum, offset: number): IPoint {\n const point = this._getPoint(datum);\n const side = this._getLabelSide(datum);\n\n if (this.direction === 'vertical') {\n // vertical: left/right,标签垂直排列\n return {\n x: side === 'primary' ? point.x - offset : point.x + offset,\n y: point.y\n };\n }\n // horizontal: top/bottom\n return {\n x: point.x,\n y: side === 'primary' ? point.y - offset : point.y + offset\n };\n }\n\n /**\n * 获取 subTitle 的位置\n */\n private _getSubTitlePosition(datum: Datum, offset: number, titleFontSize: number): IPoint {\n const point = this._getPoint(datum);\n const side = this._getLabelSide(datum);\n const gap = this._spec.title?.subTitleGap ?? 4;\n\n if (this.direction === 'vertical') {\n // vertical: left/right,subTitle 在 title 下方\n // offset 是 title 的偏移,subTitle 需要在 title 基础上再向下偏移\n const titleStyle = this._spec.title?.style ?? {};\n const titleLineHeight = typeof titleStyle.lineHeight === 'number' ? titleStyle.lineHeight : titleFontSize * 1.2;\n\n return {\n x: side === 'primary' ? point.x - offset : point.x + offset,\n y: point.y + titleLineHeight + gap\n };\n }\n // horizontal: top/bottom\n return {\n x: point.x,\n y: side === 'primary' ? point.y - (offset + titleFontSize + gap) : point.y + (offset + titleFontSize + gap)\n };\n }\n\n /**\n * 获取 icon 的位置\n * icon 与 title 关于 lineMark 对称\n */\n private _getIconPosition(datum: Datum, offset: number): IPoint {\n const point = this._getPoint(datum);\n const side = this._getLabelSide(datum);\n\n if (this.direction === 'vertical') {\n // vertical: 当 title 在 right 时,icon 在 left;当 title 在 left 时,icon 在 right\n return {\n x: side === 'primary' ? point.x + offset : point.x - offset,\n y: point.y\n };\n }\n // horizontal: 当 title 在 top 时,icon 在 bottom;当 title 在 bottom 时,icon 在 top\n return {\n x: point.x,\n y: side === 'primary' ? point.y + offset : point.y - offset\n };\n }\n\n private _getViewDataList(): Datum[] {\n return this.getViewData()?.latestData ?? [];\n }\n\n private _getPoint(datum: Datum): IPoint {\n if (this.direction === 'vertical') {\n // vertical 布局:x 轴是分类方向(seriesField),y 轴是时间方向(timeField)\n const x = this._getPositionFromAxis(datum, this.getXAxisHelper(), this._seriesField);\n const y = this._getPositionFromAxis(datum, this.getYAxisHelper(), this._timeField);\n return { x, y };\n }\n\n // horizontal 布局:x 轴是时间方向(timeField),y 轴是分类方向(seriesField)\n const x = this._getPositionFromAxis(datum, this.getXAxisHelper(), this._timeField);\n const y = this._getPositionFromAxis(datum, this.getYAxisHelper(), this._seriesField);\n return { x, y };\n }\n\n /**\n * 根据轴的类型计算位置\n * @param datum 数据项\n * @param axisHelper 轴助手\n * @param field 字段名\n * @returns 位置值\n */\n private _getPositionFromAxis(datum: Datum, axisHelper: AxisHelper | undefined, field?: string): number {\n if (!axisHelper) {\n // 如果没有轴助手,使用默认的中间位置\n return this._getDefaultPosition(field);\n }\n\n if (!field || !(field in datum)) {\n // 如果没有字段或数据中没有该字段,使用默认位置\n return this._getDefaultPosition(field);\n }\n\n const value = (datum as Record<string, unknown>)[field];\n const axisType = axisHelper.getSpec?.()?.type;\n\n // 根据轴类型选择不同的计算方式\n if (axisType === 'band' || !axisHelper.isContinuous) {\n // band 轴:使用 dataToPosition,传入值数组\n return axisHelper.dataToPosition?.([value], { bandPosition: 0.5 }) ?? this._getDefaultPosition(field);\n }\n\n // linear/time 轴:使用 valueToPosition,直接传入值\n return axisHelper.valueToPosition?.(value) ?? this._getDefaultPosition(field);\n }\n\n onXAxisHelperUpdate(): void {\n super.onXAxisHelperUpdate?.();\n this.onMarkPositionUpdate();\n }\n\n onYAxisHelperUpdate(): void {\n super.onYAxisHelperUpdate?.();\n this.onMarkPositionUpdate();\n }\n\n /**\n * 获取默认位置(当没有轴或字段时使用)\n */\n private _getDefaultPosition(field?: string): number {\n const rect = this._region.getLayoutRect();\n\n // 如果没有 seriesField,说明没有分类轴,返回中心位置\n if (!this._seriesField || field === this._seriesField) {\n const isHorizontal = this.direction !== 'vertical';\n // horizontal 布局:返回垂直中心(y方向)\n // vertical 布局:返回水平中心(x方向)\n return isHorizontal ? rect.height * 0.5 : rect.width * 0.5;\n }\n\n // 对于时间轴,返回区域起点\n return 0;\n }\n\n private _getAxisPoints(datum: Datum): IPoint[] {\n const rect = this._region.getLayoutRect();\n\n if (this.direction === 'vertical') {\n // vertical 布局:轴是垂直的,x 位置根据 seriesField 计算\n const x = this._getPositionFromAxis(datum, this.getXAxisHelper(), this._seriesField);\n return [\n { x, y: 0 },\n { x, y: rect.height }\n ];\n }\n\n // horizontal 布局:轴是水平的,y 位置根据 seriesField 计算\n const y = this._getPositionFromAxis(datum, this.getYAxisHelper(), this._seriesField);\n return [\n { x: 0, y },\n { x: rect.width, y }\n ];\n }\n\n private _isFirstDataInGroup(datum: Datum): boolean {\n if (!this._seriesField) {\n const data = this._getViewDataList();\n return data.indexOf(datum) === 0;\n }\n\n const data = this._getViewDataList();\n const categoryValue = (datum as Record<string, unknown>)[this._seriesField];\n\n // 找到该分类中的第一条数据\n const firstInGroup = data.find(\n d => this._seriesField && (d as Record<string, unknown>)[this._seriesField] === categoryValue\n );\n return datum === firstInGroup;\n }\n\n private _getNextDatum(datum: Datum): Datum | null {\n const data = this._getViewDataList();\n const currentIndex = data.indexOf(datum);\n\n if (currentIndex === -1 || currentIndex === data.length - 1) {\n return null;\n }\n\n if (!this._seriesField) {\n return data[currentIndex + 1];\n }\n\n const categoryValue = (datum as Record<string, unknown>)[this._seriesField];\n\n // 在同一分组中找到下一个数据\n for (let i = currentIndex + 1; i < data.length; i++) {\n const nextDatum = data[i];\n if ((nextDatum as Record<string, unknown>)[this._seriesField] === categoryValue) {\n return nextDatum;\n }\n }\n\n return null;\n }\n\n private _getPreviousDatum(datum: Datum): Datum | null {\n const data = this._getViewDataList();\n const currentIndex = data.indexOf(datum);\n\n if (currentIndex === -1 || currentIndex === 0) {\n return null;\n }\n\n if (!this._seriesField) {\n return data[currentIndex - 1];\n }\n\n const categoryValue = (datum as Record<string, unknown>)[this._seriesField];\n\n // 在同一分组中找到上一个数据\n for (let i = currentIndex - 1; i >= 0; i--) {\n const prevDatum = data[i];\n if ((prevDatum as Record<string, unknown>)[this._seriesField] === categoryValue) {\n return prevDatum;\n }\n }\n\n return null;\n }\n\n private _getArrowPath(datum: Datum): string {\n const point = this._getPoint(datum);\n const nextDatum = this._getNextDatum(datum);\n const prevDatum = this._getPreviousDatum(datum);\n\n const arrowThickness = this._spec.arrow?.thickness ?? 16;\n const rect = this._region.getLayoutRect();\n\n if (this.direction === 'vertical') {\n const axisHelper = this.getYAxisHelper();\n const inverse = axisHelper.isInverse();\n const startPoint = prevDatum\n ? {\n x: point.x,\n y: (this._getPoint(prevDatum).y + point.y) / 2\n }\n : { x: point.x, y: inverse ? 0 : rect.height };\n const endPoint = nextDatum\n ? {\n x: point.x,\n y: (this._getPoint(nextDatum).y + point.y) / 2\n }\n : { x: point.x, y: inverse ? rect.height : 0 };\n const tag = inverse ? 1 : -1;\n\n const arrowHeight = arrowThickness / 3;\n const arrowWidth = arrowThickness / 2;\n\n return `M ${startPoint.x - arrowWidth} ${startPoint.y} L ${startPoint.x} ${startPoint.y + tag * arrowHeight} L ${\n startPoint.x + arrowWidth\n } ${startPoint.y} \n L ${endPoint.x + arrowWidth} ${endPoint.y - tag * arrowHeight} \n L ${endPoint.x} ${endPoint.y}\n L ${endPoint.x - arrowWidth} ${endPoint.y - tag * arrowHeight} Z`;\n }\n\n const axisHelper = this.getXAxisHelper();\n const inverse = axisHelper.isInverse();\n const startPoint = prevDatum\n ? {\n x: (this._getPoint(prevDatum).x + point.x) / 2,\n y: point.y\n }\n : { x: inverse ? rect.width : 0, y: point.y };\n const endPoint = nextDatum\n ? {\n x: (this._getPoint(nextDatum).x + point.x) / 2,\n y: point.y\n }\n : { x: inverse ? 0 : rect.width, y: point.y };\n const tag = inverse ? -1 : 1;\n\n const arrowHeight = arrowThickness / 2;\n const arrowWidth = arrowThickness / 3;\n\n return `M ${startPoint.x} ${startPoint.y - arrowHeight} L ${startPoint.x + tag * arrowWidth} ${startPoint.y} L ${\n startPoint.x\n } ${startPoint.y + arrowHeight} \n L ${endPoint.x - tag * arrowWidth} ${endPoint.y + arrowHeight} \n L ${endPoint.x} ${endPoint.y} \n L ${endPoint.x - tag * arrowWidth} ${endPoint.y - arrowHeight} Z`;\n }\n\n private _getDatumString(datum: Datum | undefined, field?: string): string {\n if (!datum || !field) {\n return '';\n }\n const value = (datum as Record<string, unknown>)[field];\n return typeof value === 'string' ? value : value == null ? '' : String(value);\n }\n\n valueToPosition(timeValue: StringOrNumber, eventValue?: StringOrNumber): IPoint {\n if (timeValue && typeof timeValue === 'object') {\n return this.dataToPosition(timeValue as Datum);\n }\n\n const mockDatum: Record<string, unknown> = {};\n if (this._timeField) {\n mockDatum[this._timeField] = timeValue;\n }\n if (this._eventField && eventValue !== undefined) {\n mockDatum[this._eventField] = eventValue;\n }\n return this._getPoint(mockDatum as Datum);\n }\n\n getActiveMarks(): IMark[] {\n return [\n this._axisLineMark,\n this._dotMark,\n this._iconMark,\n this._arrowMark,\n this._titleMark,\n this._subTitleMark\n ].filter(Boolean) as IMark[];\n }\n}\n\nexport const registerEventSeries = () => {\n registerSymbolMark();\n registerTextMark();\n registerLineMark();\n registerPathMark();\n Factory.registerSeries(EventSeries.type, EventSeries);\n};\n"]}
@@ -0,0 +1,28 @@
1
+ import type { IMarkSpec, ISymbolMarkSpec, ITextMarkSpec, ILineMarkSpec, IPathMarkSpec, ICartesianSeriesSpec } from '@visactor/vchart';
2
+ export type HorizontalLabelPosition = 'top' | 'bottom' | 'top-bottom' | 'bottom-top';
3
+ export type VerticalLabelPosition = 'left' | 'right' | 'left-right' | 'right-left';
4
+ export type LabelPosition = HorizontalLabelPosition | VerticalLabelPosition;
5
+ export interface IEventSeriesSpec extends ICartesianSeriesSpec, IEventSeriesTheme {
6
+ type: 'event';
7
+ timeField?: string;
8
+ eventField?: string;
9
+ subTitleField?: string;
10
+ seriesField?: string;
11
+ iconField?: string;
12
+ labelPosition?: LabelPosition;
13
+ }
14
+ export interface IEventSeriesTheme {
15
+ dot?: IMarkSpec<ISymbolMarkSpec>;
16
+ icon?: IMarkSpec<ISymbolMarkSpec> & {
17
+ offset?: number;
18
+ };
19
+ title?: IMarkSpec<ITextMarkSpec> & {
20
+ subTitleGap?: number;
21
+ offset?: number;
22
+ };
23
+ subTitle?: IMarkSpec<ITextMarkSpec>;
24
+ line?: IMarkSpec<ILineMarkSpec>;
25
+ arrow?: IMarkSpec<IPathMarkSpec> & {
26
+ thickness?: number;
27
+ };
28
+ }
@@ -0,0 +1,2 @@
1
+ export { };
2
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charts/timeline/series/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type {\n IMarkSpec,\n ISymbolMarkSpec,\n ITextMarkSpec,\n ILineMarkSpec,\n IPathMarkSpec,\n ICartesianSeriesSpec\n} from '@visactor/vchart';\n\n/** horizontal 布局时的标题位置 */\nexport type HorizontalLabelPosition = 'top' | 'bottom' | 'top-bottom' | 'bottom-top';\n\n/** vertical 布局时的标题位置 */\nexport type VerticalLabelPosition = 'left' | 'right' | 'left-right' | 'right-left';\n\n/** 标题位置配置 */\nexport type LabelPosition = HorizontalLabelPosition | VerticalLabelPosition;\n\nexport interface IEventSeriesSpec extends ICartesianSeriesSpec, IEventSeriesTheme {\n type: 'event';\n /**\n * 时间字段,用于指定事件在时间轴上的位置\n */\n timeField?: string;\n /**\n * 事件名称字段\n */\n eventField?: string;\n /**\n * 事件详情字段(副标题)\n */\n subTitleField?: string;\n /**\n * 系列字段,用于分组显示\n */\n seriesField?: string;\n /**\n * 图标字段,用于显示图标或图片\n */\n iconField?: string;\n /** 标题和副标题的位置 */\n labelPosition?: LabelPosition;\n}\n\nexport interface IEventSeriesTheme {\n /**\n * 点图元配置\n */\n dot?: IMarkSpec<ISymbolMarkSpec>;\n /**\n * 图标图元配置\n * offset: 图标相对于点的偏移距离,单位像素,正值向外偏移,负值向内偏移\n */\n icon?: IMarkSpec<ISymbolMarkSpec> & { offset?: number };\n /**\n * 事件标题图元配置\n * subTitleGap: 标题与副标题的间距,单位像素\n * offset: 标题相对于点的偏移距离,单位像素,正值向外偏移,负值向内偏移\n */\n title?: IMarkSpec<ITextMarkSpec> & { subTitleGap?: number; offset?: number };\n /**\n * 事件副标题图元配置\n */\n subTitle?: IMarkSpec<ITextMarkSpec>;\n /**\n * 事件线图元配置\n */\n line?: IMarkSpec<ILineMarkSpec>;\n /**\n * 箭头图元配置\n * thickness: 箭头的厚度,单位像素\n */\n arrow?: IMarkSpec<IPathMarkSpec> & { thickness?: number };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import type { IEventSeriesTheme } from './interface';
2
+ export declare const event: IEventSeriesTheme;
@@ -0,0 +1,39 @@
1
+ export const event = {
2
+ dot: {
3
+ style: {
4
+ size: 8
5
+ }
6
+ },
7
+ icon: {
8
+ visible: !1,
9
+ style: {
10
+ size: 20
11
+ }
12
+ },
13
+ line: {
14
+ visible: !0,
15
+ style: {
16
+ stroke: "#c0c3c7",
17
+ lineWidth: 1
18
+ }
19
+ },
20
+ title: {
21
+ visible: !0,
22
+ offset: 6,
23
+ subTitleGap: 4,
24
+ style: {
25
+ fontSize: 14
26
+ }
27
+ },
28
+ subTitle: {
29
+ visible: !0,
30
+ style: {
31
+ fontSize: 12
32
+ }
33
+ },
34
+ arrow: {
35
+ visible: !1,
36
+ thickness: 16
37
+ }
38
+ };
39
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charts/timeline/series/theme.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,KAAK,GAAsB;IACtC,GAAG,EAAE;QACH,KAAK,EAAE;YACL,IAAI,EAAE,CAAC;SACR;KACF;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,IAAI,EAAE,EAAE;SACT;KACF;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,KAAK,EAAE;YACL,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,CAAC;SACb;KACF;IACD,KAAK,EAAE;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,CAAC;QACd,KAAK,EAAE;YACL,QAAQ,EAAE,EAAE;SACb;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,IAAI;QACb,KAAK,EAAE;YACL,QAAQ,EAAE,EAAE;SACb;KACF;IACD,KAAK,EAAE;QACL,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,EAAE;KACd;CACF,CAAC","file":"theme.js","sourcesContent":["import type { IEventSeriesTheme } from './interface';\n\nexport const event: IEventSeriesTheme = {\n dot: {\n style: {\n size: 8\n }\n },\n icon: {\n visible: false,\n style: {\n size: 20\n }\n },\n line: {\n visible: true,\n style: {\n stroke: '#c0c3c7',\n lineWidth: 1\n }\n },\n title: {\n visible: true,\n offset: 6,\n subTitleGap: 4,\n style: {\n fontSize: 14\n }\n },\n subTitle: {\n visible: true,\n style: {\n fontSize: 12\n }\n },\n arrow: {\n visible: false,\n thickness: 16\n }\n};\n"]}
@@ -0,0 +1,10 @@
1
+ import { BaseChartSpecTransformer } from '@visactor/vchart';
2
+ import type { ICartesianAxisSpec } from '@visactor/vchart';
3
+ import type { ITimelineChartSpec } from './interface';
4
+ export declare class TimelineChartSpecTransformer<T extends ITimelineChartSpec = ITimelineChartSpec> extends BaseChartSpecTransformer<T> {
5
+ protected _getDefaultSeriesSpec(spec: T): any;
6
+ protected _setDefaultXAxisSpec(spec: T): ICartesianAxisSpec;
7
+ protected _setDefaultYAxisSpec(spec: T): ICartesianAxisSpec;
8
+ protected _transformAxisSpec(spec: T): void;
9
+ transformSpec(spec: T): void;
10
+ }
@@ -0,0 +1,77 @@
1
+ import { BaseChartSpecTransformer } from "@visactor/vchart";
2
+
3
+ import { isNil, merge, isObject } from "@visactor/vutils";
4
+
5
+ export class TimelineChartSpecTransformer extends BaseChartSpecTransformer {
6
+ _getDefaultSeriesSpec(spec) {
7
+ return super._getDefaultSeriesSpec(spec, [ "timeField", "eventField", "seriesField", "titleField", "subTitleField", "iconField", "dot", "title", "subTitle", "icon", "line", "arrow", "labelPosition", "sortDataByAxis" ]);
8
+ }
9
+ _setDefaultXAxisSpec(spec) {
10
+ return {
11
+ type: "band",
12
+ orient: "bottom",
13
+ label: {
14
+ visible: !1
15
+ },
16
+ tick: {
17
+ visible: !1
18
+ },
19
+ grid: {
20
+ visible: !1
21
+ },
22
+ domainLine: {
23
+ visible: !1
24
+ },
25
+ paddingInner: 0,
26
+ paddingOuter: 0
27
+ };
28
+ }
29
+ _setDefaultYAxisSpec(spec) {
30
+ return {
31
+ type: "band",
32
+ inverse: !0,
33
+ orient: "left",
34
+ label: {
35
+ visible: !1
36
+ },
37
+ tick: {
38
+ visible: !1
39
+ },
40
+ grid: {
41
+ visible: !1
42
+ },
43
+ domainLine: {
44
+ visible: !1
45
+ },
46
+ paddingInner: 0,
47
+ paddingOuter: 0
48
+ };
49
+ }
50
+ _transformAxisSpec(spec) {
51
+ spec.axes || (spec.axes = []);
52
+ const haxAxes = {
53
+ x: !1,
54
+ y: !1
55
+ };
56
+ spec.axes.forEach((axis => {
57
+ const {orient: orient} = axis;
58
+ let defaultSpec = null;
59
+ "top" !== orient && "bottom" !== orient || (haxAxes.x = !0, defaultSpec = this._setDefaultXAxisSpec(spec)),
60
+ "left" !== orient && "right" !== orient || (haxAxes.y = !0, defaultSpec = this._setDefaultYAxisSpec(spec)),
61
+ defaultSpec && Object.keys(defaultSpec).forEach((key => {
62
+ axis[key] = isObject(axis[key]) ? merge(defaultSpec[key], axis[key]) : isNil(axis[key]) ? defaultSpec[key] : axis[key];
63
+ }));
64
+ })), haxAxes.x || spec.axes.push(this._setDefaultXAxisSpec(spec)), haxAxes.y || spec.axes.push(this._setDefaultYAxisSpec(spec));
65
+ }
66
+ transformSpec(spec) {
67
+ var _a, _b;
68
+ super.transformSpec(spec), this.transformSeriesSpec(spec), this._transformAxisSpec(spec);
69
+ const direction = null !== (_a = spec.direction) && void 0 !== _a ? _a : "horizontal";
70
+ null === (_b = spec.series) || void 0 === _b || _b.forEach((seriesSpec => {
71
+ "vertical" === direction ? (seriesSpec.timeField && !seriesSpec.yField && (seriesSpec.yField = seriesSpec.timeField),
72
+ seriesSpec.xField || (seriesSpec.xField = seriesSpec.seriesField || "__vchart_timeline_dummy__")) : (seriesSpec.timeField && !seriesSpec.xField && (seriesSpec.xField = seriesSpec.timeField),
73
+ seriesSpec.yField || (seriesSpec.yField = seriesSpec.seriesField || "__vchart_timeline_dummy__"));
74
+ }));
75
+ }
76
+ }
77
+ //# sourceMappingURL=timeline-transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/charts/timeline/timeline-transformer.ts"],"names":[],"mappings":"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","file":"timeline-transformer.js","sourcesContent":["import { BaseChartSpecTransformer } from '@visactor/vchart';\nimport type { ICartesianAxisSpec, ICartesianLinearAxisSpec } from '@visactor/vchart';\nimport type { ITimelineChartSpec } from './interface';\nimport { isNil, get, merge, isObject } from '@visactor/vutils';\n\nexport class TimelineChartSpecTransformer<\n T extends ITimelineChartSpec = ITimelineChartSpec\n> extends BaseChartSpecTransformer<T> {\n protected _getDefaultSeriesSpec(spec: T): any {\n return super._getDefaultSeriesSpec(spec, [\n 'timeField',\n 'eventField',\n 'seriesField',\n 'titleField',\n 'subTitleField',\n 'iconField',\n 'dot',\n 'title',\n 'subTitle',\n 'icon',\n 'line',\n 'arrow',\n 'labelPosition',\n 'sortDataByAxis'\n ]);\n }\n\n protected _setDefaultXAxisSpec(spec: T): ICartesianAxisSpec {\n return {\n type: 'band',\n orient: 'bottom',\n label: {\n visible: false\n },\n tick: {\n visible: false\n },\n grid: {\n visible: false\n },\n domainLine: {\n visible: false\n },\n paddingInner: 0,\n paddingOuter: 0\n } as ICartesianAxisSpec;\n }\n\n protected _setDefaultYAxisSpec(spec: T): ICartesianAxisSpec {\n return {\n type: 'band',\n inverse: true,\n orient: 'left',\n label: {\n visible: false\n },\n tick: {\n visible: false\n },\n grid: {\n visible: false\n },\n domainLine: {\n visible: false\n },\n paddingInner: 0,\n paddingOuter: 0\n } as ICartesianAxisSpec;\n }\n\n protected _transformAxisSpec(spec: T) {\n if (!spec.axes) {\n spec.axes = [];\n }\n\n const haxAxes = { x: false, y: false };\n spec.axes.forEach((axis: ICartesianAxisSpec) => {\n const { orient } = axis;\n let defaultSpec: Partial<ICartesianAxisSpec> = null;\n if (orient === 'top' || orient === 'bottom') {\n haxAxes.x = true;\n\n defaultSpec = this._setDefaultXAxisSpec(spec);\n }\n if (orient === 'left' || orient === 'right') {\n haxAxes.y = true;\n\n defaultSpec = this._setDefaultYAxisSpec(spec);\n }\n\n if (defaultSpec) {\n Object.keys(defaultSpec).forEach(key => {\n (axis as any)[key] = isObject((axis as any)[key])\n ? merge((defaultSpec as any)[key], (axis as any)[key])\n : isNil((axis as any)[key])\n ? (defaultSpec as any)[key]\n : (axis as any)[key];\n });\n }\n });\n if (!haxAxes.x) {\n spec.axes.push(this._setDefaultXAxisSpec(spec));\n }\n if (!haxAxes.y) {\n spec.axes.push(this._setDefaultYAxisSpec(spec));\n }\n }\n\n transformSpec(spec: T): void {\n super.transformSpec(spec);\n this.transformSeriesSpec(spec);\n this._transformAxisSpec(spec);\n\n const direction = spec.direction ?? 'horizontal';\n\n // 将 direction 传递给 series,并设置 xField/yField 以便轴系统收集数据\n spec.series?.forEach(seriesSpec => {\n // 根据 direction 将 timeField 映射到 xField 或 yField\n // 这样轴系统才能正确收集数据\n if (direction === 'vertical') {\n // vertical 布局:y 轴是时间方向\n if (seriesSpec.timeField && !seriesSpec.yField) {\n seriesSpec.yField = seriesSpec.timeField;\n }\n // x 轴是分类方向(如果没有 seriesField,创建一个虚拟字段)\n if (!seriesSpec.xField) {\n seriesSpec.xField = seriesSpec.seriesField || '__vchart_timeline_dummy__';\n }\n } else {\n // horizontal 布局:x 轴是时间方向\n if (seriesSpec.timeField && !seriesSpec.xField) {\n seriesSpec.xField = seriesSpec.timeField;\n }\n // y 轴是分类方向(如果没有 seriesField,创建一个虚拟字段)\n if (!seriesSpec.yField) {\n seriesSpec.yField = seriesSpec.seriesField || '__vchart_timeline_dummy__';\n }\n }\n });\n }\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import { TimelineChartSpecTransformer } from './timeline-transformer';
2
+ import type { ITimelineChartSpec } from './interface';
3
+ import { BaseChart } from '@visactor/vchart';
4
+ export declare class TimelineChart<T extends ITimelineChartSpec = ITimelineChartSpec> extends BaseChart<T> {
5
+ static readonly type: string;
6
+ static readonly seriesType: string;
7
+ static readonly transformerConstructor: typeof TimelineChartSpecTransformer;
8
+ readonly transformerConstructor: typeof TimelineChartSpecTransformer;
9
+ readonly type: string;
10
+ readonly seriesType: string;
11
+ }
12
+ export declare const registerTimelineChart: () => void;