@visactor/vchart 1.6.3 → 1.6.4
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 +566 -320
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/compile/grammar-item.js +2 -1
- package/cjs/component/axis/cartesian/axis.d.ts +3 -0
- package/cjs/component/axis/cartesian/axis.js +12 -5
- package/cjs/component/axis/cartesian/axis.js.map +1 -1
- package/cjs/component/data-zoom/data-filter-base-component.js +4 -3
- package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/cjs/component/data-zoom/data-zoom/data-zoom.js +9 -5
- package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/util.js.map +1 -1
- package/cjs/constant/polar.js +1 -2
- package/cjs/constant/scroll-bar.js +2 -1
- package/cjs/core/factory.js +1 -2
- 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/data/transforms/sankey.d.ts +3 -6
- package/cjs/data/transforms/sankey.js +40 -23
- package/cjs/data/transforms/sankey.js.map +1 -1
- package/cjs/event/event.js +2 -1
- package/cjs/interaction/interaction.js +1 -2
- package/cjs/series/sankey/sankey.d.ts +6 -1
- package/cjs/series/sankey/sankey.js +48 -42
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/esm/compile/grammar-item.js +2 -1
- package/esm/component/axis/cartesian/axis.d.ts +3 -0
- package/esm/component/axis/cartesian/axis.js +12 -5
- package/esm/component/axis/cartesian/axis.js.map +1 -1
- package/esm/component/data-zoom/data-filter-base-component.js +4 -3
- package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
- package/esm/component/data-zoom/data-zoom/data-zoom.js +9 -5
- package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
- package/esm/component/tooltip/handler/dom/util.js.map +1 -1
- package/esm/constant/polar.js +1 -2
- package/esm/constant/scroll-bar.js +2 -1
- package/esm/core/factory.js +1 -2
- 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/data/transforms/sankey.d.ts +3 -6
- package/esm/data/transforms/sankey.js +36 -22
- package/esm/data/transforms/sankey.js.map +1 -1
- package/esm/event/event.js +2 -1
- package/esm/interaction/interaction.js +1 -2
- package/esm/series/sankey/sankey.d.ts +6 -1
- package/esm/series/sankey/sankey.js +49 -46
- package/esm/series/sankey/sankey.js.map +1 -1
- package/package.json +10 -10
|
@@ -2,46 +2,63 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.
|
|
5
|
+
}), exports.sankeyLayout = exports.sankeyFormat = exports.collectHierarchyField = void 0;
|
|
6
6
|
|
|
7
|
-
const vgrammar_sankey_1 = require("@visactor/vgrammar-sankey"), vutils_1 = require("@visactor/vutils"),
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
const vgrammar_sankey_1 = require("@visactor/vgrammar-sankey"), vutils_1 = require("@visactor/vutils"), collectHierarchyField = (set, data, field) => {
|
|
8
|
+
data.forEach((obj => {
|
|
9
|
+
(0, vutils_1.isNil)(obj[field]) || set.add(obj[field]), obj.children && obj.children.length > 0 && (0,
|
|
10
|
+
exports.collectHierarchyField)(set, obj.children, field);
|
|
11
|
+
}));
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
exports.collectHierarchyField = collectHierarchyField;
|
|
15
|
+
|
|
16
|
+
const convertValuesToNumbers = data => {
|
|
17
|
+
data.forEach((obj => {
|
|
18
|
+
obj.value = (0, vutils_1.isString)(obj.value) ? +obj.value : obj.value, obj.children && obj.children.length > 0 && convertValuesToNumbers(obj.children);
|
|
19
|
+
}));
|
|
20
|
+
}, sankeyFormat = data => {
|
|
21
|
+
var _a;
|
|
22
|
+
if (!data || !(0, vutils_1.isArray)(data)) return [];
|
|
12
23
|
if (data.length > 1) {
|
|
13
24
|
const updateData = {
|
|
14
25
|
links: [],
|
|
15
26
|
nodes: []
|
|
16
27
|
};
|
|
17
|
-
data.forEach((datum => {
|
|
28
|
+
return data.forEach((datum => {
|
|
18
29
|
"links" !== datum.id && "nodes" !== datum.id || (updateData[datum.id] = datum.values);
|
|
19
|
-
})),
|
|
20
|
-
}
|
|
21
|
-
|
|
30
|
+
})), [ updateData ];
|
|
31
|
+
}
|
|
32
|
+
return (null === (_a = data[0]) || void 0 === _a ? void 0 : _a.latestData) ? data[0].latestData : data;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
exports.sankeyFormat = sankeyFormat;
|
|
36
|
+
|
|
37
|
+
const sankeyLayout = (data, op) => {
|
|
38
|
+
var _a, _b;
|
|
39
|
+
if (!data || !(null == op ? void 0 : op.view) || !data.length) return [];
|
|
40
|
+
const view = op.view();
|
|
41
|
+
if (view.x1 - view.x0 == 0 || view.y1 - view.y0 == 0 || view.x1 - view.x0 == -1 / 0 || view.x1 - view.x0 == 1 / 0 || view.y1 - view.y0 == -1 / 0 || view.y1 - view.y0 == 1 / 0) return [];
|
|
42
|
+
const originalData = data[0];
|
|
43
|
+
if (("source" !== op.sourceField || "target" !== op.targetField || "value" !== op.valueField) && originalData.links) {
|
|
22
44
|
const updatedData = [];
|
|
23
|
-
|
|
45
|
+
originalData.links.forEach((datum => {
|
|
24
46
|
const updatedDatum = {};
|
|
25
47
|
for (const key in datum) key === op.sourceField ? updatedDatum.source = datum[op.sourceField] : key === op.targetField ? updatedDatum.target = datum[op.targetField] : key === op.valueField ? updatedDatum.value = datum[op.valueField] : updatedDatum[key] = datum[key];
|
|
26
48
|
updatedData.push(updatedDatum);
|
|
27
|
-
})),
|
|
49
|
+
})), originalData.links = updatedData;
|
|
28
50
|
}
|
|
29
|
-
|
|
30
|
-
data.forEach((obj => {
|
|
31
|
-
obj.value = (0, vutils_1.isString)(obj.value) ? +obj.value : obj.value, obj.children && obj.children.length > 0 && convertValuesToNumbers(obj.children);
|
|
32
|
-
}));
|
|
33
|
-
};
|
|
34
|
-
for (const key in data) if ("links" === key) {
|
|
51
|
+
if (originalData.links) {
|
|
35
52
|
const updatedData = [];
|
|
36
|
-
|
|
53
|
+
originalData.links.forEach((datum => {
|
|
37
54
|
const updatedDatum = {};
|
|
38
55
|
for (const key in datum) "value" === key ? updatedDatum.value = (0, vutils_1.isString)(datum.value) ? +datum.value : datum.value : updatedDatum[key] = datum[key];
|
|
39
56
|
updatedData.push(updatedDatum);
|
|
40
|
-
})),
|
|
41
|
-
} else
|
|
57
|
+
})), originalData.links = updatedData;
|
|
58
|
+
} else (null === (_b = null === (_a = originalData.nodes) || void 0 === _a ? void 0 : _a[0]) || void 0 === _b ? void 0 : _b.children) && convertValuesToNumbers(originalData.nodes);
|
|
42
59
|
const layout = new vgrammar_sankey_1.SankeyLayout(op), result = [];
|
|
43
|
-
return result.push(layout.layout(
|
|
60
|
+
return result.push(layout.layout(originalData, view)), result;
|
|
44
61
|
};
|
|
45
62
|
|
|
46
|
-
exports.
|
|
63
|
+
exports.sankeyLayout = sankeyLayout;
|
|
47
64
|
//# sourceMappingURL=sankey.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/sankey.ts"],"names":[],"mappings":";;;AACA,+DAAyD;AACzD,
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/sankey.ts"],"names":[],"mappings":"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","file":"sankey.js","sourcesContent":["import type { SankeyOptions, SankeyData } from '@visactor/vgrammar-sankey';\nimport { SankeyLayout } from '@visactor/vgrammar-sankey';\nimport { isArray, isNil, isString } from '@visactor/vutils';\n\nexport interface ISankeyOpt extends SankeyOptions {\n targetField: string;\n sourceField: string;\n valueField: string;\n view: () => { x0: number; x1: number; y0: number; y1: number };\n}\n\nexport const collectHierarchyField = (set: Set<any>, data: any[], field: string) => {\n data.forEach((obj: any) => {\n if (!isNil(obj[field])) {\n set.add(obj[field]);\n }\n\n if (obj.children && obj.children.length > 0) {\n collectHierarchyField(set, obj.children, field); // 递归处理子节点\n }\n });\n};\n\nconst convertValuesToNumbers = (data: any) => {\n data.forEach((obj: any) => {\n obj.value = isString(obj.value) ? +obj.value : obj.value; // 将字符串转换为数值类型\n if (obj.children && obj.children.length > 0) {\n convertValuesToNumbers(obj.children); // 递归处理子节点\n }\n });\n};\n\nexport const sankeyFormat = (data: any[]): SankeyData[] => {\n if (!data || !isArray(data)) {\n return [] as SankeyData[];\n }\n\n if (data.length > 1) {\n /**\n * data structure for Fengshen:\n * [{id:’nodes’, values:[xxx]},{id:’links’, values:[xxx]}]\n */\n const updateData: SankeyData = {\n links: [],\n nodes: []\n };\n data.forEach((datum: any) => {\n if (datum.id === 'links' || datum.id === 'nodes') {\n updateData[datum.id] = datum.values;\n }\n });\n return [updateData];\n }\n /**\n * data structure:\n * [{nodes: [xxx], links: [xxx]}]\n */\n if (data[0]?.latestData) {\n return data[0].latestData;\n }\n return data;\n};\n\nexport const sankeyLayout = (data: SankeyData[], op: ISankeyOpt) => {\n if (!data || !op?.view || !data.length) {\n return [];\n }\n\n const view = op.view();\n\n if (\n view.x1 - view.x0 === 0 ||\n view.y1 - view.y0 === 0 ||\n view.x1 - view.x0 === -Infinity ||\n view.x1 - view.x0 === Infinity ||\n view.y1 - view.y0 === -Infinity ||\n view.y1 - view.y0 === Infinity\n ) {\n return [];\n }\n\n const originalData = data[0];\n\n if (op.sourceField !== 'source' || op.targetField !== 'target' || op.valueField !== 'value') {\n if ((originalData as any).links) {\n const updatedData: {}[] = [];\n\n (originalData as any).links.forEach((datum: any) => {\n const updatedDatum: any = {};\n for (const key in datum) {\n if (key === op.sourceField) {\n updatedDatum.source = datum[op.sourceField];\n } else if (key === op.targetField) {\n updatedDatum.target = datum[op.targetField];\n } else if (key === op.valueField) {\n updatedDatum.value = datum[op.valueField];\n } else {\n updatedDatum[key] = datum[key];\n }\n }\n updatedData.push(updatedDatum);\n });\n (originalData as any).links = updatedData;\n }\n }\n\n if ((originalData as any).links) {\n //node-link型数据\n const updatedData: {}[] = [];\n (originalData as any).links.forEach((datum: any) => {\n const updatedDatum: any = {};\n for (const key in datum) {\n if (key === 'value') {\n updatedDatum.value = isString(datum.value) ? +datum.value : datum.value; // 将字符串转换为数值类型\n } else {\n updatedDatum[key] = datum[key];\n }\n }\n updatedData.push(updatedDatum);\n });\n (originalData as any).links = updatedData;\n } else if ((originalData as any).nodes?.[0]?.children) {\n //层级型数据\n //Convert value from string to number\n convertValuesToNumbers((originalData as any).nodes);\n }\n\n const layout = new SankeyLayout(op);\n\n const result = [];\n\n result.push(layout.layout(originalData, view));\n\n return result;\n};\n"]}
|
package/cjs/event/event.js
CHANGED
|
@@ -53,7 +53,12 @@ export declare class SankeySeries<T extends ISankeySeriesSpec = ISankeySeriesSpe
|
|
|
53
53
|
extractNamesFromTree(tree: any, categoryName: string): Set<unknown>;
|
|
54
54
|
getDimensionField(): string[];
|
|
55
55
|
getMeasureField(): string[];
|
|
56
|
-
|
|
56
|
+
getRawDataStatisticsByField(field: string, isNumeric?: boolean): {
|
|
57
|
+
values?: any[];
|
|
58
|
+
min?: number;
|
|
59
|
+
max?: number;
|
|
60
|
+
};
|
|
61
|
+
private _collectByField;
|
|
57
62
|
onLayoutEnd(ctx: any): void;
|
|
58
63
|
getDefaultShapeType(): string;
|
|
59
64
|
protected _noAnimationDataKey(datum: Datum, index: number): unknown | undefined;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.registerSankeySeries = exports.SankeySeries = void 0;
|
|
6
6
|
|
|
7
|
-
const cartesian_1 = require("../cartesian/cartesian"), type_1 = require("../interface/type"), vgrammar_sankey_1 = require("@visactor/vgrammar-sankey"), utils_1 = require("../../animation/utils"), config_1 = require("../../animation/config"), register_1 = require("../../data/register"), sankey_1 = require("../../data/transforms/sankey"), sankey_nodes_1 = require("../../data/transforms/sankey-nodes"), sankey_links_1 = require("../../data/transforms/sankey-links"), interface_1 = require("../../compile/mark/interface"), vdataset_1 = require("@visactor/vdataset"), constant_1 = require("../../constant"), series_data_1 = require("../base/series-data"),
|
|
7
|
+
const cartesian_1 = require("../cartesian/cartesian"), type_1 = require("../interface/type"), vgrammar_sankey_1 = require("@visactor/vgrammar-sankey"), utils_1 = require("../../animation/utils"), config_1 = require("../../animation/config"), register_1 = require("../../data/register"), sankey_1 = require("../../data/transforms/sankey"), sankey_nodes_1 = require("../../data/transforms/sankey-nodes"), sankey_links_1 = require("../../data/transforms/sankey-links"), interface_1 = require("../../compile/mark/interface"), vdataset_1 = require("@visactor/vdataset"), constant_1 = require("../../constant"), series_data_1 = require("../base/series-data"), tooltip_helper_1 = require("./tooltip-helper"), vutils_1 = require("@visactor/vutils"), animation_1 = require("./animation"), color_ordinal_scale_1 = require("../../scale/color-ordinal-scale"), rect_1 = require("../../mark/rect"), text_1 = require("../../mark/text"), link_path_1 = require("../../mark/link-path"), constant_2 = require("./constant"), flatten_1 = require("../../data/transforms/flatten"), factory_1 = require("../../core/factory"), initialize_1 = require("../../data/initialize"), data_key_1 = require("../../data/transforms/data-key");
|
|
8
8
|
|
|
9
9
|
class SankeySeries extends cartesian_1.CartesianSeries {
|
|
10
10
|
constructor() {
|
|
@@ -313,11 +313,16 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
313
313
|
this._labelLimit = null !== (_c = null === (_b = this._spec.label) || void 0 === _b ? void 0 : _b.limit) && void 0 !== _c ? _c : 100;
|
|
314
314
|
}
|
|
315
315
|
initData() {
|
|
316
|
-
var _a, _b, _c, _d
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
316
|
+
var _a, _b, _c, _d;
|
|
317
|
+
super.initData();
|
|
318
|
+
const viewData = this.getViewData(), rawData = this.getRawData();
|
|
319
|
+
if (rawData && viewData) {
|
|
320
|
+
(0, register_1.registerDataSetInstanceTransform)(this._dataSet, "sankeyLayout", sankey_1.sankeyLayout),
|
|
321
|
+
(0, register_1.registerDataSetInstanceTransform)(this._dataSet, "sankeyFormat", sankey_1.sankeyFormat),
|
|
322
|
+
rawData.transform({
|
|
323
|
+
type: "sankeyFormat"
|
|
324
|
+
}, !1), viewData.transform({
|
|
325
|
+
type: "sankeyLayout",
|
|
321
326
|
options: {
|
|
322
327
|
view: () => ({
|
|
323
328
|
x0: this._viewBox.x1,
|
|
@@ -344,12 +349,10 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
344
349
|
},
|
|
345
350
|
level: initialize_1.TransformLevel.sankeyLayout
|
|
346
351
|
});
|
|
347
|
-
const
|
|
348
|
-
(0, register_1.
|
|
349
|
-
(0, register_1.registerDataSetInstanceTransform)(
|
|
350
|
-
|
|
351
|
-
(0, register_1.registerDataSetInstanceTransform)(nodesDataSet, "flatten", flatten_1.flatten);
|
|
352
|
-
const nodesDataView = new vdataset_1.DataView(nodesDataSet, {
|
|
352
|
+
const {dataSet: dataSet} = this._option;
|
|
353
|
+
(0, register_1.registerDataSetInstanceTransform)(dataSet, "sankeyNodes", sankey_nodes_1.sankeyNodes),
|
|
354
|
+
(0, register_1.registerDataSetInstanceTransform)(dataSet, "flatten", flatten_1.flatten);
|
|
355
|
+
const nodesDataView = new vdataset_1.DataView(dataSet, {
|
|
353
356
|
name: `sankey-node-${this.id}-data`
|
|
354
357
|
});
|
|
355
358
|
nodesDataView.parse([ this.getViewData() ], {
|
|
@@ -367,19 +370,15 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
367
370
|
return node;
|
|
368
371
|
}
|
|
369
372
|
}
|
|
370
|
-
}), nodesDataView.transform({
|
|
373
|
+
}, !1), nodesDataView.transform({
|
|
371
374
|
type: "addVChartProperty",
|
|
372
375
|
options: {
|
|
373
376
|
beforeCall: data_key_1.initKeyMap.bind(this),
|
|
374
377
|
call: data_key_1.addDataKey
|
|
375
378
|
}
|
|
376
|
-
}, !1),
|
|
377
|
-
|
|
378
|
-
const
|
|
379
|
-
(0, register_1.registerDataSetInstanceParser)(linksDataSet, "dataview", vdataset_1.dataViewParser),
|
|
380
|
-
(0, register_1.registerDataSetInstanceTransform)(linksDataSet, "sankeyLinks", sankey_links_1.sankeyLinks),
|
|
381
|
-
(0, register_1.registerDataSetInstanceTransform)(linksDataSet, "addVChartProperty", add_property_1.addVChartProperty);
|
|
382
|
-
const linksDataView = new vdataset_1.DataView(linksDataSet, {
|
|
379
|
+
}, !1), this._nodesSeriesData = new series_data_1.SeriesData(this._option, nodesDataView),
|
|
380
|
+
(0, register_1.registerDataSetInstanceTransform)(dataSet, "sankeyLinks", sankey_links_1.sankeyLinks);
|
|
381
|
+
const linksDataView = new vdataset_1.DataView(dataSet, {
|
|
383
382
|
name: `sankey-link-${this.id}-data`
|
|
384
383
|
});
|
|
385
384
|
linksDataView.parse([ this.getViewData() ], {
|
|
@@ -392,8 +391,7 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
392
391
|
beforeCall: data_key_1.initKeyMap.bind(this),
|
|
393
392
|
call: data_key_1.addDataKey
|
|
394
393
|
}
|
|
395
|
-
}, !1),
|
|
396
|
-
this._linksSeriesData = new series_data_1.SeriesData(this._option, linksDataView);
|
|
394
|
+
}, !1), this._linksSeriesData = new series_data_1.SeriesData(this._option, linksDataView);
|
|
397
395
|
}
|
|
398
396
|
}
|
|
399
397
|
initMark() {
|
|
@@ -445,9 +443,11 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
445
443
|
y1: datum => datum.y1,
|
|
446
444
|
thickness: datum => datum.thickness,
|
|
447
445
|
fill: datum => {
|
|
448
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
449
|
-
const
|
|
450
|
-
|
|
446
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
447
|
+
const fill = null === (_b = null === (_a = this._spec.link) || void 0 === _a ? void 0 : _a.style) || void 0 === _b ? void 0 : _b.fill;
|
|
448
|
+
if (fill) return fill;
|
|
449
|
+
const sourceName = (null === (_c = this._spec) || void 0 === _c ? void 0 : _c.nodeKey) || (null === (_f = null === (_e = null === (_d = this._rawData.latestData[0]) || void 0 === _d ? void 0 : _d.nodes) || void 0 === _e ? void 0 : _e[0]) || void 0 === _f ? void 0 : _f.children) ? datum.source : this.getNodeList()[datum.source];
|
|
450
|
+
return null === (_g = this._colorScale) || void 0 === _g ? void 0 : _g.scale(sourceName);
|
|
451
451
|
},
|
|
452
452
|
direction: null !== (_a = this._spec.direction) && void 0 !== _a ? _a : "horizontal"
|
|
453
453
|
}, interface_1.STATE_VALUE_ENUM.STATE_NORMAL, constant_1.AttributeLevel.Series),
|
|
@@ -605,14 +605,10 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
605
605
|
}, this._handleRelatedClick));
|
|
606
606
|
}
|
|
607
607
|
nodesSeriesDataUpdate() {
|
|
608
|
-
this.
|
|
609
|
-
model: this
|
|
610
|
-
}), this._nodesSeriesData.updateData(), this._setNodeOrdinalColorScale();
|
|
608
|
+
this._nodesSeriesData.updateData(), this._setNodeOrdinalColorScale();
|
|
611
609
|
}
|
|
612
610
|
linksSeriesDataUpdate() {
|
|
613
|
-
this.
|
|
614
|
-
model: this
|
|
615
|
-
}), this._linksSeriesData.updateData();
|
|
611
|
+
this._linksSeriesData.updateData();
|
|
616
612
|
}
|
|
617
613
|
initTooltip() {
|
|
618
614
|
this._tooltipHelper = new tooltip_helper_1.SankeySeriesTooltipHelper(this), this._nodeMark && this._tooltipHelper.activeTriggerSet.mark.add(this._nodeMark),
|
|
@@ -652,21 +648,31 @@ class SankeySeries extends cartesian_1.CartesianSeries {
|
|
|
652
648
|
getMeasureField() {
|
|
653
649
|
return [ this._valueField ];
|
|
654
650
|
}
|
|
655
|
-
|
|
656
|
-
var _a
|
|
657
|
-
if (this.
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
keyArray.push(null !== (_a = datum[this._seriesField]) && void 0 !== _a ? _a : datum.datum[this._seriesField]);
|
|
662
|
-
})), keyArray;
|
|
651
|
+
getRawDataStatisticsByField(field, isNumeric) {
|
|
652
|
+
var _a;
|
|
653
|
+
if (this._rawStatisticsCache || (this._rawStatisticsCache = {}), !this._rawStatisticsCache[field]) {
|
|
654
|
+
this._viewDataStatistics && this.getViewData().transformsArr.length <= 1 && (null === (_a = this._viewDataStatistics.latestData) || void 0 === _a ? void 0 : _a[field]) ? this._rawStatisticsCache[field] = this._viewDataStatistics.latestData[field] : this._rawData && (this._rawStatisticsCache[field] = {
|
|
655
|
+
values: this._collectByField(field)
|
|
656
|
+
});
|
|
663
657
|
}
|
|
664
|
-
return [];
|
|
658
|
+
return this._rawStatisticsCache[field];
|
|
659
|
+
}
|
|
660
|
+
_collectByField(field) {
|
|
661
|
+
var _a, _b, _c;
|
|
662
|
+
const keyArray = [], rawData = null === (_b = null === (_a = this.getRawData()) || void 0 === _a ? void 0 : _a.latestData) || void 0 === _b ? void 0 : _b[0];
|
|
663
|
+
if (!rawData) return [];
|
|
664
|
+
if (rawData.links) (null === (_c = rawData.nodes) || void 0 === _c ? void 0 : _c.length) && rawData.nodes.forEach((node => {
|
|
665
|
+
node[this._seriesField] && keyArray.push(node[this._seriesField]);
|
|
666
|
+
})); else if (rawData.nodes) {
|
|
667
|
+
const set = new Set;
|
|
668
|
+
return (0, sankey_1.collectHierarchyField)(set, rawData.nodes, this._seriesField),
|
|
669
|
+
Array.from(set);
|
|
670
|
+
}
|
|
671
|
+
return keyArray;
|
|
665
672
|
}
|
|
666
673
|
onLayoutEnd(ctx) {
|
|
667
674
|
super.onLayoutEnd(ctx), this._viewBox.set(0, 0, this._region.getLayoutRect().width, this._region.getLayoutRect().height),
|
|
668
|
-
this.
|
|
669
|
-
this._linksSeriesData.updateData();
|
|
675
|
+
this.getViewData().reRunAllTransform(), this._nodesSeriesData.updateData(), this._linksSeriesData.updateData();
|
|
670
676
|
}
|
|
671
677
|
getDefaultShapeType() {
|
|
672
678
|
return "square";
|