@visactor/vchart 2.0.3-alpha.1 → 2.0.3

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.
@@ -34,6 +34,200 @@ class SankeySeries extends cartesian_1.CartesianSeries {
34
34
  var _a;
35
35
  const emphasisSpec = null !== (_a = this._spec.emphasis) && void 0 !== _a ? _a : {}, graphic = params.item;
36
36
  "adjacency" === emphasisSpec.effect ? graphic && params.mark === this._nodeMark ? this._handleNodeAdjacencyClick(graphic) : graphic && params.mark === this._linkMark ? this._handleLinkAdjacencyClick(graphic) : this._handleClearEmpty() : "related" === emphasisSpec.effect && (graphic && params.mark === this._nodeMark ? this._handleNodeRelatedClick(graphic) : graphic && params.mark === this._linkMark ? this._handleLinkRelatedClick(graphic) : this._handleClearEmpty());
37
+ }, this._handleClearEmpty = () => {
38
+ var _a, _b;
39
+ if (!this._needClear) return;
40
+ const allNodeElements = null === (_a = this._nodeMark) || void 0 === _a ? void 0 : _a.getGraphics();
41
+ if (!allNodeElements || !allNodeElements.length) return;
42
+ const allLinkElements = null === (_b = this._linkMark) || void 0 === _b ? void 0 : _b.getGraphics();
43
+ allLinkElements && allLinkElements.length && (allNodeElements.forEach((el => {
44
+ el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
45
+ })), allLinkElements.forEach((el => {
46
+ el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
47
+ })), this._needClear = !1);
48
+ }, this._handleNodeAdjacencyClick = graphic => {
49
+ const nodeDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ nodeDatum.key ];
50
+ if (this._linkMark) {
51
+ const allLinkElements = this._linkMark.getGraphics();
52
+ if (!allLinkElements || !allLinkElements.length) return;
53
+ allLinkElements.forEach(((linkEl, i) => {
54
+ const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl);
55
+ linkDatum.source === nodeDatum.key ? (highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
56
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
57
+ linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : linkDatum.target === nodeDatum.key ? (highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
58
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
59
+ linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
60
+ linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
61
+ }));
62
+ }
63
+ this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes),
64
+ this._needClear = !0;
65
+ }, this._handleLinkAdjacencyClick = graphic => {
66
+ const curLinkDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ curLinkDatum.source, curLinkDatum.target ];
67
+ if (this._linkMark) {
68
+ const allLinkElements = this._linkMark.getGraphics();
69
+ if (!allLinkElements || !allLinkElements.length) return;
70
+ allLinkElements.forEach((linkEl => {
71
+ linkEl === graphic ? (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
72
+ (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
73
+ ratio: 1
74
+ })) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
75
+ }));
76
+ }
77
+ this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes),
78
+ this._needClear = !0;
79
+ }, this._handleNodeRelatedClick = graphic => {
80
+ var _a;
81
+ const nodeDatum = (0, util_2.getDatumOfGraphic)(graphic), allNodeElements = this._nodeMark.getGraphics();
82
+ if (!allNodeElements || !allNodeElements.length) return;
83
+ const allLinkElements = this._linkMark.getGraphics();
84
+ if (!allLinkElements || !allLinkElements.length) return;
85
+ const father = (null === (_a = (0, util_2.getDatumOfGraphic)(allLinkElements[0])) || void 0 === _a ? void 0 : _a.parents) ? "parents" : "source";
86
+ if ("source" === father) {
87
+ const highlightNodes = [ nodeDatum.key ], highlightLinks = [];
88
+ if (allLinkElements.forEach(((linkEl, i) => {
89
+ var _a, _b, _c, _d;
90
+ const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), father = (null == linkDatum ? void 0 : linkDatum.parents) ? "parents" : "source";
91
+ if ((0, vutils_1.array)(linkDatum[father]).includes(nodeDatum.key)) {
92
+ 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),
93
+ highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
94
+ !highlightNodes.includes(linkDatum.target)) {
95
+ highlightNodes.push(linkDatum.target);
96
+ let targetNodeSourceLinks = allNodeElements.find((nodeElement => nodeElement.data[0].key === linkDatum.target)).data[0].sourceLinks;
97
+ for (;(null == targetNodeSourceLinks ? void 0 : targetNodeSourceLinks.length) > 0; ) {
98
+ const newTargetNodeSourceLinks = [];
99
+ return targetNodeSourceLinks.forEach((targetNodeSourceLinkDatum => {
100
+ var _a, _b;
101
+ if (!highlightLinks.includes(null !== (_a = targetNodeSourceLinkDatum.key) && void 0 !== _a ? _a : targetNodeSourceLinkDatum.index) && (highlightLinks.push(null !== (_b = targetNodeSourceLinkDatum.key) && void 0 !== _b ? _b : targetNodeSourceLinkDatum.index),
102
+ !highlightNodes.includes(targetNodeSourceLinkDatum.target))) {
103
+ highlightNodes.push(targetNodeSourceLinkDatum.target);
104
+ const sourceNodeTemp = allNodeElements.find((nodeElement => nodeElement.data[0].key === targetNodeSourceLinkDatum.target));
105
+ newTargetNodeSourceLinks.push(sourceNodeTemp.data[0].targetLinks);
106
+ }
107
+ })), void (targetNodeSourceLinks = newTargetNodeSourceLinks);
108
+ }
109
+ }
110
+ } else if (linkDatum.target === nodeDatum.key && (highlightLinks.includes(null !== (_c = linkDatum.key) && void 0 !== _c ? _c : linkDatum.index) || highlightLinks.push(null !== (_d = linkDatum.key) && void 0 !== _d ? _d : linkDatum.index),
111
+ !highlightNodes.includes(linkDatum.source))) {
112
+ highlightNodes.push(linkDatum.source);
113
+ let sourceNodeTargetLinks = allNodeElements.find((nodeElement => nodeElement.data[0].key === linkDatum.source)).data[0].targetLinks;
114
+ for (;(null == sourceNodeTargetLinks ? void 0 : sourceNodeTargetLinks.length) > 0; ) {
115
+ const newSourceNodeTargetLinks = [];
116
+ return sourceNodeTargetLinks.forEach((sourceNodeTargetLinkDatum => {
117
+ var _a, _b;
118
+ if (!highlightLinks.includes(null !== (_a = sourceNodeTargetLinkDatum.key) && void 0 !== _a ? _a : sourceNodeTargetLinkDatum.index) && (highlightLinks.push(null !== (_b = sourceNodeTargetLinkDatum.key) && void 0 !== _b ? _b : sourceNodeTargetLinkDatum.index),
119
+ !highlightNodes.includes(sourceNodeTargetLinkDatum.source))) {
120
+ highlightNodes.push(sourceNodeTargetLinkDatum.source);
121
+ const sourceNodeTemp = allNodeElements.find((nodeElement => nodeElement.data[0].key === sourceNodeTargetLinkDatum.source));
122
+ newSourceNodeTargetLinks.push(sourceNodeTemp.data[0].targetLinks);
123
+ }
124
+ })), void (sourceNodeTargetLinks = newSourceNodeTargetLinks);
125
+ }
126
+ }
127
+ })), this._linkMark) {
128
+ const allLinkElements = this._linkMark.getGraphics();
129
+ if (!allLinkElements || !allLinkElements.length) return;
130
+ allLinkElements.forEach(((linkEl, i) => {
131
+ var _a;
132
+ const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl);
133
+ highlightLinks.includes(null !== (_a = linkDatum.key) && void 0 !== _a ? _a : linkDatum.index) ? (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
134
+ linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
135
+ linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
136
+ }));
137
+ }
138
+ this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
139
+ } else {
140
+ const highlightNodes = [ nodeDatum.key ], upstreamLinks = nodeDatum.targetLinks.reduce(((res, link) => ((0,
141
+ vutils_1.array)(link.datum).forEach((dividedLink => {
142
+ const parents = dividedLink.parents, len = parents.length;
143
+ for (let i = 0; i < len; i++) {
144
+ const source = parents[i].key, target = parents[i + 1] ? parents[i + 1].key : nodeDatum.key, value = dividedLink.value, existingItem = res.find((item => item.source === source && item.target === target));
145
+ existingItem ? existingItem.value += value : res.push({
146
+ source: source,
147
+ target: target,
148
+ value: value
149
+ });
150
+ }
151
+ })), res)), []);
152
+ allLinkElements.forEach(((linkEl, i) => {
153
+ const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), 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));
154
+ if (selectedDatum && selectedDatum.length) {
155
+ highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
156
+ highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target);
157
+ const ratio = selectedDatum.reduce(((sum, d) => sum + d.value), 0) / linkDatum.value;
158
+ return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
159
+ void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
160
+ ratio: ratio
161
+ });
162
+ }
163
+ if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
164
+ highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
165
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
166
+ void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
167
+ ratio: upSelectedLink.value / linkDatum.value
168
+ });
169
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0);
170
+ })), this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
171
+ }
172
+ this._needClear = !0;
173
+ }, this._handleLinkRelatedClick = graphic => {
174
+ const allNodeElements = this._nodeMark.getGraphics();
175
+ if (!allNodeElements || !allNodeElements.length) return;
176
+ const allLinkElements = this._linkMark.getGraphics();
177
+ if (!allLinkElements || !allLinkElements.length) return;
178
+ if ("source" === ((0, util_2.getDatumOfGraphic)(graphic) ? "parents" : "source")) this._linkMark && allLinkElements.forEach((linkEl => {
179
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
180
+ })), this._nodeMark && allNodeElements.forEach((el => {
181
+ el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
182
+ })); else {
183
+ const curLinkDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ curLinkDatum.source, curLinkDatum.target ], upstreamLinks = [];
184
+ (0, vutils_1.array)(curLinkDatum.datum).forEach((dividedLink => {
185
+ const parents = dividedLink.parents, len = parents.length;
186
+ for (let i = 0; i < len - 1; i++) {
187
+ const source = parents[i].key, target = parents[i + 1].key, value = dividedLink.value, existingItem = upstreamLinks.find((item => item.source === source && item.target === target));
188
+ upstreamLinks.push({
189
+ source: parents[i].key,
190
+ target: parents[i + 1].key,
191
+ value: dividedLink.value
192
+ }), existingItem ? existingItem.value += value : upstreamLinks.push({
193
+ source: source,
194
+ target: target,
195
+ value: value
196
+ });
197
+ }
198
+ })), allLinkElements.forEach((linkEl => {
199
+ const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), originalDatum = linkDatum.datum;
200
+ if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
201
+ void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
202
+ ratio: 1
203
+ });
204
+ const selectedDatum = originalDatum ? originalDatum.filter((entry => {
205
+ const parentKeysList = entry.parents.map((item => item.key));
206
+ return parentKeysList.includes(curLinkDatum.source) && parentKeysList.includes(curLinkDatum.target);
207
+ })) : null;
208
+ if (selectedDatum && selectedDatum.length) {
209
+ highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
210
+ highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target);
211
+ const ratio = selectedDatum.filter((entry => entry.parents.some(((par, index) => {
212
+ var _a;
213
+ return par.key === curLinkDatum.source && (null === (_a = entry.parents[index + 1]) || void 0 === _a ? void 0 : _a.key) === curLinkDatum.target;
214
+ })))).reduce(((sum, d) => sum + d.value), 0) / linkDatum.value;
215
+ return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
216
+ void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
217
+ ratio: ratio
218
+ });
219
+ }
220
+ const upSelectedLink = upstreamLinks.find((upLink => upLink.source === linkDatum.source && upLink.target === linkDatum.target));
221
+ if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
222
+ highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
223
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
224
+ void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
225
+ ratio: upSelectedLink.value / linkDatum.value
226
+ });
227
+ linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0);
228
+ })), this._highLightElements(allNodeElements, highlightNodes);
229
+ }
230
+ this._needClear = !0;
37
231
  };
