@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.
Files changed (51) hide show
  1. package/build/es5/index.js +1 -1
  2. package/build/index.js +566 -320
  3. package/build/index.min.js +1 -1
  4. package/build/tsconfig.tsbuildinfo +1 -1
  5. package/cjs/compile/grammar-item.js +2 -1
  6. package/cjs/component/axis/cartesian/axis.d.ts +3 -0
  7. package/cjs/component/axis/cartesian/axis.js +12 -5
  8. package/cjs/component/axis/cartesian/axis.js.map +1 -1
  9. package/cjs/component/data-zoom/data-filter-base-component.js +4 -3
  10. package/cjs/component/data-zoom/data-filter-base-component.js.map +1 -1
  11. package/cjs/component/data-zoom/data-zoom/data-zoom.js +9 -5
  12. package/cjs/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  13. package/cjs/component/tooltip/handler/dom/util.js.map +1 -1
  14. package/cjs/constant/polar.js +1 -2
  15. package/cjs/constant/scroll-bar.js +2 -1
  16. package/cjs/core/factory.js +1 -2
  17. package/cjs/core/index.d.ts +1 -1
  18. package/cjs/core/index.js +1 -1
  19. package/cjs/core/index.js.map +1 -1
  20. package/cjs/data/transforms/sankey.d.ts +3 -6
  21. package/cjs/data/transforms/sankey.js +40 -23
  22. package/cjs/data/transforms/sankey.js.map +1 -1
  23. package/cjs/event/event.js +2 -1
  24. package/cjs/interaction/interaction.js +1 -2
  25. package/cjs/series/sankey/sankey.d.ts +6 -1
  26. package/cjs/series/sankey/sankey.js +48 -42
  27. package/cjs/series/sankey/sankey.js.map +1 -1
  28. package/esm/compile/grammar-item.js +2 -1
  29. package/esm/component/axis/cartesian/axis.d.ts +3 -0
  30. package/esm/component/axis/cartesian/axis.js +12 -5
  31. package/esm/component/axis/cartesian/axis.js.map +1 -1
  32. package/esm/component/data-zoom/data-filter-base-component.js +4 -3
  33. package/esm/component/data-zoom/data-filter-base-component.js.map +1 -1
  34. package/esm/component/data-zoom/data-zoom/data-zoom.js +9 -5
  35. package/esm/component/data-zoom/data-zoom/data-zoom.js.map +1 -1
  36. package/esm/component/tooltip/handler/dom/util.js.map +1 -1
  37. package/esm/constant/polar.js +1 -2
  38. package/esm/constant/scroll-bar.js +2 -1
  39. package/esm/core/factory.js +1 -2
  40. package/esm/core/index.d.ts +1 -1
  41. package/esm/core/index.js +1 -1
  42. package/esm/core/index.js.map +1 -1
  43. package/esm/data/transforms/sankey.d.ts +3 -6
  44. package/esm/data/transforms/sankey.js +36 -22
  45. package/esm/data/transforms/sankey.js.map +1 -1
  46. package/esm/event/event.js +2 -1
  47. package/esm/interaction/interaction.js +1 -2
  48. package/esm/series/sankey/sankey.d.ts +6 -1
  49. package/esm/series/sankey/sankey.js +49 -46
  50. package/esm/series/sankey/sankey.js.map +1 -1
  51. package/package.json +10 -10
@@ -2,46 +2,63 @@
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: !0
5
- }), exports.sankey = void 0;
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"), sankey = (data, op) => {
8
- var _a, _b, _c;
9
- if (!data || !(null == op ? void 0 : op.view) || !(0, vutils_1.isArray)(data)) return data;
10
- const view = op.view();
11
- 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 data;
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
- })), data = updateData;
20
- } else data = (null === (_a = data[0]) || void 0 === _a ? void 0 : _a.latestData) ? data[0].latestData[0] : data[0];
21
- if ("source" !== op.sourceField || "target" !== op.targetField || "value" !== op.valueField) for (const key in data) if ("links" === key) {
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
- data[key].forEach((datum => {
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
- })), data[key] = updatedData;
49
+ })), originalData.links = updatedData;
28
50
  }
29
- const convertValuesToNumbers = data => {
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
- data[key].forEach((datum => {
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
- })), data[key] = updatedData;
41
- } else "nodes" === key && (null === (_c = null === (_b = data.nodes) || void 0 === _b ? void 0 : _b[0]) || void 0 === _c ? void 0 : _c.children) && convertValuesToNumbers(data.nodes);
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(data, view)), result;
60
+ return result.push(layout.layout(originalData, view)), result;
44
61
  };
45
62
 
46
- exports.sankey = sankey;
63
+ exports.sankeyLayout = sankeyLayout;
47
64
  //# sourceMappingURL=sankey.js.map
