@carbon/charts 0.50.10 → 0.51.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.
- package/CHANGELOG.md +44 -0
- package/build/src/charts/alluvial.d.ts +2 -0
- package/build/src/charts/bullet.d.ts +2 -0
- package/build/src/charts/radar.d.ts +3 -1
- package/build/src/charts/tree.d.ts +2 -0
- package/build/src/charts/treemap.d.ts +2 -0
- package/build/src/charts/wordcloud.d.ts +2 -0
- package/build/src/components/axes/toolbar.d.ts +3 -0
- package/build/src/components/graphs/bullet.d.ts +0 -1
- package/build/src/model/alluvial.d.ts +8 -0
- package/build/src/model/boxplot.d.ts +1 -0
- package/build/src/model/bullet.d.ts +14 -0
- package/build/src/model/cartesian-charts.d.ts +0 -1
- package/build/src/model/circle-pack.d.ts +10 -0
- package/build/src/model/gauge.d.ts +4 -1
- package/build/src/model/meter.d.ts +1 -0
- package/build/src/model/model.d.ts +2 -0
- package/build/src/model/pie.d.ts +1 -0
- package/build/src/model/radar.d.ts +7 -0
- package/build/src/model/tree.d.ts +14 -0
- package/build/src/model/treemap.d.ts +8 -0
- package/build/src/model/wordcloud.d.ts +7 -0
- package/build/src/services/scales-cartesian.d.ts +1 -1
- package/bundle.js +1 -1
- package/chart.js +42 -20
- package/chart.js.map +1 -1
- package/charts/alluvial.d.ts +2 -0
- package/charts/alluvial.js +2 -0
- package/charts/alluvial.js.map +1 -1
- package/charts/bullet.d.ts +2 -0
- package/charts/bullet.js +2 -0
- package/charts/bullet.js.map +1 -1
- package/charts/radar.d.ts +3 -1
- package/charts/radar.js +3 -7
- package/charts/radar.js.map +1 -1
- package/charts/tree.d.ts +2 -0
- package/charts/tree.js +2 -0
- package/charts/tree.js.map +1 -1
- package/charts/treemap.d.ts +2 -0
- package/charts/treemap.js +2 -0
- package/charts/treemap.js.map +1 -1
- package/charts/wordcloud.d.ts +2 -0
- package/charts/wordcloud.js +3 -0
- package/charts/wordcloud.js.map +1 -1
- package/components/axes/axis.js +3 -2
- package/components/axes/axis.js.map +1 -1
- package/components/axes/toolbar.d.ts +3 -0
- package/components/axes/toolbar.js +75 -12
- package/components/axes/toolbar.js.map +1 -1
- package/components/essentials/legend.js +16 -2
- package/components/essentials/legend.js.map +1 -1
- package/components/essentials/modal.js.map +1 -1
- package/components/graphs/bullet.d.ts +0 -1
- package/components/graphs/bullet.js +1 -12
- package/components/graphs/bullet.js.map +1 -1
- package/model/alluvial.d.ts +8 -0
- package/model/alluvial.js +47 -0
- package/model/alluvial.js.map +1 -0
- package/model/boxplot.d.ts +1 -0
- package/model/boxplot.js +54 -0
- package/model/boxplot.js.map +1 -1
- package/model/bullet.d.ts +14 -0
- package/model/bullet.js +74 -0
- package/model/bullet.js.map +1 -0
- package/model/cartesian-charts.d.ts +0 -1
- package/model/cartesian-charts.js +0 -11
- package/model/cartesian-charts.js.map +1 -1
- package/model/circle-pack.d.ts +10 -0
- package/model/circle-pack.js +51 -0
- package/model/circle-pack.js.map +1 -1
- package/model/gauge.d.ts +4 -1
- package/model/gauge.js +24 -1
- package/model/gauge.js.map +1 -1
- package/model/meter.d.ts +1 -0
- package/model/meter.js +40 -0
- package/model/meter.js.map +1 -1
- package/model/model.d.ts +2 -0
- package/model/model.js +14 -0
- package/model/model.js.map +1 -1
- package/model/pie.d.ts +1 -0
- package/model/pie.js +21 -0
- package/model/pie.js.map +1 -1
- package/model/radar.d.ts +7 -0
- package/model/radar.js +52 -0
- package/model/radar.js.map +1 -0
- package/model/tree.d.ts +14 -0
- package/model/tree.js +56 -0
- package/model/tree.js.map +1 -0
- package/model/treemap.d.ts +8 -0
- package/model/treemap.js +37 -0
- package/model/treemap.js.map +1 -0
- package/model/wordcloud.d.ts +7 -0
- package/model/wordcloud.js +47 -0
- package/model/wordcloud.js.map +1 -0
- package/package.json +1 -1
- package/services/angle-utils.js +3 -1
- package/services/angle-utils.js.map +1 -1
- package/tsconfig.tsbuildinfo +145 -36
package/model/bullet.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
extendStatics(d, b);
|
|
10
|
+
function __() { this.constructor = d; }
|
|
11
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
|
+
};
|
|
13
|
+
})();
|
|
14
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
15
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
16
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
17
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
18
|
+
r[k] = a[j];
|
|
19
|
+
return r;
|
|
20
|
+
};
|
|
21
|
+
// Internal Imports
|
|
22
|
+
import { ChartModelCartesian } from './cartesian-charts';
|
|
23
|
+
import { Tools } from '../tools';
|
|
24
|
+
/**
|
|
25
|
+
* Bullet chart model layer
|
|
26
|
+
*/
|
|
27
|
+
var BulletChartModel = /** @class */ (function (_super) {
|
|
28
|
+
__extends(BulletChartModel, _super);
|
|
29
|
+
function BulletChartModel(services) {
|
|
30
|
+
return _super.call(this, services) || this;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Determines the index of the performance area titles to use
|
|
34
|
+
* @param datum
|
|
35
|
+
* @returns number
|
|
36
|
+
*/
|
|
37
|
+
BulletChartModel.prototype.getMatchingRangeIndexForDatapoint = function (datum) {
|
|
38
|
+
var matchingRangeIndex;
|
|
39
|
+
for (var i = datum.ranges.length - 1; i > 0; i--) {
|
|
40
|
+
var range = datum.ranges[i];
|
|
41
|
+
if (datum.value >= range) {
|
|
42
|
+
matchingRangeIndex = i;
|
|
43
|
+
return matchingRangeIndex;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return 0;
|
|
47
|
+
};
|
|
48
|
+
BulletChartModel.prototype.getTabularDataArray = function () {
|
|
49
|
+
var _this = this;
|
|
50
|
+
var displayData = this.getDisplayData();
|
|
51
|
+
var options = this.getOptions();
|
|
52
|
+
var groupMapsTo = options.data.groupMapsTo;
|
|
53
|
+
var rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();
|
|
54
|
+
var performanceAreaTitles = Tools.getProperty(options, 'bullet', 'performanceAreaTitles');
|
|
55
|
+
var result = __spreadArrays([
|
|
56
|
+
['Title', 'Group', 'Value', 'Target', 'Percentage', 'Performance']
|
|
57
|
+
], displayData.map(function (datum) { return [
|
|
58
|
+
datum['title'],
|
|
59
|
+
datum[groupMapsTo],
|
|
60
|
+
datum['value'] === null ? '–' : datum['value'],
|
|
61
|
+
Tools.getProperty(datum, 'marker') === null
|
|
62
|
+
? '–'
|
|
63
|
+
: datum['marker'],
|
|
64
|
+
Tools.getProperty(datum, 'marker') === null
|
|
65
|
+
? '–'
|
|
66
|
+
: Math.floor((datum[rangeIdentifier] / datum.marker) * 100) + "%",
|
|
67
|
+
performanceAreaTitles[_this.getMatchingRangeIndexForDatapoint(datum)],
|
|
68
|
+
]; }));
|
|
69
|
+
return result;
|
|
70
|
+
};
|
|
71
|
+
return BulletChartModel;
|
|
72
|
+
}(ChartModelCartesian));
|
|
73
|
+
export { BulletChartModel };
|
|
74
|
+
//# sourceMappingURL=../../src/model/bullet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bullet.js","sourceRoot":"","sources":["bullet.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC;;GAEG;AACH;IAAsC,oCAAmB;IACxD,0BAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,4DAAiC,GAAjC,UAAkC,KAAK;QACtC,IAAI,kBAAkB,CAAC;QACvB,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE;gBACzB,kBAAkB,GAAG,CAAC,CAAC;gBAEvB,OAAO,kBAAkB,CAAC;aAC1B;SACD;QAED,OAAO,CAAC,CAAC;IACV,CAAC;IAED,8CAAmB,GAAnB;QAAA,iBAiCC;QAhCA,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAA,sCAAW,CAAkB;QACrC,IAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAE3E,IAAM,qBAAqB,GAAG,KAAK,CAAC,WAAW,CAC9C,OAAO,EACP,QAAQ,EACR,uBAAuB,CACvB,CAAC;QAEF,IAAM,MAAM;YACX,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,CAAC;WAC/D,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA;YAC7B,KAAK,CAAC,OAAO,CAAC;YACd,KAAK,CAAC,WAAW,CAAC;YAClB,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YACpD,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI;gBAC1C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;YAClB,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI;gBAC1C,CAAC,CAAC,SAAS;gBACX,CAAC,CAAI,IAAI,CAAC,KAAK,CACb,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAC5C,MAAG;YACP,qBAAqB,CACpB,KAAI,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAC7C;SACD,EAf6B,CAe7B,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IACF,uBAAC;AAAD,CAAC,AA1DD,CAAsC,mBAAmB,GA0DxD","sourcesContent":["// Internal Imports\nimport { ChartModelCartesian } from './cartesian-charts';\nimport { Tools } from '../tools';\n\n/**\n * Bullet chart model layer\n */\nexport class BulletChartModel extends ChartModelCartesian {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t/**\n\t * Determines the index of the performance area titles to use\n\t * @param datum\n\t * @returns number\n\t */\n\tgetMatchingRangeIndexForDatapoint(datum) {\n\t\tlet matchingRangeIndex;\n\t\tfor (let i = datum.ranges.length - 1; i > 0; i--) {\n\t\t\tconst range = datum.ranges[i];\n\t\t\tif (datum.value >= range) {\n\t\t\t\tmatchingRangeIndex = i;\n\n\t\t\t\treturn matchingRangeIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tconst performanceAreaTitles = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'bullet',\n\t\t\t'performanceAreaTitles'\n\t\t);\n\n\t\tconst result = [\n\t\t\t['Title', 'Group', 'Value', 'Target', 'Percentage', 'Performance'],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum['title'],\n\t\t\t\tdatum[groupMapsTo],\n\t\t\t\tdatum['value'] === null ? '–' : datum['value'],\n\t\t\t\tTools.getProperty(datum, 'marker') === null\n\t\t\t\t\t? '–'\n\t\t\t\t\t: datum['marker'],\n\t\t\t\tTools.getProperty(datum, 'marker') === null\n\t\t\t\t\t? '–'\n\t\t\t\t\t: `${Math.floor(\n\t\t\t\t\t\t\t(datum[rangeIdentifier] / datum.marker) * 100\n\t\t\t\t\t )}%`,\n\t\t\t\tperformanceAreaTitles[\n\t\t\t\t\tthis.getMatchingRangeIndexForDatapoint(datum)\n\t\t\t\t],\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n}\n"]}
|
|
@@ -6,7 +6,6 @@ export declare class ChartModelCartesian extends ChartModel {
|
|
|
6
6
|
constructor(services: any);
|
|
7
7
|
private assignRangeAndDomains;
|
|
8
8
|
getTabularDataArray(): any[];
|
|
9
|
-
exportToCSV(): void;
|
|
10
9
|
setData(newData: any): any;
|
|
11
10
|
/**
|
|
12
11
|
* @param zoomBarData any special zoom bar data to use instead of the model data
|
|
@@ -108,17 +108,6 @@ var ChartModelCartesian = /** @class */ (function (_super) {
|
|
|
108
108
|
: [])); }));
|
|
109
109
|
return result;
|
|
110
110
|
};
|
|
111
|
-
ChartModelCartesian.prototype.exportToCSV = function () {
|
|
112
|
-
var data = this.getTabularDataArray().map(function (row) {
|
|
113
|
-
return row.map(function (column) { return "\"" + column + "\""; });
|
|
114
|
-
});
|
|
115
|
-
var csvString = '', csvData = '';
|
|
116
|
-
data.forEach(function (d, i) {
|
|
117
|
-
csvData = d.join(',');
|
|
118
|
-
csvString += i < data.length ? csvData + '\n' : csvData;
|
|
119
|
-
});
|
|
120
|
-
this.services.files.downloadCSV(csvString, 'myChart.csv');
|
|
121
|
-
};
|
|
122
111
|
ChartModelCartesian.prototype.setData = function (newData) {
|
|
123
112
|
var data;
|
|
124
113
|
if (newData) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cartesian-charts.js","sourceRoot":"","sources":["cartesian-charts.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\nimport { Tools } from '../tools';\nimport { ScaleTypes, AxisPositions } from '../interfaces';\n\n// date formatting\nimport { format } from 'date-fns';\n\n/**\n * This supports adding X and Y Cartesian[2D] zoom data to a ChartModel\n * */\nexport class ChartModelCartesian extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t// get the scales information\n\t// needed for getTabularArray()\n\tprivate assignRangeAndDomains() {\n\t\tconst { cartesianScales } = this.services;\n\t\tconst options = this.getOptions();\n\t\tconst isDualAxes = cartesianScales.isDualAxes();\n\n\t\tconst scales = {\n\t\t\tprimaryDomain: cartesianScales.domainAxisPosition,\n\t\t\tprimaryRange: cartesianScales.rangeAxisPosition,\n\t\t\tsecondaryDomain: null,\n\t\t\tsecondaryRange: null,\n\t\t};\n\t\tif (isDualAxes) {\n\t\t\tscales.secondaryDomain =\n\t\t\t\tcartesianScales.secondaryDomainAxisPosition;\n\t\t\tscales.secondaryRange = cartesianScales.secondaryRangeAxisPosition;\n\t\t}\n\n\t\tObject.keys(scales).forEach((scale) => {\n\t\t\tconst position = scales[scale];\n\t\t\tif (cartesianScales.scales[position]) {\n\t\t\t\tscales[scale] = {\n\t\t\t\t\tposition: position,\n\t\t\t\t\tlabel: cartesianScales.getScaleLabel(position),\n\t\t\t\t\tidentifier: Tools.getProperty(\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\t'axes',\n\t\t\t\t\t\tposition,\n\t\t\t\t\t\t'mapsTo'\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tscales[scale] = null;\n\t\t\t}\n\t\t});\n\n\t\treturn scales;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst {\n\t\t\tprimaryDomain,\n\t\t\tprimaryRange,\n\t\t\tsecondaryDomain,\n\t\t\tsecondaryRange,\n\t\t} = this.assignRangeAndDomains();\n\n\t\tconst domainScaleType = cartesianScales.getDomainAxisScaleType();\n\t\tlet domainValueFormatter;\n\t\tif (domainScaleType === ScaleTypes.TIME) {\n\t\t\tdomainValueFormatter = (d) => format(d, 'MMM d, yyyy');\n\t\t}\n\n\t\tconst result = [\n\t\t\t[\n\t\t\t\t'Group',\n\t\t\t\tprimaryDomain.label,\n\t\t\t\tprimaryRange.label,\n\t\t\t\t...(secondaryDomain ? [secondaryDomain.label] : []),\n\t\t\t\t...(secondaryRange ? [secondaryRange.label] : []),\n\t\t\t],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum[groupMapsTo],\n\t\t\t\tdatum[primaryDomain.identifier] === null\n\t\t\t\t\t? '–'\n\t\t\t\t\t: domainValueFormatter\n\t\t\t\t\t? domainValueFormatter(datum[primaryDomain.identifier])\n\t\t\t\t\t: datum[primaryDomain.identifier],\n\t\t\t\tdatum[primaryRange.identifier] === null ||\n\t\t\t\tisNaN(datum[primaryRange.identifier])\n\t\t\t\t\t? '–'\n\t\t\t\t\t: datum[primaryRange.identifier].toLocaleString(),\n\t\t\t\t...(secondaryDomain\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryDomain.identifier] === null\n\t\t\t\t\t\t\t\t? '–'\n\t\t\t\t\t\t\t\t: datum[secondaryDomain.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t\t...(secondaryRange\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryRange.identifier] === null ||\n\t\t\t\t\t\t\tisNaN(datum[secondaryRange.identifier])\n\t\t\t\t\t\t\t\t? '–'\n\t\t\t\t\t\t\t\t: datum[secondaryRange.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n\n\texportToCSV() {\n\t\tlet data = this.getTabularDataArray().map((row) =>\n\t\t\trow.map((column) => `\\\"${column}\\\"`)\n\t\t);\n\n\t\tlet csvString = '',\n\t\t\tcsvData = '';\n\t\tdata.forEach(function (d, i) {\n\t\t\tcsvData = d.join(',');\n\t\t\tcsvString += i < data.length ? csvData + '\\n' : csvData;\n\t\t});\n\n\t\tthis.services.files.downloadCSV(csvString, 'myChart.csv');\n\t}\n\n\tsetData(newData) {\n\t\tlet data;\n\t\tif (newData) {\n\t\t\tdata = super.setData(newData);\n\t\t\tif (\n\t\t\t\tTools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t'zoomBar',\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t'enabled'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// get pre-defined zoom bar data\n\t\t\t\tconst definedZoomBarData = Tools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t'zoomBar',\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t'data'\n\t\t\t\t);\n\t\t\t\t// if we have zoom bar data we need to update it as well\n\t\t\t\t// with pre-defined zoom bar data\n\t\t\t\tthis.setZoomBarData(definedZoomBarData);\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * @param zoomBarData any special zoom bar data to use instead of the model data\n\t */\n\tsetZoomBarData(newZoomBarData?) {\n\t\tconst sanitizedData = newZoomBarData\n\t\t\t? this.sanitize(Tools.clone(newZoomBarData))\n\t\t\t: this.getDisplayData(); // if we're not passed explicit zoom data use the model\n\n\t\tlet zoomBarNormalizedValues = sanitizedData;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tif (\n\t\t\tsanitizedData &&\n\t\t\tcartesianScales.domainAxisPosition &&\n\t\t\tcartesianScales.rangeAxisPosition\n\t\t) {\n\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t// get all dates (Number) in displayData\n\t\t\tlet allDates = sanitizedData.map((datum) =>\n\t\t\t\tdatum[domainIdentifier].getTime()\n\t\t\t);\n\t\t\tallDates = Tools.removeArrayDuplicates(allDates).sort();\n\n\t\t\t// Go through all date values\n\t\t\t// And get corresponding data from each dataset\n\t\t\tzoomBarNormalizedValues = allDates.map((date) => {\n\t\t\t\tlet sum = 0;\n\t\t\t\tconst datum = {};\n\n\t\t\t\tsanitizedData.forEach((data) => {\n\t\t\t\t\tif (data[domainIdentifier].getTime() === date) {\n\t\t\t\t\t\tsum += data[rangeIdentifier];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdatum[domainIdentifier] = new Date(date);\n\t\t\t\tdatum[rangeIdentifier] = sum;\n\n\t\t\t\treturn datum;\n\t\t\t});\n\t\t}\n\n\t\tthis.set({ zoomBarData: zoomBarNormalizedValues });\n\t}\n\n\tgetZoomBarData() {\n\t\treturn this.get('zoomBarData');\n\t}\n\n\tprotected sanitizeDateValues(data) {\n\t\tconst options = this.getOptions();\n\n\t\tif (!options.axes) {\n\t\t\treturn data;\n\t\t}\n\n\t\tconst keysToCheck = [];\n\t\tObject.keys(AxisPositions).forEach((axisPositionKey) => {\n\t\t\tconst axisPosition = AxisPositions[axisPositionKey];\n\t\t\tconst axisOptions = options.axes[axisPosition];\n\n\t\t\tif (axisOptions && axisOptions.scaleType === ScaleTypes.TIME) {\n\t\t\t\tconst axisMapsTo = axisOptions.mapsTo;\n\n\t\t\t\tif (axisMapsTo !== null || axisMapsTo !== undefined) {\n\t\t\t\t\tkeysToCheck.push(axisMapsTo);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (keysToCheck.length > 0) {\n\t\t\t// Check all datapoints and sanitize dates\n\t\t\tdata.forEach((datum) => {\n\t\t\t\tkeysToCheck.forEach((key) => {\n\t\t\t\t\tif (Tools.getProperty(datum, key, 'getTime') === null) {\n\t\t\t\t\t\tdatum[key] = new Date(datum[key]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprotected sanitize(data) {\n\t\tdata = super.sanitize(data);\n\t\tdata = this.sanitizeDateValues(data);\n\n\t\treturn data;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cartesian-charts.js","sourceRoot":"","sources":["cartesian-charts.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\nimport { Tools } from '../tools';\nimport { ScaleTypes, AxisPositions } from '../interfaces';\n\n// date formatting\nimport { format } from 'date-fns';\n\n/**\n * This supports adding X and Y Cartesian[2D] zoom data to a ChartModel\n * */\nexport class ChartModelCartesian extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\t// get the scales information\n\t// needed for getTabularArray()\n\tprivate assignRangeAndDomains() {\n\t\tconst { cartesianScales } = this.services;\n\t\tconst options = this.getOptions();\n\t\tconst isDualAxes = cartesianScales.isDualAxes();\n\n\t\tconst scales = {\n\t\t\tprimaryDomain: cartesianScales.domainAxisPosition,\n\t\t\tprimaryRange: cartesianScales.rangeAxisPosition,\n\t\t\tsecondaryDomain: null,\n\t\t\tsecondaryRange: null,\n\t\t};\n\t\tif (isDualAxes) {\n\t\t\tscales.secondaryDomain =\n\t\t\t\tcartesianScales.secondaryDomainAxisPosition;\n\t\t\tscales.secondaryRange = cartesianScales.secondaryRangeAxisPosition;\n\t\t}\n\n\t\tObject.keys(scales).forEach((scale) => {\n\t\t\tconst position = scales[scale];\n\t\t\tif (cartesianScales.scales[position]) {\n\t\t\t\tscales[scale] = {\n\t\t\t\t\tposition: position,\n\t\t\t\t\tlabel: cartesianScales.getScaleLabel(position),\n\t\t\t\t\tidentifier: Tools.getProperty(\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\t'axes',\n\t\t\t\t\t\tposition,\n\t\t\t\t\t\t'mapsTo'\n\t\t\t\t\t),\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tscales[scale] = null;\n\t\t\t}\n\t\t});\n\n\t\treturn scales;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst {\n\t\t\tprimaryDomain,\n\t\t\tprimaryRange,\n\t\t\tsecondaryDomain,\n\t\t\tsecondaryRange,\n\t\t} = this.assignRangeAndDomains();\n\n\t\tconst domainScaleType = cartesianScales.getDomainAxisScaleType();\n\t\tlet domainValueFormatter;\n\t\tif (domainScaleType === ScaleTypes.TIME) {\n\t\t\tdomainValueFormatter = (d) => format(d, 'MMM d, yyyy');\n\t\t}\n\n\t\tconst result = [\n\t\t\t[\n\t\t\t\t'Group',\n\t\t\t\tprimaryDomain.label,\n\t\t\t\tprimaryRange.label,\n\t\t\t\t...(secondaryDomain ? [secondaryDomain.label] : []),\n\t\t\t\t...(secondaryRange ? [secondaryRange.label] : []),\n\t\t\t],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum[groupMapsTo],\n\t\t\t\tdatum[primaryDomain.identifier] === null\n\t\t\t\t\t? '–'\n\t\t\t\t\t: domainValueFormatter\n\t\t\t\t\t? domainValueFormatter(datum[primaryDomain.identifier])\n\t\t\t\t\t: datum[primaryDomain.identifier],\n\t\t\t\tdatum[primaryRange.identifier] === null ||\n\t\t\t\tisNaN(datum[primaryRange.identifier])\n\t\t\t\t\t? '–'\n\t\t\t\t\t: datum[primaryRange.identifier].toLocaleString(),\n\t\t\t\t...(secondaryDomain\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryDomain.identifier] === null\n\t\t\t\t\t\t\t\t? '–'\n\t\t\t\t\t\t\t\t: datum[secondaryDomain.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t\t...(secondaryRange\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tdatum[secondaryRange.identifier] === null ||\n\t\t\t\t\t\t\tisNaN(datum[secondaryRange.identifier])\n\t\t\t\t\t\t\t\t? '–'\n\t\t\t\t\t\t\t\t: datum[secondaryRange.identifier],\n\t\t\t\t\t ]\n\t\t\t\t\t: []),\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n\n\tsetData(newData) {\n\t\tlet data;\n\t\tif (newData) {\n\t\t\tdata = super.setData(newData);\n\t\t\tif (\n\t\t\t\tTools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t'zoomBar',\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t'enabled'\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// get pre-defined zoom bar data\n\t\t\t\tconst definedZoomBarData = Tools.getProperty(\n\t\t\t\t\tthis.getOptions(),\n\t\t\t\t\t'zoomBar',\n\t\t\t\t\tAxisPositions.TOP,\n\t\t\t\t\t'data'\n\t\t\t\t);\n\t\t\t\t// if we have zoom bar data we need to update it as well\n\t\t\t\t// with pre-defined zoom bar data\n\t\t\t\tthis.setZoomBarData(definedZoomBarData);\n\t\t\t}\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * @param zoomBarData any special zoom bar data to use instead of the model data\n\t */\n\tsetZoomBarData(newZoomBarData?) {\n\t\tconst sanitizedData = newZoomBarData\n\t\t\t? this.sanitize(Tools.clone(newZoomBarData))\n\t\t\t: this.getDisplayData(); // if we're not passed explicit zoom data use the model\n\n\t\tlet zoomBarNormalizedValues = sanitizedData;\n\n\t\tconst { cartesianScales } = this.services;\n\t\tif (\n\t\t\tsanitizedData &&\n\t\t\tcartesianScales.domainAxisPosition &&\n\t\t\tcartesianScales.rangeAxisPosition\n\t\t) {\n\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t// get all dates (Number) in displayData\n\t\t\tlet allDates = sanitizedData.map((datum) =>\n\t\t\t\tdatum[domainIdentifier].getTime()\n\t\t\t);\n\t\t\tallDates = Tools.removeArrayDuplicates(allDates).sort();\n\n\t\t\t// Go through all date values\n\t\t\t// And get corresponding data from each dataset\n\t\t\tzoomBarNormalizedValues = allDates.map((date) => {\n\t\t\t\tlet sum = 0;\n\t\t\t\tconst datum = {};\n\n\t\t\t\tsanitizedData.forEach((data) => {\n\t\t\t\t\tif (data[domainIdentifier].getTime() === date) {\n\t\t\t\t\t\tsum += data[rangeIdentifier];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdatum[domainIdentifier] = new Date(date);\n\t\t\t\tdatum[rangeIdentifier] = sum;\n\n\t\t\t\treturn datum;\n\t\t\t});\n\t\t}\n\n\t\tthis.set({ zoomBarData: zoomBarNormalizedValues });\n\t}\n\n\tgetZoomBarData() {\n\t\treturn this.get('zoomBarData');\n\t}\n\n\tprotected sanitizeDateValues(data) {\n\t\tconst options = this.getOptions();\n\n\t\tif (!options.axes) {\n\t\t\treturn data;\n\t\t}\n\n\t\tconst keysToCheck = [];\n\t\tObject.keys(AxisPositions).forEach((axisPositionKey) => {\n\t\t\tconst axisPosition = AxisPositions[axisPositionKey];\n\t\t\tconst axisOptions = options.axes[axisPosition];\n\n\t\t\tif (axisOptions && axisOptions.scaleType === ScaleTypes.TIME) {\n\t\t\t\tconst axisMapsTo = axisOptions.mapsTo;\n\n\t\t\t\tif (axisMapsTo !== null || axisMapsTo !== undefined) {\n\t\t\t\t\tkeysToCheck.push(axisMapsTo);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (keysToCheck.length > 0) {\n\t\t\t// Check all datapoints and sanitize dates\n\t\t\tdata.forEach((datum) => {\n\t\t\t\tkeysToCheck.forEach((key) => {\n\t\t\t\t\tif (Tools.getProperty(datum, key, 'getTime') === null) {\n\t\t\t\t\t\tdatum[key] = new Date(datum[key]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn data;\n\t}\n\n\tprotected sanitize(data) {\n\t\tdata = super.sanitize(data);\n\t\tdata = this.sanitizeDateValues(data);\n\n\t\treturn data;\n\t}\n}\n"]}
|
package/model/circle-pack.d.ts
CHANGED
|
@@ -23,4 +23,14 @@ export declare class CirclePackChartModel extends ChartModel {
|
|
|
23
23
|
hasParentNode(): boolean;
|
|
24
24
|
setDataGroups(): void;
|
|
25
25
|
protected setChildrenDataGroup(node: any, name: any): any;
|
|
26
|
+
getTabularDataArray(): string[][];
|
|
27
|
+
/**
|
|
28
|
+
* Recursively determine the relationship between all the nested elements in the child
|
|
29
|
+
* @param children: Object
|
|
30
|
+
* @param parent: String
|
|
31
|
+
* @param result: Array<Object>
|
|
32
|
+
* @param totalSum: number
|
|
33
|
+
* @returns: number
|
|
34
|
+
*/
|
|
35
|
+
private getChildrenDatums;
|
|
26
36
|
}
|
package/model/circle-pack.js
CHANGED
|
@@ -132,6 +132,57 @@ var CirclePackChartModel = /** @class */ (function (_super) {
|
|
|
132
132
|
return __assign(__assign({}, node), { dataGroupName: name });
|
|
133
133
|
}
|
|
134
134
|
};
|
|
135
|
+
CirclePackChartModel.prototype.getTabularDataArray = function () {
|
|
136
|
+
var _this = this;
|
|
137
|
+
var displayData = this.getDisplayData();
|
|
138
|
+
var result = [['Child', 'Parent', 'Value']];
|
|
139
|
+
displayData.forEach(function (datum) {
|
|
140
|
+
var value = datum.value ? datum.value : 0;
|
|
141
|
+
if (datum.children) {
|
|
142
|
+
// Call recursive function
|
|
143
|
+
value += _this.getChildrenDatums(datum.children, datum.name, result, 0);
|
|
144
|
+
}
|
|
145
|
+
result.push(['–', datum.name, value]);
|
|
146
|
+
});
|
|
147
|
+
return result;
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* Recursively determine the relationship between all the nested elements in the child
|
|
151
|
+
* @param children: Object
|
|
152
|
+
* @param parent: String
|
|
153
|
+
* @param result: Array<Object>
|
|
154
|
+
* @param totalSum: number
|
|
155
|
+
* @returns: number
|
|
156
|
+
*/
|
|
157
|
+
CirclePackChartModel.prototype.getChildrenDatums = function (children, parent, result, totalSum) {
|
|
158
|
+
var _this = this;
|
|
159
|
+
if (result === void 0) { result = []; }
|
|
160
|
+
if (totalSum === void 0) { totalSum = 0; }
|
|
161
|
+
var grandParent = parent;
|
|
162
|
+
children.forEach(function (child) {
|
|
163
|
+
var parent = child.name;
|
|
164
|
+
var sum = 0;
|
|
165
|
+
if (child.children) {
|
|
166
|
+
if (child.children.length > 0) {
|
|
167
|
+
if (typeof child.value === 'number') {
|
|
168
|
+
totalSum += child.value;
|
|
169
|
+
}
|
|
170
|
+
sum += _this.getChildrenDatums(child.children, parent, result, sum);
|
|
171
|
+
result.push([parent, grandParent, sum]);
|
|
172
|
+
totalSum += sum;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
var value = 0;
|
|
177
|
+
if (typeof child.value === 'number') {
|
|
178
|
+
value = child.value;
|
|
179
|
+
totalSum += child.value;
|
|
180
|
+
}
|
|
181
|
+
result.push([child.name, grandParent, value]);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
return totalSum;
|
|
185
|
+
};
|
|
135
186
|
return CirclePackChartModel;
|
|
136
187
|
}(ChartModel));
|
|
137
188
|
export { CirclePackChartModel };
|
package/model/circle-pack.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circle-pack.js","sourceRoot":"","sources":["circle-pack.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\nimport { Tools } from '../tools';\nimport { LegendItemType } from '../interfaces/enums';\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 CirclePackChartModel extends ChartModel {\n\tparentNode = false;\n\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t\tthis.set({ depth: 2 }, { skipUpdate: true });\n\t}\n\n\tsetData(newData) {\n\t\tsuper.setData(newData);\n\t\tthis.setDataGroups();\n\t\tif (newData.length === 1) {\n\t\t\tthis.parentNode = true;\n\t\t}\n\t\tthis.setZoom();\n\t}\n\n\tsetOptions(newOptions) {\n\t\tconst options = this.getOptions();\n\t\tconst zoomOptions = Tools.merge(\n\t\t\t{},\n\t\t\tnewOptions,\n\t\t\tthis.getZoomOptions(newOptions)\n\t\t);\n\t\tTools.updateLegendAdditionalItems(options, zoomOptions);\n\n\t\tlet depth = this.getHierarchyLevel();\n\t\tlet userProvidedDepth = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'circlePack',\n\t\t\t'hierarchyLevel'\n\t\t);\n\n\t\tthis.set({\n\t\t\toptions: Tools.merge(options, zoomOptions),\n\t\t\tdepth:\n\t\t\t\tuserProvidedDepth && userProvidedDepth < 4\n\t\t\t\t\t? userProvidedDepth\n\t\t\t\t\t: depth,\n\t\t});\n\t}\n\n\tgetZoomOptions(options?) {\n\t\tif (!this.getDisplayData()) {\n\t\t\treturn {};\n\t\t}\n\t\t// uses the user provided options and data to determine if there is zoom in this CP chart\n\t\tconst displayData = this.getDisplayData();\n\t\tconst zoomOptions = options ? options : this.getOptions();\n\t\tconst data =\n\t\t\tdisplayData.length === 1 &&\n\t\t\tTools.getProperty(displayData, 0, 'children')\n\t\t\t\t? Tools.getProperty(displayData, 0, 'children')\n\t\t\t\t: displayData;\n\n\t\tlet depth = this.getHierarchyLevel();\n\t\t// check the data depth\n\t\tdata.some((datum) => {\n\t\t\tif (datum.children) {\n\t\t\t\tif (datum.children.some((item) => item.children)) {\n\t\t\t\t\tdepth = 3;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tTools.getProperty(zoomOptions, 'canvasZoom', 'enabled') === true &&\n\t\t\tdepth > 2\n\t\t) {\n\t\t\treturn {\n\t\t\t\tlegend: {\n\t\t\t\t\tadditionalItems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: LegendItemType.ZOOM,\n\t\t\t\t\t\t\tname: 'Click to zoom',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t}\n\n\tsetZoom(options?) {\n\t\tthis.setOptions(this.getZoomOptions(options));\n\t}\n\n\t// update the hierarchy level\n\tupdateHierarchyLevel(depth: number) {\n\t\tthis.set({ depth: depth });\n\t}\n\n\tgetHierarchyLevel() {\n\t\treturn this.get('depth');\n\t}\n\n\thasParentNode() {\n\t\treturn this.parentNode;\n\t}\n\n\t// set the datagroup name on the items that are it's children\n\tsetDataGroups() {\n\t\tconst data = this.getData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst newData = data.map((depthOne) => {\n\t\t\tconst groupName = depthOne[groupMapsTo];\n\t\t\treturn this.setChildrenDataGroup(depthOne, groupName);\n\t\t});\n\n\t\tthis.set(\n\t\t\t{\n\t\t\t\tdata: newData,\n\t\t\t},\n\t\t\t{ skipUpdate: true }\n\t\t);\n\t}\n\n\t// sets name recursively down the node tree\n\tprotected setChildrenDataGroup(node, name) {\n\t\tif (node.children) {\n\t\t\treturn {\n\t\t\t\t...node,\n\t\t\t\tdataGroupName: name,\n\t\t\t\tchildren: node.children.map((child, i) => {\n\t\t\t\t\treturn this.setChildrenDataGroup(child, name);\n\t\t\t\t}),\n\t\t\t};\n\t\t} else {\n\t\t\treturn { ...node, dataGroupName: name };\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"circle-pack.js","sourceRoot":"","sources":["circle-pack.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\nimport { Tools } from '../tools';\nimport { LegendItemType } from '../interfaces/enums';\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 CirclePackChartModel extends ChartModel {\n\tparentNode = false;\n\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t\tthis.set({ depth: 2 }, { skipUpdate: true });\n\t}\n\n\tsetData(newData) {\n\t\tsuper.setData(newData);\n\t\tthis.setDataGroups();\n\t\tif (newData.length === 1) {\n\t\t\tthis.parentNode = true;\n\t\t}\n\t\tthis.setZoom();\n\t}\n\n\tsetOptions(newOptions) {\n\t\tconst options = this.getOptions();\n\t\tconst zoomOptions = Tools.merge(\n\t\t\t{},\n\t\t\tnewOptions,\n\t\t\tthis.getZoomOptions(newOptions)\n\t\t);\n\t\tTools.updateLegendAdditionalItems(options, zoomOptions);\n\n\t\tlet depth = this.getHierarchyLevel();\n\t\tlet userProvidedDepth = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'circlePack',\n\t\t\t'hierarchyLevel'\n\t\t);\n\n\t\tthis.set({\n\t\t\toptions: Tools.merge(options, zoomOptions),\n\t\t\tdepth:\n\t\t\t\tuserProvidedDepth && userProvidedDepth < 4\n\t\t\t\t\t? userProvidedDepth\n\t\t\t\t\t: depth,\n\t\t});\n\t}\n\n\tgetZoomOptions(options?) {\n\t\tif (!this.getDisplayData()) {\n\t\t\treturn {};\n\t\t}\n\t\t// uses the user provided options and data to determine if there is zoom in this CP chart\n\t\tconst displayData = this.getDisplayData();\n\t\tconst zoomOptions = options ? options : this.getOptions();\n\t\tconst data =\n\t\t\tdisplayData.length === 1 &&\n\t\t\tTools.getProperty(displayData, 0, 'children')\n\t\t\t\t? Tools.getProperty(displayData, 0, 'children')\n\t\t\t\t: displayData;\n\n\t\tlet depth = this.getHierarchyLevel();\n\t\t// check the data depth\n\t\tdata.some((datum) => {\n\t\t\tif (datum.children) {\n\t\t\t\tif (datum.children.some((item) => item.children)) {\n\t\t\t\t\tdepth = 3;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif (\n\t\t\tTools.getProperty(zoomOptions, 'canvasZoom', 'enabled') === true &&\n\t\t\tdepth > 2\n\t\t) {\n\t\t\treturn {\n\t\t\t\tlegend: {\n\t\t\t\t\tadditionalItems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: LegendItemType.ZOOM,\n\t\t\t\t\t\t\tname: 'Click to zoom',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t}\n\n\tsetZoom(options?) {\n\t\tthis.setOptions(this.getZoomOptions(options));\n\t}\n\n\t// update the hierarchy level\n\tupdateHierarchyLevel(depth: number) {\n\t\tthis.set({ depth: depth });\n\t}\n\n\tgetHierarchyLevel() {\n\t\treturn this.get('depth');\n\t}\n\n\thasParentNode() {\n\t\treturn this.parentNode;\n\t}\n\n\t// set the datagroup name on the items that are it's children\n\tsetDataGroups() {\n\t\tconst data = this.getData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst newData = data.map((depthOne) => {\n\t\t\tconst groupName = depthOne[groupMapsTo];\n\t\t\treturn this.setChildrenDataGroup(depthOne, groupName);\n\t\t});\n\n\t\tthis.set(\n\t\t\t{\n\t\t\t\tdata: newData,\n\t\t\t},\n\t\t\t{ skipUpdate: true }\n\t\t);\n\t}\n\n\t// sets name recursively down the node tree\n\tprotected setChildrenDataGroup(node, name) {\n\t\tif (node.children) {\n\t\t\treturn {\n\t\t\t\t...node,\n\t\t\t\tdataGroupName: name,\n\t\t\t\tchildren: node.children.map((child, i) => {\n\t\t\t\t\treturn this.setChildrenDataGroup(child, name);\n\t\t\t\t}),\n\t\t\t};\n\t\t} else {\n\t\t\treturn { ...node, dataGroupName: name };\n\t\t}\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\n\t\tconst result = [['Child', 'Parent', 'Value']];\n\n\t\tdisplayData.forEach((datum) => {\n\t\t\tlet value = datum.value ? datum.value : 0;\n\t\t\tif (datum.children) {\n\t\t\t\t// Call recursive function\n\t\t\t\tvalue += this.getChildrenDatums(\n\t\t\t\t\tdatum.children,\n\t\t\t\t\tdatum.name,\n\t\t\t\t\tresult,\n\t\t\t\t\t0\n\t\t\t\t);\n\t\t\t}\n\t\t\tresult.push(['–', datum.name, value]);\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Recursively determine the relationship between all the nested elements in the child\n\t * @param children: Object\n\t * @param parent: String\n\t * @param result: Array<Object>\n\t * @param totalSum: number\n\t * @returns: number\n\t */\n\tprivate getChildrenDatums(children, parent, result = [], totalSum = 0) {\n\t\tconst grandParent = parent;\n\n\t\tchildren.forEach((child) => {\n\t\t\tconst parent = child.name;\n\t\t\tlet sum = 0;\n\n\t\t\tif (child.children) {\n\t\t\t\tif (child.children.length > 0) {\n\t\t\t\t\tif (typeof child.value === 'number') {\n\t\t\t\t\t\ttotalSum += child.value;\n\t\t\t\t\t}\n\n\t\t\t\t\tsum += this.getChildrenDatums(\n\t\t\t\t\t\tchild.children,\n\t\t\t\t\t\tparent,\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\tsum\n\t\t\t\t\t);\n\t\t\t\t\tresult.push([parent, grandParent, sum]);\n\t\t\t\t\ttotalSum += sum;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlet value = 0;\n\t\t\t\tif (typeof child.value === 'number') {\n\t\t\t\t\tvalue = child.value;\n\t\t\t\t\ttotalSum += child.value;\n\t\t\t\t}\n\t\t\t\tresult.push([child.name, grandParent, value]);\n\t\t\t}\n\t\t});\n\n\t\treturn totalSum;\n\t}\n}\n"]}
|
package/model/gauge.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ChartModel } from './model';
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* The gauge chart model layer
|
|
4
|
+
*/
|
|
3
5
|
export declare class GaugeChartModel extends ChartModel {
|
|
4
6
|
constructor(services: any);
|
|
5
7
|
getDataGroups(): any;
|
|
8
|
+
getTabularDataArray(): any[];
|
|
6
9
|
}
|
package/model/gauge.js
CHANGED
|
@@ -11,9 +11,18 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
11
11
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
12
|
};
|
|
13
13
|
})();
|
|
14
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
15
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
16
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
17
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
18
|
+
r[k] = a[j];
|
|
19
|
+
return r;
|
|
20
|
+
};
|
|
14
21
|
// Internal Imports
|
|
15
22
|
import { ChartModel } from './model';
|
|
16
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* The gauge chart model layer
|
|
25
|
+
*/
|
|
17
26
|
var GaugeChartModel = /** @class */ (function (_super) {
|
|
18
27
|
__extends(GaugeChartModel, _super);
|
|
19
28
|
function GaugeChartModel(services) {
|
|
@@ -22,6 +31,20 @@ var GaugeChartModel = /** @class */ (function (_super) {
|
|
|
22
31
|
GaugeChartModel.prototype.getDataGroups = function () {
|
|
23
32
|
return _super.prototype.getDataGroups.call(this).filter(function (item) { return item.name !== 'delta'; });
|
|
24
33
|
};
|
|
34
|
+
GaugeChartModel.prototype.getTabularDataArray = function () {
|
|
35
|
+
var displayData = this.getDisplayData();
|
|
36
|
+
var options = this.getOptions();
|
|
37
|
+
var groupMapsTo = options.data.groupMapsTo;
|
|
38
|
+
var result = __spreadArrays([
|
|
39
|
+
['Group', 'Value']
|
|
40
|
+
], displayData.map(function (datum) { return [
|
|
41
|
+
datum[groupMapsTo],
|
|
42
|
+
datum['value'] === null
|
|
43
|
+
? '–'
|
|
44
|
+
: datum['value'].toLocaleString(),
|
|
45
|
+
]; }));
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
25
48
|
return GaugeChartModel;
|
|
26
49
|
}(ChartModel));
|
|
27
50
|
export { GaugeChartModel };
|
package/model/gauge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gauge.js","sourceRoot":"","sources":["gauge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gauge.js","sourceRoot":"","sources":["gauge.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH;IAAqC,mCAAU;IAC9C,yBAAY,QAAa;eACxB,kBAAM,QAAQ,CAAC;IAChB,CAAC;IAED,uCAAa,GAAb;QACC,OAAO,iBAAM,aAAa,WAAE,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,IAAI,KAAK,OAAO,EAArB,CAAqB,CAAC,CAAC;IACtE,CAAC;IAED,6CAAmB,GAAnB;QACC,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAA,sCAAW,CAAkB;QAErC,IAAM,MAAM;YACX,CAAC,OAAO,EAAE,OAAO,CAAC;WACf,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA;YAC7B,KAAK,CAAC,WAAW,CAAC;YAClB,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI;gBACtB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE;SAClC,EAL6B,CAK7B,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC;IACf,CAAC;IACF,sBAAC;AAAD,CAAC,AA1BD,CAAqC,UAAU,GA0B9C","sourcesContent":["// Internal Imports\nimport { ChartModel } from './model';\n\n/**\n * The gauge chart model layer\n */\nexport class GaugeChartModel extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetDataGroups() {\n\t\treturn super.getDataGroups().filter((item) => item.name !== 'delta');\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst result = [\n\t\t\t['Group', 'Value'],\n\t\t\t...displayData.map((datum) => [\n\t\t\t\tdatum[groupMapsTo],\n\t\t\t\tdatum['value'] === null\n\t\t\t\t\t? '–'\n\t\t\t\t\t: datum['value'].toLocaleString(),\n\t\t\t]),\n\t\t];\n\n\t\treturn result;\n\t}\n}\n"]}
|
package/model/meter.d.ts
CHANGED
package/model/meter.js
CHANGED
|
@@ -11,6 +11,13 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
11
11
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
12
|
};
|
|
13
13
|
})();
|
|
14
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
15
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
16
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
17
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
18
|
+
r[k] = a[j];
|
|
19
|
+
return r;
|
|
20
|
+
};
|
|
14
21
|
import { ChartModel } from './model';
|
|
15
22
|
import { Tools } from '../tools';
|
|
16
23
|
/** The meter chart model layer which extends some of the data setting options.
|
|
@@ -63,6 +70,39 @@ var MeterChartModel = /** @class */ (function (_super) {
|
|
|
63
70
|
}
|
|
64
71
|
return null;
|
|
65
72
|
};
|
|
73
|
+
MeterChartModel.prototype.getTabularDataArray = function () {
|
|
74
|
+
var displayData = this.getDisplayData();
|
|
75
|
+
var options = this.getOptions();
|
|
76
|
+
var groupMapsTo = options.data.groupMapsTo;
|
|
77
|
+
var status = this.getStatus();
|
|
78
|
+
var proportional = Tools.getProperty(options, 'meter', 'proportional');
|
|
79
|
+
var result = [];
|
|
80
|
+
var domainMax;
|
|
81
|
+
// Display the appropriate columns and fields depending on the type of meter
|
|
82
|
+
if (proportional === null) {
|
|
83
|
+
domainMax = 100;
|
|
84
|
+
var datum = displayData[0];
|
|
85
|
+
result = [
|
|
86
|
+
__spreadArrays(['Group', 'Value'], (status ? ['Status'] : [])),
|
|
87
|
+
__spreadArrays([
|
|
88
|
+
datum[groupMapsTo],
|
|
89
|
+
datum['value']
|
|
90
|
+
], (status ? [status] : [])),
|
|
91
|
+
];
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
var total = Tools.getProperty(proportional, 'total');
|
|
95
|
+
domainMax = total ? total : this.getMaximumDomain(displayData);
|
|
96
|
+
result = __spreadArrays([
|
|
97
|
+
['Group', 'Value', 'Percentage of total']
|
|
98
|
+
], displayData.map(function (datum) { return [
|
|
99
|
+
datum[groupMapsTo],
|
|
100
|
+
datum['value'],
|
|
101
|
+
((datum['value'] / domainMax) * 100).toFixed(2) + ' %',
|
|
102
|
+
]; }));
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
};
|
|
66
106
|
return MeterChartModel;
|
|
67
107
|
}(ChartModel));
|
|
68
108
|
export { MeterChartModel };
|
package/model/meter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meter.js","sourceRoot":"","sources":["meter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meter.js","sourceRoot":"","sources":["meter.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport * as Configuration from '../configuration';\nimport { ChartModel } from './model';\nimport { Tools } from '../tools';\n\n/** The meter chart model layer which extends some of the data setting options.\n * Meter only uses 1 dataset\n * */\n\nexport class MeterChartModel extends ChartModel {\n\tconstructor(services: any) {\n\t\tsuper(services);\n\t}\n\n\tgetMaximumDomain(data) {\n\t\tconst max = data.reduce(\n\t\t\t(accumulator, datum) => accumulator + datum.value,\n\t\t\t0\n\t\t);\n\t\treturn max;\n\t}\n\n\t/**\n\t * Use a provided color for the bar or default to carbon color if no status provided.\n\t * Defaults to carbon color otherwise.\n\t * @param group dataset group label\n\t */\n\tgetFillColor(group: string) {\n\t\tconst options = this.getOptions();\n\t\tconst userProvidedScale = Tools.getProperty(options, 'color', 'scale');\n\t\tconst status = this.getStatus();\n\t\t// user provided a fill color or there isn't a status we can use the colorScale\n\t\tif (userProvidedScale || !status) {\n\t\t\treturn super.getFillColor(group);\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Get the associated status for the data by checking the ranges\n\t */\n\tgetStatus() {\n\t\tconst options = this.getOptions();\n\t\tconst dataValue = Tools.getProperty(this.getDisplayData(), 0, 'value');\n\n\t\t// use max value if the percentage is bigger than 100%\n\t\tconst boundedValue = dataValue > 100 ? 100 : dataValue;\n\n\t\t// user needs to supply ranges\n\t\tconst allRanges = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'status',\n\t\t\t'ranges'\n\t\t);\n\n\t\tif (allRanges) {\n\t\t\tconst result = allRanges.filter(\n\t\t\t\t(step) =>\n\t\t\t\t\tstep.range[0] <= boundedValue &&\n\t\t\t\t\tboundedValue <= step.range[1]\n\t\t\t);\n\t\t\tif (result.length > 0) {\n\t\t\t\treturn result[0].status;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tgetTabularDataArray() {\n\t\tconst displayData = this.getDisplayData();\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\t\tconst status = this.getStatus();\n\t\tconst proportional = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'meter',\n\t\t\t'proportional'\n\t\t);\n\n\t\tlet result = [];\n\t\tlet domainMax;\n\t\t// Display the appropriate columns and fields depending on the type of meter\n\t\tif (proportional === null) {\n\t\t\tdomainMax = 100;\n\t\t\tconst datum = displayData[0];\n\n\t\t\tresult = [\n\t\t\t\t['Group', 'Value', ...(status ? ['Status'] : [])],\n\t\t\t\t[\n\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\tdatum['value'],\n\t\t\t\t\t...(status ? [status] : []),\n\t\t\t\t],\n\t\t\t];\n\t\t} else {\n\t\t\tconst total = Tools.getProperty(proportional, 'total');\n\t\t\tdomainMax = total ? total : this.getMaximumDomain(displayData);\n\n\t\t\tresult = [\n\t\t\t\t['Group', 'Value', 'Percentage of total'],\n\t\t\t\t...displayData.map((datum) => [\n\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\tdatum['value'],\n\t\t\t\t\t((datum['value'] / domainMax) * 100).toFixed(2) + ' %',\n\t\t\t\t]),\n\t\t\t];\n\t\t}\n\n\t\treturn result;\n\t}\n}\n"]}
|
package/model/model.d.ts
CHANGED
|
@@ -96,6 +96,8 @@ export declare class ChartModel {
|
|
|
96
96
|
*
|
|
97
97
|
*/
|
|
98
98
|
protected transformToTabularData(data: any): any[];
|
|
99
|
+
getTabularDataArray(): any[];
|
|
100
|
+
exportToCSV(): void;
|
|
99
101
|
protected getTabularData(data: any): any[];
|
|
100
102
|
protected sanitize(data: any): any;
|
|
101
103
|
protected updateAllDataGroups(): void;
|
package/model/model.js
CHANGED
|
@@ -565,6 +565,20 @@ var ChartModel = /** @class */ (function () {
|
|
|
565
565
|
});
|
|
566
566
|
return tabularData;
|
|
567
567
|
};
|
|
568
|
+
ChartModel.prototype.getTabularDataArray = function () {
|
|
569
|
+
return [];
|
|
570
|
+
};
|
|
571
|
+
ChartModel.prototype.exportToCSV = function () {
|
|
572
|
+
var data = this.getTabularDataArray().map(function (row) {
|
|
573
|
+
return row.map(function (column) { return "\"" + column + "\""; });
|
|
574
|
+
});
|
|
575
|
+
var csvString = '', csvData = '';
|
|
576
|
+
data.forEach(function (d, i) {
|
|
577
|
+
csvData = d.join(',');
|
|
578
|
+
csvString += i < data.length ? csvData + '\n' : csvData;
|
|
579
|
+
});
|
|
580
|
+
this.services.files.downloadCSV(csvString, 'myChart.csv');
|
|
581
|
+
};
|
|
568
582
|
ChartModel.prototype.getTabularData = function (data) {
|
|
569
583
|
// if data is not an array
|
|
570
584
|
if (!Array.isArray(data)) {
|