38
232
  }
39
233
  get direction() {
@@ -280,205 +474,6 @@ class SankeySeries extends cartesian_1.CartesianSeries {
280
474
  linksSeriesDataUpdate() {
281
475
  this._linkMark.getData().updateData();
282
476
  }
283
- _handleClearEmpty() {
284
- var _a, _b;
285
- if (!this._needClear) return;
286
- const allNodeElements = null === (_a = this._nodeMark) || void 0 === _a ? void 0 : _a.getGraphics();
287
- if (!allNodeElements || !allNodeElements.length) return;
288
- const allLinkElements = null === (_b = this._linkMark) || void 0 === _b ? void 0 : _b.getGraphics();
289
- allLinkElements && allLinkElements.length && (allNodeElements.forEach((el => {
290
- el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
291
- })), allLinkElements.forEach((el => {
292
- el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
293
- })), this._needClear = !1);
294
- }
295
- _handleNodeAdjacencyClick(graphic) {
296
- const nodeDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ nodeDatum.key ];
297
- if (this._linkMark) {
298
- const allLinkElements = this._linkMark.getGraphics();
299
- if (!allLinkElements || !allLinkElements.length) return;
300
- allLinkElements.forEach(((linkEl, i) => {
301
- const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl);
302
- linkDatum.source === nodeDatum.key ? (highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
303
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
304
- linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : linkDatum.target === nodeDatum.key ? (highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
305
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
306
- linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
307
- linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
308
- }));
309
- }
310
- this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes),
311
- this._needClear = !0;
312
- }
313
- _handleLinkAdjacencyClick(graphic) {
314
- const curLinkDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ curLinkDatum.source, curLinkDatum.target ];
315
- if (this._linkMark) {
316
- const allLinkElements = this._linkMark.getGraphics();
317
- if (!allLinkElements || !allLinkElements.length) return;
318
- allLinkElements.forEach((linkEl => {
319
- linkEl === graphic ? (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
320
- (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
321
- ratio: 1
322
- })) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
323
- }));
324
- }
325
- this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes),
326
- this._needClear = !0;
327
- }
328
- _handleNodeRelatedClick(graphic) {
329
- var _a;
330
- const nodeDatum = (0, util_2.getDatumOfGraphic)(graphic), allNodeElements = this._nodeMark.getGraphics();
331
- if (!allNodeElements || !allNodeElements.length) return;
332
- const allLinkElements = this._linkMark.getGraphics();
333
- if (!allLinkElements || !allLinkElements.length) return;
334
- const father = (null === (_a = (0, util_2.getDatumOfGraphic)(allLinkElements[0])) || void 0 === _a ? void 0 : _a.parents) ? "parents" : "source";
335
- if ("source" === father) {
336
- const highlightNodes = [ nodeDatum.key ], highlightLinks = [];
337
- if (allLinkElements.forEach(((linkEl, i) => {
338
- var _a, _b, _c, _d;
339
- const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), father = (null == linkDatum ? void 0 : linkDatum.parents) ? "parents" : "source";
340
- if ((0, vutils_1.array)(linkDatum[father]).includes(nodeDatum.key)) {
341
- 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),
342
- highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
343
- !highlightNodes.includes(linkDatum.target)) {
344
- highlightNodes.push(linkDatum.target);
345
- let targetNodeSourceLinks = allNodeElements.find((nodeElement => nodeElement.data[0].key === linkDatum.target)).data[0].sourceLinks;
346
- for (;(null == targetNodeSourceLinks ? void 0 : targetNodeSourceLinks.length) > 0; ) {
347
- const newTargetNodeSourceLinks = [];
348
- return targetNodeSourceLinks.forEach((targetNodeSourceLinkDatum => {
349
- var _a, _b;
350
- if (!highlightLinks.includes(null !== (_a = targetNodeSourceLinkDatum.key) && void 0 !== _a ? _a : targetNodeSourceLinkDatum.index) && (highlightLinks.push(null !== (_b = targetNodeSourceLinkDatum.key) && void 0 !== _b ? _b : targetNodeSourceLinkDatum.index),
351
- !highlightNodes.includes(targetNodeSourceLinkDatum.target))) {
352
- highlightNodes.push(targetNodeSourceLinkDatum.target);
353
- const sourceNodeTemp = allNodeElements.find((nodeElement => nodeElement.data[0].key === targetNodeSourceLinkDatum.target));
354
- newTargetNodeSourceLinks.push(sourceNodeTemp.data[0].targetLinks);
355
- }
356
- })), void (targetNodeSourceLinks = newTargetNodeSourceLinks);
357
- }
358
- }
359
- } else if (linkDatum.target === nodeDatum.key && (highlightLinks.includes(null !== (_c = linkDatum.key) && void 0 !== _c ? _c : linkDatum.index) || highlightLinks.push(null !== (_d = linkDatum.key) && void 0 !== _d ? _d : linkDatum.index),
360
- !highlightNodes.includes(linkDatum.source))) {
361
- highlightNodes.push(linkDatum.source);
362
- let sourceNodeTargetLinks = allNodeElements.find((nodeElement => nodeElement.data[0].key === linkDatum.source)).data[0].targetLinks;
363
- for (;(null == sourceNodeTargetLinks ? void 0 : sourceNodeTargetLinks.length) > 0; ) {
364
- const newSourceNodeTargetLinks = [];
365
- return sourceNodeTargetLinks.forEach((sourceNodeTargetLinkDatum => {
366
- var _a, _b;
367
- if (!highlightLinks.includes(null !== (_a = sourceNodeTargetLinkDatum.key) && void 0 !== _a ? _a : sourceNodeTargetLinkDatum.index) && (highlightLinks.push(null !== (_b = sourceNodeTargetLinkDatum.key) && void 0 !== _b ? _b : sourceNodeTargetLinkDatum.index),
368
- !highlightNodes.includes(sourceNodeTargetLinkDatum.source))) {
369
- highlightNodes.push(sourceNodeTargetLinkDatum.source);
370
- const sourceNodeTemp = allNodeElements.find((nodeElement => nodeElement.data[0].key === sourceNodeTargetLinkDatum.source));
371
- newSourceNodeTargetLinks.push(sourceNodeTemp.data[0].targetLinks);
372
- }
373
- })), void (sourceNodeTargetLinks = newSourceNodeTargetLinks);
374
- }
375
- }
376
- })), this._linkMark) {
377
- const allLinkElements = this._linkMark.getGraphics();
378
- if (!allLinkElements || !allLinkElements.length) return;
379
- allLinkElements.forEach(((linkEl, i) => {
380
- var _a;
381
- const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl);
382
- highlightLinks.includes(null !== (_a = linkDatum.key) && void 0 !== _a ? _a : linkDatum.index) ? (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
383
- linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, !0)) : (linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS),
384
- linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0));
385
- }));
386
- }
387
- this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
388
- } else {
389
- const highlightNodes = [ nodeDatum.key ], upstreamLinks = nodeDatum.targetLinks.reduce(((res, link) => ((0,
390
- vutils_1.array)(link.datum).forEach((dividedLink => {
391
- const parents = dividedLink.parents, len = parents.length;
392
- for (let i = 0; i < len; i++) {
393
- const source = parents[i].key, target = parents[i + 1] ? parents[i + 1].key : nodeDatum.key, value = dividedLink.value, existingItem = res.find((item => item.source === source && item.target === target));
394
- existingItem ? existingItem.value += value : res.push({
395
- source: source,
396
- target: target,
397
- value: value
398
- });
399
- }
400
- })), res)), []);
401
- allLinkElements.forEach(((linkEl, i) => {
402
- const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), 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));
403
- if (selectedDatum && selectedDatum.length) {
404
- highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
405
- highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target);
406
- const ratio = selectedDatum.reduce(((sum, d) => sum + d.value), 0) / linkDatum.value;
407
- return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
408
- void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
409
- ratio: ratio
410
- });
411
- }
412
- if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
413
- highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
414
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
415
- void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
416
- ratio: upSelectedLink.value / linkDatum.value
417
- });
418
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0);
419
- })), this._nodeMark && this._highLightElements(this._nodeMark.getGraphics(), highlightNodes);
420
- }
421
- this._needClear = !0;
422
- }
423
- _handleLinkRelatedClick(graphic) {
424
- const allNodeElements = this._nodeMark.getGraphics();
425
- if (!allNodeElements || !allNodeElements.length) return;
426
- const allLinkElements = this._linkMark.getGraphics();
427
- if (!allLinkElements || !allLinkElements.length) return;
428
- if ("source" === ((0, util_2.getDatumOfGraphic)(graphic) ? "parents" : "source")) this._linkMark && allLinkElements.forEach((linkEl => {
429
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
430
- })), this._nodeMark && allNodeElements.forEach((el => {
431
- el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), el.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE);
432
- })); else {
433
- const curLinkDatum = (0, util_2.getDatumOfGraphic)(graphic), highlightNodes = [ curLinkDatum.source, curLinkDatum.target ], upstreamLinks = [];
434
- (0, vutils_1.array)(curLinkDatum.datum).forEach((dividedLink => {
435
- const parents = dividedLink.parents, len = parents.length;
436
- for (let i = 0; i < len - 1; i++) {
437
- const source = parents[i].key, target = parents[i + 1].key, value = dividedLink.value, existingItem = upstreamLinks.find((item => item.source === source && item.target === target));
438
- upstreamLinks.push({
439
- source: parents[i].key,
440
- target: parents[i + 1].key,
441
- value: dividedLink.value
442
- }), existingItem ? existingItem.value += value : upstreamLinks.push({
443
- source: source,
444
- target: target,
445
- value: value
446
- });
447
- }
448
- })), allLinkElements.forEach((linkEl => {
449
- const linkDatum = (0, util_2.getDatumOfGraphic)(linkEl), originalDatum = linkDatum.datum;
450
- if (linkDatum.source === curLinkDatum.source && linkDatum.target === curLinkDatum.target) return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
451
- void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
452
- ratio: 1
453
- });
454
- const selectedDatum = originalDatum ? originalDatum.filter((entry => {
455
- const parentKeysList = entry.parents.map((item => item.key));
456
- return parentKeysList.includes(curLinkDatum.source) && parentKeysList.includes(curLinkDatum.target);
457
- })) : null;
458
- if (selectedDatum && selectedDatum.length) {
459
- highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
460
- highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target);
461
- const ratio = selectedDatum.filter((entry => entry.parents.some(((par, index) => {
462
- var _a;
463
- return par.key === curLinkDatum.source && (null === (_a = entry.parents[index + 1]) || void 0 === _a ? void 0 : _a.key) === curLinkDatum.target;
464
- })))).reduce(((sum, d) => sum + d.value), 0) / linkDatum.value;
465
- return linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
466
- void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
467
- ratio: ratio
468
- });
469
- }
470
- const upSelectedLink = upstreamLinks.find((upLink => upLink.source === linkDatum.source && upLink.target === linkDatum.target));
471
- if (upSelectedLink) return highlightNodes.includes(linkDatum.source) || highlightNodes.push(linkDatum.source),
472
- highlightNodes.includes(linkDatum.target) || highlightNodes.push(linkDatum.target),
473
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE),
474
- void (0, glyph_1.addRuntimeState)(linkEl, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS, {
475
- ratio: upSelectedLink.value / linkDatum.value
476
- });
477
- linkEl.removeState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS), linkEl.addState(interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, !0);
478
- })), this._highLightElements(allNodeElements, highlightNodes);
479
- }
480
- this._needClear = !0;
481
- }
482
477
  _highLightElements(graphics, highlightNodes) {
483
478
  graphics && graphics.length && graphics.forEach((g => {
484
479
  g.removeState([ interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS_REVERSE, interface_1.STATE_VALUE_ENUM.STATE_SANKEY_EMPHASIS ]),