@carbon/charts 0.30.5 → 0.30.9

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 (152) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +14 -8
  3. package/build/demo/data/bar.d.ts +56 -94
  4. package/build/demo/data/bubble.d.ts +58 -13
  5. package/build/demo/data/donut.d.ts +3 -6
  6. package/build/demo/data/line.d.ts +35 -35
  7. package/build/demo/data/pie.d.ts +3 -6
  8. package/build/demo/data/scatter.d.ts +33 -20
  9. package/build/demo/data/step.d.ts +15 -16
  10. package/build/demo/data/time-series-axis.d.ts +12 -48
  11. package/build/src/charts/bar-grouped.d.ts +2 -2
  12. package/build/src/charts/bar-simple.d.ts +2 -4
  13. package/build/src/components/essentials/legend.d.ts +0 -4
  14. package/build/src/components/essentials/tooltip-bar.d.ts +1 -1
  15. package/build/src/components/essentials/tooltip-pie.d.ts +5 -0
  16. package/build/src/components/essentials/tooltip-scatter.d.ts +1 -1
  17. package/build/src/components/graphs/bar-grouped.d.ts +6 -4
  18. package/build/src/components/graphs/bar-simple.d.ts +0 -1
  19. package/build/src/components/graphs/bar-stacked.d.ts +0 -1
  20. package/build/src/components/graphs/bubble.d.ts +0 -1
  21. package/build/src/components/graphs/line.d.ts +3 -1
  22. package/build/src/components/graphs/pie.d.ts +0 -1
  23. package/build/src/components/graphs/scatter.d.ts +0 -1
  24. package/build/src/components/index.d.ts +1 -0
  25. package/build/src/interfaces/axis-scales.d.ts +4 -16
  26. package/build/src/interfaces/charts.d.ts +23 -1
  27. package/build/src/interfaces/enums.d.ts +0 -4
  28. package/build/src/interfaces/events.d.ts +20 -0
  29. package/build/src/model-pie.d.ts +1 -7
  30. package/build/src/model.d.ts +31 -13
  31. package/build/src/services/scales-cartesian.d.ts +11 -3
  32. package/build/src/tools.d.ts +2 -2
  33. package/build/stories/tutorials.stories.d.ts +1 -0
  34. package/bundle.js +1 -1
  35. package/chart.js +2 -2
  36. package/chart.js.map +1 -1
  37. package/charts/bar-grouped.d.ts +2 -2
  38. package/charts/bar-grouped.js.map +1 -1
  39. package/charts/bar-simple.d.ts +2 -4
  40. package/charts/bar-simple.js +0 -2
  41. package/charts/bar-simple.js.map +1 -1
  42. package/charts/donut.js +2 -2
  43. package/charts/donut.js.map +1 -1
  44. package/charts/pie.js +2 -2
  45. package/charts/pie.js.map +1 -1
  46. package/components/axes/grid.js +12 -19
  47. package/components/axes/grid.js.map +1 -1
  48. package/components/component.js +1 -1
  49. package/components/component.js.map +1 -1
  50. package/components/essentials/legend.d.ts +0 -4
  51. package/components/essentials/legend.js +8 -22
  52. package/components/essentials/legend.js.map +1 -1
  53. package/components/essentials/title.js +4 -4
  54. package/components/essentials/title.js.map +1 -1
  55. package/components/essentials/tooltip-bar.d.ts +1 -1
  56. package/components/essentials/tooltip-bar.js +13 -5
  57. package/components/essentials/tooltip-bar.js.map +1 -1
  58. package/components/essentials/tooltip-pie.d.ts +5 -0
  59. package/components/essentials/tooltip-pie.js +40 -0
  60. package/components/essentials/tooltip-pie.js.map +1 -0
  61. package/components/essentials/tooltip-scatter.d.ts +1 -1
  62. package/components/essentials/tooltip-scatter.js +8 -6
  63. package/components/essentials/tooltip-scatter.js.map +1 -1
  64. package/components/essentials/tooltip.js +14 -17
  65. package/components/essentials/tooltip.js.map +1 -1
  66. package/components/graphs/bar-grouped.d.ts +6 -4
  67. package/components/graphs/bar-grouped.js +60 -32
  68. package/components/graphs/bar-grouped.js.map +1 -1
  69. package/components/graphs/bar-simple.d.ts +0 -1
  70. package/components/graphs/bar-simple.js +12 -30
  71. package/components/graphs/bar-simple.js.map +1 -1
  72. package/components/graphs/bar-stacked.d.ts +0 -1
  73. package/components/graphs/bar-stacked.js +26 -108
  74. package/components/graphs/bar-stacked.js.map +1 -1
  75. package/components/graphs/bar.js.map +1 -1
  76. package/components/graphs/bubble.d.ts +0 -1
  77. package/components/graphs/bubble.js +16 -20
  78. package/components/graphs/bubble.js.map +1 -1
  79. package/components/graphs/donut.js +1 -1
  80. package/components/graphs/donut.js.map +1 -1
  81. package/components/graphs/line.d.ts +3 -1
  82. package/components/graphs/line.js +41 -30
  83. package/components/graphs/line.js.map +1 -1
  84. package/components/graphs/pie.d.ts +0 -1
  85. package/components/graphs/pie.js +13 -20
  86. package/components/graphs/pie.js.map +1 -1
  87. package/components/graphs/scatter.d.ts +0 -1
  88. package/components/graphs/scatter.js +26 -41
  89. package/components/graphs/scatter.js.map +1 -1
  90. package/components/index.d.ts +1 -0
  91. package/components/index.js +1 -0
  92. package/components/index.js.map +1 -1
  93. package/configuration.js +7 -0
  94. package/configuration.js.map +1 -1
  95. package/demo/data/bar.d.ts +56 -94
  96. package/demo/data/bar.js +106 -271
  97. package/demo/data/bar.js.map +1 -1
  98. package/demo/data/bubble.d.ts +58 -13
  99. package/demo/data/bubble.js +74 -174
  100. package/demo/data/bubble.js.map +1 -1
  101. package/demo/data/bundle.js +1 -1
  102. package/demo/data/donut.d.ts +3 -6
  103. package/demo/data/index.js +22 -4
  104. package/demo/data/index.js.map +1 -1
  105. package/demo/data/line.d.ts +35 -35
  106. package/demo/data/line.js +70 -196
  107. package/demo/data/line.js.map +1 -1
  108. package/demo/data/pie.d.ts +3 -6
  109. package/demo/data/pie.js +8 -10
  110. package/demo/data/pie.js.map +1 -1
  111. package/demo/data/scatter.d.ts +33 -20
  112. package/demo/data/scatter.js +50 -68
  113. package/demo/data/scatter.js.map +1 -1
  114. package/demo/data/step.d.ts +15 -16
  115. package/demo/data/time-series-axis.d.ts +12 -48
  116. package/demo/data/time-series-axis.js +34 -46
  117. package/demo/data/time-series-axis.js.map +1 -1
  118. package/demo/styles.css +28 -0
  119. package/demo/styles.css.map +1 -1
  120. package/demo/styles.min.css +1 -1
  121. package/demo/styles.min.css.map +1 -1
  122. package/demo/tsconfig.tsbuildinfo +38 -37
  123. package/interfaces/axis-scales.d.ts +4 -16
  124. package/interfaces/axis-scales.js.map +1 -1
  125. package/interfaces/charts.d.ts +23 -1
  126. package/interfaces/charts.js.map +1 -1
  127. package/interfaces/enums.d.ts +0 -4
  128. package/interfaces/enums.js +0 -5
  129. package/interfaces/enums.js.map +1 -1
  130. package/interfaces/events.d.ts +20 -0
  131. package/interfaces/events.js +23 -0
  132. package/interfaces/events.js.map +1 -1
  133. package/model-pie.d.ts +1 -7
  134. package/model-pie.js +2 -107
  135. package/model-pie.js.map +1 -1
  136. package/model.d.ts +31 -13
  137. package/model.js +200 -76
  138. package/model.js.map +1 -1
  139. package/package.json +3 -1
  140. package/services/essentials/dom-utils.js +3 -2
  141. package/services/essentials/dom-utils.js.map +1 -1
  142. package/services/scales-cartesian.d.ts +11 -3
  143. package/services/scales-cartesian.js +104 -122
  144. package/services/scales-cartesian.js.map +1 -1
  145. package/tools.d.ts +2 -2
  146. package/tools.js +23 -2
  147. package/tools.js.map +1 -1
  148. package/tsconfig.tsbuildinfo +87 -88
  149. package/build/src/model-simple-bar.d.ts +0 -11
  150. package/model-simple-bar.d.ts +0 -11
  151. package/model-simple-bar.js +0 -88
  152. package/model-simple-bar.js.map +0 -1