@@ -1 +1 @@
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, 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 sankey = (data: SankeyData, op: ISankeyOpt) => {\n if (!data || !op?.view || !isArray(data)) {\n return data;\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 data;\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 data = updateData;\n } else {\n /**\n * data structure:\n * [{nodes: [xxx], links: [xxx]}]\n */\n if (data[0]?.latestData) {\n data = data[0].latestData[0];\n } else {\n data = data[0];\n }\n }\n\n if (op.sourceField !== 'source' || op.targetField !== 'target' || op.valueField !== 'value') {\n for (const key in data) {\n if (key === 'links') {\n const updatedData: {}[] = [];\n data[key].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 data[key] = updatedData;\n }\n }\n }\n\n const 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\n //Convert value from string to number\n for (const key in data) {\n //node-link型数据\n if (key === 'links') {\n const updatedData: {}[] = [];\n data[key].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 data[key] = updatedData;\n //层级型数据\n } else if (key === 'nodes') {\n if ((data.nodes?.[0] as any)?.children) {\n convertValuesToNumbers(data.nodes);\n }\n }\n }\n\n const layout = new SankeyLayout(op);\n\n const result = [];\n\n result.push(layout.layout(data, view));\n\n return result;\n};\n"]}
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"]}
@@ -61,4 +61,5 @@ class Event {
61
61
  }
62
62
  }
63
63
 
64
- exports.Event = Event;
64
+ exports.Event = Event;
65
+ //# sourceMappingURL=event.js.map
@@ -81,5 +81,4 @@ class Interaction {
81
81
  }
82
82
  }
83
83
 
84
- exports.Interaction = Interaction;
85
- //# sourceMappingURL=interaction.js.map
84
+ exports.Interaction = Interaction;
@@ -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
- getSeriesKeys(): string[];
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"), add_property_1 = require("../../data/transforms/add-property"), data_key_1 = require("../../data/transforms/data-key"), 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");
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, _e, _f;
317
- if (super.initData(), this.getViewData()) {
318
- (0, register_1.registerDataSetInstanceTransform)(this._dataSet, "sankey", sankey_1.sankey),
319
- this.addViewDataFilter({
320
- type: "sankey",
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 nodesDataSet = new vdataset_1.DataSet;
348
- (0, register_1.registerDataSetInstanceParser)(nodesDataSet, "dataview", vdataset_1.dataViewParser),
349
- (0, register_1.registerDataSetInstanceTransform)(nodesDataSet, "sankeyNodes", sankey_nodes_1.sankeyNodes),
350
- (0, register_1.registerDataSetInstanceTransform)(nodesDataSet, "addVChartProperty", add_property_1.addVChartProperty),
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), null === (_e = this._data) || void 0 === _e || _e.getDataView().target.addListener("change", nodesDataView.reRunAllTransform),
377
- this._nodesSeriesData = new series_data_1.SeriesData(this._option, nodesDataView);
378
- const linksDataSet = new vdataset_1.DataSet;
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), null === (_f = this._data) || void 0 === _f || _f.getDataView().target.addListener("change", linksDataView.reRunAllTransform),
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, _h;
449
- const sourceName = (null === (_a = this._spec) || void 0 === _a ? void 0 : _a.nodeKey) || (null === (_d = null === (_c = null === (_b = this._rawData.latestData[0]) || void 0 === _b ? void 0 : _b.nodes) || void 0 === _c ? void 0 : _c[0]) || void 0 === _d ? void 0 : _d.children) ? datum.source : this.getNodeList()[datum.source];
450
- return null !== (_g = null === (_f = null === (_e = this._spec.link) || void 0 === _e ? void 0 : _e.style) || void 0 === _f ? void 0 : _f.fill) && void 0 !== _g ? _g : null === (_h = this._colorScale) || void 0 === _h ? void 0 : _h.scale(sourceName);
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.event.emit(constant_1.ChartEvent.legendFilter, {
609
- model: this
610
- }), this._nodesSeriesData.updateData(), this._setNodeOrdinalColorScale();
608
+ this._nodesSeriesData.updateData(), this._setNodeOrdinalColorScale();
611
609
  }
612
610
  linksSeriesDataUpdate() {
613
- this.event.emit(constant_1.ChartEvent.legendFilter, {
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
- getSeriesKeys() {
656
- var _a, _b;
657
- if (this._seriesField) {
658
- const keyArray = [];
659
- return null === (_b = null === (_a = this._nodesSeriesData) || void 0 === _a ? void 0 : _a.getDataView()) || void 0 === _b || _b.latestData.forEach((datum => {
660
- var _a;
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._rawData.reRunAllTransform(), this.getViewData().reRunAllTransform(), this._nodesSeriesData.updateData(),
669
- this._linksSeriesData.updateData();
675
+ this.getViewData().reRunAllTransform(), this._nodesSeriesData.updateData(), this._linksSeriesData.updateData();
670
676
  }
671
677
  getDefaultShapeType() {
672
678
  return "square";