@mui/x-charts 6.0.0-alpha.1 → 6.0.0-alpha.2
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/BarChart/BarChart.js +1 -0
- package/BarChart/legend.d.ts +3 -0
- package/BarChart/legend.js +20 -0
- package/CHANGELOG.md +62 -0
- package/ChartsLegend/ChartsLegend.d.ts +5 -1
- package/ChartsLegend/ChartsLegend.js +5 -1
- package/ChartsLegend/utils.d.ts +1 -1
- package/ChartsLegend/utils.js +12 -1
- package/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
- package/ChartsTooltip/ChartsItemTooltipContent.js +11 -2
- package/LineChart/LineChart.js +1 -0
- package/LineChart/legend.d.ts +3 -0
- package/LineChart/legend.js +20 -0
- package/PieChart/PieArc.d.ts +36 -0
- package/PieChart/PieArc.js +128 -0
- package/PieChart/PieArcLabel.d.ts +36 -0
- package/PieChart/PieArcLabel.js +113 -0
- package/PieChart/PieChart.d.ts +20 -0
- package/PieChart/PieChart.js +292 -0
- package/PieChart/PiePlot.d.ts +2 -0
- package/PieChart/PiePlot.js +98 -0
- package/PieChart/formatter.d.ts +3 -0
- package/PieChart/formatter.js +49 -0
- package/PieChart/index.d.ts +4 -0
- package/PieChart/index.js +47 -0
- package/PieChart/legend.d.ts +3 -0
- package/PieChart/legend.js +19 -0
- package/PieChart/package.json +6 -0
- package/README.md +2 -2
- package/ResponsiveChartContainer/index.js +14 -3
- package/ScatterChart/Scatter.js +1 -1
- package/ScatterChart/ScatterChart.js +1 -0
- package/ScatterChart/legend.d.ts +3 -0
- package/ScatterChart/legend.js +20 -0
- package/context/SeriesContextProvider.js +11 -1
- package/esm/BarChart/BarChart.js +1 -0
- package/esm/BarChart/legend.js +13 -0
- package/esm/ChartsLegend/ChartsLegend.js +5 -1
- package/esm/ChartsLegend/utils.js +11 -1
- package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
- package/esm/ChartsTooltip/ChartsItemTooltipContent.js +11 -3
- package/esm/LineChart/LineChart.js +1 -0
- package/esm/LineChart/legend.js +13 -0
- package/esm/PieChart/PieArc.js +117 -0
- package/esm/PieChart/PieArcLabel.js +101 -0
- package/esm/PieChart/PieChart.js +285 -0
- package/esm/PieChart/PiePlot.js +92 -0
- package/esm/PieChart/formatter.js +48 -0
- package/esm/PieChart/index.js +4 -0
- package/esm/PieChart/legend.js +12 -0
- package/esm/ResponsiveChartContainer/index.js +14 -3
- package/esm/ScatterChart/Scatter.js +1 -1
- package/esm/ScatterChart/ScatterChart.js +1 -0
- package/esm/ScatterChart/legend.js +13 -0
- package/esm/context/SeriesContextProvider.js +11 -1
- package/esm/index.js +1 -0
- package/esm/internals/defaultizeColor.js +7 -0
- package/esm/models/seriesType/index.js +1 -8
- package/index.d.ts +1 -0
- package/index.js +12 -1
- package/internals/defaultizeColor.d.ts +35 -0
- package/internals/defaultizeColor.js +7 -0
- package/legacy/BarChart/BarChart.js +1 -0
- package/legacy/BarChart/legend.js +15 -0
- package/legacy/ChartsLegend/ChartsLegend.js +5 -1
- package/legacy/ChartsLegend/utils.js +12 -6
- package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +3 -1
- package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +10 -3
- package/legacy/LineChart/LineChart.js +1 -0
- package/legacy/LineChart/legend.js +15 -0
- package/legacy/PieChart/PieArc.js +118 -0
- package/legacy/PieChart/PieArcLabel.js +101 -0
- package/legacy/PieChart/PieChart.js +297 -0
- package/legacy/PieChart/PiePlot.js +89 -0
- package/legacy/PieChart/formatter.js +55 -0
- package/legacy/PieChart/index.js +4 -0
- package/legacy/PieChart/legend.js +16 -0
- package/legacy/ResponsiveChartContainer/index.js +12 -3
- package/legacy/ScatterChart/Scatter.js +1 -1
- package/legacy/ScatterChart/ScatterChart.js +1 -0
- package/legacy/ScatterChart/legend.js +15 -0
- package/legacy/context/SeriesContextProvider.js +11 -1
- package/legacy/index.js +2 -1
- package/legacy/internals/defaultizeColor.js +9 -0
- package/legacy/models/seriesType/index.js +1 -8
- package/models/seriesType/bar.d.ts +1 -1
- package/models/seriesType/common.d.ts +1 -1
- package/models/seriesType/config.d.ts +29 -2
- package/models/seriesType/index.d.ts +7 -3
- package/models/seriesType/index.js +11 -0
- package/models/seriesType/line.d.ts +1 -1
- package/models/seriesType/pie.d.ts +103 -3
- package/models/seriesType/scatter.d.ts +1 -1
- package/modern/BarChart/BarChart.js +1 -0
- package/modern/BarChart/legend.js +13 -0
- package/modern/ChartsLegend/ChartsLegend.js +5 -1
- package/modern/ChartsLegend/utils.js +11 -1
- package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
- package/modern/ChartsTooltip/ChartsItemTooltipContent.js +11 -2
- package/modern/LineChart/LineChart.js +1 -0
- package/modern/LineChart/legend.js +13 -0
- package/modern/PieChart/PieArc.js +116 -0
- package/modern/PieChart/PieArcLabel.js +101 -0
- package/modern/PieChart/PieChart.js +285 -0
- package/modern/PieChart/PiePlot.js +91 -0
- package/modern/PieChart/formatter.js +41 -0
- package/modern/PieChart/index.js +4 -0
- package/modern/PieChart/legend.js +12 -0
- package/modern/ResponsiveChartContainer/index.js +14 -3
- package/modern/ScatterChart/Scatter.js +1 -1
- package/modern/ScatterChart/ScatterChart.js +1 -0
- package/modern/ScatterChart/legend.js +13 -0
- package/modern/context/SeriesContextProvider.js +11 -1
- package/modern/index.js +2 -1
- package/modern/internals/defaultizeColor.js +7 -0
- package/modern/models/seriesType/index.js +1 -8
- package/package.json +1 -1
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { SeriesContext } from '../context/SeriesContextProvider';
|
|
4
|
+
import PieArc from './PieArc';
|
|
5
|
+
import PieArcLabel from './PieArcLabel';
|
|
6
|
+
import { DrawingContext } from '../context/DrawingProvider';
|
|
7
|
+
import { createElement as _createElement } from "react";
|
|
8
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
const RATIO = 180 / Math.PI;
|
|
11
|
+
function getItemLabel(arcLabel, arcLabelMinAngle, item) {
|
|
12
|
+
if (!arcLabel) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
const angle = (item.endAngle - item.startAngle) * RATIO;
|
|
16
|
+
if (angle < arcLabelMinAngle) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
if (typeof arcLabel === 'string') {
|
|
20
|
+
var _item$arcLabel;
|
|
21
|
+
return (_item$arcLabel = item[arcLabel]) == null ? void 0 : _item$arcLabel.toString();
|
|
22
|
+
}
|
|
23
|
+
return arcLabel(item);
|
|
24
|
+
}
|
|
25
|
+
export function PiePlot() {
|
|
26
|
+
const seriesData = React.useContext(SeriesContext).pie;
|
|
27
|
+
const {
|
|
28
|
+
left,
|
|
29
|
+
top,
|
|
30
|
+
width,
|
|
31
|
+
height
|
|
32
|
+
} = React.useContext(DrawingContext);
|
|
33
|
+
if (seriesData === undefined) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
const availableRadius = Math.min(width, height) / 2;
|
|
37
|
+
const center = {
|
|
38
|
+
x: left + width / 2,
|
|
39
|
+
y: top + height / 2
|
|
40
|
+
};
|
|
41
|
+
const {
|
|
42
|
+
series,
|
|
43
|
+
seriesOrder
|
|
44
|
+
} = seriesData;
|
|
45
|
+
return /*#__PURE__*/_jsx("g", {
|
|
46
|
+
children: seriesOrder.map(seriesId => {
|
|
47
|
+
const {
|
|
48
|
+
innerRadius,
|
|
49
|
+
outerRadius,
|
|
50
|
+
cornerRadius,
|
|
51
|
+
arcLabel,
|
|
52
|
+
arcLabelMinAngle = 0,
|
|
53
|
+
data,
|
|
54
|
+
cx,
|
|
55
|
+
cy,
|
|
56
|
+
highlighted,
|
|
57
|
+
faded
|
|
58
|
+
} = series[seriesId];
|
|
59
|
+
return /*#__PURE__*/_jsx("g", {
|
|
60
|
+
transform: `translate(${cx === undefined ? center.x : left + cx}, ${cy === undefined ? center.y : top + cy})`,
|
|
61
|
+
children: /*#__PURE__*/_jsxs("g", {
|
|
62
|
+
children: [data.map((item, index) => {
|
|
63
|
+
return /*#__PURE__*/_createElement(PieArc, _extends({}, item, {
|
|
64
|
+
key: item.id,
|
|
65
|
+
innerRadius: innerRadius,
|
|
66
|
+
outerRadius: outerRadius != null ? outerRadius : availableRadius,
|
|
67
|
+
cornerRadius: cornerRadius,
|
|
68
|
+
id: seriesId,
|
|
69
|
+
color: item.color,
|
|
70
|
+
dataIndex: index,
|
|
71
|
+
highlightScope: series[seriesId].highlightScope,
|
|
72
|
+
highlighted: highlighted,
|
|
73
|
+
faded: faded
|
|
74
|
+
}));
|
|
75
|
+
}), data.map((item, index) => {
|
|
76
|
+
return /*#__PURE__*/_createElement(PieArcLabel, _extends({}, item, {
|
|
77
|
+
key: item.id,
|
|
78
|
+
innerRadius: innerRadius,
|
|
79
|
+
outerRadius: outerRadius != null ? outerRadius : availableRadius,
|
|
80
|
+
cornerRadius: cornerRadius,
|
|
81
|
+
id: seriesId,
|
|
82
|
+
color: item.color,
|
|
83
|
+
dataIndex: index,
|
|
84
|
+
highlightScope: series[seriesId].highlightScope,
|
|
85
|
+
formattedArcLabel: getItemLabel(arcLabel, arcLabelMinAngle, item)
|
|
86
|
+
}));
|
|
87
|
+
})]
|
|
88
|
+
})
|
|
89
|
+
}, seriesId);
|
|
90
|
+
})
|
|
91
|
+
});
|
|
92
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import { pie as d3Pie } from 'd3-shape';
|
|
3
|
+
const getSortingComparator = (comparator = 'none') => {
|
|
4
|
+
if (typeof comparator === 'function') {
|
|
5
|
+
return comparator;
|
|
6
|
+
}
|
|
7
|
+
switch (comparator) {
|
|
8
|
+
case 'none':
|
|
9
|
+
return null;
|
|
10
|
+
case 'desc':
|
|
11
|
+
return (a, b) => b - a;
|
|
12
|
+
case 'asc':
|
|
13
|
+
return (a, b) => a - b;
|
|
14
|
+
default:
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const formatter = params => {
|
|
19
|
+
const {
|
|
20
|
+
seriesOrder,
|
|
21
|
+
series
|
|
22
|
+
} = params;
|
|
23
|
+
const defaultizedSeries = {};
|
|
24
|
+
seriesOrder.forEach(seriesId => {
|
|
25
|
+
var _series$seriesId$star, _series$seriesId$endA, _series$seriesId$padd, _series$seriesId$sort;
|
|
26
|
+
const arcs = d3Pie().startAngle(2 * Math.PI * ((_series$seriesId$star = series[seriesId].startAngle) != null ? _series$seriesId$star : 0) / 360).endAngle(2 * Math.PI * ((_series$seriesId$endA = series[seriesId].endAngle) != null ? _series$seriesId$endA : 360) / 360).padAngle(2 * Math.PI * ((_series$seriesId$padd = series[seriesId].paddingAngle) != null ? _series$seriesId$padd : 0) / 360).sortValues(getSortingComparator((_series$seriesId$sort = series[seriesId].sortingValues) != null ? _series$seriesId$sort : 'none'))(series[seriesId].data.map(piePoint => piePoint.value));
|
|
27
|
+
defaultizedSeries[seriesId] = _extends({
|
|
28
|
+
valueFormatter: item => item.value.toLocaleString()
|
|
29
|
+
}, series[seriesId], {
|
|
30
|
+
data: series[seriesId].data.map((item, index) => {
|
|
31
|
+
var _item$id;
|
|
32
|
+
return _extends({}, item, {
|
|
33
|
+
id: (_item$id = item.id) != null ? _item$id : `auto-generated-pie-id-${seriesId}-${index}`
|
|
34
|
+
}, arcs[index]);
|
|
35
|
+
}).map(item => {
|
|
36
|
+
var _series$seriesId$valu, _series$seriesId$valu2, _series$seriesId;
|
|
37
|
+
return _extends({}, item, {
|
|
38
|
+
formattedValue: (_series$seriesId$valu = (_series$seriesId$valu2 = (_series$seriesId = series[seriesId]).valueFormatter) == null ? void 0 : _series$seriesId$valu2.call(_series$seriesId, item)) != null ? _series$seriesId$valu : item.value.toLocaleString()
|
|
39
|
+
});
|
|
40
|
+
})
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
seriesOrder,
|
|
45
|
+
series: defaultizedSeries
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export default formatter;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const legendGetter = params => {
|
|
2
|
+
const {
|
|
3
|
+
seriesOrder,
|
|
4
|
+
series
|
|
5
|
+
} = params;
|
|
6
|
+
return seriesOrder.flatMap(seriesId => series[seriesId].data.map(item => ({
|
|
7
|
+
color: item.color,
|
|
8
|
+
label: item.label,
|
|
9
|
+
id: item.id
|
|
10
|
+
})).filter(item => item.label !== undefined));
|
|
11
|
+
};
|
|
12
|
+
export default legendGetter;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["width", "height"];
|
|
2
4
|
import * as React from 'react';
|
|
3
5
|
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
4
6
|
import ownerWindow from '@mui/utils/ownerWindow';
|
|
@@ -84,18 +86,27 @@ const ResizableContainer = styled('div', {
|
|
|
84
86
|
flexDirection: 'column',
|
|
85
87
|
alignItems: 'center',
|
|
86
88
|
justifyContent: 'center',
|
|
87
|
-
overflow: 'hidden'
|
|
89
|
+
overflow: 'hidden',
|
|
90
|
+
'&>svg': {
|
|
91
|
+
width: '100%',
|
|
92
|
+
height: '100%'
|
|
93
|
+
}
|
|
88
94
|
};
|
|
89
95
|
});
|
|
90
96
|
export function ResponsiveChartContainer(props) {
|
|
91
|
-
const
|
|
97
|
+
const {
|
|
98
|
+
width: propsWidth,
|
|
99
|
+
height: propsHeight
|
|
100
|
+
} = props,
|
|
101
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
102
|
+
const [containerRef, width, height] = useChartDimensions(propsWidth, propsHeight);
|
|
92
103
|
return /*#__PURE__*/_jsx(ResizableContainer, {
|
|
93
104
|
ref: containerRef,
|
|
94
105
|
ownerState: {
|
|
95
106
|
width: props.width,
|
|
96
107
|
height: props.height
|
|
97
108
|
},
|
|
98
|
-
children: /*#__PURE__*/_jsx(ChartContainer, _extends({},
|
|
109
|
+
children: /*#__PURE__*/_jsx(ChartContainer, _extends({}, other, {
|
|
99
110
|
width: width,
|
|
100
111
|
height: height
|
|
101
112
|
}))
|
|
@@ -82,7 +82,7 @@ process.env.NODE_ENV !== "production" ? Scatter.propTypes = {
|
|
|
82
82
|
color: PropTypes.string.isRequired,
|
|
83
83
|
markerSize: PropTypes.number.isRequired,
|
|
84
84
|
series: PropTypes.shape({
|
|
85
|
-
color: PropTypes.string
|
|
85
|
+
color: PropTypes.string,
|
|
86
86
|
data: PropTypes.arrayOf(PropTypes.shape({
|
|
87
87
|
id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,
|
|
88
88
|
x: PropTypes.number.isRequired,
|
|
@@ -109,6 +109,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
|
|
|
109
109
|
legend: PropTypes.shape({
|
|
110
110
|
classes: PropTypes.object,
|
|
111
111
|
direction: PropTypes.oneOf(['column', 'row']),
|
|
112
|
+
hidden: PropTypes.bool,
|
|
112
113
|
itemWidth: PropTypes.number,
|
|
113
114
|
markSize: PropTypes.number,
|
|
114
115
|
offset: PropTypes.shape({
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const legendGetter = params => {
|
|
2
|
+
const {
|
|
3
|
+
seriesOrder,
|
|
4
|
+
series
|
|
5
|
+
} = params;
|
|
6
|
+
const data = seriesOrder.map(seriesId => ({
|
|
7
|
+
color: series[seriesId].color,
|
|
8
|
+
label: series[seriesId].label,
|
|
9
|
+
id: seriesId
|
|
10
|
+
}));
|
|
11
|
+
return data.filter(item => item.label !== undefined);
|
|
12
|
+
};
|
|
13
|
+
export default legendGetter;
|
|
@@ -4,6 +4,7 @@ import { useTheme } from '@mui/material/styles';
|
|
|
4
4
|
import barSeriesFormatter from '../BarChart/formatter';
|
|
5
5
|
import scatterSeriesFormatter from '../ScatterChart/formatter';
|
|
6
6
|
import lineSeriesFormatter from '../LineChart/formatter';
|
|
7
|
+
import pieSeriesFormatter from '../PieChart/formatter';
|
|
7
8
|
import { defaultizeColor } from '../internals/defaultizeColor';
|
|
8
9
|
import { blueberryTwilightPalette } from '../colorPalettes';
|
|
9
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -11,8 +12,17 @@ export const SeriesContext = /*#__PURE__*/React.createContext({});
|
|
|
11
12
|
const seriesTypeFormatter = {
|
|
12
13
|
bar: barSeriesFormatter,
|
|
13
14
|
scatter: scatterSeriesFormatter,
|
|
14
|
-
line: lineSeriesFormatter
|
|
15
|
+
line: lineSeriesFormatter,
|
|
16
|
+
pie: pieSeriesFormatter
|
|
15
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* This methods is the interface between what the developper is providing and what compoenents receives
|
|
20
|
+
* To simplify the components behaviors, it groups series by type, such that LinePlots props are not updated if soe line data are modified
|
|
21
|
+
* It also add defaultized values such as the ids, colors
|
|
22
|
+
* @param series The array of series provided by devs
|
|
23
|
+
* @param colors The color palette used to defaultize series colors
|
|
24
|
+
* @returns An object structuring all the series by type.
|
|
25
|
+
*/
|
|
16
26
|
const formatSeries = (series, colors) => {
|
|
17
27
|
// Group series by type
|
|
18
28
|
const seriesGroups = {};
|
package/esm/index.js
CHANGED
|
@@ -10,6 +10,7 @@ export * from './ChartsTooltip';
|
|
|
10
10
|
export * from './ChartsAxisHighlight';
|
|
11
11
|
export * from './BarChart';
|
|
12
12
|
export * from './LineChart';
|
|
13
|
+
export * from './PieChart';
|
|
13
14
|
export * from './ScatterChart';
|
|
14
15
|
export * from './ChartContainer';
|
|
15
16
|
export * from './ResponsiveChartContainer';
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
const DEFAULT_COLORS = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'];
|
|
3
3
|
export function defaultizeColor(series, seriesIndex, colors = DEFAULT_COLORS) {
|
|
4
|
+
if (series.type === 'pie') {
|
|
5
|
+
return _extends({}, series, {
|
|
6
|
+
data: series.data.map((d, index) => _extends({
|
|
7
|
+
color: colors[index % colors.length]
|
|
8
|
+
}, d))
|
|
9
|
+
});
|
|
10
|
+
}
|
|
4
11
|
return _extends({
|
|
5
12
|
color: colors[seriesIndex % colors.length]
|
|
6
13
|
}, series);
|
package/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * from './ChartsTooltip';
|
|
|
10
10
|
export * from './ChartsAxisHighlight';
|
|
11
11
|
export * from './BarChart';
|
|
12
12
|
export * from './LineChart';
|
|
13
|
+
export * from './PieChart';
|
|
13
14
|
export * from './ScatterChart';
|
|
14
15
|
export * from './ChartContainer';
|
|
15
16
|
export * from './ResponsiveChartContainer';
|
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @mui/x-charts v6.0.0-alpha.
|
|
2
|
+
* @mui/x-charts v6.0.0-alpha.2
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
@@ -142,6 +142,17 @@ Object.keys(_LineChart).forEach(function (key) {
|
|
|
142
142
|
}
|
|
143
143
|
});
|
|
144
144
|
});
|
|
145
|
+
var _PieChart = require("./PieChart");
|
|
146
|
+
Object.keys(_PieChart).forEach(function (key) {
|
|
147
|
+
if (key === "default" || key === "__esModule") return;
|
|
148
|
+
if (key in exports && exports[key] === _PieChart[key]) return;
|
|
149
|
+
Object.defineProperty(exports, key, {
|
|
150
|
+
enumerable: true,
|
|
151
|
+
get: function () {
|
|
152
|
+
return _PieChart[key];
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
});
|
|
145
156
|
var _ScatterChart = require("./ScatterChart");
|
|
146
157
|
Object.keys(_ScatterChart).forEach(function (key) {
|
|
147
158
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -1,5 +1,40 @@
|
|
|
1
1
|
import { AllSeriesType } from '../models/seriesType';
|
|
2
2
|
export declare function defaultizeColor(series: AllSeriesType, seriesIndex: number, colors?: string[]): {
|
|
3
|
+
data: {
|
|
4
|
+
color: string;
|
|
5
|
+
label?: string | undefined;
|
|
6
|
+
value: number;
|
|
7
|
+
id?: string | number | undefined;
|
|
8
|
+
}[];
|
|
9
|
+
type: "pie";
|
|
10
|
+
innerRadius?: number | undefined;
|
|
11
|
+
outerRadius?: number | undefined;
|
|
12
|
+
cornerRadius?: number | undefined;
|
|
13
|
+
startAngle?: number | undefined;
|
|
14
|
+
endAngle?: number | undefined;
|
|
15
|
+
paddingAngle?: number | undefined;
|
|
16
|
+
sortingValues?: import("../models/seriesType").ChartsPieSorting | undefined;
|
|
17
|
+
arcLabel?: "label" | "value" | "formattedValue" | ((item: import("../models/seriesType").DefaultizedPieValueType) => string) | undefined;
|
|
18
|
+
arcLabelMinAngle?: number | undefined;
|
|
19
|
+
cx?: number | undefined;
|
|
20
|
+
cy?: number | undefined;
|
|
21
|
+
highlighted?: {
|
|
22
|
+
additionalRadius?: number | undefined;
|
|
23
|
+
innerRadius?: number | undefined;
|
|
24
|
+
outerRadius?: number | undefined;
|
|
25
|
+
cornerRadius?: number | undefined;
|
|
26
|
+
} | undefined;
|
|
27
|
+
faded?: {
|
|
28
|
+
additionalRadius?: number | undefined;
|
|
29
|
+
innerRadius?: number | undefined;
|
|
30
|
+
outerRadius?: number | undefined;
|
|
31
|
+
cornerRadius?: number | undefined;
|
|
32
|
+
} | undefined;
|
|
33
|
+
id?: string | undefined;
|
|
34
|
+
color?: string | undefined;
|
|
35
|
+
valueFormatter?: ((value: import("../models/helpers").MakeOptional<import("../models/seriesType").PieValueType, "id">) => string) | undefined;
|
|
36
|
+
highlightScope?: Partial<import("..").HighlightScope> | undefined;
|
|
37
|
+
} | {
|
|
3
38
|
type: "bar";
|
|
4
39
|
data: number[];
|
|
5
40
|
label?: string | undefined;
|
|
@@ -8,6 +8,13 @@ exports.defaultizeColor = defaultizeColor;
|
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
const DEFAULT_COLORS = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'];
|
|
10
10
|
function defaultizeColor(series, seriesIndex, colors = DEFAULT_COLORS) {
|
|
11
|
+
if (series.type === 'pie') {
|
|
12
|
+
return (0, _extends2.default)({}, series, {
|
|
13
|
+
data: series.data.map((d, index) => (0, _extends2.default)({
|
|
14
|
+
color: colors[index % colors.length]
|
|
15
|
+
}, d))
|
|
16
|
+
});
|
|
17
|
+
}
|
|
11
18
|
return (0, _extends2.default)({
|
|
12
19
|
color: colors[seriesIndex % colors.length]
|
|
13
20
|
}, series);
|
|
@@ -128,6 +128,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
128
128
|
legend: PropTypes.shape({
|
|
129
129
|
classes: PropTypes.object,
|
|
130
130
|
direction: PropTypes.oneOf(['column', 'row']),
|
|
131
|
+
hidden: PropTypes.bool,
|
|
131
132
|
itemWidth: PropTypes.number,
|
|
132
133
|
markSize: PropTypes.number,
|
|
133
134
|
offset: PropTypes.shape({
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
var legendGetter = function legendGetter(params) {
|
|
2
|
+
var seriesOrder = params.seriesOrder,
|
|
3
|
+
series = params.series;
|
|
4
|
+
var data = seriesOrder.map(function (seriesId) {
|
|
5
|
+
return {
|
|
6
|
+
color: series[seriesId].color,
|
|
7
|
+
label: series[seriesId].label,
|
|
8
|
+
id: seriesId
|
|
9
|
+
};
|
|
10
|
+
});
|
|
11
|
+
return data.filter(function (item) {
|
|
12
|
+
return item.label !== undefined;
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
export default legendGetter;
|
|
@@ -143,13 +143,17 @@ export function ChartsLegend(inProps) {
|
|
|
143
143
|
});
|
|
144
144
|
var position = props.position,
|
|
145
145
|
direction = props.direction,
|
|
146
|
-
offset = props.offset
|
|
146
|
+
offset = props.offset,
|
|
147
|
+
hidden = props.hidden;
|
|
147
148
|
var theme = useTheme();
|
|
148
149
|
var classes = useUtilityClasses(_extends({}, props, {
|
|
149
150
|
theme: theme
|
|
150
151
|
}));
|
|
151
152
|
var drawingArea = React.useContext(DrawingContext);
|
|
152
153
|
var series = React.useContext(SeriesContext);
|
|
154
|
+
if (hidden) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
153
157
|
var seriesToDisplay = getSeriesToDisplay(series);
|
|
154
158
|
return /*#__PURE__*/_jsx(ChartsLegendRoot, {
|
|
155
159
|
ownerState: {
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
import getBarLegend from '../BarChart/legend';
|
|
2
|
+
import getScatterLegend from '../ScatterChart/legend';
|
|
3
|
+
import getLineLegend from '../LineChart/legend';
|
|
4
|
+
import getPieLegend from '../PieChart/legend';
|
|
5
|
+
var legendGetter = {
|
|
6
|
+
bar: getBarLegend,
|
|
7
|
+
scatter: getScatterLegend,
|
|
8
|
+
line: getLineLegend,
|
|
9
|
+
pie: getPieLegend
|
|
10
|
+
};
|
|
1
11
|
export function getSeriesToDisplay(series) {
|
|
2
|
-
return Object.
|
|
3
|
-
return
|
|
4
|
-
return s.series[seriesId];
|
|
5
|
-
});
|
|
6
|
-
}).filter(function (s) {
|
|
7
|
-
return s.label !== undefined;
|
|
12
|
+
return Object.keys(series).flatMap(function (seriesType) {
|
|
13
|
+
return legendGetter[seriesType](series[seriesType]);
|
|
8
14
|
});
|
|
9
15
|
}
|
|
@@ -80,7 +80,9 @@ export function ChartsAxisTooltipContent(props) {
|
|
|
80
80
|
var USED_X_AXIS_ID = xAxisIds[0];
|
|
81
81
|
var relevantSeries = React.useMemo(function () {
|
|
82
82
|
var rep = [];
|
|
83
|
-
Object.keys(series).
|
|
83
|
+
Object.keys(series).filter(function (seriesType) {
|
|
84
|
+
return ['bar', 'line', 'scatter'].includes(seriesType);
|
|
85
|
+
}).forEach(function (seriesType) {
|
|
84
86
|
series[seriesType].seriesOrder.forEach(function (seriesId) {
|
|
85
87
|
var axisKey = series[seriesType].series[seriesId].xAxisKey;
|
|
86
88
|
if (axisKey === undefined || axisKey === USED_X_AXIS_ID) {
|
|
@@ -4,7 +4,6 @@ import { ChartsTooltipTable, ChartsTooltipCell, ChartsTooltipMark, ChartsTooltip
|
|
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
5
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
6
|
export function DefaultChartsItemContent(props) {
|
|
7
|
-
var _series$label;
|
|
8
7
|
var series = props.series,
|
|
9
8
|
itemData = props.itemData,
|
|
10
9
|
sx = props.sx,
|
|
@@ -12,8 +11,16 @@ export function DefaultChartsItemContent(props) {
|
|
|
12
11
|
if (itemData.dataIndex === undefined) {
|
|
13
12
|
return null;
|
|
14
13
|
}
|
|
15
|
-
var
|
|
16
|
-
|
|
14
|
+
var _ref = series.type === 'pie' ? {
|
|
15
|
+
color: series.data[itemData.dataIndex].color,
|
|
16
|
+
displayedLabel: series.data[itemData.dataIndex].label
|
|
17
|
+
} : {
|
|
18
|
+
color: series.color,
|
|
19
|
+
displayedLabel: series.label
|
|
20
|
+
},
|
|
21
|
+
displayedLabel = _ref.displayedLabel,
|
|
22
|
+
color = _ref.color;
|
|
23
|
+
|
|
17
24
|
// TODO: Manage to let TS understand series.data and series.valueFormatter are coherent
|
|
18
25
|
// @ts-ignore
|
|
19
26
|
var formattedValue = series.valueFormatter(series.data[itemData.dataIndex]);
|
|
@@ -131,6 +131,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
131
131
|
legend: PropTypes.shape({
|
|
132
132
|
classes: PropTypes.object,
|
|
133
133
|
direction: PropTypes.oneOf(['column', 'row']),
|
|
134
|
+
hidden: PropTypes.bool,
|
|
134
135
|
itemWidth: PropTypes.number,
|
|
135
136
|
markSize: PropTypes.number,
|
|
136
137
|
offset: PropTypes.shape({
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
var legendGetter = function legendGetter(params) {
|
|
2
|
+
var seriesOrder = params.seriesOrder,
|
|
3
|
+
series = params.series;
|
|
4
|
+
var data = seriesOrder.map(function (seriesId) {
|
|
5
|
+
return {
|
|
6
|
+
color: series[seriesId].color,
|
|
7
|
+
label: series[seriesId].label,
|
|
8
|
+
id: seriesId
|
|
9
|
+
};
|
|
10
|
+
});
|
|
11
|
+
return data.filter(function (item) {
|
|
12
|
+
return item.label !== undefined;
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
export default legendGetter;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "innerRadius", "outerRadius", "cornerRadius", "highlighted", "faded"];
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { arc as d3Arc } from 'd3-shape';
|
|
6
|
+
import PropTypes from 'prop-types';
|
|
7
|
+
import composeClasses from '@mui/utils/composeClasses';
|
|
8
|
+
import generateUtilityClass from '@mui/utils/generateUtilityClass';
|
|
9
|
+
import { styled } from '@mui/material/styles';
|
|
10
|
+
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
|
|
11
|
+
import { InteractionContext } from '../context/InteractionProvider';
|
|
12
|
+
import { getIsFaded, getIsHighlighted, useInteractionItemProps } from '../hooks/useInteractionItemProps';
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
export function getPieArcUtilityClass(slot) {
|
|
15
|
+
return generateUtilityClass('MuiPieArc', slot);
|
|
16
|
+
}
|
|
17
|
+
export var pieArcClasses = generateUtilityClasses('MuiPieArc', ['root', 'highlighted', 'faded']);
|
|
18
|
+
var useUtilityClasses = function useUtilityClasses(ownerState) {
|
|
19
|
+
var classes = ownerState.classes,
|
|
20
|
+
id = ownerState.id,
|
|
21
|
+
isFaded = ownerState.isFaded,
|
|
22
|
+
isHighlighted = ownerState.isHighlighted;
|
|
23
|
+
var slots = {
|
|
24
|
+
root: ['root', "series-".concat(id), isHighlighted && 'highlighted', isFaded && 'faded']
|
|
25
|
+
};
|
|
26
|
+
return composeClasses(slots, getPieArcUtilityClass, classes);
|
|
27
|
+
};
|
|
28
|
+
var PieArcRoot = styled('path', {
|
|
29
|
+
name: 'MuiPieArc',
|
|
30
|
+
slot: 'Root',
|
|
31
|
+
overridesResolver: function overridesResolver(_, styles) {
|
|
32
|
+
return styles.arc;
|
|
33
|
+
}
|
|
34
|
+
})(function (_ref) {
|
|
35
|
+
var ownerState = _ref.ownerState,
|
|
36
|
+
theme = _ref.theme;
|
|
37
|
+
return {
|
|
38
|
+
stroke: theme.palette.background.paper,
|
|
39
|
+
strokeWidth: 1,
|
|
40
|
+
strokeLinejoin: 'round',
|
|
41
|
+
fill: ownerState.color,
|
|
42
|
+
opacity: ownerState.isFaded ? 0.3 : 1
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
export default function PieArc(props) {
|
|
46
|
+
var _attibuesOverride$inn, _attibuesOverride$out, _attibuesOverride$cor;
|
|
47
|
+
var id = props.id,
|
|
48
|
+
dataIndex = props.dataIndex,
|
|
49
|
+
innerClasses = props.classes,
|
|
50
|
+
color = props.color,
|
|
51
|
+
highlightScope = props.highlightScope,
|
|
52
|
+
_props$innerRadius = props.innerRadius,
|
|
53
|
+
baseInnerRadius = _props$innerRadius === void 0 ? 0 : _props$innerRadius,
|
|
54
|
+
baseOuterRadius = props.outerRadius,
|
|
55
|
+
_props$cornerRadius = props.cornerRadius,
|
|
56
|
+
baseCornerRadius = _props$cornerRadius === void 0 ? 0 : _props$cornerRadius,
|
|
57
|
+
highlighted = props.highlighted,
|
|
58
|
+
_props$faded = props.faded,
|
|
59
|
+
faded = _props$faded === void 0 ? {
|
|
60
|
+
additionalRadius: -5
|
|
61
|
+
} : _props$faded,
|
|
62
|
+
other = _objectWithoutProperties(props, _excluded);
|
|
63
|
+
var getInteractionItemProps = useInteractionItemProps(highlightScope);
|
|
64
|
+
var _React$useContext = React.useContext(InteractionContext),
|
|
65
|
+
item = _React$useContext.item;
|
|
66
|
+
var isHighlighted = getIsHighlighted(item, {
|
|
67
|
+
type: 'pie',
|
|
68
|
+
seriesId: id,
|
|
69
|
+
dataIndex: dataIndex
|
|
70
|
+
}, highlightScope);
|
|
71
|
+
var isFaded = !isHighlighted && getIsFaded(item, {
|
|
72
|
+
type: 'pie',
|
|
73
|
+
seriesId: id,
|
|
74
|
+
dataIndex: dataIndex
|
|
75
|
+
}, highlightScope);
|
|
76
|
+
var ownerState = {
|
|
77
|
+
id: id,
|
|
78
|
+
dataIndex: dataIndex,
|
|
79
|
+
classes: innerClasses,
|
|
80
|
+
color: color,
|
|
81
|
+
isFaded: isFaded,
|
|
82
|
+
isHighlighted: isHighlighted
|
|
83
|
+
};
|
|
84
|
+
var classes = useUtilityClasses(ownerState);
|
|
85
|
+
var attibuesOverride = _extends({
|
|
86
|
+
additionalRadius: 0
|
|
87
|
+
}, isFaded && faded || isHighlighted && highlighted || {});
|
|
88
|
+
var innerRadius = Math.max(0, (_attibuesOverride$inn = attibuesOverride.innerRadius) != null ? _attibuesOverride$inn : baseInnerRadius);
|
|
89
|
+
var outerRadius = Math.max(0, (_attibuesOverride$out = attibuesOverride.outerRadius) != null ? _attibuesOverride$out : baseOuterRadius + attibuesOverride.additionalRadius);
|
|
90
|
+
var cornerRadius = (_attibuesOverride$cor = attibuesOverride.cornerRadius) != null ? _attibuesOverride$cor : baseCornerRadius;
|
|
91
|
+
return /*#__PURE__*/_jsx(PieArcRoot, _extends({
|
|
92
|
+
d: d3Arc().cornerRadius(cornerRadius)(_extends({}, other, {
|
|
93
|
+
innerRadius: innerRadius,
|
|
94
|
+
outerRadius: outerRadius
|
|
95
|
+
})),
|
|
96
|
+
ownerState: ownerState,
|
|
97
|
+
className: classes.root
|
|
98
|
+
}, getInteractionItemProps({
|
|
99
|
+
type: 'pie',
|
|
100
|
+
seriesId: id,
|
|
101
|
+
dataIndex: dataIndex
|
|
102
|
+
})));
|
|
103
|
+
}
|
|
104
|
+
process.env.NODE_ENV !== "production" ? PieArc.propTypes = {
|
|
105
|
+
// ----------------------------- Warning --------------------------------
|
|
106
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
107
|
+
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
108
|
+
// ----------------------------------------------------------------------
|
|
109
|
+
classes: PropTypes.object,
|
|
110
|
+
cornerRadius: PropTypes.number,
|
|
111
|
+
dataIndex: PropTypes.number.isRequired,
|
|
112
|
+
highlightScope: PropTypes.shape({
|
|
113
|
+
faded: PropTypes.oneOf(['global', 'none', 'series']),
|
|
114
|
+
highlighted: PropTypes.oneOf(['item', 'none', 'series'])
|
|
115
|
+
}),
|
|
116
|
+
innerRadius: PropTypes.number,
|
|
117
|
+
outerRadius: PropTypes.number.isRequired
|
|
118
|
+
} : void 0;
|