@fluentui/react-charting 5.23.22 → 5.23.24
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.json +73 -1
- package/CHANGELOG.md +27 -2
- package/dist/react-charting.d.ts +40 -5
- package/dist/react-charting.js +1 -1
- package/dist/react-charting.min.js +1 -1
- package/etc/react-charting.api.md +2 -0
- package/lib/components/DeclarativeChart/DeclarativeChart.d.ts +1 -0
- package/lib/components/DeclarativeChart/DeclarativeChart.js +17 -10
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +9 -9
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +31 -27
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/Legends/Legends.base.d.ts +14 -8
- package/lib/components/Legends/Legends.base.js +53 -34
- package/lib/components/Legends/Legends.base.js.map +1 -1
- package/lib/components/Legends/Legends.types.d.ts +40 -5
- package/lib/components/Legends/Legends.types.js.map +1 -1
- package/lib/components/LineChart/LineChart.base.js +2 -2
- package/lib/components/LineChart/LineChart.base.js.map +1 -1
- package/lib-amd/components/DeclarativeChart/DeclarativeChart.d.ts +1 -0
- package/lib-amd/components/DeclarativeChart/DeclarativeChart.js +19 -12
- package/lib-amd/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +9 -9
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js +31 -27
- package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-amd/components/Legends/Legends.base.d.ts +14 -8
- package/lib-amd/components/Legends/Legends.base.js +53 -34
- package/lib-amd/components/Legends/Legends.base.js.map +1 -1
- package/lib-amd/components/Legends/Legends.types.d.ts +40 -5
- package/lib-amd/components/Legends/Legends.types.js.map +1 -1
- package/lib-amd/components/LineChart/LineChart.base.js +2 -2
- package/lib-amd/components/LineChart/LineChart.base.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.d.ts +1 -0
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +19 -11
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.d.ts +9 -9
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +31 -27
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.base.d.ts +14 -8
- package/lib-commonjs/components/Legends/Legends.base.js +53 -34
- package/lib-commonjs/components/Legends/Legends.base.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.types.d.ts +40 -5
- package/lib-commonjs/components/Legends/Legends.types.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.base.js +2 -2
- package/lib-commonjs/components/LineChart/LineChart.base.js.map +1 -1
- package/package.json +4 -4
- package/src/components/Legends/Legends.types.ts +42 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeclarativeChart.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/DeclarativeChart.tsx"],"names":[],"mappings":";;;;AAAA,yDAAyD;AACzD,uDAAuD;AACvD,6BAA+B;AAC/B,6CAAiD;AACjD,0DAA2E;AAC3E,6DAY+B;AAC/B,4CAA+C;AAC/C,6DAAiF;AACjF,4CAA+C;AAC/C,+CAAqD;AACrD,0DAAyD;AACzD,6CAAiD;AACjD,0DAA2E;AAC3E,mDAA6D;
|
|
1
|
+
{"version":3,"file":"DeclarativeChart.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/DeclarativeChart.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport { DonutChart } from '../DonutChart/index';\nimport { VerticalStackedBarChart } from '../VerticalStackedBarChart/index';\nimport {\n transformPlotlyJsonToDonutProps,\n transformPlotlyJsonToVSBCProps,\n transformPlotlyJsonToScatterChartProps,\n transformPlotlyJsonToHorizontalBarWithAxisProps,\n isDateArray,\n isNumberArray,\n transformPlotlyJsonToHeatmapProps,\n transformPlotlyJsonToSankeyProps,\n transformPlotlyJsonToGaugeProps,\n transformPlotlyJsonToGVBCProps,\n transformPlotlyJsonToVBCProps,\n} from './PlotlySchemaAdapter';\nimport { LineChart } from '../LineChart/index';\nimport { HorizontalBarChartWithAxis } from '../HorizontalBarChartWithAxis/index';\nimport { AreaChart } from '../AreaChart/index';\nimport { HeatMapChart } from '../HeatMapChart/index';\nimport { SankeyChart } from '../SankeyChart/SankeyChart';\nimport { GaugeChart } from '../GaugeChart/index';\nimport { GroupedVerticalBarChart } from '../GroupedVerticalBarChart/index';\nimport { VerticalBarChart } from '../VerticalBarChart/index';\n\nimport { useTheme } from '@fluentui/react';\n\nexport const UseIsDarkTheme = (): boolean => {\n const theme = useTheme();\n return theme?.isInverted ?? false;\n};\n\nexport interface Schema {\n /**\n * Plotly schema represented as JSON object\n */\n plotlySchema: any;\n\n /**\n * The legends selected by the user to persist in the chart\n */\n selectedLegends?: string[];\n\n /**\n * Dictionary for localizing the accessibility labels\n */\n accesibilityLabels?: { [key: string]: string };\n}\n\n/**\n * DeclarativeChart props.\n * {@docCategory DeclarativeChart}\n */\nexport interface DeclarativeChartProps extends React.RefAttributes<HTMLDivElement> {\n /**\n * The schema representing the chart data, layout and configuration\n */\n chartSchema: Schema;\n\n /**\n * Callback when an event occurs\n */\n onSchemaChange?: (eventData: Schema) => void;\n}\n\nconst useColorMapping = () => {\n const colorMap = React.useRef(new Map<string, string>());\n return colorMap;\n};\n\n/**\n * DeclarativeChart component.\n * {@docCategory DeclarativeChart}\n */\nexport const DeclarativeChart: React.FunctionComponent<DeclarativeChartProps> = React.forwardRef<\n HTMLDivElement,\n DeclarativeChartProps\n>((props, forwardedRef) => {\n const { plotlySchema } = props.chartSchema;\n const xValues = plotlySchema.data[0].x;\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const colorMap = useColorMapping();\n const isDarkTheme = UseIsDarkTheme();\n\n switch (plotlySchema.data[0].type) {\n case 'pie':\n return <DonutChart {...transformPlotlyJsonToDonutProps(plotlySchema, colorMap, isDarkTheme)} />;\n case 'bar':\n const orientation = plotlySchema.data[0].orientation;\n if (orientation === 'h') {\n return (\n <HorizontalBarChartWithAxis\n {...transformPlotlyJsonToHorizontalBarWithAxisProps(plotlySchema, colorMap, isDarkTheme)}\n />\n );\n } else {\n if (['group', 'overlay'].includes(plotlySchema?.layout?.barmode)) {\n return <GroupedVerticalBarChart {...transformPlotlyJsonToGVBCProps(plotlySchema, colorMap, isDarkTheme)} />;\n }\n return <VerticalStackedBarChart {...transformPlotlyJsonToVSBCProps(plotlySchema, colorMap, isDarkTheme)} />;\n }\n case 'scatter':\n const isAreaChart = plotlySchema.data.some((series: any) => series.fill === 'tonexty');\n if (isXDate || isXNumber) {\n if (isAreaChart) {\n return <AreaChart {...transformPlotlyJsonToScatterChartProps(plotlySchema, true, colorMap, isDarkTheme)} />;\n }\n return <LineChart {...transformPlotlyJsonToScatterChartProps(plotlySchema, false, colorMap, isDarkTheme)} />;\n }\n return <VerticalStackedBarChart {...transformPlotlyJsonToVSBCProps(plotlySchema, colorMap, isDarkTheme)} />;\n case 'heatmap':\n return <HeatMapChart {...transformPlotlyJsonToHeatmapProps(plotlySchema)} />;\n case 'sankey':\n return <SankeyChart {...transformPlotlyJsonToSankeyProps(plotlySchema, colorMap, isDarkTheme)} />;\n case 'indicator':\n if (plotlySchema?.data?.[0]?.mode?.includes('gauge')) {\n return <GaugeChart {...transformPlotlyJsonToGaugeProps(plotlySchema, colorMap, isDarkTheme)} />;\n }\n return <div>Unsupported Schema</div>;\n case 'histogram':\n return <VerticalBarChart {...transformPlotlyJsonToVBCProps(plotlySchema, colorMap, isDarkTheme)} />;\n default:\n return <div>Unsupported Schema</div>;\n }\n});\nDeclarativeChart.displayName = 'DeclarativeChart';\n"]}
|
|
@@ -11,16 +11,16 @@ import { IGroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index'
|
|
|
11
11
|
import { IVerticalBarChartProps } from '../VerticalBarChart/index';
|
|
12
12
|
export declare const isDateArray: (array: any[]) => boolean;
|
|
13
13
|
export declare const isNumberArray: (array: any[]) => boolean;
|
|
14
|
-
export declare const getColor: (legendLabel: string, colorMap: React.MutableRefObject<Map<string, string
|
|
15
|
-
export declare const transformPlotlyJsonToDonutProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string
|
|
16
|
-
export declare const transformPlotlyJsonToVSBCProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string
|
|
17
|
-
export declare const transformPlotlyJsonToGVBCProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string
|
|
18
|
-
export declare const transformPlotlyJsonToVBCProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string
|
|
19
|
-
export declare const transformPlotlyJsonToScatterChartProps: (jsonObj: any, isAreaChart: boolean, colorMap: React.MutableRefObject<Map<string, string
|
|
20
|
-
export declare const transformPlotlyJsonToHorizontalBarWithAxisProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string
|
|
14
|
+
export declare const getColor: (legendLabel: string, colorMap: React.MutableRefObject<Map<string, string>>, isDarkTheme?: boolean) => string;
|
|
15
|
+
export declare const transformPlotlyJsonToDonutProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string>>, isDarkTheme?: boolean) => IDonutChartProps;
|
|
16
|
+
export declare const transformPlotlyJsonToVSBCProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string>>, isDarkTheme?: boolean) => IVerticalStackedBarChartProps;
|
|
17
|
+
export declare const transformPlotlyJsonToGVBCProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string>>, isDarkTheme?: boolean) => IGroupedVerticalBarChartProps;
|
|
18
|
+
export declare const transformPlotlyJsonToVBCProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string>>, isDarkTheme?: boolean) => IVerticalBarChartProps;
|
|
19
|
+
export declare const transformPlotlyJsonToScatterChartProps: (jsonObj: any, isAreaChart: boolean, colorMap: React.MutableRefObject<Map<string, string>>, isDarkTheme?: boolean) => ILineChartProps | IAreaChartProps;
|
|
20
|
+
export declare const transformPlotlyJsonToHorizontalBarWithAxisProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string>>, isDarkTheme?: boolean) => IHorizontalBarChartWithAxisProps;
|
|
21
21
|
export declare const transformPlotlyJsonToHeatmapProps: (jsonObj: any) => IHeatMapChartProps;
|
|
22
|
-
export declare const transformPlotlyJsonToSankeyProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string
|
|
23
|
-
export declare const transformPlotlyJsonToGaugeProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string
|
|
22
|
+
export declare const transformPlotlyJsonToSankeyProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string>>, isDarkTheme?: boolean) => ISankeyChartProps;
|
|
23
|
+
export declare const transformPlotlyJsonToGaugeProps: (jsonObj: any, colorMap: React.MutableRefObject<Map<string, string>>, isDarkTheme?: boolean) => IGaugeChartProps;
|
|
24
24
|
/**
|
|
25
25
|
* Interate iteratively through the trace object and find all the array attributes.
|
|
26
26
|
* 1 trace record = 1 series of data
|
|
@@ -12,22 +12,22 @@ var isDateArray = function (array) { return isArrayOrTypedArray(array) && array.
|
|
|
12
12
|
exports.isDateArray = isDateArray;
|
|
13
13
|
var isNumberArray = function (array) { return isArrayOrTypedArray(array) && array.every(isNumber); };
|
|
14
14
|
exports.isNumberArray = isNumberArray;
|
|
15
|
-
var getColor = function (legendLabel, colorMap) {
|
|
15
|
+
var getColor = function (legendLabel, colorMap, isDarkTheme) {
|
|
16
16
|
if (!colorMap.current.has(legendLabel)) {
|
|
17
|
-
var nextColor = (0, colors_1.getNextColor)(colorMap.current.size + 1);
|
|
17
|
+
var nextColor = (0, colors_1.getNextColor)(colorMap.current.size + 1, 0, isDarkTheme);
|
|
18
18
|
colorMap.current.set(legendLabel, nextColor);
|
|
19
19
|
return nextColor;
|
|
20
20
|
}
|
|
21
21
|
return colorMap.current.get(legendLabel);
|
|
22
22
|
};
|
|
23
23
|
exports.getColor = getColor;
|
|
24
|
-
var transformPlotlyJsonToDonutProps = function (jsonObj, colorMap) {
|
|
24
|
+
var transformPlotlyJsonToDonutProps = function (jsonObj, colorMap, isDarkTheme) {
|
|
25
25
|
var _a, _b;
|
|
26
26
|
var data = jsonObj.data, layout = jsonObj.layout;
|
|
27
27
|
var firstData = data[0];
|
|
28
28
|
var donutData = (_a = firstData.labels) === null || _a === void 0 ? void 0 : _a.map(function (label, index) {
|
|
29
29
|
var _a;
|
|
30
|
-
var color = (0, exports.getColor)(label, colorMap);
|
|
30
|
+
var color = (0, exports.getColor)(label, colorMap, isDarkTheme);
|
|
31
31
|
return {
|
|
32
32
|
legend: label,
|
|
33
33
|
data: (_a = firstData.values) === null || _a === void 0 ? void 0 : _a[index],
|
|
@@ -64,7 +64,7 @@ var transformPlotlyJsonToDonutProps = function (jsonObj, colorMap) {
|
|
|
64
64
|
};
|
|
65
65
|
};
|
|
66
66
|
exports.transformPlotlyJsonToDonutProps = transformPlotlyJsonToDonutProps;
|
|
67
|
-
var transformPlotlyJsonToVSBCProps = function (jsonObj, colorMap) {
|
|
67
|
+
var transformPlotlyJsonToVSBCProps = function (jsonObj, colorMap, isDarkTheme) {
|
|
68
68
|
var data = jsonObj.data, layout = jsonObj.layout;
|
|
69
69
|
var mapXToDataPoints = {};
|
|
70
70
|
var yMaxValue = 0;
|
|
@@ -77,7 +77,7 @@ var transformPlotlyJsonToVSBCProps = function (jsonObj, colorMap) {
|
|
|
77
77
|
}
|
|
78
78
|
var legend = series.name || "Series ".concat(index1 + 1);
|
|
79
79
|
if (series.type === 'bar') {
|
|
80
|
-
var color = (0, exports.getColor)(legend, colorMap);
|
|
80
|
+
var color = (0, exports.getColor)(legend, colorMap, isDarkTheme);
|
|
81
81
|
mapXToDataPoints[x].chartData.push({
|
|
82
82
|
legend: legend,
|
|
83
83
|
data: (_a = series.y) === null || _a === void 0 ? void 0 : _a[index2],
|
|
@@ -85,7 +85,7 @@ var transformPlotlyJsonToVSBCProps = function (jsonObj, colorMap) {
|
|
|
85
85
|
});
|
|
86
86
|
}
|
|
87
87
|
else if (series.type === 'line') {
|
|
88
|
-
var color = (0, exports.getColor)(legend, colorMap);
|
|
88
|
+
var color = (0, exports.getColor)(legend, colorMap, isDarkTheme);
|
|
89
89
|
mapXToDataPoints[x].lineData.push({
|
|
90
90
|
legend: legend,
|
|
91
91
|
y: (_b = series.y) === null || _b === void 0 ? void 0 : _b[index2],
|
|
@@ -105,7 +105,7 @@ var transformPlotlyJsonToVSBCProps = function (jsonObj, colorMap) {
|
|
|
105
105
|
};
|
|
106
106
|
};
|
|
107
107
|
exports.transformPlotlyJsonToVSBCProps = transformPlotlyJsonToVSBCProps;
|
|
108
|
-
var transformPlotlyJsonToGVBCProps = function (jsonObj, colorMap) {
|
|
108
|
+
var transformPlotlyJsonToGVBCProps = function (jsonObj, colorMap, isDarkTheme) {
|
|
109
109
|
var data = jsonObj.data, layout = jsonObj.layout;
|
|
110
110
|
var mapXToDataPoints = {};
|
|
111
111
|
data.forEach(function (series, index1) {
|
|
@@ -117,7 +117,7 @@ var transformPlotlyJsonToGVBCProps = function (jsonObj, colorMap) {
|
|
|
117
117
|
}
|
|
118
118
|
if (series.type === 'bar') {
|
|
119
119
|
var legend = series.name || "Series ".concat(index1 + 1);
|
|
120
|
-
var color = (0, exports.getColor)(legend, colorMap);
|
|
120
|
+
var color = (0, exports.getColor)(legend, colorMap, isDarkTheme);
|
|
121
121
|
mapXToDataPoints[x].series.push({
|
|
122
122
|
key: legend,
|
|
123
123
|
data: (_a = series.y) === null || _a === void 0 ? void 0 : _a[index2],
|
|
@@ -136,7 +136,7 @@ var transformPlotlyJsonToGVBCProps = function (jsonObj, colorMap) {
|
|
|
136
136
|
};
|
|
137
137
|
};
|
|
138
138
|
exports.transformPlotlyJsonToGVBCProps = transformPlotlyJsonToGVBCProps;
|
|
139
|
-
var transformPlotlyJsonToVBCProps = function (jsonObj, colorMap) {
|
|
139
|
+
var transformPlotlyJsonToVBCProps = function (jsonObj, colorMap, isDarkTheme) {
|
|
140
140
|
var data = jsonObj.data, layout = jsonObj.layout;
|
|
141
141
|
var vbcData = [];
|
|
142
142
|
data.forEach(function (series, index) {
|
|
@@ -169,7 +169,7 @@ var transformPlotlyJsonToVBCProps = function (jsonObj, colorMap) {
|
|
|
169
169
|
var totalDataPoints = (0, d3_array_1.merge)(buckets).length;
|
|
170
170
|
buckets.forEach(function (bucket) {
|
|
171
171
|
var legend = series.name || "Series ".concat(index + 1);
|
|
172
|
-
var color = (0, exports.getColor)(legend, colorMap);
|
|
172
|
+
var color = (0, exports.getColor)(legend, colorMap, isDarkTheme);
|
|
173
173
|
var y = bucket.length;
|
|
174
174
|
if (series.histnorm === 'percent') {
|
|
175
175
|
y = (bucket.length / totalDataPoints) * 100;
|
|
@@ -215,7 +215,7 @@ var transformPlotlyJsonToVBCProps = function (jsonObj, colorMap) {
|
|
|
215
215
|
};
|
|
216
216
|
};
|
|
217
217
|
exports.transformPlotlyJsonToVBCProps = transformPlotlyJsonToVBCProps;
|
|
218
|
-
var transformPlotlyJsonToScatterChartProps = function (jsonObj, isAreaChart, colorMap) {
|
|
218
|
+
var transformPlotlyJsonToScatterChartProps = function (jsonObj, isAreaChart, colorMap, isDarkTheme) {
|
|
219
219
|
var data = jsonObj.data, layout = jsonObj.layout;
|
|
220
220
|
var chartData = data.map(function (series, index) {
|
|
221
221
|
var xValues = series.x;
|
|
@@ -223,7 +223,7 @@ var transformPlotlyJsonToScatterChartProps = function (jsonObj, isAreaChart, col
|
|
|
223
223
|
var isXDate = (0, exports.isDateArray)(xValues);
|
|
224
224
|
var isXNumber = (0, exports.isNumberArray)(xValues);
|
|
225
225
|
var legend = series.name || "Series ".concat(index + 1);
|
|
226
|
-
var lineColor = (0, exports.getColor)(legend, colorMap);
|
|
226
|
+
var lineColor = (0, exports.getColor)(legend, colorMap, isDarkTheme);
|
|
227
227
|
return {
|
|
228
228
|
legend: legend,
|
|
229
229
|
data: xValues.map(function (x, i) { return ({
|
|
@@ -251,13 +251,13 @@ var transformPlotlyJsonToScatterChartProps = function (jsonObj, isAreaChart, col
|
|
|
251
251
|
}
|
|
252
252
|
};
|
|
253
253
|
exports.transformPlotlyJsonToScatterChartProps = transformPlotlyJsonToScatterChartProps;
|
|
254
|
-
var transformPlotlyJsonToHorizontalBarWithAxisProps = function (jsonObj, colorMap) {
|
|
254
|
+
var transformPlotlyJsonToHorizontalBarWithAxisProps = function (jsonObj, colorMap, isDarkTheme) {
|
|
255
255
|
var _a, _b;
|
|
256
256
|
var data = jsonObj.data, layout = jsonObj.layout;
|
|
257
257
|
var chartData = data
|
|
258
258
|
.map(function (series, index) {
|
|
259
259
|
return series.y.map(function (yValue, i) {
|
|
260
|
-
var color = (0, exports.getColor)(yValue, colorMap);
|
|
260
|
+
var color = (0, exports.getColor)(yValue, colorMap, isDarkTheme);
|
|
261
261
|
return {
|
|
262
262
|
x: series.x[i],
|
|
263
263
|
y: yValue,
|
|
@@ -267,12 +267,13 @@ var transformPlotlyJsonToHorizontalBarWithAxisProps = function (jsonObj, colorMa
|
|
|
267
267
|
});
|
|
268
268
|
})
|
|
269
269
|
.flat();
|
|
270
|
-
var chartHeight = layout.height ||
|
|
270
|
+
var chartHeight = layout.height || 450;
|
|
271
271
|
var margin = ((_a = layout.margin) === null || _a === void 0 ? void 0 : _a.l) || 0;
|
|
272
272
|
var padding = ((_b = layout.margin) === null || _b === void 0 ? void 0 : _b.pad) || 0;
|
|
273
273
|
var availableHeight = chartHeight - margin - padding;
|
|
274
274
|
var numberOfBars = data[0].y.length;
|
|
275
|
-
var
|
|
275
|
+
var scalingFactor = 0.01;
|
|
276
|
+
var gapFactor = 1 / (1 + scalingFactor * numberOfBars);
|
|
276
277
|
var barHeight = availableHeight / (numberOfBars * (1 + gapFactor));
|
|
277
278
|
return {
|
|
278
279
|
data: chartData,
|
|
@@ -289,7 +290,7 @@ var transformPlotlyJsonToHorizontalBarWithAxisProps = function (jsonObj, colorMa
|
|
|
289
290
|
};
|
|
290
291
|
exports.transformPlotlyJsonToHorizontalBarWithAxisProps = transformPlotlyJsonToHorizontalBarWithAxisProps;
|
|
291
292
|
var transformPlotlyJsonToHeatmapProps = function (jsonObj) {
|
|
292
|
-
var _a
|
|
293
|
+
var _a;
|
|
293
294
|
var data = jsonObj.data, layout = jsonObj.layout;
|
|
294
295
|
var firstData = data[0];
|
|
295
296
|
var heatmapDataPoints = [];
|
|
@@ -315,8 +316,10 @@ var transformPlotlyJsonToHeatmapProps = function (jsonObj) {
|
|
|
315
316
|
value: 0,
|
|
316
317
|
};
|
|
317
318
|
// Convert normalized values to actual values
|
|
318
|
-
var domainValuesForColorScale =
|
|
319
|
-
|
|
319
|
+
var domainValuesForColorScale = firstData.colorscale
|
|
320
|
+
? firstData.colorscale.map(function (arr) { return arr[0] * (zMax - zMin) + zMin; })
|
|
321
|
+
: [];
|
|
322
|
+
var rangeValuesForColorScale = firstData.colorscale ? firstData.colorscale.map(function (arr) { return arr[1]; }) : [];
|
|
320
323
|
return {
|
|
321
324
|
data: [heatmapData],
|
|
322
325
|
domainValuesForColorScale: domainValuesForColorScale,
|
|
@@ -325,7 +328,7 @@ var transformPlotlyJsonToHeatmapProps = function (jsonObj) {
|
|
|
325
328
|
};
|
|
326
329
|
};
|
|
327
330
|
exports.transformPlotlyJsonToHeatmapProps = transformPlotlyJsonToHeatmapProps;
|
|
328
|
-
var transformPlotlyJsonToSankeyProps = function (jsonObj, colorMap) {
|
|
331
|
+
var transformPlotlyJsonToSankeyProps = function (jsonObj, colorMap, isDarkTheme) {
|
|
329
332
|
var _a;
|
|
330
333
|
var data = jsonObj.data, layout = jsonObj.layout;
|
|
331
334
|
var _b = data[0], link = _b.link, node = _b.node;
|
|
@@ -337,10 +340,11 @@ var transformPlotlyJsonToSankeyProps = function (jsonObj, colorMap) {
|
|
|
337
340
|
}); })
|
|
338
341
|
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
339
342
|
//@ts-expect-error Dynamic link object. Ignore for now.
|
|
340
|
-
|
|
343
|
+
// Filter out negative nodes, unequal nodes and self-references (circular links)
|
|
344
|
+
.filter(function (x) { return x.source > 0 && x.target > 0 && x.source !== x.target; });
|
|
341
345
|
var sankeyChartData = {
|
|
342
346
|
nodes: node.label.map(function (label, index) {
|
|
343
|
-
var color = (0, exports.getColor)(label, colorMap);
|
|
347
|
+
var color = (0, exports.getColor)(label, colorMap, isDarkTheme);
|
|
344
348
|
return {
|
|
345
349
|
nodeId: index,
|
|
346
350
|
name: label,
|
|
@@ -372,14 +376,14 @@ var transformPlotlyJsonToSankeyProps = function (jsonObj, colorMap) {
|
|
|
372
376
|
};
|
|
373
377
|
};
|
|
374
378
|
exports.transformPlotlyJsonToSankeyProps = transformPlotlyJsonToSankeyProps;
|
|
375
|
-
var transformPlotlyJsonToGaugeProps = function (jsonObj, colorMap) {
|
|
379
|
+
var transformPlotlyJsonToGaugeProps = function (jsonObj, colorMap, isDarkTheme) {
|
|
376
380
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
377
381
|
var data = jsonObj.data, layout = jsonObj.layout;
|
|
378
382
|
var firstData = data[0];
|
|
379
383
|
var segments = (_b = (_a = firstData.gauge) === null || _a === void 0 ? void 0 : _a.steps) === null || _b === void 0 ? void 0 : _b.map(function (step, index) {
|
|
380
384
|
var _a, _b;
|
|
381
385
|
var legend = step.name || "Segment ".concat(index + 1);
|
|
382
|
-
var color = (0, exports.getColor)(legend, colorMap);
|
|
386
|
+
var color = (0, exports.getColor)(legend, colorMap, isDarkTheme);
|
|
383
387
|
return {
|
|
384
388
|
legend: legend,
|
|
385
389
|
size: ((_a = step.range) === null || _a === void 0 ? void 0 : _a[1]) - ((_b = step.range) === null || _b === void 0 ? void 0 : _b[0]),
|
|
@@ -392,12 +396,12 @@ var transformPlotlyJsonToGaugeProps = function (jsonObj, colorMap) {
|
|
|
392
396
|
var diff = firstData.value - firstData.delta.reference;
|
|
393
397
|
if (diff >= 0) {
|
|
394
398
|
sublabel = "\u25B2 ".concat(diff);
|
|
395
|
-
var color = (0, exports.getColor)(((_d = firstData.delta.increasing) === null || _d === void 0 ? void 0 : _d.color) || '', colorMap);
|
|
399
|
+
var color = (0, exports.getColor)(((_d = firstData.delta.increasing) === null || _d === void 0 ? void 0 : _d.color) || '', colorMap, isDarkTheme);
|
|
396
400
|
sublabelColor = color;
|
|
397
401
|
}
|
|
398
402
|
else {
|
|
399
403
|
sublabel = "\u25BC ".concat(Math.abs(diff));
|
|
400
|
-
var color = (0, exports.getColor)(((_e = firstData.delta.decreasing) === null || _e === void 0 ? void 0 : _e.color) || '', colorMap);
|
|
404
|
+
var color = (0, exports.getColor)(((_e = firstData.delta.decreasing) === null || _e === void 0 ? void 0 : _e.color) || '', colorMap, isDarkTheme);
|
|
401
405
|
sublabelColor = color;
|
|
402
406
|
}
|
|
403
407
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlotlySchemaAdapter.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/PlotlySchemaAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport { bin as d3Bin, extent as d3Extent, sum as d3Sum, min as d3Min, max as d3Max, merge as d3Merge } from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format, precisionFixed as d3PrecisionFixed } from 'd3-format';\nimport { IDonutChartProps } from '../DonutChart/index';\nimport {\n IChartDataPoint,\n IChartProps,\n IHorizontalBarChartWithAxisDataPoint,\n ILineChartPoints,\n IVerticalStackedChartProps,\n IHeatMapChartData,\n IHeatMapChartDataPoint,\n IGroupedVerticalBarChartData,\n IVerticalBarChartDataPoint,\n} from '../../types/IDataPoint';\nimport { ISankeyChartProps } from '../SankeyChart/index';\nimport { IVerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { IHorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { ILineChartProps } from '../LineChart/index';\nimport { IAreaChartProps } from '../AreaChart/index';\nimport { IHeatMapChartProps } from '../HeatMapChart/index';\nimport { getNextColor } from '../../utilities/colors';\nimport { IGaugeChartProps, IGaugeChartSegment } from '../GaugeChart/index';\nimport { IGroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { IVerticalBarChartProps } from '../VerticalBarChart/index';\n\nconst isDate = (value: any): boolean => !isNaN(Date.parse(value));\nconst isNumber = (value: any): boolean => !isNaN(parseFloat(value)) && isFinite(value);\nexport const isDateArray = (array: any[]): boolean => isArrayOrTypedArray(array) && array.every(isDate);\nexport const isNumberArray = (array: any[]): boolean => isArrayOrTypedArray(array) && array.every(isNumber);\n\nexport const getColor = (legendLabel: string, colorMap: React.MutableRefObject<Map<string, string>>): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n): IDonutChartProps => {\n const { data, layout } = jsonObj;\n const firstData = data[0];\n\n const donutData = firstData.labels?.map((label: string, index: number): IChartDataPoint => {\n const color = getColor(label, colorMap);\n return {\n legend: label,\n data: firstData.values?.[index],\n color,\n };\n });\n\n const width: number = layout?.width || 440;\n const height: number = layout?.height || 220;\n const hideLabels = firstData.textinfo ? !['value', 'percent'].includes(firstData.textinfo) : false;\n const donutMarginHorizontal = hideLabels ? 0 : 80;\n const donutMarginVertical = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : 0;\n\n const styles: IDonutChartProps['styles'] = {\n root: {\n '[class^=\"arcLabel\"]': {\n fontSize: firstData.textfont?.size,\n },\n },\n };\n\n return {\n data: {\n chartTitle: layout?.title,\n chartData: donutData,\n },\n hideLegend: layout?.showlegend === false ? true : false,\n width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? firstData.textinfo === 'percent' : true,\n styles,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n): IVerticalStackedBarChartProps => {\n const { data, layout } = jsonObj;\n const mapXToDataPoints: { [key: string]: IVerticalStackedChartProps } = {};\n let yMaxValue = 0;\n\n data.forEach((series: any, index1: number) => {\n series.x?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: x, chartData: [], lineData: [] };\n }\n const legend: string = series.name || `Series ${index1 + 1}`;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: series.y?.[index2],\n color,\n });\n } else if (series.type === 'line') {\n const color = getColor(legend, colorMap);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: series.y?.[index2],\n color,\n });\n }\n\n yMaxValue = Math.max(yMaxValue, series.y?.[index2]);\n });\n });\n\n return {\n data: Object.values(mapXToDataPoints),\n chartTitle: layout?.title,\n // width: layout?.width,\n // height: layout?.height,\n barWidth: 'auto',\n yMaxValue,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n): IGroupedVerticalBarChartProps => {\n const { data, layout } = jsonObj;\n const mapXToDataPoints: Record<string, IGroupedVerticalBarChartData> = {};\n\n data.forEach((series: any, index1: number) => {\n series.x?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = series.name || `Series ${index1 + 1}`;\n const color = getColor(legend, colorMap);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: series.y?.[index2],\n color,\n legend,\n });\n }\n });\n });\n\n return {\n data: Object.values(mapXToDataPoints),\n chartTitle: layout?.title,\n // width: layout?.width,\n // height: layout?.height,\n barwidth: 'auto',\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n): IVerticalBarChartProps => {\n const { data, layout } = jsonObj;\n const vbcData: IVerticalBarChartDataPoint[] = [];\n\n data.forEach((series: any, index: number) => {\n if (!series.x) {\n return;\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(series.x) as [number, number])\n .nice();\n let [xMin, xMax] = scale.domain();\n\n xMin = typeof series.xbins?.start === 'number' ? series.xbins.start : xMin;\n xMax = typeof series.xbins?.end === 'number' ? series.xbins.end : xMax;\n\n const bin = d3Bin().domain([xMin, xMax]);\n\n if (typeof series.xbins?.size === 'number') {\n const thresholds: number[] = [];\n let th = xMin;\n const precision = d3PrecisionFixed(series.xbins.size);\n const format = d3Format(`.${precision}f`);\n\n while (th < xMax + series.xbins.size) {\n thresholds.push(parseFloat(format(th)));\n th += series.xbins.size;\n }\n\n xMin = thresholds[0];\n xMax = thresholds[thresholds.length - 1];\n bin.domain([xMin, xMax]).thresholds(thresholds);\n }\n\n const buckets = bin(series.x);\n // If the start or end of xbins is specified, then the number of datapoints may become less than x.length\n const totalDataPoints = d3Merge(buckets).length;\n\n buckets.forEach(bucket => {\n const legend = series.name || `Series ${index + 1}`;\n const color = getColor(legend, colorMap);\n let y = bucket.length;\n\n if (series.histnorm === 'percent') {\n y = (bucket.length / totalDataPoints) * 100;\n } else if (series.histnorm === 'probability') {\n y = bucket.length / totalDataPoints;\n } else if (series.histnorm === 'density') {\n y = bucket.x0 === bucket.x1 ? 0 : bucket.length / (bucket.x1! - bucket.x0!);\n } else if (series.histnorm === 'probability density') {\n y = bucket.x0 === bucket.x1 ? 0 : bucket.length / (totalDataPoints * (bucket.x1! - bucket.x0!));\n } else if (series.histfunc === 'sum') {\n y = d3Sum(bucket);\n } else if (series.histfunc === 'avg') {\n y = bucket.length === 0 ? 0 : d3Sum(bucket) / bucket.length;\n } else if (series.histfunc === 'min') {\n y = d3Min(bucket)!;\n } else if (series.histfunc === 'max') {\n y = d3Max(bucket)!;\n }\n\n vbcData.push({\n x: (bucket.x1! + bucket.x0!) / 2,\n y,\n legend,\n color,\n xAxisCalloutData: `[${bucket.x0} - ${bucket.x1})`,\n });\n });\n });\n\n return {\n data: vbcData,\n chartTitle: layout?.title,\n // width: layout?.width,\n // height: layout?.height,\n hideLegend: true,\n barWidth: 24,\n supportNegativeData: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n jsonObj: any,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n): ILineChartProps | IAreaChartProps => {\n const { data, layout } = jsonObj;\n\n const chartData: ILineChartPoints[] = data.map((series: any, index: number) => {\n const xValues = series.x;\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend = series.name || `Series ${index + 1}`;\n const lineColor = getColor(legend, colorMap);\n\n return {\n legend,\n data: xValues.map((x: string | number, i: number) => ({\n x: isString ? (isXDate ? new Date(x) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n })),\n color: lineColor,\n };\n });\n\n const chartProps: IChartProps = {\n chartTitle: layout.title || '',\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n } as IAreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n } as ILineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n): IHorizontalBarChartWithAxisProps => {\n const { data, layout } = jsonObj;\n\n const chartData: IHorizontalBarChartWithAxisDataPoint[] = data\n .map((series: any, index: number) => {\n return series.y.map((yValue: string, i: number) => {\n const color = getColor(yValue, colorMap);\n return {\n x: series.x[i],\n y: yValue,\n legend: yValue,\n color,\n };\n });\n })\n .flat();\n\n const chartHeight = layout.height || 350;\n const margin = layout.margin?.l || 0;\n const padding = layout.margin?.pad || 0;\n const availableHeight = chartHeight - margin - padding;\n const numberOfBars = data[0].y.length;\n const gapFactor = 0.5;\n const barHeight = availableHeight / (numberOfBars * (1 + gapFactor));\n\n return {\n data: chartData,\n chartTitle: layout.title || '',\n barHeight,\n showYAxisLables: true,\n styles: {\n root: {\n height: chartHeight,\n width: layout.width || 600,\n },\n },\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (jsonObj: any): IHeatMapChartProps => {\n const { data, layout } = jsonObj;\n const firstData = data[0];\n const heatmapDataPoints: IHeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n firstData.x?.forEach((xVal: any, xIdx: number) => {\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = firstData.z?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: layout.xaxis?.type === 'date' ? new Date(xVal) : xVal,\n y: layout.yaxis?.type === 'date' ? new Date(yVal) : yVal,\n value: zVal,\n });\n\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n });\n });\n const heatmapData: IHeatMapChartData = {\n legend: firstData.name || '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Convert normalized values to actual values\n const domainValuesForColorScale: number[] = firstData.colorscale?.map((arr: any) => arr[0] * (zMax - zMin) + zMin);\n const rangeValuesForColorScale: string[] = firstData.colorscale?.map((arr: any) => arr[1]);\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n): ISankeyChartProps => {\n const { data, layout } = jsonObj;\n const { link, node } = data[0];\n const validLinks = link.value\n .map((val: number, index: number) => ({\n value: val,\n source: link.source[index],\n target: link.target[index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n //@ts-expect-error Dynamic link object. Ignore for now.\n .filter(x => x.source !== x.target); // Filter out self-references (circular links)\n\n const sankeyChartData = {\n nodes: node.label.map((label: string, index: number) => {\n const color = getColor(label, colorMap);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n };\n\n const width: number = layout?.width || 440;\n const height: number = layout?.height || 220;\n const styles: ISankeyChartProps['styles'] = {\n root: {\n fontSize: layout.font?.size,\n },\n };\n const shouldResize: number = width + height;\n return {\n data: {\n chartTitle: layout?.title,\n SankeyChartData: sankeyChartData,\n },\n width,\n height,\n styles,\n shouldResize,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n): IGaugeChartProps => {\n const { data, layout } = jsonObj;\n const firstData = data[0];\n\n const segments = firstData.gauge?.steps?.map((step: any, index: number): IGaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(legend, colorMap);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n });\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (typeof firstData.delta?.reference === 'number') {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const color = getColor(firstData.delta.increasing?.color || '', colorMap);\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const color = getColor(firstData.delta.decreasing?.color || '', colorMap);\n sublabelColor = color;\n }\n }\n\n const styles: IGaugeChartProps['styles'] = {\n sublabel: {\n fill: sublabelColor,\n },\n };\n\n return {\n segments,\n chartValue: firstData.value,\n chartTitle: firstData.title?.text,\n sublabel,\n // range values can be null\n minValue: firstData.gauge?.axis?.range?.[0] ?? undefined,\n maxValue: firstData.gauge?.axis?.range?.[1] ?? undefined,\n chartValueFormat: () => firstData.value,\n width: layout?.width,\n height: layout?.height,\n hideLegend: true,\n styles,\n };\n};\n\nfunction isTypedArray(a: any) {\n return ArrayBuffer.isView(a) && !(a instanceof DataView);\n}\n\nfunction isArrayOrTypedArray(a: any) {\n return Array.isArray(a) || isTypedArray(a);\n}\n\nfunction isPlainObject(obj: any) {\n if (window && window.process && window.process.versions) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n }\n\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n for (const attribute of arrayAttributes) {\n console.log(attribute);\n }\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PlotlySchemaAdapter.js","sourceRoot":"../src/","sources":["components/DeclarativeChart/PlotlySchemaAdapter.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable one-var */\n/* eslint-disable vars-on-top */\n/* eslint-disable no-var */\n/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\nimport { bin as d3Bin, extent as d3Extent, sum as d3Sum, min as d3Min, max as d3Max, merge as d3Merge } from 'd3-array';\nimport { scaleLinear as d3ScaleLinear } from 'd3-scale';\nimport { format as d3Format, precisionFixed as d3PrecisionFixed } from 'd3-format';\nimport { IDonutChartProps } from '../DonutChart/index';\nimport {\n IChartDataPoint,\n IChartProps,\n IHorizontalBarChartWithAxisDataPoint,\n ILineChartPoints,\n IVerticalStackedChartProps,\n IHeatMapChartData,\n IHeatMapChartDataPoint,\n IGroupedVerticalBarChartData,\n IVerticalBarChartDataPoint,\n} from '../../types/IDataPoint';\nimport { ISankeyChartProps } from '../SankeyChart/index';\nimport { IVerticalStackedBarChartProps } from '../VerticalStackedBarChart/index';\nimport { IHorizontalBarChartWithAxisProps } from '../HorizontalBarChartWithAxis/index';\nimport { ILineChartProps } from '../LineChart/index';\nimport { IAreaChartProps } from '../AreaChart/index';\nimport { IHeatMapChartProps } from '../HeatMapChart/index';\nimport { getNextColor } from '../../utilities/colors';\nimport { IGaugeChartProps, IGaugeChartSegment } from '../GaugeChart/index';\nimport { IGroupedVerticalBarChartProps } from '../GroupedVerticalBarChart/index';\nimport { IVerticalBarChartProps } from '../VerticalBarChart/index';\n\nconst isDate = (value: any): boolean => !isNaN(Date.parse(value));\nconst isNumber = (value: any): boolean => !isNaN(parseFloat(value)) && isFinite(value);\nexport const isDateArray = (array: any[]): boolean => isArrayOrTypedArray(array) && array.every(isDate);\nexport const isNumberArray = (array: any[]): boolean => isArrayOrTypedArray(array) && array.every(isNumber);\n\nexport const getColor = (\n legendLabel: string,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): string => {\n if (!colorMap.current.has(legendLabel)) {\n const nextColor = getNextColor(colorMap.current.size + 1, 0, isDarkTheme);\n colorMap.current.set(legendLabel, nextColor);\n return nextColor;\n }\n\n return colorMap.current.get(legendLabel) as string;\n};\n\nexport const transformPlotlyJsonToDonutProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IDonutChartProps => {\n const { data, layout } = jsonObj;\n const firstData = data[0];\n\n const donutData = firstData.labels?.map((label: string, index: number): IChartDataPoint => {\n const color = getColor(label, colorMap, isDarkTheme);\n return {\n legend: label,\n data: firstData.values?.[index],\n color,\n };\n });\n\n const width: number = layout?.width || 440;\n const height: number = layout?.height || 220;\n const hideLabels = firstData.textinfo ? !['value', 'percent'].includes(firstData.textinfo) : false;\n const donutMarginHorizontal = hideLabels ? 0 : 80;\n const donutMarginVertical = 40 + (hideLabels ? 0 : 40);\n const innerRadius: number = firstData.hole\n ? firstData.hole * (Math.min(width - donutMarginHorizontal, height - donutMarginVertical) / 2)\n : 0;\n\n const styles: IDonutChartProps['styles'] = {\n root: {\n '[class^=\"arcLabel\"]': {\n fontSize: firstData.textfont?.size,\n },\n },\n };\n\n return {\n data: {\n chartTitle: layout?.title,\n chartData: donutData,\n },\n hideLegend: layout?.showlegend === false ? true : false,\n width,\n height,\n innerRadius,\n hideLabels,\n showLabelsInPercent: firstData.textinfo ? firstData.textinfo === 'percent' : true,\n styles,\n };\n};\n\nexport const transformPlotlyJsonToVSBCProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IVerticalStackedBarChartProps => {\n const { data, layout } = jsonObj;\n const mapXToDataPoints: { [key: string]: IVerticalStackedChartProps } = {};\n let yMaxValue = 0;\n\n data.forEach((series: any, index1: number) => {\n series.x?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { xAxisPoint: x, chartData: [], lineData: [] };\n }\n const legend: string = series.name || `Series ${index1 + 1}`;\n if (series.type === 'bar') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].chartData.push({\n legend,\n data: series.y?.[index2],\n color,\n });\n } else if (series.type === 'line') {\n const color = getColor(legend, colorMap, isDarkTheme);\n mapXToDataPoints[x].lineData!.push({\n legend,\n y: series.y?.[index2],\n color,\n });\n }\n\n yMaxValue = Math.max(yMaxValue, series.y?.[index2]);\n });\n });\n\n return {\n data: Object.values(mapXToDataPoints),\n chartTitle: layout?.title,\n // width: layout?.width,\n // height: layout?.height,\n barWidth: 'auto',\n yMaxValue,\n };\n};\n\nexport const transformPlotlyJsonToGVBCProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IGroupedVerticalBarChartProps => {\n const { data, layout } = jsonObj;\n const mapXToDataPoints: Record<string, IGroupedVerticalBarChartData> = {};\n\n data.forEach((series: any, index1: number) => {\n series.x?.forEach((x: string | number, index2: number) => {\n if (!mapXToDataPoints[x]) {\n mapXToDataPoints[x] = { name: x.toString(), series: [] };\n }\n if (series.type === 'bar') {\n const legend: string = series.name || `Series ${index1 + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n\n mapXToDataPoints[x].series.push({\n key: legend,\n data: series.y?.[index2],\n color,\n legend,\n });\n }\n });\n });\n\n return {\n data: Object.values(mapXToDataPoints),\n chartTitle: layout?.title,\n // width: layout?.width,\n // height: layout?.height,\n barwidth: 'auto',\n };\n};\n\nexport const transformPlotlyJsonToVBCProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IVerticalBarChartProps => {\n const { data, layout } = jsonObj;\n const vbcData: IVerticalBarChartDataPoint[] = [];\n\n data.forEach((series: any, index: number) => {\n if (!series.x) {\n return;\n }\n\n const scale = d3ScaleLinear()\n .domain(d3Extent<number>(series.x) as [number, number])\n .nice();\n let [xMin, xMax] = scale.domain();\n\n xMin = typeof series.xbins?.start === 'number' ? series.xbins.start : xMin;\n xMax = typeof series.xbins?.end === 'number' ? series.xbins.end : xMax;\n\n const bin = d3Bin().domain([xMin, xMax]);\n\n if (typeof series.xbins?.size === 'number') {\n const thresholds: number[] = [];\n let th = xMin;\n const precision = d3PrecisionFixed(series.xbins.size);\n const format = d3Format(`.${precision}f`);\n\n while (th < xMax + series.xbins.size) {\n thresholds.push(parseFloat(format(th)));\n th += series.xbins.size;\n }\n\n xMin = thresholds[0];\n xMax = thresholds[thresholds.length - 1];\n bin.domain([xMin, xMax]).thresholds(thresholds);\n }\n\n const buckets = bin(series.x);\n // If the start or end of xbins is specified, then the number of datapoints may become less than x.length\n const totalDataPoints = d3Merge(buckets).length;\n\n buckets.forEach(bucket => {\n const legend = series.name || `Series ${index + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n let y = bucket.length;\n\n if (series.histnorm === 'percent') {\n y = (bucket.length / totalDataPoints) * 100;\n } else if (series.histnorm === 'probability') {\n y = bucket.length / totalDataPoints;\n } else if (series.histnorm === 'density') {\n y = bucket.x0 === bucket.x1 ? 0 : bucket.length / (bucket.x1! - bucket.x0!);\n } else if (series.histnorm === 'probability density') {\n y = bucket.x0 === bucket.x1 ? 0 : bucket.length / (totalDataPoints * (bucket.x1! - bucket.x0!));\n } else if (series.histfunc === 'sum') {\n y = d3Sum(bucket);\n } else if (series.histfunc === 'avg') {\n y = bucket.length === 0 ? 0 : d3Sum(bucket) / bucket.length;\n } else if (series.histfunc === 'min') {\n y = d3Min(bucket)!;\n } else if (series.histfunc === 'max') {\n y = d3Max(bucket)!;\n }\n\n vbcData.push({\n x: (bucket.x1! + bucket.x0!) / 2,\n y,\n legend,\n color,\n xAxisCalloutData: `[${bucket.x0} - ${bucket.x1})`,\n });\n });\n });\n\n return {\n data: vbcData,\n chartTitle: layout?.title,\n // width: layout?.width,\n // height: layout?.height,\n hideLegend: true,\n barWidth: 24,\n supportNegativeData: true,\n };\n};\n\nexport const transformPlotlyJsonToScatterChartProps = (\n jsonObj: any,\n isAreaChart: boolean,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): ILineChartProps | IAreaChartProps => {\n const { data, layout } = jsonObj;\n\n const chartData: ILineChartPoints[] = data.map((series: any, index: number) => {\n const xValues = series.x;\n const isString = typeof xValues[0] === 'string';\n const isXDate = isDateArray(xValues);\n const isXNumber = isNumberArray(xValues);\n const legend = series.name || `Series ${index + 1}`;\n const lineColor = getColor(legend, colorMap, isDarkTheme);\n\n return {\n legend,\n data: xValues.map((x: string | number, i: number) => ({\n x: isString ? (isXDate ? new Date(x) : isXNumber ? parseFloat(x as string) : x) : x,\n y: series.y[i],\n })),\n color: lineColor,\n };\n });\n\n const chartProps: IChartProps = {\n chartTitle: layout.title || '',\n lineChartData: chartData,\n };\n\n if (isAreaChart) {\n return {\n data: chartProps,\n supportNegativeData: true,\n } as IAreaChartProps;\n } else {\n return {\n data: chartProps,\n supportNegativeData: true,\n } as ILineChartProps;\n }\n};\n\nexport const transformPlotlyJsonToHorizontalBarWithAxisProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IHorizontalBarChartWithAxisProps => {\n const { data, layout } = jsonObj;\n\n const chartData: IHorizontalBarChartWithAxisDataPoint[] = data\n .map((series: any, index: number) => {\n return series.y.map((yValue: string, i: number) => {\n const color = getColor(yValue, colorMap, isDarkTheme);\n return {\n x: series.x[i],\n y: yValue,\n legend: yValue,\n color,\n };\n });\n })\n .flat();\n\n const chartHeight = layout.height || 450;\n const margin = layout.margin?.l || 0;\n const padding = layout.margin?.pad || 0;\n const availableHeight = chartHeight - margin - padding;\n const numberOfBars = data[0].y.length;\n const scalingFactor = 0.01;\n const gapFactor = 1 / (1 + scalingFactor * numberOfBars);\n const barHeight = availableHeight / (numberOfBars * (1 + gapFactor));\n\n return {\n data: chartData,\n chartTitle: layout.title || '',\n barHeight,\n showYAxisLables: true,\n styles: {\n root: {\n height: chartHeight,\n width: layout.width || 600,\n },\n },\n };\n};\n\nexport const transformPlotlyJsonToHeatmapProps = (jsonObj: any): IHeatMapChartProps => {\n const { data, layout } = jsonObj;\n const firstData = data[0];\n const heatmapDataPoints: IHeatMapChartDataPoint[] = [];\n let zMin = Number.POSITIVE_INFINITY;\n let zMax = Number.NEGATIVE_INFINITY;\n\n firstData.x?.forEach((xVal: any, xIdx: number) => {\n firstData.y?.forEach((yVal: any, yIdx: number) => {\n const zVal = firstData.z?.[yIdx]?.[xIdx];\n\n heatmapDataPoints.push({\n x: layout.xaxis?.type === 'date' ? new Date(xVal) : xVal,\n y: layout.yaxis?.type === 'date' ? new Date(yVal) : yVal,\n value: zVal,\n });\n\n zMin = Math.min(zMin, zVal);\n zMax = Math.max(zMax, zVal);\n });\n });\n const heatmapData: IHeatMapChartData = {\n legend: firstData.name || '',\n data: heatmapDataPoints,\n value: 0,\n };\n\n // Convert normalized values to actual values\n const domainValuesForColorScale: number[] = firstData.colorscale\n ? firstData.colorscale.map((arr: any) => arr[0] * (zMax - zMin) + zMin)\n : [];\n const rangeValuesForColorScale: string[] = firstData.colorscale ? firstData.colorscale.map((arr: any) => arr[1]) : [];\n\n return {\n data: [heatmapData],\n domainValuesForColorScale,\n rangeValuesForColorScale,\n hideLegend: true,\n };\n};\n\nexport const transformPlotlyJsonToSankeyProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): ISankeyChartProps => {\n const { data, layout } = jsonObj;\n const { link, node } = data[0];\n const validLinks = link.value\n .map((val: number, index: number) => ({\n value: val,\n source: link.source[index],\n target: link.target[index],\n }))\n // eslint-disable-next-line @typescript-eslint/no-shadow\n //@ts-expect-error Dynamic link object. Ignore for now.\n // Filter out negative nodes, unequal nodes and self-references (circular links)\n .filter(x => x.source > 0 && x.target > 0 && x.source !== x.target);\n\n const sankeyChartData = {\n nodes: node.label.map((label: string, index: number) => {\n const color = getColor(label, colorMap, isDarkTheme);\n\n return {\n nodeId: index,\n name: label,\n color,\n };\n }),\n links: validLinks.map((validLink: any, index: number) => {\n return {\n ...validLink,\n };\n }),\n };\n\n const width: number = layout?.width || 440;\n const height: number = layout?.height || 220;\n const styles: ISankeyChartProps['styles'] = {\n root: {\n fontSize: layout.font?.size,\n },\n };\n const shouldResize: number = width + height;\n return {\n data: {\n chartTitle: layout?.title,\n SankeyChartData: sankeyChartData,\n },\n width,\n height,\n styles,\n shouldResize,\n enableReflow: true,\n };\n};\n\nexport const transformPlotlyJsonToGaugeProps = (\n jsonObj: any,\n colorMap: React.MutableRefObject<Map<string, string>>,\n isDarkTheme?: boolean,\n): IGaugeChartProps => {\n const { data, layout } = jsonObj;\n const firstData = data[0];\n\n const segments = firstData.gauge?.steps?.map((step: any, index: number): IGaugeChartSegment => {\n const legend = step.name || `Segment ${index + 1}`;\n const color = getColor(legend, colorMap, isDarkTheme);\n return {\n legend,\n size: step.range?.[1] - step.range?.[0],\n color,\n };\n });\n\n let sublabel: string | undefined;\n let sublabelColor: string | undefined;\n if (typeof firstData.delta?.reference === 'number') {\n const diff = firstData.value - firstData.delta.reference;\n if (diff >= 0) {\n sublabel = `\\u25B2 ${diff}`;\n const color = getColor(firstData.delta.increasing?.color || '', colorMap, isDarkTheme);\n sublabelColor = color;\n } else {\n sublabel = `\\u25BC ${Math.abs(diff)}`;\n const color = getColor(firstData.delta.decreasing?.color || '', colorMap, isDarkTheme);\n sublabelColor = color;\n }\n }\n\n const styles: IGaugeChartProps['styles'] = {\n sublabel: {\n fill: sublabelColor,\n },\n };\n\n return {\n segments,\n chartValue: firstData.value,\n chartTitle: firstData.title?.text,\n sublabel,\n // range values can be null\n minValue: firstData.gauge?.axis?.range?.[0] ?? undefined,\n maxValue: firstData.gauge?.axis?.range?.[1] ?? undefined,\n chartValueFormat: () => firstData.value,\n width: layout?.width,\n height: layout?.height,\n hideLegend: true,\n styles,\n };\n};\n\nfunction isTypedArray(a: any) {\n return ArrayBuffer.isView(a) && !(a instanceof DataView);\n}\n\nfunction isArrayOrTypedArray(a: any) {\n return Array.isArray(a) || isTypedArray(a);\n}\n\nfunction isPlainObject(obj: any) {\n if (window && window.process && window.process.versions) {\n return Object.prototype.toString.call(obj) === '[object Object]';\n }\n\n return (\n Object.prototype.toString.call(obj) === '[object Object]' &&\n Object.getPrototypeOf(obj).hasOwnProperty('hasOwnProperty')\n );\n}\n\nvar arrayAttributes: any[] = [];\nvar stack: any[] = [];\nvar isArrayStack: any[] = [];\nvar baseContainer: any, baseAttrName: any;\n/**\n * Interate iteratively through the trace object and find all the array attributes.\n * 1 trace record = 1 series of data\n * @param trace\n */\nexport function findArrayAttributes(trace: any) {\n // Init basecontainer and baseAttrName\n crawlIntoTrace(baseContainer, 0, '');\n for (const attribute of arrayAttributes) {\n console.log(attribute);\n }\n}\n\nfunction crawlIntoTrace(container: any, i: number, astrPartial: any) {\n var item = container[stack[i]];\n var newAstrPartial = astrPartial + stack[i];\n if (i === stack.length - 1) {\n if (isArrayOrTypedArray(item)) {\n arrayAttributes.push(baseAttrName + newAstrPartial);\n }\n } else {\n if (isArrayStack[i]) {\n if (Array.isArray(item)) {\n for (var j = 0; j < item.length; j++) {\n if (isPlainObject(item[j])) {\n crawlIntoTrace(item[j], i + 1, newAstrPartial + '[' + j + '].');\n }\n }\n }\n } else if (isPlainObject(item)) {\n crawlIntoTrace(item, i + 1, newAstrPartial + '.');\n }\n }\n}\n"]}
|
|
@@ -13,6 +13,7 @@ export declare class LegendsBase extends React.Component<ILegendsProps, ILegendS
|
|
|
13
13
|
private _classNames;
|
|
14
14
|
/** Boolean variable to check if one or more legends are selected */
|
|
15
15
|
private _isLegendSelected;
|
|
16
|
+
static getDerivedStateFromProps(newProps: ILegendsProps, prevState: ILegendState): ILegendState;
|
|
16
17
|
constructor(props: ILegendsProps);
|
|
17
18
|
render(): JSX.Element;
|
|
18
19
|
private _generateData;
|
|
@@ -20,17 +21,22 @@ export declare class LegendsBase extends React.Component<ILegendsProps, ILegendS
|
|
|
20
21
|
private _onReduceData;
|
|
21
22
|
private _onGrowData;
|
|
22
23
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* @param legend ILegend
|
|
24
|
+
* Determine whether the component is in "controlled" mode for selections, where the selected legend(s) are
|
|
25
|
+
* determined entirely by props passed in from the parent component.
|
|
26
26
|
*/
|
|
27
|
-
private
|
|
27
|
+
private _isInControlledMode;
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* @
|
|
29
|
+
* Get the new selected legends based on the legend that was clicked when multi-select is enabled.
|
|
30
|
+
* @param legend The legend that was clicked
|
|
31
|
+
* @returns An object with the new selected legend(s) state data.
|
|
32
32
|
*/
|
|
33
|
-
private
|
|
33
|
+
private _getNewSelectedLegendsForMultiselect;
|
|
34
|
+
/**
|
|
35
|
+
* Get the new selected legends based on the legend that was clicked when single-select is enabled.
|
|
36
|
+
* @param legend The legend that was clicked
|
|
37
|
+
* @returns An object with the new selected legend state data.
|
|
38
|
+
*/
|
|
39
|
+
private _getNewSelectedLegendsForSingleSelect;
|
|
34
40
|
private _onClick;
|
|
35
41
|
private _onRenderCompactCard;
|
|
36
42
|
private _renderOverflowItems;
|