package/model-pie.js CHANGED
@@ -12,12 +12,7 @@ var __extends = (this && this.__extends) || (function () {
12
12
  };
13
13
  })();
14
14
  // Internal Imports
15
- import * as Configuration from "./configuration";
16
15
  import { ChartModel } from "./model";
17
- import { Tools } from "./tools";
18
- import * as colorPalettes from "./services/colorPalettes";
19
- // D3 Imports
20
- import { scaleOrdinal } from "d3-scale";
21
16
  /** The charting model layer which includes mainly the chart data and options,
22
17
  * as well as some misc. information to be shared among components */
23
18
  var PieChartModel = /** @class */ (function (_super) {
@@ -26,109 +21,9 @@ var PieChartModel = /** @class */ (function (_super) {
26
21
  return _super.call(this, services) || this;
27
22
  }
28
23
  PieChartModel.prototype.sanitize = function (data) {
24
+ var tabularData = this.getTabularData(data);
29
25
  // Sort data based on value
30
- // and sort labels based on the data value order
31
- var dataset = Tools.getProperty(data, "datasets", 0);
32
- if (dataset) {
33
- var sortedLabelsAndValues = data.labels.map(function (label, i) {
34
- return {
35
- label: label,
36
- value: dataset.data[i],
37
- fillColor: dataset.fillColors ? dataset.fillColors[i] : undefined
38
- };
39
- }).sort(function (a, b) { return b.value - a.value; });
40
- dataset.data = sortedLabelsAndValues.map(function (d) { return d.value; });
41
- data.labels = sortedLabelsAndValues.map(function (d) { return d.label; });
42
- if (dataset.fillColors) {
43
- dataset.fillColors = sortedLabelsAndValues.map(function (d) { return d.fillColor; });
44
- }
45
- }
46
- return data;
47
- };
48
- PieChartModel.prototype.generateDataLabels = function (newData) {
49
- var dataLabels = {};
50
- newData.labels.forEach(function (label) {
51
- dataLabels[label] = Configuration.legend.items.status.ACTIVE;
52
- });
53
- return dataLabels;
54
- };
55
- PieChartModel.prototype.getDisplayData = function () {
56
- var ACTIVE = Configuration.legend.items.status.ACTIVE;
57
- var dataLabels = this.get("dataLabels");
58
- if (!this.get("data")) {
59
- return null;
60
- }
61
- // Remove datasets that have been disabled
62
- var displayData = Tools.clone(this.get("data"));
63
- var dataset = displayData.datasets[0];
64
- // Remove data values that correspond to labels that are disabled
65
- dataset.data = dataset.data.filter(function (datum, i) {
66
- var label = displayData.labels[i];
67
- return dataLabels[label] === ACTIVE;
68
- });
69
- // Remove labels that are disabled
70
- displayData.labels = displayData.labels.filter(function (label) { return dataLabels[label] === ACTIVE; });
71
- return displayData;
72
- };
73
- /*
74
- * Data labels
75
- */
76
- PieChartModel.prototype.toggleDataLabel = function (changedLabel) {
77
- var _a = Configuration.legend.items.status, ACTIVE = _a.ACTIVE, DISABLED = _a.DISABLED;
78
- var dataLabels = this.get("dataLabels");
79
- var hasDeactivatedItems = Object.keys(dataLabels).some(function (label) { return dataLabels[label] === DISABLED; });
80
- var activeItems = Object.keys(dataLabels).filter(function (label) { return dataLabels[label] === ACTIVE; });
81
- // If there are deactivated items, toggle "changedLabel"
82
- if (hasDeactivatedItems) {
83
- // If the only active item is being toggled
84
- // Activate all items
85
- if (activeItems.length === 1 && activeItems[0] === changedLabel) {
86
- // If every item is active, then enable "changedLabel" and disable all other items
87
- Object.keys(dataLabels).forEach(function (label) {
88
- dataLabels[label] = ACTIVE;
89
- });
90
- }
91
- else {
92
- dataLabels[changedLabel] = dataLabels[changedLabel] === DISABLED ? ACTIVE : DISABLED;
93
- }
94
- }
95
- else {
96
- // If every item is active, then enable "changedLabel" and disable all other items
97
- Object.keys(dataLabels).forEach(function (label) {
98
- dataLabels[label] = (label === changedLabel ? ACTIVE : DISABLED);
99
- });
100
- }
101
- // Update model
102
- this.set({
103
- dataLabels: dataLabels
104
- });
105
- };
106
- /*
107
- * Fill scales
108
- */
109
- PieChartModel.prototype.setColorScale = function () {
110
- var dataset = this.getDisplayData().datasets[0];
111
- if (dataset.fillColors) {
112
- this.colorScale = scaleOrdinal().range(dataset.fillColors).domain(this.allDataLabels);
113
- }
114
- else {
115
- var colors = colorPalettes.DEFAULT;
116
- this.colorScale = scaleOrdinal().range(colors).domain(this.allDataLabels);
117
- }
118
- };
119
- PieChartModel.prototype.getFillColor = function (label) {
120
- var options = this.getOptions();
121
- if (options.getFillColor) {
122
- return options.getFillColor(label);
123
- }
124
- return this.getFillScale()(label);
125
- };
126
- PieChartModel.prototype.getStrokeColor = function (label) {
127
- var options = this.getOptions();
128
- if (options.getStrokeColor) {
129
- return options.getStrokeColor(label);
130
- }
131
- return this.colorScale(label);
26
+ return tabularData.sort(function (a, b) { return b.value - a.value; });
132
27
  };
133
28
  return PieChartModel;
134
29
  }(ChartModel));
package/model-pie.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model-pie.js","sourceRoot":"","sources":["model-pie.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport * as Configuration from \"./configuration\";\nimport { ChartModel } from \"./model\";\nimport { Tools } from \"./tools\";\nimport * as colorPalettes from \"./services/colorPalettes\";\n\n// D3 Imports\nimport { scaleOrdinal } from \"d3-scale\";\n\n/** The charting model layer which includes mainly the chart data and options,\n * as well as some misc. information to be shared among components */\nexport class PieChartModel extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tsanitize(data) {\n\t\t// Sort data based on value\n\t\t// and sort labels based on the data value order\n\t\tconst dataset = Tools.getProperty(data, \"datasets\", 0);\n\t\tif (dataset) {\n\t\t\tconst sortedLabelsAndValues = data.labels.map((label, i) => {\n\t\t\t\treturn {\n\t\t\t\t\tlabel,\n\t\t\t\t\tvalue: dataset.data[i],\n\t\t\t\t\tfillColor: dataset.fillColors ? dataset.fillColors[i] : undefined\n\t\t\t\t};\n\t\t\t}).sort((a: any, b: any) => b.value - a.value);\n\n\t\t\tdataset.data = sortedLabelsAndValues.map(d => d.value);\n\t\t\tdata.labels = sortedLabelsAndValues.map(d => d.label);\n\n\t\t\tif (dataset.fillColors) {\n\t\t\t\tdataset.fillColors = sortedLabelsAndValues.map(d => d.fillColor);\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tgenerateDataLabels(newData) {\n\t\tconst dataLabels = {};\n\t\tnewData.labels.forEach(label => {\n\t\t\tdataLabels[label] = Configuration.legend.items.status.ACTIVE;\n\t\t});\n\n\t\treturn dataLabels;\n\t}\n\n\tgetDisplayData() {\n\t\tconst { ACTIVE } = Configuration.legend.items.status;\n\t\tconst dataLabels = this.get(\"dataLabels\");\n\n\t\tif (!this.get(\"data\")) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Remove datasets that have been disabled\n\t\tconst displayData = Tools.clone(this.get(\"data\"));\n\t\tconst dataset = displayData.datasets[0];\n\n\t\t// Remove data values that correspond to labels that are disabled\n\t\tdataset.data = dataset.data.filter((datum, i) => {\n\t\t\tconst label = displayData.labels[i];\n\n\t\t\treturn dataLabels[label] === ACTIVE;\n\t\t});\n\n\t\t// Remove labels that are disabled\n\t\tdisplayData.labels = displayData.labels.filter(label => dataLabels[label] === ACTIVE);\n\n\t\treturn displayData;\n\t}\n\n\n\t/*\n\t * Data labels\n\t*/\n\ttoggleDataLabel(changedLabel: string) {\n\t\tconst { ACTIVE, DISABLED } = Configuration.legend.items.status;\n\t\tconst dataLabels = this.get(\"dataLabels\");\n\n\t\tconst hasDeactivatedItems = Object.keys(dataLabels).some(label => dataLabels[label] === DISABLED);\n\t\tconst activeItems = Object.keys(dataLabels).filter(label => dataLabels[label] === ACTIVE);\n\t\t// If there are deactivated items, toggle \"changedLabel\"\n\t\tif (hasDeactivatedItems) {\n\t\t\t// If the only active item is being toggled\n\t\t\t// Activate all items\n\t\t\tif (activeItems.length === 1 && activeItems[0] === changedLabel) {\n\t\t\t\t// If every item is active, then enable \"changedLabel\" and disable all other items\n\t\t\t\tObject.keys(dataLabels).forEach(label => {\n\t\t\t\t\tdataLabels[label] = ACTIVE;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdataLabels[changedLabel] = dataLabels[changedLabel] === DISABLED ? ACTIVE : DISABLED;\n\t\t\t}\n\t\t} else {\n\t\t\t// If every item is active, then enable \"changedLabel\" and disable all other items\n\t\t\tObject.keys(dataLabels).forEach(label => {\n\t\t\t\tdataLabels[label] = (label === changedLabel ? ACTIVE : DISABLED);\n\t\t\t});\n\t\t}\n\n\t\t// Update model\n\t\tthis.set({\n\t\t\tdataLabels\n\t\t});\n\t}\n\n\t/*\n\t * Fill scales\n\t*/\n\tsetColorScale() {\n\t\tconst dataset = this.getDisplayData().datasets[0];\n\t\tif (dataset.fillColors) {\n\t\t\tthis.colorScale = scaleOrdinal().range(dataset.fillColors).domain(this.allDataLabels);\n\t\t} else {\n\t\t\tconst colors = colorPalettes.DEFAULT;\n\t\t\tthis.colorScale = scaleOrdinal().range(colors).domain(this.allDataLabels);\n\t\t}\n\t}\n\n\n\tgetFillColor(label: string) {\n\t\tconst options = this.getOptions();\n\t\tif (options.getFillColor) {\n\t\t\treturn options.getFillColor(label);\n\t\t}\n\n\t\treturn this.getFillScale()(label);\n\t}\n\n\tgetStrokeColor(label: string) {\n\t\tconst options = this.getOptions();\n\t\tif (options.getStrokeColor) {\n\t\t\treturn options.getStrokeColor(label);\n\t\t}\n\n\t\treturn this.colorScale(label);\n\t}\n}\n"]}
1
+ {"version":3,"file":"model-pie.js","sourceRoot":"","sources":["model-pie.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;qEACqE;AACrE;IAAmC,iCAAU;IAC5C,uBAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,gCAAQ,GAAR,UAAS,IAAI;QACZ,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE9C,2BAA2B;QAC3B,OAAO,WAAW,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAjB,CAAiB,CAAC,CAAC;IACtD,CAAC;IACF,oBAAC;AAAD,CAAC,AAXD,CAAmC,UAAU,GAW5C","sourcesContent":["// Internal Imports\nimport { ChartModel } from \"./model\";\n\n/** The charting model layer which includes mainly the chart data and options,\n * as well as some misc. information to be shared among components */\nexport class PieChartModel extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tsanitize(data) {\n\t\tconst tabularData = this.getTabularData(data);\n\n\t\t// Sort data based on value\n\t\treturn tabularData.sort((a, b) => b.value - a.value);\n\t}\n}\n"]}
package/model.d.ts CHANGED
@@ -9,22 +9,41 @@ export declare class ChartModel {
9
9
  protected services: any;
10
10
  protected state: any;
11
11
  /**
12
- * A list of all the labels that have existed within the lifetime of the chart
12
+ * A list of all the data groups that have existed within the lifetime of the chart
13
13
  * @type string[]
14
14
  */
15
- protected allDataLabels: string[];
16
- protected patternScale: {};
15
+ protected allDataGroups: string[];
17
16
  protected colorScale: any;
18
17
  constructor(services: any);
19
- sanitize(data: any): any;
18
+ /**
19
+ * Converts data provided in the older format to tabular
20
+ *
21
+ */
22
+ protected transformToTabularData(data: any): any[];
23
+ protected getTabularData(data: any): any[];
24
+ protected sanitize(data: any): any[];
20
25
  getDisplayData(): any;
21
26
  getData(): any;
22
27
  /**
23
28
  *
24
29
  * @param newData The new raw data to be set
25
30
  */
26
- setData(newData: any): any;
27
- generateDataLabels(newData: any): {};
31
+ setData(newData: any): any[];
32
+ protected updateAllDataGroups(): void;
33
+ protected generateDataGroups(data: any): {
34
+ name: string;
35
+ status: Number;
36
+ }[];
37
+ getDataGroups(): any;
38
+ getActiveDataGroups(): any;
39
+ getDataGroupNames(): any;
40
+ getActiveDataGroupNames(): any;
41
+ getGroupedData(): {
42
+ name: string;
43
+ data: any;
44
+ }[];
45
+ getDataValuesGroupedByKeys(): any;
46
+ getStackedData(): any[][];
28
47
  /**
29
48
  * @return {Object} The chart's options
30
49
  */
@@ -44,17 +63,16 @@ export declare class ChartModel {
44
63
  update(): void;
45
64
  setUpdateCallback(cb: Function): void;
46
65
  toggleDataLabel(changedLabel: string): void;
47
- setColorScale(): void;
66
+ protected setColorScale(): void;
48
67
  /**
49
68
  * Should the data point be filled?
50
- * @param datasetLabel
51
- * @param label
69
+ * @param group
70
+ * @param key
52
71
  * @param value
53
72
  * @param defaultFilled the default for this chart
54
73
  */
55
- getIsFilled(datasetLabel: any, label?: any, data?: any, defaultFilled?: boolean): any;
56
- getFillColor(datasetLabel: any, label?: any, data?: any): any;
57
- getStrokeColor(datasetLabel: any, label?: any, data?: any): any;
74
+ getIsFilled(group: any, key?: any, data?: any, defaultFilled?: boolean): any;
75
+ getFillColor(group: any, key?: any, data?: any): any;
76
+ getStrokeColor(group: any, key?: any, data?: any): any;
58
77
  getFillScale(): any;
59
- protected updateAllDataLabels(): void;
60
78
  }
package/model.js CHANGED
@@ -5,6 +5,8 @@ import * as colorPalettes from "./services/colorPalettes";
5
5
  import { Events } from "./interfaces";
6
6
  // D3
7
7
  import { scaleOrdinal } from "d3-scale";
8
+ import { map } from "d3-collection";
9
+ import { stack } from "d3-shape";
8
10
  /** The charting model layer which includes mainly the chart data and options,
9
11
  * as well as some misc. information to be shared among components */
10
12
  var ChartModel = /** @class */ (function () {
@@ -14,34 +16,61 @@ var ChartModel = /** @class */ (function () {
14
16
  options: {}
15
17
  };
16
18
  // Fill scales & fill related objects
17
- this.patternScale = {};
18
19
  this.colorScale = {};
19
20
  this.services = services;
20
21
  }
21
- ChartModel.prototype.sanitize = function (data) {
22
- // Sanitize all dates
23
- data.datasets.forEach(function (dataset) {
24
- dataset.data = dataset.data.map(function (d) {
25
- if (d.date && !d.date.getTime) {
26
- d.date = new Date(d.date);
22
+ /**
23
+ * Converts data provided in the older format to tabular
24
+ *
25
+ */
26
+ ChartModel.prototype.transformToTabularData = function (data) {
27
+ console.warn("We've updated the charting data format to be tabular by default. The current format you're using is deprecated and will be removed in v1.0, read more here https://carbon-design-system.github.io/carbon-charts/?path=/story/tutorials--tabular-data-format");
28
+ var tabularData = [];
29
+ var datasets = data.datasets, labels = data.labels;
30
+ // Loop through all datasets
31
+ datasets.forEach(function (dataset) {
32
+ var group = dataset.label;
33
+ // Update each data point to the new format
34
+ dataset.data.forEach(function (datum, i) {
35
+ var updatedDatum = {
36
+ group: group,
37
+ key: labels[i]
38
+ };
39
+ if (isNaN(datum)) {
40
+ updatedDatum["value"] = datum.value;
41
+ updatedDatum["date"] = datum.date;
27
42
  }
28
- return d;
43
+ else {
44
+ updatedDatum["value"] = datum;
45
+ }
46
+ tabularData.push(updatedDatum);
29
47
  });
30
48
  });
49
+ return tabularData;
50
+ };
51
+ ChartModel.prototype.getTabularData = function (data) {
52
+ // if data is not an array
53
+ if (!Array.isArray(data)) {
54
+ return this.transformToTabularData(data);
55
+ }
31
56
  return data;
32
57
  };
58
+ ChartModel.prototype.sanitize = function (data) {
59
+ return this.getTabularData(data);
60
+ };
33
61
  ChartModel.prototype.getDisplayData = function () {
34
- var ACTIVE = Configuration.legend.items.status.ACTIVE;
35
- var dataLabels = this.get("dataLabels");
36
62
  if (!this.get("data")) {
37
63
  return null;
38
64
  }
65
+ var ACTIVE = Configuration.legend.items.status.ACTIVE;
66
+ var dataGroups = this.getDataGroups();
39
67
  // Remove datasets that have been disabled
40
68
  var displayData = Tools.clone(this.get("data"));
41
- displayData.datasets = displayData.datasets.filter(function (dataset) {
42
- return dataLabels[dataset.label] === ACTIVE;
69
+ var groupMapsTo = this.getOptions().data.groupMapsTo;
70
+ return displayData.filter(function (datum) {
71
+ var group = dataGroups.find(function (group) { return group.name === datum[groupMapsTo]; });
72
+ return group.status === ACTIVE;
43
73
  });
44
- return displayData;
45
74
  };
46
75
  ChartModel.prototype.getData = function () {
47
76
  return this.get("data");
@@ -52,19 +81,115 @@ var ChartModel = /** @class */ (function () {
52
81
  */
53
82
  ChartModel.prototype.setData = function (newData) {
54
83
  var sanitizedData = this.sanitize(Tools.clone(newData));
55
- var dataLabels = this.generateDataLabels(sanitizedData);
84
+ var dataGroups = this.generateDataGroups(sanitizedData);
56
85
  this.set({
57
86
  data: sanitizedData,
58
- dataLabels: dataLabels
87
+ dataGroups: dataGroups
59
88
  });
60
89
  return sanitizedData;
61
90
  };
62
- ChartModel.prototype.generateDataLabels = function (newData) {
63
- var dataLabels = {};
64
- newData.datasets.forEach(function (dataset) {
65
- dataLabels[dataset.label] = Configuration.legend.items.status.ACTIVE;
91
+ /*
92
+ * Data groups
93
+ */
94
+ ChartModel.prototype.updateAllDataGroups = function () {
95
+ // allDataGroups is used to generate a color scale that applies
96
+ // to all the groups. Now when the data updates, you might remove a group,
97
+ // and then bring it back in a newer data update, therefore
98
+ // the order of the groups in allDataGroups matters so that you'd never
99
+ // have an incorrect color assigned to a group.
100
+ var _this = this;
101
+ // Also, a new group should only be added to allDataGroups if
102
+ // it doesn't currently exist
103
+ if (!this.allDataGroups) {
104
+ this.allDataGroups = this.getDataGroupNames();
105
+ }
106
+ else {
107
+ // Loop through current data groups
108
+ this.getDataGroupNames().forEach(function (dataGroupName) {
109
+ // If group name hasn't been stored yet, store it
110
+ if (_this.allDataGroups.indexOf(dataGroupName) === -1) {
111
+ _this.allDataGroups.push(dataGroupName);
112
+ }
113
+ });
114
+ }
115
+ };
116
+ ChartModel.prototype.generateDataGroups = function (data) {
117
+ var groupMapsTo = this.getOptions().data.groupMapsTo;
118
+ var ACTIVE = Configuration.legend.items.status.ACTIVE;
119
+ var uniqueDataGroups = map(data, function (datum) { return datum[groupMapsTo]; }).keys();
120
+ return uniqueDataGroups.map(function (groupName) { return ({
121
+ name: groupName,
122
+ status: ACTIVE
123
+ }); });
124
+ };
125
+ ChartModel.prototype.getDataGroups = function () {
126
+ return this.get("dataGroups");
127
+ };
128
+ ChartModel.prototype.getActiveDataGroups = function () {
129
+ var ACTIVE = Configuration.legend.items.status.ACTIVE;
130
+ return this.getDataGroups().filter(function (dataGroup) { return dataGroup.status === ACTIVE; });
131
+ };
132
+ ChartModel.prototype.getDataGroupNames = function () {
133
+ return this.getDataGroups().map(function (dataGroup) { return dataGroup.name; });
134
+ };
135
+ ChartModel.prototype.getActiveDataGroupNames = function () {
136
+ return this.getActiveDataGroups().map(function (dataGroup) { return dataGroup.name; });
137
+ };
138
+ ChartModel.prototype.getGroupedData = function () {
139
+ var displayData = this.getDisplayData();
140
+ var groupedData = {};
141
+ var groupMapsTo = this.getOptions().data.groupMapsTo;
142
+ displayData.map(function (datum) {
143
+ var group = datum[groupMapsTo];
144
+ if (groupedData[group] !== null && groupedData[group] !== undefined) {
145
+ groupedData[group].push(datum);
146
+ }
147
+ else {
148
+ groupedData[group] = [datum];
149
+ }
150
+ });
151
+ return Object.keys(groupedData)
152
+ .map(function (groupName) { return ({
153
+ name: groupName,
154
+ data: groupedData[groupName]
155
+ }); });
156
+ };
157
+ ChartModel.prototype.getDataValuesGroupedByKeys = function () {
158
+ var options = this.getOptions();
159
+ var groupMapsTo = options.data.groupMapsTo;
160
+ var displayData = this.getDisplayData();
161
+ var domainIdentifier = this.services.cartesianScales.getDomainIdentifier();
162
+ var rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();
163
+ var stackKeys = map(displayData, function (datum) { return datum[domainIdentifier]; }).keys();
164
+ var dataGroupNames = this.getDataGroupNames();
165
+ return stackKeys.map(function (key) {
166
+ var correspondingValues = { sharedStackKey: key };
167
+ dataGroupNames.forEach(function (dataGroupName) {
168
+ var correspondingDatum = displayData.find(function (datum) {
169
+ return datum[groupMapsTo] === dataGroupName &&
170
+ datum[domainIdentifier].toString() === key;
171
+ });
172
+ correspondingValues[dataGroupName] = correspondingDatum ? correspondingDatum[rangeIdentifier] : null;
173
+ });
174
+ return correspondingValues;
175
+ });
176
+ };
177
+ ChartModel.prototype.getStackedData = function () {
178
+ var options = this.getOptions();
179
+ var groupMapsTo = options.data.groupMapsTo;
180
+ var dataGroupNames = this.getDataGroupNames();
181
+ var dataValuesGroupedByKeys = this.getDataValuesGroupedByKeys();
182
+ return stack().keys(dataGroupNames)(dataValuesGroupedByKeys)
183
+ .map(function (series, i) {
184
+ // Add data group names to each series
185
+ return Object.keys(series)
186
+ .filter(function (key) { return !isNaN(key); })
187
+ .map(function (key) {
188
+ var element = series[key];
189
+ element[groupMapsTo] = dataGroupNames[i];
190
+ return element;
191
+ });
66
192
  });
67
- return dataLabels;
68
193
  };
69
194
  /**
70
195
  * @return {Object} The chart's options
@@ -105,9 +230,9 @@ var ChartModel = /** @class */ (function () {
105
230
  if (!this.getDisplayData()) {
106
231
  return;
107
232
  }
108
- this.updateAllDataLabels();
233
+ this.updateAllDataGroups();
109
234
  this.setColorScale();
110
- this.services.events.dispatchEvent("model-update");
235
+ this.services.events.dispatchEvent(Events.Model.UPDATE);
111
236
  };
112
237
  ChartModel.prototype.setUpdateCallback = function (cb) {
113
238
  this.updateCallback = cb;
@@ -117,116 +242,115 @@ var ChartModel = /** @class */ (function () {
117
242
  */
118
243
  ChartModel.prototype.toggleDataLabel = function (changedLabel) {
119
244
  var _a = Configuration.legend.items.status, ACTIVE = _a.ACTIVE, DISABLED = _a.DISABLED;
120
- var dataLabels = this.get("dataLabels");
121
- var hasDeactivatedItems = Object.keys(dataLabels).some(function (label) { return dataLabels[label] === DISABLED; });
122
- var activeItems = Object.keys(dataLabels).filter(function (label) { return dataLabels[label] === ACTIVE; });
245
+ var dataGroups = this.getDataGroups();
246
+ var hasDeactivatedItems = dataGroups.some(function (group) { return group.status === DISABLED; });
247
+ var activeItems = dataGroups.filter(function (group) { return group.status === ACTIVE; });
123
248
  // If there are deactivated items, toggle "changedLabel"
124
249
  if (hasDeactivatedItems) {
125
250
  // If the only active item is being toggled
126
251
  // Activate all items
127
- if (activeItems.length === 1 && activeItems[0] === changedLabel) {
252
+ if (activeItems.length === 1 && activeItems[0].name === changedLabel) {
128
253
  // If every item is active, then enable "changedLabel" and disable all other items
129
- Object.keys(dataLabels).forEach(function (label) {
130
- dataLabels[label] = ACTIVE;
254
+ dataGroups.forEach(function (group, i) {
255
+ dataGroups[i].status = ACTIVE;
131
256
  });
132
257
  }
133
258
  else {
134
- dataLabels[changedLabel] = dataLabels[changedLabel] === DISABLED ? ACTIVE : DISABLED;
259
+ var indexToChange = dataGroups.findIndex(function (group) { return group.name === changedLabel; });
260
+ dataGroups[indexToChange].status = dataGroups[indexToChange].status === DISABLED ? ACTIVE : DISABLED;
135
261
  }
136
262
  }
137
263
  else {
138
264
  // If every item is active, then enable "changedLabel" and disable all other items
139
- Object.keys(dataLabels).forEach(function (label) {
140
- dataLabels[label] = (label === changedLabel ? ACTIVE : DISABLED);
265
+ dataGroups.forEach(function (group, i) {
266
+ dataGroups[i].status = (group.name === changedLabel ? ACTIVE : DISABLED);
141
267
  });
142
268
  }
143
269
  // dispatch legend filtering event with the status of all the dataLabels
144
270
  this.services.events.dispatchEvent(Events.Legend.ITEMS_UPDATE, {
145
- dataLabels: dataLabels
271
+ dataGroups: dataGroups
146
272
  });
147
273
  // Update model
148
274
  this.set({
149
- dataLabels: dataLabels
275
+ dataGroups: dataGroups
150
276
  });
151
277
  };
152
278
  /*
153
279
  * Fill scales
154
280
  */
155
281
  ChartModel.prototype.setColorScale = function () {
156
- var _this = this;
157
- if (this.getDisplayData().datasets[0].fillColors) {
158
- this.getDisplayData().datasets.forEach(function (dataset) {
159
- _this.colorScale[dataset.label] = scaleOrdinal().range(dataset.fillColors).domain(_this.allDataLabels);
160
- });
161
- }
162
- else {
163
- var colors_1 = colorPalettes.DEFAULT;
164
- this.getData().datasets.forEach(function (dataset, i) {
165
- _this.colorScale[dataset.label] = scaleOrdinal().range([colors_1[i]]).domain(_this.allDataLabels);
166
- });
282
+ var defaultColors = colorPalettes.DEFAULT;
283
+ var options = this.getOptions();
284
+ var userProvidedScale = Tools.getProperty(options, "color", "scale");
285
+ // If there is no valid user provided scale, use the default set of colors
286
+ if (userProvidedScale === null || Object.keys(userProvidedScale).length === 0) {
287
+ this.colorScale = scaleOrdinal().range(defaultColors)
288
+ .domain(this.allDataGroups);
289
+ return;
167
290
  }
291
+ /**
292
+ * Go through allDataGroups. If a data group has a color value provided
293
+ * by the user, add that to the color range
294
+ * If not, add a default color
295
+ */
296
+ var colorRange = [];
297
+ var colorIndex = 0;
298
+ this.allDataGroups.forEach(function (dataGroup) {
299
+ if (userProvidedScale[dataGroup]) {
300
+ colorRange.push(userProvidedScale[dataGroup]);
301
+ }
302
+ else {
303
+ colorRange.push(defaultColors[colorIndex]);
304
+ }
305
+ if (colorIndex === defaultColors.length - 1) {
306
+ colorIndex = 0;
307
+ }
308
+ else {
309
+ colorIndex++;
310
+ }
311
+ });
312
+ this.colorScale = scaleOrdinal().range(colorRange)
313
+ .domain(this.allDataGroups);
168
314
  };
169
315
  /**
170
316
  * Should the data point be filled?
171
- * @param datasetLabel
172
- * @param label
317
+ * @param group
318
+ * @param key
173
319
  * @param value
174
320
  * @param defaultFilled the default for this chart
175
321
  */
176
- ChartModel.prototype.getIsFilled = function (datasetLabel, label, data, defaultFilled) {
322
+ ChartModel.prototype.getIsFilled = function (group, key, data, defaultFilled) {
177
323
  var options = this.getOptions();
178
324
  if (options.getIsFilled) {
179
- return options.getIsFilled(datasetLabel, label, data, defaultFilled);
325
+ return options.getIsFilled(group, key, data, defaultFilled);
180
326
  }
181
327
  else {
182
328
  return defaultFilled;
183
329
  }
184
330
  };
185
- ChartModel.prototype.getFillColor = function (datasetLabel, label, data) {
331
+ ChartModel.prototype.getFillColor = function (group, key, data) {
186
332
  var options = this.getOptions();
187
- var defaultFillColor = this.getFillScale()[datasetLabel](label);
333
+ var defaultFillColor = this.getFillScale()(group);
188
334
  if (options.getFillColor) {
189
- return options.getFillColor(datasetLabel, label, data, defaultFillColor);
335
+ return options.getFillColor(group, key, data, defaultFillColor);
190
336
  }
191
337
  else {
192
338
  return defaultFillColor;
193
339
  }
194
340
  };
195
- ChartModel.prototype.getStrokeColor = function (datasetLabel, label, data) {
341
+ ChartModel.prototype.getStrokeColor = function (group, key, data) {
196
342
  var options = this.getOptions();
197
- var defaultStrokeColor = this.colorScale[datasetLabel](label);
343
+ var defaultStrokeColor = this.colorScale(group);
198
344
  if (options.getStrokeColor) {
199
- return options.getStrokeColor(datasetLabel, label, data, defaultStrokeColor);
345
+ return options.getStrokeColor(group, key, data, defaultStrokeColor);
200
346
  }
201
347
  else {
202
348
  return defaultStrokeColor;
203
349
  }
204
350
  };
205
351
  ChartModel.prototype.getFillScale = function () {
206
- // Choose patternScale or colorScale based on the "accessibility" flag
207
- // return this.get("options").accessibility ? this.patternScale : this.colorScale;
208
352
  return this.colorScale;
209
353
  };
210
- /*
211
- * Data labels
212
- */
213
- ChartModel.prototype.updateAllDataLabels = function () {
214
- var _this = this;
215
- // If allDataLabels hasn't been initialized yet
216
- // Set it to the current set of chart labels
217
- if (!this.allDataLabels) {
218
- this.allDataLabels = this.getDisplayData().labels;
219
- }
220
- else {
221
- // Loop through current chart labels
222
- this.getDisplayData().labels.forEach(function (label) {
223
- // If label hasn't been stored yet, store it
224
- if (_this.allDataLabels.indexOf(label) === -1) {
225
- _this.allDataLabels.push(label);
226
- }
227
- });
228
- }
229
- };
230
354
  return ChartModel;
231
355
  }());
232
356
  export { ChartModel };