@visactor/vchart 1.11.0-alpha.3 → 1.11.1-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.
- package/build/es5/index.js +1 -1
- package/build/index.js +245 -138
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/base/base-chart.d.ts +3 -0
- package/cjs/chart/base/base-chart.js +11 -0
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/interface/chart.d.ts +3 -0
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/chart/sankey/sankey-transformer.js +5 -0
- package/cjs/chart/sankey/sankey-transformer.js.map +1 -1
- package/cjs/chart/sankey/sankey.d.ts +5 -0
- package/cjs/chart/sankey/sankey.js +23 -1
- package/cjs/chart/sankey/sankey.js.map +1 -1
- package/cjs/compile/compiler.d.ts +4 -3
- package/cjs/compile/compiler.js +12 -7
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/compile/mark/interface.d.ts +3 -1
- package/cjs/compile/mark/interface.js +2 -1
- package/cjs/compile/mark/interface.js.map +1 -1
- package/cjs/component/axis/interface/spec.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +1 -5
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/component/tooltip/utils/compose.d.ts +2 -2
- package/cjs/component/tooltip/utils/compose.js +2 -2
- package/cjs/component/tooltip/utils/compose.js.map +1 -1
- package/cjs/component/tooltip/utils/get-spec.js +6 -6
- package/cjs/component/tooltip/utils/get-spec.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/interface.d.ts +3 -0
- package/cjs/core/interface.js.map +1 -1
- package/cjs/core/vchart.d.ts +3 -0
- package/cjs/core/vchart.js +9 -0
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/transforms/sankey.js +1 -14
- package/cjs/data/transforms/sankey.js.map +1 -1
- package/cjs/plugin/chart/formatter/formatter.js +3 -3
- package/cjs/plugin/chart/formatter/formatter.js.map +1 -1
- package/cjs/plugin/components/register.js +2 -2
- package/cjs/plugin/components/register.js.map +1 -1
- package/cjs/series/base/base-series.js +4 -4
- package/cjs/series/base/base-series.js.map +1 -1
- package/cjs/series/sankey/interface.d.ts +5 -0
- package/cjs/series/sankey/interface.js.map +1 -1
- package/cjs/series/sankey/sankey.d.ts +8 -3
- package/cjs/series/sankey/sankey.js +85 -49
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/cjs/series/sankey/tooltip-helper.js +1 -1
- package/cjs/series/sankey/tooltip-helper.js.map +1 -1
- package/cjs/series/scatter/scatter.js +1 -1
- package/cjs/series/scatter/scatter.js.map +1 -1
- package/cjs/typings/tooltip/line.d.ts +4 -0
- package/cjs/typings/tooltip/line.js.map +1 -1
- package/esm/chart/base/base-chart.d.ts +3 -0
- package/esm/chart/base/base-chart.js +11 -0
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/interface/chart.d.ts +3 -0
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/chart/sankey/sankey-transformer.js +5 -0
- package/esm/chart/sankey/sankey-transformer.js.map +1 -1
- package/esm/chart/sankey/sankey.d.ts +5 -0
- package/esm/chart/sankey/sankey.js +24 -0
- package/esm/chart/sankey/sankey.js.map +1 -1
- package/esm/compile/compiler.d.ts +4 -3
- package/esm/compile/compiler.js +13 -8
- package/esm/compile/compiler.js.map +1 -1
- package/esm/compile/mark/interface.d.ts +3 -1
- package/esm/compile/mark/interface.js +2 -1
- package/esm/compile/mark/interface.js.map +1 -1
- package/esm/component/axis/interface/spec.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +1 -5
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/component/tooltip/utils/compose.d.ts +2 -2
- package/esm/component/tooltip/utils/compose.js +1 -1
- package/esm/component/tooltip/utils/compose.js.map +1 -1
- package/esm/component/tooltip/utils/get-spec.js +1 -1
- package/esm/component/tooltip/utils/get-spec.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/core/interface.d.ts +3 -0
- package/esm/core/interface.js.map +1 -1
- package/esm/core/vchart.d.ts +3 -0
- package/esm/core/vchart.js +9 -0
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/transforms/sankey.js +1 -16
- package/esm/data/transforms/sankey.js.map +1 -1
- package/esm/plugin/chart/formatter/formatter.js +3 -1
- package/esm/plugin/chart/formatter/formatter.js.map +1 -1
- package/esm/plugin/components/register.js +1 -1
- package/esm/plugin/components/register.js.map +1 -1
- package/esm/series/base/base-series.js +3 -4
- package/esm/series/base/base-series.js.map +1 -1
- package/esm/series/sankey/interface.d.ts +5 -0
- package/esm/series/sankey/interface.js.map +1 -1
- package/esm/series/sankey/sankey.d.ts +8 -3
- package/esm/series/sankey/sankey.js +85 -50
- package/esm/series/sankey/sankey.js.map +1 -1
- package/esm/series/sankey/tooltip-helper.js +1 -1
- package/esm/series/sankey/tooltip-helper.js.map +1 -1
- package/esm/series/scatter/scatter.js +1 -1
- package/esm/series/scatter/scatter.js.map +1 -1
- package/esm/typings/tooltip/line.d.ts +4 -0
- package/esm/typings/tooltip/line.js.map +1 -1
- package/package.json +13 -13
|
@@ -26,7 +26,7 @@ import { SeriesData } from "../base/series-data";
|
|
|
26
26
|
|
|
27
27
|
import { SankeySeriesTooltipHelper } from "./tooltip-helper";
|
|
28
28
|
|
|
29
|
-
import { Bounds, array, isNil } from "@visactor/vutils";
|
|
29
|
+
import { Bounds, array, isNil, isValid, isNumber } from "@visactor/vutils";
|
|
30
30
|
|
|
31
31
|
import { registerSankeyAnimation } from "./animation";
|
|
32
32
|
|
|
@@ -51,12 +51,10 @@ import { addDataKey, initKeyMap } from "../../data/transforms/data-key";
|
|
|
51
51
|
export class SankeySeries extends CartesianSeries {
|
|
52
52
|
constructor() {
|
|
53
53
|
super(...arguments), this.type = SeriesTypeEnum.sankey, this._nodeLayoutZIndex = LayoutZIndex.Node,
|
|
54
|
-
this._labelLayoutZIndex = LayoutZIndex.Label, this._viewBox = new Bounds, this.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const element = params.item;
|
|
59
|
-
element && element.mark.id().includes("node") ? this._handleNodeRelatedClick(element) : element && element.mark.id().includes("link") ? this._handleLinkRelatedClick(element) : this._handleClearEmpty();
|
|
54
|
+
this._labelLayoutZIndex = LayoutZIndex.Label, this._viewBox = new Bounds, this._handleEmphasisElement = params => {
|
|
55
|
+
var _a;
|
|
56
|
+
const emphasisSpec = null !== (_a = this._spec.emphasis) && void 0 !== _a ? _a : {}, element = params.item;
|
|
57
|
+
"adjacency" === emphasisSpec.effect ? element && element.mark.id().includes("node") ? this._handleNodeAdjacencyClick(element) : element && element.mark.id().includes("link") ? this._handleLinkAdjacencyClick(element) : this._handleClearEmpty() : "related" === emphasisSpec.effect && (element && element.mark.id().includes("node") ? this._handleNodeRelatedClick(element) : element && element.mark.id().includes("link") ? this._handleLinkRelatedClick(element) : this._handleClearEmpty());
|
|
60
58
|
}, this._handleClearEmpty = () => {
|
|
61
59
|
var _a, _b, _c;
|
|
62
60
|
const allNodeElements = null === (_a = this._nodeMark) || void 0 === _a ? void 0 : _a.getProductElements();
|
|
@@ -64,20 +62,21 @@ export class SankeySeries extends CartesianSeries {
|
|
|
64
62
|
const allLinkElements = null === (_b = this._linkMark) || void 0 === _b ? void 0 : _b.getProductElements();
|
|
65
63
|
if (!allLinkElements || !allLinkElements.length) return;
|
|
66
64
|
const allLabelElements = null === (_c = this._labelMark) || void 0 === _c ? void 0 : _c.getProductElements();
|
|
67
|
-
allLabelElements
|
|
68
|
-
|
|
65
|
+
if (!allLabelElements || !allLabelElements.length) return;
|
|
66
|
+
const states = [ STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE ];
|
|
67
|
+
allNodeElements.forEach((el => {
|
|
68
|
+
el.removeState(states);
|
|
69
69
|
})), allLinkElements.forEach((el => {
|
|
70
|
-
el.
|
|
70
|
+
el.removeState(states);
|
|
71
71
|
})), allLabelElements.forEach((el => {
|
|
72
|
-
el.
|
|
73
|
-
}))
|
|
72
|
+
el.removeState(states);
|
|
73
|
+
}));
|
|
74
74
|
}, this._handleNodeAdjacencyClick = element => {
|
|
75
75
|
const nodeDatum = element.getDatum(), highlightNodes = [ nodeDatum.key ];
|
|
76
76
|
if (this._linkMark) {
|
|
77
77
|
const allLinkElements = this._linkMark.getProductElements();
|
|
78
78
|
if (!allLinkElements || !allLinkElements.length) return;
|
|
79
79
|
allLinkElements.forEach(((linkEl, i) => {
|
|
80
|
-
linkEl.clearStates();
|
|
81
80
|
const linkDatum = linkEl.getDatum(), father = (null == linkDatum ? void 0 : linkDatum.parents) ? "parents" : "source";
|
|
82
81
|
if (array(linkDatum[father]).includes(nodeDatum.key)) {
|
|
83
82
|
let ratio;
|
|
@@ -87,10 +86,12 @@ export class SankeySeries extends CartesianSeries {
|
|
|
87
86
|
const originalDatum = linkDatum.datum;
|
|
88
87
|
ratio = (originalDatum ? originalDatum.filter((entry => entry.parents.some((par => par.key === nodeDatum.key)))).reduce(((sum, d) => sum + d.value), 0) : 0) / linkDatum.value;
|
|
89
88
|
}
|
|
90
|
-
linkEl.addState(
|
|
89
|
+
linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
|
|
90
|
+
linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
|
|
91
91
|
ratio: ratio
|
|
92
92
|
});
|
|
93
|
-
} else linkDatum.target === nodeDatum.key ? highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source) : linkEl.
|
|
93
|
+
} else linkDatum.target === nodeDatum.key ? highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source) : (linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
|
|
94
|
+
linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE));
|
|
94
95
|
}));
|
|
95
96
|
}
|
|
96
97
|
this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
|
|
@@ -101,9 +102,10 @@ export class SankeySeries extends CartesianSeries {
|
|
|
101
102
|
const allLinkElements = this._linkMark.getProductElements();
|
|
102
103
|
if (!allLinkElements || !allLinkElements.length) return;
|
|
103
104
|
allLinkElements.forEach((linkEl => {
|
|
104
|
-
linkEl
|
|
105
|
+
linkEl === element ? (linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
|
|
106
|
+
linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
|
|
105
107
|
ratio: 1
|
|
106
|
-
}) : linkEl.
|
|
108
|
+
})) : (linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE));
|
|
107
109
|
}));
|
|
108
110
|
}
|
|
109
111
|
this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
|
|
@@ -118,7 +120,6 @@ export class SankeySeries extends CartesianSeries {
|
|
|
118
120
|
const highlightNodes = [ nodeDatum.key ], highlightLinks = [];
|
|
119
121
|
if (allLinkElements.forEach(((linkEl, i) => {
|
|
120
122
|
var _a, _b, _c, _d;
|
|
121
|
-
linkEl.clearStates();
|
|
122
123
|
const linkDatum = linkEl.getDatum(), father = (null == linkDatum ? void 0 : linkDatum.parents) ? "parents" : "source";
|
|
123
124
|
if (array(linkDatum[father]).includes(nodeDatum.key)) {
|
|
124
125
|
if (highlightLinks.includes(null !== (_a = linkDatum.key) && void 0 !== _a ? _a : linkDatum.index) || highlightLinks.push(null !== (_b = linkDatum.key) && void 0 !== _b ? _b : linkDatum.index),
|
|
@@ -161,7 +162,9 @@ export class SankeySeries extends CartesianSeries {
|
|
|
161
162
|
if (!allLinkElements || !allLinkElements.length) return;
|
|
162
163
|
allLinkElements.forEach(((linkEl, i) => {
|
|
163
164
|
var _a;
|
|
164
|
-
|
|
165
|
+
highlightLinks.includes(null !== (_a = linkEl.getDatum().key) && void 0 !== _a ? _a : linkEl.getDatum().index) ? (linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
|
|
166
|
+
linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS)) : (linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
|
|
167
|
+
linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE));
|
|
165
168
|
}));
|
|
166
169
|
}
|
|
167
170
|
this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
|
|
@@ -179,22 +182,23 @@ export class SankeySeries extends CartesianSeries {
|
|
|
179
182
|
}
|
|
180
183
|
})), res)), []);
|
|
181
184
|
allLinkElements.forEach(((linkEl, i) => {
|
|
182
|
-
linkEl.clearStates();
|
|
183
185
|
const linkDatum = linkEl.getDatum(), father = (null == linkDatum ? void 0 : linkDatum.parents) ? "parents" : "source", originalDatum = linkDatum.datum, selectedDatum = originalDatum ? originalDatum.filter((entry => entry[father].some((par => par.key === nodeDatum.key)))) : null, upSelectedLink = upstreamLinks.find((upLink => upLink.source === linkDatum.source && upLink.target === linkDatum.target));
|
|
184
186
|
if (selectedDatum && selectedDatum.length) {
|
|
185
187
|
highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
|
|
186
188
|
highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target);
|
|
187
189
|
const ratio = selectedDatum.reduce(((sum, d) => sum + d.value), 0) / linkDatum.value;
|
|
188
|
-
return linkEl.
|
|
190
|
+
return linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
|
|
191
|
+
void linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
|
|
189
192
|
ratio: ratio
|
|
190
193
|
});
|
|
191
194
|
}
|
|
192
195
|
if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
|
|
193
196
|
highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
|
|
194
|
-
linkEl.
|
|
197
|
+
linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
|
|
198
|
+
void linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
|
|
195
199
|
ratio: upSelectedLink.value / linkDatum.value
|
|
196
200
|
});
|
|
197
|
-
linkEl.
|
|
201
|
+
linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
|
|
198
202
|
})), this._nodeMark && this._highLightElements(this._nodeMark.getProductElements(), highlightNodes),
|
|
199
203
|
this._labelMark && this._highLightElements(this._labelMark.getProductElements(), highlightNodes);
|
|
200
204
|
}
|
|
@@ -205,15 +209,16 @@ export class SankeySeries extends CartesianSeries {
|
|
|
205
209
|
const allLinkElements = this._linkMark.getProductElements();
|
|
206
210
|
if (!allLinkElements || !allLinkElements.length) return;
|
|
207
211
|
if ("source" === ((null === (_a = element.getDatum()) || void 0 === _a ? void 0 : _a.parents) ? "parents" : "source")) {
|
|
212
|
+
const states = [ STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE ];
|
|
208
213
|
if (this._linkMark && allLinkElements.forEach((linkEl => {
|
|
209
|
-
linkEl.
|
|
214
|
+
linkEl.removeState(states);
|
|
210
215
|
})), this._nodeMark && allNodeElements.forEach((el => {
|
|
211
|
-
el.
|
|
216
|
+
el.removeState(states);
|
|
212
217
|
})), this._labelMark) {
|
|
213
218
|
const allLabelElements = this._labelMark.getProductElements();
|
|
214
219
|
if (!allLabelElements || !allLabelElements.length) return;
|
|
215
220
|
allLabelElements.forEach((el => {
|
|
216
|
-
el.
|
|
221
|
+
el.removeState(states);
|
|
217
222
|
}));
|
|
218
223
|
}
|
|
219
224
|
} else {
|
|
@@ -233,10 +238,9 @@ export class SankeySeries extends CartesianSeries {
|
|
|
233
238
|
});
|
|
234
239
|
}
|
|
235
240
|
})), allLinkElements.forEach((linkEl => {
|
|
236
|
-
linkEl.clearStates();
|
|
237
241
|
const linkDatum = linkEl.getDatum(), originalDatum = linkDatum.datum;
|
|
238
|
-
if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) return linkEl.
|
|
239
|
-
void linkEl.addState(
|
|
242
|
+
if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) return linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
|
|
243
|
+
void linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
|
|
240
244
|
ratio: 1
|
|
241
245
|
});
|
|
242
246
|
const selectedDatum = originalDatum ? originalDatum.filter((entry => {
|
|
@@ -250,17 +254,19 @@ export class SankeySeries extends CartesianSeries {
|
|
|
250
254
|
var _a;
|
|
251
255
|
return par.key === curLinkDatum.source && (null === (_a = entry.parents[index + 1]) || void 0 === _a ? void 0 : _a.key) === curLinkDatum.target;
|
|
252
256
|
})))).reduce(((sum, d) => sum + d.value), 0), ratio = val / linkDatum.value;
|
|
253
|
-
return linkEl.
|
|
257
|
+
return linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
|
|
258
|
+
void linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
|
|
254
259
|
ratio: ratio
|
|
255
260
|
});
|
|
256
261
|
}
|
|
257
262
|
const upSelectedLink = upstreamLinks.find((upLink => upLink.source === linkDatum.source && upLink.target === linkDatum.target));
|
|
258
263
|
if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
|
|
259
264
|
highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
|
|
260
|
-
linkEl.
|
|
265
|
+
linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
|
|
266
|
+
void linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
|
|
261
267
|
ratio: upSelectedLink.value / linkDatum.value
|
|
262
268
|
});
|
|
263
|
-
linkEl.
|
|
269
|
+
linkEl.removeState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
|
|
264
270
|
})), this._highLightElements(allNodeElements, highlightNodes), this._labelMark && this._highLightElements(this._labelMark.getProductElements(), highlightNodes);
|
|
265
271
|
}
|
|
266
272
|
};
|
|
@@ -315,7 +321,12 @@ export class SankeySeries extends CartesianSeries {
|
|
|
315
321
|
nodeKey: this._spec.nodeKey,
|
|
316
322
|
linkSortBy: this._spec.linkSortBy,
|
|
317
323
|
nodeSortBy: this._spec.nodeSortBy,
|
|
318
|
-
setNodeLayer: this._spec.setNodeLayer
|
|
324
|
+
setNodeLayer: this._spec.setNodeLayer,
|
|
325
|
+
dropIsolatedNode: this._spec.dropIsolatedNode,
|
|
326
|
+
nodeHeight: this._spec.nodeHeight,
|
|
327
|
+
linkHeight: this._spec.linkHeight,
|
|
328
|
+
equalNodeHeight: this._spec.equalNodeHeight,
|
|
329
|
+
linkOverlap: this._spec.linkOverlap
|
|
319
330
|
},
|
|
320
331
|
level: TransformLevel.sankeyLayout
|
|
321
332
|
});
|
|
@@ -386,6 +397,24 @@ export class SankeySeries extends CartesianSeries {
|
|
|
386
397
|
labelMark && (this._labelMark = labelMark);
|
|
387
398
|
}
|
|
388
399
|
}
|
|
400
|
+
_buildMarkAttributeContext() {
|
|
401
|
+
super._buildMarkAttributeContext(), this._markAttributeContext.valueToNode = this.valueToNode.bind(this),
|
|
402
|
+
this._markAttributeContext.valueToLink = this.valueToLink.bind(this);
|
|
403
|
+
}
|
|
404
|
+
valueToNode(value) {
|
|
405
|
+
const nodes = this._nodesSeriesData.getLatestData(), specifyValue = array(value)[0];
|
|
406
|
+
return nodes && nodes.find((node => node.key === specifyValue));
|
|
407
|
+
}
|
|
408
|
+
valueToLink(value) {
|
|
409
|
+
const links = this._linksSeriesData.getLatestData(), specifyValue = array(value);
|
|
410
|
+
return links && links.find((link => link && link.source === specifyValue[0] && link.target === specifyValue[1]));
|
|
411
|
+
}
|
|
412
|
+
valueToPositionX(value) {
|
|
413
|
+
return this.valueToNode(value).x0;
|
|
414
|
+
}
|
|
415
|
+
valueToPositionY(value) {
|
|
416
|
+
return this.valueToNode(value).y0;
|
|
417
|
+
}
|
|
389
418
|
initMarkStyle() {
|
|
390
419
|
this._initNodeMarkStyle(), this._initLinkMarkStyle(), this._initLabelMarkStyle();
|
|
391
420
|
}
|
|
@@ -412,11 +441,11 @@ export class SankeySeries extends CartesianSeries {
|
|
|
412
441
|
y1: datum => datum.y1,
|
|
413
442
|
thickness: datum => datum.thickness,
|
|
414
443
|
fill: datum => {
|
|
415
|
-
var _a, _b, _c
|
|
444
|
+
var _a, _b, _c;
|
|
416
445
|
const fill = null === (_b = null === (_a = this._spec.link) || void 0 === _a ? void 0 : _a.style) || void 0 === _b ? void 0 : _b.fill;
|
|
417
446
|
if (fill) return fill;
|
|
418
|
-
const sourceName =
|
|
419
|
-
return null === (
|
|
447
|
+
const sourceName = isNumber(datum.source) ? this.getNodeList()[datum.source] : datum.source;
|
|
448
|
+
return null === (_c = this._colorScale) || void 0 === _c ? void 0 : _c.scale(sourceName);
|
|
420
449
|
},
|
|
421
450
|
direction: null !== (_a = this._spec.direction) && void 0 !== _a ? _a : "horizontal"
|
|
422
451
|
}, STATE_VALUE_ENUM.STATE_NORMAL, AttributeLevel.Series);
|
|
@@ -559,15 +588,12 @@ export class SankeySeries extends CartesianSeries {
|
|
|
559
588
|
super.initEvent(), null === (_a = this._nodesSeriesData.getDataView()) || void 0 === _a || _a.target.addListener("change", this.nodesSeriesDataUpdate.bind(this)),
|
|
560
589
|
null === (_b = this._linksSeriesData.getDataView()) || void 0 === _b || _b.target.addListener("change", this.linksSeriesDataUpdate.bind(this));
|
|
561
590
|
const emphasisSpec = null !== (_c = this._spec.emphasis) && void 0 !== _c ? _c : {};
|
|
562
|
-
!0 !== this._option.disableTriggerEvent &&
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
}, this._handleRelatedClick) : this.event.on("pointerdown", {
|
|
569
|
-
level: Event_Bubble_Level.chart
|
|
570
|
-
}, this._handleRelatedClick)));
|
|
591
|
+
if (!0 !== this._option.disableTriggerEvent && emphasisSpec.enable && ("adjacency" === emphasisSpec.effect || "related" === emphasisSpec.effect)) {
|
|
592
|
+
const event = "hover" === emphasisSpec.trigger ? "pointerover" : "pointerdown";
|
|
593
|
+
this.event.on(event, {
|
|
594
|
+
level: Event_Bubble_Level.chart
|
|
595
|
+
}, this._handleEmphasisElement);
|
|
596
|
+
}
|
|
571
597
|
}
|
|
572
598
|
nodesSeriesDataUpdate() {
|
|
573
599
|
this._nodesSeriesData.updateData(), this._setNodeOrdinalColorScale();
|
|
@@ -577,7 +603,8 @@ export class SankeySeries extends CartesianSeries {
|
|
|
577
603
|
}
|
|
578
604
|
_highLightElements(vGrammarElements, highlightNodes) {
|
|
579
605
|
vGrammarElements && vGrammarElements.length && vGrammarElements.forEach((el => {
|
|
580
|
-
el.
|
|
606
|
+
el.removeState([ STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS ]),
|
|
607
|
+
highlightNodes.includes(el.getDatum().key) || el.addState(STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
|
|
581
608
|
}));
|
|
582
609
|
}
|
|
583
610
|
initTooltip() {
|
|
@@ -598,11 +625,13 @@ export class SankeySeries extends CartesianSeries {
|
|
|
598
625
|
this._colorScale = ordinalScale;
|
|
599
626
|
}
|
|
600
627
|
getNodeList() {
|
|
601
|
-
var _a
|
|
602
|
-
|
|
628
|
+
var _a;
|
|
629
|
+
const data = this._rawData.latestData[0];
|
|
630
|
+
return (null == data ? void 0 : data.nodes) ? (null === (_a = data.nodes[0]) || void 0 === _a ? void 0 : _a.children) ? Array.from(this.extractNamesFromTree(data.nodes, this._spec.categoryField)) : data.nodes.map(((datum, index) => datum[this._spec.categoryField])) : (null == data ? void 0 : data.links) ? Array.from(this.extractNamesFromLink(data.links)) : null == data ? void 0 : data.values.map(((datum, index) => datum[this._spec.categoryField]));
|
|
603
631
|
}
|
|
604
632
|
_getNodeNameFromData(datum) {
|
|
605
|
-
|
|
633
|
+
var _a;
|
|
634
|
+
return (null == datum ? void 0 : datum.datum) ? datum.datum[this._spec.categoryField] : null !== (_a = datum.key) && void 0 !== _a ? _a : datum[this._spec.categoryField];
|
|
606
635
|
}
|
|
607
636
|
extractNamesFromTree(tree, categoryName) {
|
|
608
637
|
const uniqueNames = new Set;
|
|
@@ -612,6 +641,12 @@ export class SankeySeries extends CartesianSeries {
|
|
|
612
641
|
}
|
|
613
642
|
})), uniqueNames;
|
|
614
643
|
}
|
|
644
|
+
extractNamesFromLink(links) {
|
|
645
|
+
const uniqueNames = new Set, {sourceField: sourceField, targetField: targetField} = this._spec;
|
|
646
|
+
return links.forEach((link => {
|
|
647
|
+
isValid(link[sourceField]) && uniqueNames.add(link[sourceField]), isValid(link[targetField]) && uniqueNames.add(link[targetField]);
|
|
648
|
+
})), uniqueNames;
|
|
649
|
+
}
|
|
615
650
|
getDimensionField() {
|
|
616
651
|
return [ this._spec.categoryField ];
|
|
617
652
|
}
|
|
@@ -641,7 +676,7 @@ export class SankeySeries extends CartesianSeries {
|
|
|
641
676
|
}
|
|
642
677
|
onLayoutEnd(ctx) {
|
|
643
678
|
super.onLayoutEnd(ctx), this._viewBox.set(0, 0, this._region.getLayoutRect().width, this._region.getLayoutRect().height),
|
|
644
|
-
this.getViewData().reRunAllTransform()
|
|
679
|
+
this.getViewData().reRunAllTransform();
|
|
645
680
|
}
|
|
646
681
|
getDefaultShapeType() {
|
|
647
682
|
return "square";
|