@mui/x-charts-premium 9.0.2 → 9.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BarChartPremium/RangeBar/FocusedRangeBar.js +3 -0
- package/BarChartPremium/RangeBar/FocusedRangeBar.mjs +3 -0
- package/CHANGELOG.md +223 -0
- package/CandlestickChart/CandlestickPlot.js +27 -31
- package/CandlestickChart/CandlestickPlot.mjs +27 -31
- package/CandlestickChart/CandlestickWebGLProgram.js +0 -3
- package/CandlestickChart/CandlestickWebGLProgram.mjs +0 -3
- package/ChartsDataProviderPremium/ChartsDataProviderPremium.js +2 -2
- package/ChartsDataProviderPremium/ChartsDataProviderPremium.mjs +2 -2
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.d.mts +35 -0
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.d.ts +35 -0
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.js +126 -0
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.mjs +120 -0
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.plugins.d.mts +5 -0
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.plugins.d.ts +5 -0
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.plugins.js +9 -0
- package/ChartsRadialDataProviderPremium/ChartsRadialDataProviderPremium.plugins.mjs +3 -0
- package/ChartsRadialDataProviderPremium/index.d.mts +3 -0
- package/ChartsRadialDataProviderPremium/index.d.ts +3 -0
- package/ChartsRadialDataProviderPremium/index.js +20 -0
- package/ChartsRadialDataProviderPremium/index.mjs +3 -0
- package/ChartsRadialDataProviderPremium/useChartsRadialDataProviderPremiumProps.d.mts +10 -0
- package/ChartsRadialDataProviderPremium/useChartsRadialDataProviderPremiumProps.d.ts +10 -0
- package/ChartsRadialDataProviderPremium/useChartsRadialDataProviderPremiumProps.js +25 -0
- package/ChartsRadialDataProviderPremium/useChartsRadialDataProviderPremiumProps.mjs +19 -0
- package/ChartsRadiusAxis/index.d.mts +1 -0
- package/ChartsRadiusAxis/index.d.ts +1 -0
- package/ChartsRadiusAxis/index.js +16 -0
- package/ChartsRadiusAxis/index.mjs +2 -0
- package/ChartsRotationAxis/index.d.mts +1 -0
- package/ChartsRotationAxis/index.d.ts +1 -0
- package/ChartsRotationAxis/index.js +16 -0
- package/ChartsRotationAxis/index.mjs +2 -0
- package/ChartsWebGLLayer/ChartsWebGLContext.d.mts +5 -0
- package/ChartsWebGLLayer/ChartsWebGLContext.d.ts +5 -0
- package/ChartsWebGLLayer/ChartsWebGLContext.js +31 -0
- package/ChartsWebGLLayer/ChartsWebGLContext.mjs +23 -0
- package/ChartsWebGLLayer/ChartsWebGLLayer.d.mts +0 -1
- package/ChartsWebGLLayer/ChartsWebGLLayer.d.ts +0 -1
- package/ChartsWebGLLayer/ChartsWebGLLayer.js +63 -12
- package/ChartsWebGLLayer/ChartsWebGLLayer.mjs +62 -10
- package/ChartsWebGLLayer/ChartsWebGLLayer.types.d.mts +26 -0
- package/ChartsWebGLLayer/ChartsWebGLLayer.types.d.ts +26 -0
- package/ChartsWebGLLayer/ChartsWebGLLayer.types.js +5 -0
- package/ChartsWebGLLayer/ChartsWebGLLayer.types.mjs +1 -0
- package/ChartsWebGLLayer/ChartsWebGLOrderContext.d.mts +6 -0
- package/ChartsWebGLLayer/ChartsWebGLOrderContext.d.ts +6 -0
- package/ChartsWebGLLayer/ChartsWebGLOrderContext.js +15 -0
- package/ChartsWebGLLayer/ChartsWebGLOrderContext.mjs +10 -0
- package/HeatmapPremium/HeatmapPlotPremium.js +2 -2
- package/HeatmapPremium/HeatmapPlotPremium.mjs +2 -2
- package/HeatmapPremium/webgl/HeatmapWebGLPlot.js +26 -33
- package/HeatmapPremium/webgl/HeatmapWebGLPlot.mjs +26 -33
- package/HeatmapPremium/webgl/shaders.d.mts +1 -1
- package/HeatmapPremium/webgl/shaders.d.ts +1 -1
- package/HeatmapPremium/webgl/shaders.js +1 -1
- package/HeatmapPremium/webgl/shaders.mjs +1 -1
- package/RadialBarChart/seriesConfig/axisTooltipGetter.d.mts +2 -0
- package/RadialBarChart/seriesConfig/axisTooltipGetter.d.ts +2 -0
- package/RadialBarChart/seriesConfig/axisTooltipGetter.js +13 -0
- package/RadialBarChart/seriesConfig/axisTooltipGetter.mjs +6 -0
- package/RadialBarChart/seriesConfig/descriptionGetter.d.mts +3 -0
- package/RadialBarChart/seriesConfig/descriptionGetter.d.ts +3 -0
- package/RadialBarChart/seriesConfig/descriptionGetter.js +34 -0
- package/RadialBarChart/seriesConfig/descriptionGetter.mjs +28 -0
- package/RadialBarChart/seriesConfig/extremums.d.mts +3 -0
- package/RadialBarChart/seriesConfig/extremums.d.ts +3 -0
- package/RadialBarChart/seriesConfig/extremums.js +44 -0
- package/RadialBarChart/seriesConfig/extremums.mjs +36 -0
- package/RadialBarChart/seriesConfig/getColor.d.mts +3 -0
- package/RadialBarChart/seriesConfig/getColor.d.ts +3 -0
- package/RadialBarChart/seriesConfig/getColor.js +61 -0
- package/RadialBarChart/seriesConfig/getColor.mjs +55 -0
- package/RadialBarChart/seriesConfig/getSeriesWithDefaultValues.d.mts +3 -0
- package/RadialBarChart/seriesConfig/getSeriesWithDefaultValues.d.ts +3 -0
- package/RadialBarChart/seriesConfig/getSeriesWithDefaultValues.js +16 -0
- package/RadialBarChart/seriesConfig/getSeriesWithDefaultValues.mjs +9 -0
- package/RadialBarChart/seriesConfig/index.d.mts +2 -0
- package/RadialBarChart/seriesConfig/index.d.ts +2 -0
- package/RadialBarChart/seriesConfig/index.js +37 -0
- package/RadialBarChart/seriesConfig/index.mjs +30 -0
- package/RadialBarChart/seriesConfig/keyboardFocusHandler.d.mts +3 -0
- package/RadialBarChart/seriesConfig/keyboardFocusHandler.d.ts +3 -0
- package/RadialBarChart/seriesConfig/keyboardFocusHandler.js +9 -0
- package/RadialBarChart/seriesConfig/keyboardFocusHandler.mjs +3 -0
- package/RadialBarChart/seriesConfig/legend.d.mts +3 -0
- package/RadialBarChart/seriesConfig/legend.d.ts +3 -0
- package/RadialBarChart/seriesConfig/legend.js +9 -0
- package/RadialBarChart/seriesConfig/legend.mjs +3 -0
- package/RadialBarChart/seriesConfig/seriesProcessor.d.mts +3 -0
- package/RadialBarChart/seriesConfig/seriesProcessor.d.ts +3 -0
- package/RadialBarChart/seriesConfig/seriesProcessor.js +137 -0
- package/RadialBarChart/seriesConfig/seriesProcessor.mjs +130 -0
- package/RadialBarChart/seriesConfig/tooltip.d.mts +3 -0
- package/RadialBarChart/seriesConfig/tooltip.d.ts +3 -0
- package/RadialBarChart/seriesConfig/tooltip.js +34 -0
- package/RadialBarChart/seriesConfig/tooltip.mjs +28 -0
- package/RadialBarChart/seriesConfig/tooltipPosition.d.mts +3 -0
- package/RadialBarChart/seriesConfig/tooltipPosition.d.ts +3 -0
- package/RadialBarChart/seriesConfig/tooltipPosition.js +11 -0
- package/RadialBarChart/seriesConfig/tooltipPosition.mjs +5 -0
- package/RadialLineChart/RadialArea.d.mts +12 -0
- package/RadialLineChart/RadialArea.d.ts +12 -0
- package/RadialLineChart/RadialArea.js +33 -0
- package/RadialLineChart/RadialArea.mjs +26 -0
- package/RadialLineChart/RadialAreaPlot.d.mts +5 -0
- package/RadialLineChart/RadialAreaPlot.d.ts +5 -0
- package/RadialLineChart/RadialAreaPlot.js +51 -0
- package/RadialLineChart/RadialAreaPlot.mjs +45 -0
- package/RadialLineChart/RadialLine.d.mts +12 -0
- package/RadialLineChart/RadialLine.d.ts +12 -0
- package/RadialLineChart/RadialLine.js +33 -0
- package/RadialLineChart/RadialLine.mjs +26 -0
- package/RadialLineChart/RadialLineChart.d.mts +62 -0
- package/RadialLineChart/RadialLineChart.d.ts +62 -0
- package/RadialLineChart/RadialLineChart.js +967 -0
- package/RadialLineChart/RadialLineChart.mjs +960 -0
- package/RadialLineChart/RadialLineChart.plugins.d.mts +4 -0
- package/RadialLineChart/RadialLineChart.plugins.d.ts +4 -0
- package/RadialLineChart/RadialLineChart.plugins.js +9 -0
- package/RadialLineChart/RadialLineChart.plugins.mjs +3 -0
- package/RadialLineChart/RadialLinePlot.d.mts +5 -0
- package/RadialLineChart/RadialLinePlot.d.ts +5 -0
- package/RadialLineChart/RadialLinePlot.js +50 -0
- package/RadialLineChart/RadialLinePlot.mjs +44 -0
- package/RadialLineChart/RadialMarkPlot.d.mts +5 -0
- package/RadialLineChart/RadialMarkPlot.d.ts +5 -0
- package/RadialLineChart/RadialMarkPlot.js +62 -0
- package/RadialLineChart/RadialMarkPlot.mjs +56 -0
- package/RadialLineChart/index.d.mts +4 -0
- package/RadialLineChart/index.d.ts +4 -0
- package/RadialLineChart/index.js +49 -0
- package/RadialLineChart/index.mjs +4 -0
- package/RadialLineChart/radialLineClasses.d.mts +25 -0
- package/RadialLineChart/radialLineClasses.d.ts +25 -0
- package/RadialLineChart/radialLineClasses.js +30 -0
- package/RadialLineChart/radialLineClasses.mjs +21 -0
- package/RadialLineChart/seriesConfig/axisTooltipGetter.d.mts +2 -0
- package/RadialLineChart/seriesConfig/axisTooltipGetter.d.ts +2 -0
- package/RadialLineChart/seriesConfig/axisTooltipGetter.js +13 -0
- package/RadialLineChart/seriesConfig/axisTooltipGetter.mjs +6 -0
- package/RadialLineChart/seriesConfig/descriptionGetter.d.mts +3 -0
- package/RadialLineChart/seriesConfig/descriptionGetter.d.ts +3 -0
- package/RadialLineChart/seriesConfig/descriptionGetter.js +39 -0
- package/RadialLineChart/seriesConfig/descriptionGetter.mjs +33 -0
- package/RadialLineChart/seriesConfig/extremums.d.mts +3 -0
- package/RadialLineChart/seriesConfig/extremums.d.ts +3 -0
- package/RadialLineChart/seriesConfig/extremums.js +48 -0
- package/RadialLineChart/seriesConfig/extremums.mjs +40 -0
- package/RadialLineChart/seriesConfig/getColor.d.mts +3 -0
- package/RadialLineChart/seriesConfig/getColor.d.ts +3 -0
- package/RadialLineChart/seriesConfig/getColor.js +61 -0
- package/RadialLineChart/seriesConfig/getColor.mjs +55 -0
- package/RadialLineChart/seriesConfig/getSeriesWithDefaultValues.d.mts +3 -0
- package/RadialLineChart/seriesConfig/getSeriesWithDefaultValues.d.ts +3 -0
- package/RadialLineChart/seriesConfig/getSeriesWithDefaultValues.js +13 -0
- package/RadialLineChart/seriesConfig/getSeriesWithDefaultValues.mjs +6 -0
- package/RadialLineChart/seriesConfig/index.d.mts +2 -0
- package/RadialLineChart/seriesConfig/index.d.ts +2 -0
- package/RadialLineChart/seriesConfig/index.js +37 -0
- package/RadialLineChart/seriesConfig/index.mjs +30 -0
- package/RadialLineChart/seriesConfig/keyboardFocusHandler.d.mts +3 -0
- package/RadialLineChart/seriesConfig/keyboardFocusHandler.d.ts +3 -0
- package/RadialLineChart/seriesConfig/keyboardFocusHandler.js +9 -0
- package/RadialLineChart/seriesConfig/keyboardFocusHandler.mjs +3 -0
- package/RadialLineChart/seriesConfig/legend.d.mts +3 -0
- package/RadialLineChart/seriesConfig/legend.d.ts +3 -0
- package/RadialLineChart/seriesConfig/legend.js +29 -0
- package/RadialLineChart/seriesConfig/legend.mjs +23 -0
- package/RadialLineChart/seriesConfig/seriesProcessor.d.mts +3 -0
- package/RadialLineChart/seriesConfig/seriesProcessor.d.ts +3 -0
- package/RadialLineChart/seriesConfig/seriesProcessor.js +142 -0
- package/RadialLineChart/seriesConfig/seriesProcessor.mjs +135 -0
- package/RadialLineChart/seriesConfig/tooltip.d.mts +3 -0
- package/RadialLineChart/seriesConfig/tooltip.d.ts +3 -0
- package/RadialLineChart/seriesConfig/tooltip.js +32 -0
- package/RadialLineChart/seriesConfig/tooltip.mjs +26 -0
- package/RadialLineChart/seriesConfig/tooltipPosition.d.mts +3 -0
- package/RadialLineChart/seriesConfig/tooltipPosition.d.ts +3 -0
- package/RadialLineChart/seriesConfig/tooltipPosition.js +11 -0
- package/RadialLineChart/seriesConfig/tooltipPosition.mjs +5 -0
- package/RadialLineChart/useRadialLineChartProps.d.mts +28 -0
- package/RadialLineChart/useRadialLineChartProps.d.ts +28 -0
- package/RadialLineChart/useRadialLineChartProps.js +99 -0
- package/RadialLineChart/useRadialLineChartProps.mjs +92 -0
- package/RadialLineChart/useRadialLinePlotData.d.mts +21 -0
- package/RadialLineChart/useRadialLinePlotData.d.ts +21 -0
- package/RadialLineChart/useRadialLinePlotData.js +82 -0
- package/RadialLineChart/useRadialLinePlotData.mjs +75 -0
- package/hooks/useRadialLineSeries.d.mts +34 -0
- package/hooks/useRadialLineSeries.d.ts +34 -0
- package/hooks/useRadialLineSeries.js +45 -0
- package/hooks/useRadialLineSeries.mjs +40 -0
- package/index.d.mts +7 -1
- package/index.d.ts +7 -1
- package/index.js +69 -1
- package/index.mjs +8 -2
- package/models/seriesType/index.d.mts +3 -1
- package/models/seriesType/index.d.ts +3 -1
- package/models/seriesType/index.js +22 -0
- package/models/seriesType/index.mjs +3 -1
- package/models/seriesType/radialBar.d.mts +23 -0
- package/models/seriesType/radialBar.d.ts +23 -0
- package/models/seriesType/radialBar.js +5 -0
- package/models/seriesType/radialBar.mjs +1 -0
- package/models/seriesType/radialLine.d.mts +26 -0
- package/models/seriesType/radialLine.d.ts +26 -0
- package/models/seriesType/radialLine.js +5 -0
- package/models/seriesType/radialLine.mjs +1 -0
- package/package.json +62 -6
- package/typeOverloads/modules.d.mts +48 -2
- package/typeOverloads/modules.d.ts +48 -2
- package/utils/webgl/useWebGLResizeObserver.d.mts +3 -2
- package/utils/webgl/useWebGLResizeObserver.d.ts +3 -2
- package/utils/webgl/useWebGLResizeObserver.js +3 -4
- package/utils/webgl/useWebGLResizeObserver.mjs +3 -4
- package/HeatmapPremium/webgl/HeatmapWebGLRenderer.d.mts +0 -4
- package/HeatmapPremium/webgl/HeatmapWebGLRenderer.d.ts +0 -4
- package/HeatmapPremium/webgl/HeatmapWebGLRenderer.js +0 -21
- package/HeatmapPremium/webgl/HeatmapWebGLRenderer.mjs +0 -15
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.rotationExtremumGetter = exports.radiusExtremumGetter = void 0;
|
|
7
|
+
var _internals = require("@mui/x-charts/internals");
|
|
8
|
+
const getValueExtremum = direction => params => {
|
|
9
|
+
const {
|
|
10
|
+
series,
|
|
11
|
+
axis,
|
|
12
|
+
isDefaultAxis
|
|
13
|
+
} = params;
|
|
14
|
+
return Object.keys(series).filter(seriesId => {
|
|
15
|
+
const axisId = direction === 'rotation' ? series[seriesId].rotationAxisId : series[seriesId].radiusAxisId;
|
|
16
|
+
return axisId === axis.id || isDefaultAxis && axisId === undefined;
|
|
17
|
+
}).reduce((acc, seriesId) => {
|
|
18
|
+
const {
|
|
19
|
+
stackedData
|
|
20
|
+
} = series[seriesId];
|
|
21
|
+
const [seriesMin, seriesMax] = stackedData?.reduce((seriesAcc, values) => {
|
|
22
|
+
return [Math.min(...values, seriesAcc[0]), Math.max(...values, seriesAcc[1])];
|
|
23
|
+
}, [Infinity, -Infinity]) ?? [Infinity, -Infinity];
|
|
24
|
+
return [Math.min(seriesMin, acc[0]), Math.max(seriesMax, acc[1])];
|
|
25
|
+
}, [Infinity, -Infinity]);
|
|
26
|
+
};
|
|
27
|
+
const rotationExtremumGetter = params => {
|
|
28
|
+
// Notice that bar should be all horizontal or all vertical.
|
|
29
|
+
|
|
30
|
+
const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');
|
|
31
|
+
if (isHorizontal) {
|
|
32
|
+
return getValueExtremum('rotation')(params);
|
|
33
|
+
}
|
|
34
|
+
return (0, _internals.findMinMax)(params.axis.data ?? []);
|
|
35
|
+
};
|
|
36
|
+
exports.rotationExtremumGetter = rotationExtremumGetter;
|
|
37
|
+
const radiusExtremumGetter = params => {
|
|
38
|
+
const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');
|
|
39
|
+
if (isHorizontal) {
|
|
40
|
+
return (0, _internals.findMinMax)(params.axis.data ?? []);
|
|
41
|
+
}
|
|
42
|
+
return getValueExtremum('radius')(params);
|
|
43
|
+
};
|
|
44
|
+
exports.radiusExtremumGetter = radiusExtremumGetter;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { findMinMax } from '@mui/x-charts/internals';
|
|
2
|
+
const getValueExtremum = direction => params => {
|
|
3
|
+
const {
|
|
4
|
+
series,
|
|
5
|
+
axis,
|
|
6
|
+
isDefaultAxis
|
|
7
|
+
} = params;
|
|
8
|
+
return Object.keys(series).filter(seriesId => {
|
|
9
|
+
const axisId = direction === 'rotation' ? series[seriesId].rotationAxisId : series[seriesId].radiusAxisId;
|
|
10
|
+
return axisId === axis.id || isDefaultAxis && axisId === undefined;
|
|
11
|
+
}).reduce((acc, seriesId) => {
|
|
12
|
+
const {
|
|
13
|
+
stackedData
|
|
14
|
+
} = series[seriesId];
|
|
15
|
+
const [seriesMin, seriesMax] = stackedData?.reduce((seriesAcc, values) => {
|
|
16
|
+
return [Math.min(...values, seriesAcc[0]), Math.max(...values, seriesAcc[1])];
|
|
17
|
+
}, [Infinity, -Infinity]) ?? [Infinity, -Infinity];
|
|
18
|
+
return [Math.min(seriesMin, acc[0]), Math.max(seriesMax, acc[1])];
|
|
19
|
+
}, [Infinity, -Infinity]);
|
|
20
|
+
};
|
|
21
|
+
export const rotationExtremumGetter = params => {
|
|
22
|
+
// Notice that bar should be all horizontal or all vertical.
|
|
23
|
+
|
|
24
|
+
const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');
|
|
25
|
+
if (isHorizontal) {
|
|
26
|
+
return getValueExtremum('rotation')(params);
|
|
27
|
+
}
|
|
28
|
+
return findMinMax(params.axis.data ?? []);
|
|
29
|
+
};
|
|
30
|
+
export const radiusExtremumGetter = params => {
|
|
31
|
+
const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');
|
|
32
|
+
if (isHorizontal) {
|
|
33
|
+
return findMinMax(params.axis.data ?? []);
|
|
34
|
+
}
|
|
35
|
+
return getValueExtremum('radius')(params);
|
|
36
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _internals = require("@mui/x-charts/internals");
|
|
8
|
+
const getColor = (series, rotationAxis, radiusAxis) => {
|
|
9
|
+
const yColorScale = radiusAxis?.colorScale;
|
|
10
|
+
const xColorScale = rotationAxis?.colorScale;
|
|
11
|
+
const getSeriesColor = (0, _internals.getSeriesColorFn)(series);
|
|
12
|
+
if (yColorScale) {
|
|
13
|
+
return dataIndex => {
|
|
14
|
+
if (dataIndex === undefined) {
|
|
15
|
+
return series.color;
|
|
16
|
+
}
|
|
17
|
+
const value = series.data[dataIndex];
|
|
18
|
+
const color = value === null ? getSeriesColor({
|
|
19
|
+
value,
|
|
20
|
+
dataIndex
|
|
21
|
+
}) : yColorScale(value);
|
|
22
|
+
if (color === null) {
|
|
23
|
+
return getSeriesColor({
|
|
24
|
+
value,
|
|
25
|
+
dataIndex
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return color;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (xColorScale) {
|
|
32
|
+
return dataIndex => {
|
|
33
|
+
if (dataIndex === undefined) {
|
|
34
|
+
return series.color;
|
|
35
|
+
}
|
|
36
|
+
const value = rotationAxis.data?.[dataIndex];
|
|
37
|
+
const color = value === null ? getSeriesColor({
|
|
38
|
+
value,
|
|
39
|
+
dataIndex
|
|
40
|
+
}) : xColorScale(value);
|
|
41
|
+
if (color === null) {
|
|
42
|
+
return getSeriesColor({
|
|
43
|
+
value,
|
|
44
|
+
dataIndex
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return color;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return dataIndex => {
|
|
51
|
+
if (dataIndex === undefined) {
|
|
52
|
+
return series.color;
|
|
53
|
+
}
|
|
54
|
+
const value = series.data[dataIndex];
|
|
55
|
+
return getSeriesColor({
|
|
56
|
+
value,
|
|
57
|
+
dataIndex
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
var _default = exports.default = getColor;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { getSeriesColorFn } from '@mui/x-charts/internals';
|
|
2
|
+
const getColor = (series, rotationAxis, radiusAxis) => {
|
|
3
|
+
const yColorScale = radiusAxis?.colorScale;
|
|
4
|
+
const xColorScale = rotationAxis?.colorScale;
|
|
5
|
+
const getSeriesColor = getSeriesColorFn(series);
|
|
6
|
+
if (yColorScale) {
|
|
7
|
+
return dataIndex => {
|
|
8
|
+
if (dataIndex === undefined) {
|
|
9
|
+
return series.color;
|
|
10
|
+
}
|
|
11
|
+
const value = series.data[dataIndex];
|
|
12
|
+
const color = value === null ? getSeriesColor({
|
|
13
|
+
value,
|
|
14
|
+
dataIndex
|
|
15
|
+
}) : yColorScale(value);
|
|
16
|
+
if (color === null) {
|
|
17
|
+
return getSeriesColor({
|
|
18
|
+
value,
|
|
19
|
+
dataIndex
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return color;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (xColorScale) {
|
|
26
|
+
return dataIndex => {
|
|
27
|
+
if (dataIndex === undefined) {
|
|
28
|
+
return series.color;
|
|
29
|
+
}
|
|
30
|
+
const value = rotationAxis.data?.[dataIndex];
|
|
31
|
+
const color = value === null ? getSeriesColor({
|
|
32
|
+
value,
|
|
33
|
+
dataIndex
|
|
34
|
+
}) : xColorScale(value);
|
|
35
|
+
if (color === null) {
|
|
36
|
+
return getSeriesColor({
|
|
37
|
+
value,
|
|
38
|
+
dataIndex
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return color;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return dataIndex => {
|
|
45
|
+
if (dataIndex === undefined) {
|
|
46
|
+
return series.color;
|
|
47
|
+
}
|
|
48
|
+
const value = series.data[dataIndex];
|
|
49
|
+
return getSeriesColor({
|
|
50
|
+
value,
|
|
51
|
+
dataIndex
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
export default getColor;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
const getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => (0, _extends2.default)({
|
|
10
|
+
layout: 'vertical',
|
|
11
|
+
minBarSize: 0
|
|
12
|
+
}, seriesData, {
|
|
13
|
+
id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,
|
|
14
|
+
color: seriesData.color ?? colors[seriesIndex % colors.length]
|
|
15
|
+
});
|
|
16
|
+
var _default = exports.default = getSeriesWithDefaultValues;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
const getSeriesWithDefaultValues = (seriesData, seriesIndex, colors) => _extends({
|
|
3
|
+
layout: 'vertical',
|
|
4
|
+
minBarSize: 0
|
|
5
|
+
}, seriesData, {
|
|
6
|
+
id: seriesData.id ?? `auto-generated-id-${seriesIndex}`,
|
|
7
|
+
color: seriesData.color ?? colors[seriesIndex % colors.length]
|
|
8
|
+
});
|
|
9
|
+
export default getSeriesWithDefaultValues;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.radialBarSeriesConfig = void 0;
|
|
8
|
+
var _internals = require("@mui/x-charts/internals");
|
|
9
|
+
var _legend = _interopRequireDefault(require("./legend"));
|
|
10
|
+
var _tooltipPosition = _interopRequireDefault(require("./tooltipPosition"));
|
|
11
|
+
var _keyboardFocusHandler = _interopRequireDefault(require("./keyboardFocusHandler"));
|
|
12
|
+
var _axisTooltipGetter = require("./axisTooltipGetter");
|
|
13
|
+
var _getColor = _interopRequireDefault(require("./getColor"));
|
|
14
|
+
var _seriesProcessor = _interopRequireDefault(require("./seriesProcessor"));
|
|
15
|
+
var _getSeriesWithDefaultValues = _interopRequireDefault(require("./getSeriesWithDefaultValues"));
|
|
16
|
+
var _descriptionGetter = _interopRequireDefault(require("./descriptionGetter"));
|
|
17
|
+
var _extremums = require("./extremums");
|
|
18
|
+
var _tooltip = _interopRequireDefault(require("./tooltip"));
|
|
19
|
+
_internals.polarSeriesTypes.addType('radialBar');
|
|
20
|
+
const radialBarSeriesConfig = exports.radialBarSeriesConfig = {
|
|
21
|
+
colorProcessor: _getColor.default,
|
|
22
|
+
seriesProcessor: _seriesProcessor.default,
|
|
23
|
+
legendGetter: _legend.default,
|
|
24
|
+
tooltipGetter: _tooltip.default,
|
|
25
|
+
tooltipItemPositionGetter: _tooltipPosition.default,
|
|
26
|
+
axisTooltipGetter: _axisTooltipGetter.axisTooltipGetter,
|
|
27
|
+
rotationExtremumGetter: _extremums.rotationExtremumGetter,
|
|
28
|
+
radiusExtremumGetter: _extremums.radiusExtremumGetter,
|
|
29
|
+
getSeriesWithDefaultValues: _getSeriesWithDefaultValues.default,
|
|
30
|
+
// getItemAtPosition,
|
|
31
|
+
keyboardFocusHandler: _keyboardFocusHandler.default,
|
|
32
|
+
identifierSerializer: _internals.identifierSerializerSeriesIdDataIndex,
|
|
33
|
+
identifierCleaner: _internals.identifierCleanerSeriesIdDataIndex,
|
|
34
|
+
descriptionGetter: _descriptionGetter.default,
|
|
35
|
+
isHighlightedCreator: _internals.createIsHighlighted,
|
|
36
|
+
isFadedCreator: _internals.createIsFaded
|
|
37
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { identifierSerializerSeriesIdDataIndex, identifierCleanerSeriesIdDataIndex, createIsHighlighted, createIsFaded, polarSeriesTypes } from '@mui/x-charts/internals';
|
|
2
|
+
import legendGetter from "./legend.mjs";
|
|
3
|
+
import tooltipItemPositionGetter from "./tooltipPosition.mjs";
|
|
4
|
+
import keyboardFocusHandler from "./keyboardFocusHandler.mjs";
|
|
5
|
+
import { axisTooltipGetter } from "./axisTooltipGetter.mjs";
|
|
6
|
+
import colorProcessor from "./getColor.mjs";
|
|
7
|
+
import seriesProcessor from "./seriesProcessor.mjs";
|
|
8
|
+
import getSeriesWithDefaultValues from "./getSeriesWithDefaultValues.mjs";
|
|
9
|
+
import descriptionGetter from "./descriptionGetter.mjs";
|
|
10
|
+
import { radiusExtremumGetter, rotationExtremumGetter } from "./extremums.mjs";
|
|
11
|
+
import tooltipGetter from "./tooltip.mjs";
|
|
12
|
+
polarSeriesTypes.addType('radialBar');
|
|
13
|
+
export const radialBarSeriesConfig = {
|
|
14
|
+
colorProcessor,
|
|
15
|
+
seriesProcessor,
|
|
16
|
+
legendGetter,
|
|
17
|
+
tooltipGetter,
|
|
18
|
+
tooltipItemPositionGetter,
|
|
19
|
+
axisTooltipGetter,
|
|
20
|
+
rotationExtremumGetter,
|
|
21
|
+
radiusExtremumGetter,
|
|
22
|
+
getSeriesWithDefaultValues,
|
|
23
|
+
// getItemAtPosition,
|
|
24
|
+
keyboardFocusHandler,
|
|
25
|
+
identifierSerializer: identifierSerializerSeriesIdDataIndex,
|
|
26
|
+
identifierCleaner: identifierCleanerSeriesIdDataIndex,
|
|
27
|
+
descriptionGetter,
|
|
28
|
+
isHighlightedCreator: createIsHighlighted,
|
|
29
|
+
isFadedCreator: createIsFaded
|
|
30
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _internals = require("@mui/x-charts/internals");
|
|
8
|
+
const keyboardFocusHandler = (0, _internals.createCommonKeyboardFocusHandler)(_internals.composableRadialSeriesTypes);
|
|
9
|
+
var _default = exports.default = keyboardFocusHandler;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _internals = require("@mui/x-charts/internals");
|
|
8
|
+
const legendGetter = series => (0, _internals.getSeriesLegendItems)('radialBar', series, 'square');
|
|
9
|
+
var _default = exports.default = legendGetter;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SeriesProcessorParams, SeriesProcessorResult, IsItemVisibleFunction, DatasetType } from '@mui/x-charts/internals';
|
|
2
|
+
declare function seriesProcessor(params: SeriesProcessorParams<'radialBar'>, dataset?: Readonly<DatasetType>, isItemVisible?: IsItemVisibleFunction): SeriesProcessorResult<'radialBar'>;
|
|
3
|
+
export default seriesProcessor;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SeriesProcessorParams, SeriesProcessorResult, IsItemVisibleFunction, DatasetType } from '@mui/x-charts/internals';
|
|
2
|
+
declare function seriesProcessor(params: SeriesProcessorParams<'radialBar'>, dataset?: Readonly<DatasetType>, isItemVisible?: IsItemVisibleFunction): SeriesProcessorResult<'radialBar'>;
|
|
3
|
+
export default seriesProcessor;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _formatErrorMessage2 = _interopRequireDefault(require("@mui/x-internals/formatErrorMessage"));
|
|
10
|
+
var _d3Shape = require("@mui/x-charts-vendor/d3-shape");
|
|
11
|
+
var _warning = require("@mui/x-internals/warning");
|
|
12
|
+
var _internals = require("@mui/x-charts/internals");
|
|
13
|
+
const radialBarValueFormatter = v => v == null ? '' : v.toLocaleString();
|
|
14
|
+
function seriesProcessor(params, dataset, isItemVisible) {
|
|
15
|
+
const {
|
|
16
|
+
seriesOrder,
|
|
17
|
+
series
|
|
18
|
+
} = params;
|
|
19
|
+
const stackingGroups = (0, _internals.getStackingGroups)(params);
|
|
20
|
+
|
|
21
|
+
// Create a data set with format adapted to d3
|
|
22
|
+
const d3Dataset = dataset ?? [];
|
|
23
|
+
seriesOrder.forEach(id => {
|
|
24
|
+
const data = series[id].data;
|
|
25
|
+
if (data !== undefined) {
|
|
26
|
+
data.forEach((value, dataIndex) => {
|
|
27
|
+
if (d3Dataset.length <= dataIndex) {
|
|
28
|
+
d3Dataset.push({
|
|
29
|
+
[id]: value
|
|
30
|
+
});
|
|
31
|
+
} else {
|
|
32
|
+
d3Dataset[dataIndex][id] = value;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
} else if (series[id].valueGetter && dataset) {
|
|
36
|
+
// When valueGetter is used without dataKey, populate d3Dataset with the series id as key
|
|
37
|
+
dataset.forEach((entry, dataIndex) => {
|
|
38
|
+
const value = series[id].valueGetter(entry);
|
|
39
|
+
if (d3Dataset.length <= dataIndex) {
|
|
40
|
+
d3Dataset.push({
|
|
41
|
+
[id]: value
|
|
42
|
+
});
|
|
43
|
+
} else {
|
|
44
|
+
d3Dataset[dataIndex][id] = value;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
} else if (dataset === undefined && process.env.NODE_ENV !== 'production') {
|
|
48
|
+
throw new Error(process.env.NODE_ENV !== "production" ? `MUI X Charts: Radial bar series with id="${id}" has no data. ` + 'The chart cannot render this series without data. ' + 'Provide a data property to the series or use the dataset prop.' : (0, _formatErrorMessage2.default)(269, id));
|
|
49
|
+
}
|
|
50
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
51
|
+
if (!data && dataset) {
|
|
52
|
+
const dataKey = series[id].dataKey;
|
|
53
|
+
if (!dataKey && !series[id].valueGetter) {
|
|
54
|
+
throw new Error(`MUI X Charts: Radial bar series with id="${id}" has no data, no dataKey, and no valueGetter. ` + 'When using the dataset prop, each series must have a dataKey or valueGetter to identify which dataset values to use. ' + 'Add a dataKey or valueGetter property to the series configuration.');
|
|
55
|
+
}
|
|
56
|
+
if (dataKey) {
|
|
57
|
+
dataset.forEach((entry, index) => {
|
|
58
|
+
const value = entry[dataKey];
|
|
59
|
+
if (value != null && typeof value !== 'number') {
|
|
60
|
+
(0, _warning.warnOnce)(`MUI X Charts: your dataset key "${dataKey}" is used for plotting radial bars, but the dataset contains the non-null non-numerical element "${value}" at index ${index}.
|
|
61
|
+
Radial bar plots only support numeric and null values.`);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
const completedSeries = {};
|
|
69
|
+
stackingGroups.forEach(stackingGroup => {
|
|
70
|
+
const {
|
|
71
|
+
ids,
|
|
72
|
+
stackingOffset,
|
|
73
|
+
stackingOrder
|
|
74
|
+
} = stackingGroup;
|
|
75
|
+
const keys = ids.map(id => {
|
|
76
|
+
// Use dataKey if needed and available
|
|
77
|
+
const dataKey = series[id].dataKey;
|
|
78
|
+
return series[id].data === undefined && dataKey !== undefined ? dataKey : id;
|
|
79
|
+
});
|
|
80
|
+
const stackedData = (0, _d3Shape.stack)().keys(keys).value((d, key) => d[key] ?? 0) // defaultize null value to 0
|
|
81
|
+
.order(stackingOrder).offset(stackingOffset)(d3Dataset);
|
|
82
|
+
const idOrder = stackedData.map(s => s.index);
|
|
83
|
+
const fixedOrder = () => idOrder;
|
|
84
|
+
|
|
85
|
+
// Compute visible stacked data
|
|
86
|
+
const visibleStackedData = (0, _d3Shape.stack)().keys(keys).value((d, key) => {
|
|
87
|
+
const keyIndex = keys.indexOf(key);
|
|
88
|
+
const seriesId = ids[keyIndex];
|
|
89
|
+
if (!isItemVisible?.({
|
|
90
|
+
type: 'radialBar',
|
|
91
|
+
seriesId
|
|
92
|
+
})) {
|
|
93
|
+
// For hidden series, return 0 so they don't contribute to the stack
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
96
|
+
return d[key] ?? 0;
|
|
97
|
+
}).order(fixedOrder).offset(stackingOffset)(d3Dataset);
|
|
98
|
+
ids.forEach((id, index) => {
|
|
99
|
+
const {
|
|
100
|
+
dataKey,
|
|
101
|
+
valueGetter
|
|
102
|
+
} = series[id];
|
|
103
|
+
let data;
|
|
104
|
+
if (valueGetter) {
|
|
105
|
+
data = dataset.map(d => valueGetter(d));
|
|
106
|
+
} else if (dataKey) {
|
|
107
|
+
data = dataset.map(d => {
|
|
108
|
+
const value = d[dataKey];
|
|
109
|
+
return typeof value === 'number' ? value : null;
|
|
110
|
+
});
|
|
111
|
+
} else {
|
|
112
|
+
data = series[id].data;
|
|
113
|
+
}
|
|
114
|
+
const hidden = !isItemVisible?.({
|
|
115
|
+
type: 'radialBar',
|
|
116
|
+
seriesId: id
|
|
117
|
+
});
|
|
118
|
+
completedSeries[id] = (0, _extends2.default)({
|
|
119
|
+
layout: 'vertical',
|
|
120
|
+
labelMarkType: 'square',
|
|
121
|
+
minBarSize: 0,
|
|
122
|
+
valueFormatter: series[id].valueFormatter ?? radialBarValueFormatter
|
|
123
|
+
}, series[id], {
|
|
124
|
+
data,
|
|
125
|
+
hidden,
|
|
126
|
+
stackedData: stackedData[index],
|
|
127
|
+
visibleStackedData: visibleStackedData[index]
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
return {
|
|
132
|
+
seriesOrder,
|
|
133
|
+
stackingGroups,
|
|
134
|
+
series: completedSeries
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
var _default = exports.default = seriesProcessor;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _formatErrorMessage from "@mui/x-internals/formatErrorMessage";
|
|
3
|
+
import { stack as d3Stack } from '@mui/x-charts-vendor/d3-shape';
|
|
4
|
+
import { warnOnce } from '@mui/x-internals/warning';
|
|
5
|
+
import { getStackingGroups } from '@mui/x-charts/internals';
|
|
6
|
+
const radialBarValueFormatter = v => v == null ? '' : v.toLocaleString();
|
|
7
|
+
function seriesProcessor(params, dataset, isItemVisible) {
|
|
8
|
+
const {
|
|
9
|
+
seriesOrder,
|
|
10
|
+
series
|
|
11
|
+
} = params;
|
|
12
|
+
const stackingGroups = getStackingGroups(params);
|
|
13
|
+
|
|
14
|
+
// Create a data set with format adapted to d3
|
|
15
|
+
const d3Dataset = dataset ?? [];
|
|
16
|
+
seriesOrder.forEach(id => {
|
|
17
|
+
const data = series[id].data;
|
|
18
|
+
if (data !== undefined) {
|
|
19
|
+
data.forEach((value, dataIndex) => {
|
|
20
|
+
if (d3Dataset.length <= dataIndex) {
|
|
21
|
+
d3Dataset.push({
|
|
22
|
+
[id]: value
|
|
23
|
+
});
|
|
24
|
+
} else {
|
|
25
|
+
d3Dataset[dataIndex][id] = value;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
} else if (series[id].valueGetter && dataset) {
|
|
29
|
+
// When valueGetter is used without dataKey, populate d3Dataset with the series id as key
|
|
30
|
+
dataset.forEach((entry, dataIndex) => {
|
|
31
|
+
const value = series[id].valueGetter(entry);
|
|
32
|
+
if (d3Dataset.length <= dataIndex) {
|
|
33
|
+
d3Dataset.push({
|
|
34
|
+
[id]: value
|
|
35
|
+
});
|
|
36
|
+
} else {
|
|
37
|
+
d3Dataset[dataIndex][id] = value;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
} else if (dataset === undefined && process.env.NODE_ENV !== 'production') {
|
|
41
|
+
throw new Error(process.env.NODE_ENV !== "production" ? `MUI X Charts: Radial bar series with id="${id}" has no data. ` + 'The chart cannot render this series without data. ' + 'Provide a data property to the series or use the dataset prop.' : _formatErrorMessage(269, id));
|
|
42
|
+
}
|
|
43
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
44
|
+
if (!data && dataset) {
|
|
45
|
+
const dataKey = series[id].dataKey;
|
|
46
|
+
if (!dataKey && !series[id].valueGetter) {
|
|
47
|
+
throw new Error(`MUI X Charts: Radial bar series with id="${id}" has no data, no dataKey, and no valueGetter. ` + 'When using the dataset prop, each series must have a dataKey or valueGetter to identify which dataset values to use. ' + 'Add a dataKey or valueGetter property to the series configuration.');
|
|
48
|
+
}
|
|
49
|
+
if (dataKey) {
|
|
50
|
+
dataset.forEach((entry, index) => {
|
|
51
|
+
const value = entry[dataKey];
|
|
52
|
+
if (value != null && typeof value !== 'number') {
|
|
53
|
+
warnOnce(`MUI X Charts: your dataset key "${dataKey}" is used for plotting radial bars, but the dataset contains the non-null non-numerical element "${value}" at index ${index}.
|
|
54
|
+
Radial bar plots only support numeric and null values.`);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
const completedSeries = {};
|
|
62
|
+
stackingGroups.forEach(stackingGroup => {
|
|
63
|
+
const {
|
|
64
|
+
ids,
|
|
65
|
+
stackingOffset,
|
|
66
|
+
stackingOrder
|
|
67
|
+
} = stackingGroup;
|
|
68
|
+
const keys = ids.map(id => {
|
|
69
|
+
// Use dataKey if needed and available
|
|
70
|
+
const dataKey = series[id].dataKey;
|
|
71
|
+
return series[id].data === undefined && dataKey !== undefined ? dataKey : id;
|
|
72
|
+
});
|
|
73
|
+
const stackedData = d3Stack().keys(keys).value((d, key) => d[key] ?? 0) // defaultize null value to 0
|
|
74
|
+
.order(stackingOrder).offset(stackingOffset)(d3Dataset);
|
|
75
|
+
const idOrder = stackedData.map(s => s.index);
|
|
76
|
+
const fixedOrder = () => idOrder;
|
|
77
|
+
|
|
78
|
+
// Compute visible stacked data
|
|
79
|
+
const visibleStackedData = d3Stack().keys(keys).value((d, key) => {
|
|
80
|
+
const keyIndex = keys.indexOf(key);
|
|
81
|
+
const seriesId = ids[keyIndex];
|
|
82
|
+
if (!isItemVisible?.({
|
|
83
|
+
type: 'radialBar',
|
|
84
|
+
seriesId
|
|
85
|
+
})) {
|
|
86
|
+
// For hidden series, return 0 so they don't contribute to the stack
|
|
87
|
+
return 0;
|
|
88
|
+
}
|
|
89
|
+
return d[key] ?? 0;
|
|
90
|
+
}).order(fixedOrder).offset(stackingOffset)(d3Dataset);
|
|
91
|
+
ids.forEach((id, index) => {
|
|
92
|
+
const {
|
|
93
|
+
dataKey,
|
|
94
|
+
valueGetter
|
|
95
|
+
} = series[id];
|
|
96
|
+
let data;
|
|
97
|
+
if (valueGetter) {
|
|
98
|
+
data = dataset.map(d => valueGetter(d));
|
|
99
|
+
} else if (dataKey) {
|
|
100
|
+
data = dataset.map(d => {
|
|
101
|
+
const value = d[dataKey];
|
|
102
|
+
return typeof value === 'number' ? value : null;
|
|
103
|
+
});
|
|
104
|
+
} else {
|
|
105
|
+
data = series[id].data;
|
|
106
|
+
}
|
|
107
|
+
const hidden = !isItemVisible?.({
|
|
108
|
+
type: 'radialBar',
|
|
109
|
+
seriesId: id
|
|
110
|
+
});
|
|
111
|
+
completedSeries[id] = _extends({
|
|
112
|
+
layout: 'vertical',
|
|
113
|
+
labelMarkType: 'square',
|
|
114
|
+
minBarSize: 0,
|
|
115
|
+
valueFormatter: series[id].valueFormatter ?? radialBarValueFormatter
|
|
116
|
+
}, series[id], {
|
|
117
|
+
data,
|
|
118
|
+
hidden,
|
|
119
|
+
stackedData: stackedData[index],
|
|
120
|
+
visibleStackedData: visibleStackedData[index]
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
return {
|
|
125
|
+
seriesOrder,
|
|
126
|
+
stackingGroups,
|
|
127
|
+
series: completedSeries
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export default seriesProcessor;
|