@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
|
@@ -2,6 +2,15 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
var DEFAULT_COLORS = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'];
|
|
3
3
|
export function defaultizeColor(series, seriesIndex) {
|
|
4
4
|
var colors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_COLORS;
|
|
5
|
+
if (series.type === 'pie') {
|
|
6
|
+
return _extends({}, series, {
|
|
7
|
+
data: series.data.map(function (d, index) {
|
|
8
|
+
return _extends({
|
|
9
|
+
color: colors[index % colors.length]
|
|
10
|
+
}, d);
|
|
11
|
+
})
|
|
12
|
+
});
|
|
13
|
+
}
|
|
5
14
|
return _extends({
|
|
6
15
|
color: colors[seriesIndex % colors.length]
|
|
7
16
|
}, series);
|
|
@@ -14,5 +14,5 @@ export type BarItemIdentifier = {
|
|
|
14
14
|
seriesId: DefaultizedBarSeriesType['id'];
|
|
15
15
|
dataIndex: number;
|
|
16
16
|
};
|
|
17
|
-
export interface DefaultizedBarSeriesType extends DefaultizedProps<BarSeriesType, CommonDefaultizedProps> {
|
|
17
|
+
export interface DefaultizedBarSeriesType extends DefaultizedProps<BarSeriesType, CommonDefaultizedProps | 'color'> {
|
|
18
18
|
}
|
|
@@ -11,7 +11,7 @@ export type CommonSeriesType<TValue> = {
|
|
|
11
11
|
valueFormatter?: (value: TValue) => string;
|
|
12
12
|
highlightScope?: Partial<HighlightScope>;
|
|
13
13
|
};
|
|
14
|
-
export type CommonDefaultizedProps = 'id' | '
|
|
14
|
+
export type CommonDefaultizedProps = 'id' | 'valueFormatter';
|
|
15
15
|
export type CartesianSeriesType = {
|
|
16
16
|
xAxisKey?: string;
|
|
17
17
|
yAxisKey?: string;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ScatterSeriesType, DefaultizedScatterSeriesType, ScatterItemIdentifier } from './scatter';
|
|
2
2
|
import { LineSeriesType, DefaultizedLineSeriesType, LineItemIdentifier } from './line';
|
|
3
3
|
import { BarItemIdentifier, BarSeriesType, DefaultizedBarSeriesType } from './bar';
|
|
4
|
+
import { PieSeriesType, DefaultizedPieSeriesType, PieItemIdentifier, PieValueType } from './pie';
|
|
4
5
|
import { AxisConfig } from '../axis';
|
|
5
|
-
import { DefaultizedProps } from '../helpers';
|
|
6
|
+
import { DefaultizedProps, MakeOptional } from '../helpers';
|
|
6
7
|
import { StackingGroupsType } from '../../internals/stackSeries';
|
|
7
8
|
interface ChartsSeriesConfig {
|
|
8
9
|
bar: {
|
|
@@ -28,8 +29,18 @@ interface ChartsSeriesConfig {
|
|
|
28
29
|
series: DefaultizedScatterSeriesType;
|
|
29
30
|
itemIdentifier: ScatterItemIdentifier;
|
|
30
31
|
};
|
|
32
|
+
pie: {
|
|
33
|
+
seriesInput: Omit<DefaultizedProps<PieSeriesType, 'id'>, 'data'> & {
|
|
34
|
+
data: (MakeOptional<PieValueType, 'id'> & {
|
|
35
|
+
color: string;
|
|
36
|
+
})[];
|
|
37
|
+
};
|
|
38
|
+
series: DefaultizedPieSeriesType;
|
|
39
|
+
itemIdentifier: PieItemIdentifier;
|
|
40
|
+
};
|
|
31
41
|
}
|
|
32
|
-
export type
|
|
42
|
+
export type CartesianChartSeriesType = 'bar' | 'line' | 'scatter';
|
|
43
|
+
export type ChartSeriesType = 'bar' | 'line' | 'scatter' | 'pie';
|
|
33
44
|
export type ChartSeries<T extends ChartSeriesType> = ChartsSeriesConfig[T] extends {
|
|
34
45
|
canBeStacked: true;
|
|
35
46
|
} ? ChartsSeriesConfig[T]['seriesInput'] & {
|
|
@@ -63,4 +74,20 @@ export type FormatterResult<T extends ChartSeriesType> = {
|
|
|
63
74
|
stackingGroups: StackingGroupsType;
|
|
64
75
|
} : {});
|
|
65
76
|
export type Formatter<T extends ChartSeriesType> = (params: FormatterParams<T>) => FormatterResult<T>;
|
|
77
|
+
export type LegendParams = {
|
|
78
|
+
/**
|
|
79
|
+
* The color used in the legend
|
|
80
|
+
*/
|
|
81
|
+
color: string;
|
|
82
|
+
/**
|
|
83
|
+
* The label displayed in the legend
|
|
84
|
+
*/
|
|
85
|
+
label: string;
|
|
86
|
+
/**
|
|
87
|
+
* The identifier of the legend element.
|
|
88
|
+
* Used for internal purpose such as `key` props
|
|
89
|
+
*/
|
|
90
|
+
id: string;
|
|
91
|
+
};
|
|
92
|
+
export type LegendGetter<T extends ChartSeriesType> = (series: FormatterResult<T>) => LegendParams[];
|
|
66
93
|
export {};
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { BarItemIdentifier, BarSeriesType, DefaultizedBarSeriesType } from './bar';
|
|
2
2
|
import { DefaultizedLineSeriesType, LineItemIdentifier, LineSeriesType } from './line';
|
|
3
3
|
import { DefaultizedScatterSeriesType, ScatterItemIdentifier, ScatterSeriesType } from './scatter';
|
|
4
|
-
|
|
4
|
+
import { DefaultizedPieSeriesType, PieSeriesType, PieItemIdentifier, PieValueType } from './pie';
|
|
5
|
+
import { MakeOptional } from '../helpers';
|
|
6
|
+
type AllSeriesType = BarSeriesType | LineSeriesType | ScatterSeriesType | PieSeriesType<MakeOptional<PieValueType, 'id'>>;
|
|
5
7
|
type CartesianSeriesType = BarSeriesType | LineSeriesType | ScatterSeriesType;
|
|
6
8
|
type DefaultizedCartesianSeriesType = DefaultizedBarSeriesType | DefaultizedLineSeriesType | DefaultizedScatterSeriesType;
|
|
9
|
+
type DefaultizedSeriesType = DefaultizedCartesianSeriesType | DefaultizedPieSeriesType;
|
|
7
10
|
type StackableSeriesType = DefaultizedBarSeriesType | DefaultizedLineSeriesType;
|
|
8
|
-
export type SeriesItemIdentifier = BarItemIdentifier | LineItemIdentifier | ScatterItemIdentifier;
|
|
11
|
+
export type SeriesItemIdentifier = BarItemIdentifier | LineItemIdentifier | ScatterItemIdentifier | PieItemIdentifier;
|
|
9
12
|
export * from './line';
|
|
10
13
|
export * from './bar';
|
|
11
14
|
export * from './scatter';
|
|
15
|
+
export * from './pie';
|
|
12
16
|
export type { StackOrderType, StackOffsetType } from './common';
|
|
13
|
-
export type { AllSeriesType, CartesianSeriesType, DefaultizedCartesianSeriesType, StackableSeriesType, };
|
|
17
|
+
export type { AllSeriesType, CartesianSeriesType, DefaultizedSeriesType, DefaultizedCartesianSeriesType, StackableSeriesType, };
|
|
@@ -35,4 +35,15 @@ Object.keys(_scatter).forEach(function (key) {
|
|
|
35
35
|
return _scatter[key];
|
|
36
36
|
}
|
|
37
37
|
});
|
|
38
|
+
});
|
|
39
|
+
var _pie = require("./pie");
|
|
40
|
+
Object.keys(_pie).forEach(function (key) {
|
|
41
|
+
if (key === "default" || key === "__esModule") return;
|
|
42
|
+
if (key in exports && exports[key] === _pie[key]) return;
|
|
43
|
+
Object.defineProperty(exports, key, {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _pie[key];
|
|
47
|
+
}
|
|
48
|
+
});
|
|
38
49
|
});
|
|
@@ -21,5 +21,5 @@ export type LineItemIdentifier = {
|
|
|
21
21
|
*/
|
|
22
22
|
dataIndex?: number;
|
|
23
23
|
};
|
|
24
|
-
export interface DefaultizedLineSeriesType extends DefaultizedProps<LineSeriesType, CommonDefaultizedProps> {
|
|
24
|
+
export interface DefaultizedLineSeriesType extends DefaultizedProps<LineSeriesType, CommonDefaultizedProps | 'color'> {
|
|
25
25
|
}
|
|
@@ -1,5 +1,105 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { PieArcDatum as D3PieArcDatum } from 'd3-shape';
|
|
2
|
+
import { DefaultizedProps } from '../helpers';
|
|
3
|
+
import { CommonDefaultizedProps, CommonSeriesType } from './common';
|
|
4
|
+
export type PieValueType = {
|
|
5
|
+
id: string | number;
|
|
6
|
+
value: number;
|
|
7
|
+
label?: string;
|
|
8
|
+
color?: string;
|
|
9
|
+
};
|
|
10
|
+
export type DefaultizedPieValueType = PieValueType & D3PieArcDatum<any> & {
|
|
11
|
+
color: string;
|
|
12
|
+
formattedValue: string;
|
|
13
|
+
};
|
|
14
|
+
export type ChartsPieSorting = 'none' | 'asc' | 'desc' | ((a: number, b: number) => number);
|
|
15
|
+
export interface PieSeriesType<Tdata = PieValueType> extends CommonSeriesType<Tdata> {
|
|
3
16
|
type: 'pie';
|
|
4
|
-
data:
|
|
17
|
+
data: Tdata[];
|
|
18
|
+
/**
|
|
19
|
+
* The radius between circle center and the begining of the arc.
|
|
20
|
+
* @default 0
|
|
21
|
+
*/
|
|
22
|
+
innerRadius?: number;
|
|
23
|
+
/**
|
|
24
|
+
* The radius between circle center and the end of the arc.
|
|
25
|
+
* @default R_max The maximal radius that fit into the drawing area.
|
|
26
|
+
*/
|
|
27
|
+
outerRadius?: number;
|
|
28
|
+
/**
|
|
29
|
+
* The radius applied to arc corners (similar to border radius).
|
|
30
|
+
* @default 0
|
|
31
|
+
*/
|
|
32
|
+
cornerRadius?: number;
|
|
33
|
+
/**
|
|
34
|
+
* The start angle (deg) of the first item.
|
|
35
|
+
* @default 0
|
|
36
|
+
*/
|
|
37
|
+
startAngle?: number;
|
|
38
|
+
/**
|
|
39
|
+
* The end angle (deg) of the last item.
|
|
40
|
+
* @default 360
|
|
41
|
+
*/
|
|
42
|
+
endAngle?: number;
|
|
43
|
+
/**
|
|
44
|
+
* The padding angle (deg) between two arcs.
|
|
45
|
+
* @default 0
|
|
46
|
+
*/
|
|
47
|
+
paddingAngle?: number;
|
|
48
|
+
sortingValues?: ChartsPieSorting;
|
|
49
|
+
/**
|
|
50
|
+
* The label displayed into the arc.
|
|
51
|
+
*/
|
|
52
|
+
arcLabel?: 'formattedValue' | 'label' | 'value' | ((item: DefaultizedPieValueType) => string);
|
|
53
|
+
/**
|
|
54
|
+
* The minimal angle required to display the arc label.
|
|
55
|
+
*/
|
|
56
|
+
arcLabelMinAngle?: number;
|
|
57
|
+
/**
|
|
58
|
+
* The x coordinate of the pie center.
|
|
59
|
+
* @default width/2 the center of the drawing area.
|
|
60
|
+
*/
|
|
61
|
+
cx?: number;
|
|
62
|
+
/**
|
|
63
|
+
* The y coordinate of the pie center.
|
|
64
|
+
* @default height/2 the center of the drawing area.
|
|
65
|
+
*/
|
|
66
|
+
cy?: number;
|
|
67
|
+
/**
|
|
68
|
+
* Override the arc attibutes when it is highlighted.
|
|
69
|
+
*/
|
|
70
|
+
highlighted?: {
|
|
71
|
+
/**
|
|
72
|
+
* Value added to the default `outerRadius`.
|
|
73
|
+
* Can be negative. ANd is ignored if you provide a `highlighted.outerRadius` value.
|
|
74
|
+
*/
|
|
75
|
+
additionalRadius?: number;
|
|
76
|
+
innerRadius?: number;
|
|
77
|
+
outerRadius?: number;
|
|
78
|
+
cornerRadius?: number;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Override the arc attibutes when it is faded.
|
|
82
|
+
*/
|
|
83
|
+
faded?: {
|
|
84
|
+
/**
|
|
85
|
+
* Value added to the default `outerRadius`.
|
|
86
|
+
* Can be negative. ANd is ignored if you provide a `faded.outerRadius` value.
|
|
87
|
+
*/
|
|
88
|
+
additionalRadius?: number;
|
|
89
|
+
innerRadius?: number;
|
|
90
|
+
outerRadius?: number;
|
|
91
|
+
cornerRadius?: number;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* An object that allows to identify a single pie slice.
|
|
96
|
+
* Used for item interaction
|
|
97
|
+
*/
|
|
98
|
+
export type PieItemIdentifier = {
|
|
99
|
+
type: 'pie';
|
|
100
|
+
seriesId: DefaultizedPieSeriesType['id'];
|
|
101
|
+
dataIndex: number;
|
|
102
|
+
};
|
|
103
|
+
export interface DefaultizedPieSeriesType extends DefaultizedProps<PieSeriesType, CommonDefaultizedProps> {
|
|
104
|
+
data: DefaultizedPieValueType[];
|
|
5
105
|
}
|
|
@@ -12,7 +12,7 @@ export interface ScatterSeriesType extends CommonSeriesType<ScatterValueType>, C
|
|
|
12
12
|
label?: string;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
* An object that allows to identify a single
|
|
15
|
+
* An object that allows to identify a single scatter item.
|
|
16
16
|
* Used for item interaction
|
|
17
17
|
*/
|
|
18
18
|
export type ScatterItemIdentifier = {
|
|
@@ -123,6 +123,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
123
123
|
legend: PropTypes.shape({
|
|
124
124
|
classes: PropTypes.object,
|
|
125
125
|
direction: PropTypes.oneOf(['column', 'row']),
|
|
126
|
+
hidden: PropTypes.bool,
|
|
126
127
|
itemWidth: PropTypes.number,
|
|
127
128
|
markSize: PropTypes.number,
|
|
128
129
|
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;
|
|
@@ -146,7 +146,8 @@ export function ChartsLegend(inProps) {
|
|
|
146
146
|
const {
|
|
147
147
|
position,
|
|
148
148
|
direction,
|
|
149
|
-
offset
|
|
149
|
+
offset,
|
|
150
|
+
hidden
|
|
150
151
|
} = props;
|
|
151
152
|
const theme = useTheme();
|
|
152
153
|
const classes = useUtilityClasses(_extends({}, props, {
|
|
@@ -154,6 +155,9 @@ export function ChartsLegend(inProps) {
|
|
|
154
155
|
}));
|
|
155
156
|
const drawingArea = React.useContext(DrawingContext);
|
|
156
157
|
const series = React.useContext(SeriesContext);
|
|
158
|
+
if (hidden) {
|
|
159
|
+
return null;
|
|
160
|
+
}
|
|
157
161
|
const seriesToDisplay = getSeriesToDisplay(series);
|
|
158
162
|
return /*#__PURE__*/_jsx(ChartsLegendRoot, {
|
|
159
163
|
ownerState: {
|
|
@@ -1,3 +1,13 @@
|
|
|
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
|
+
const legendGetter = {
|
|
6
|
+
bar: getBarLegend,
|
|
7
|
+
scatter: getScatterLegend,
|
|
8
|
+
line: getLineLegend,
|
|
9
|
+
pie: getPieLegend
|
|
10
|
+
};
|
|
1
11
|
export function getSeriesToDisplay(series) {
|
|
2
|
-
return Object.
|
|
12
|
+
return Object.keys(series).flatMap(seriesType => legendGetter[seriesType](series[seriesType]));
|
|
3
13
|
}
|
|
@@ -81,7 +81,7 @@ export function ChartsAxisTooltipContent(props) {
|
|
|
81
81
|
const USED_X_AXIS_ID = xAxisIds[0];
|
|
82
82
|
const relevantSeries = React.useMemo(() => {
|
|
83
83
|
const rep = [];
|
|
84
|
-
Object.keys(series).forEach(seriesType => {
|
|
84
|
+
Object.keys(series).filter(seriesType => ['bar', 'line', 'scatter'].includes(seriesType)).forEach(seriesType => {
|
|
85
85
|
series[seriesType].seriesOrder.forEach(seriesId => {
|
|
86
86
|
const axisKey = series[seriesType].series[seriesId].xAxisKey;
|
|
87
87
|
if (axisKey === undefined || axisKey === USED_X_AXIS_ID) {
|
|
@@ -13,8 +13,17 @@ export function DefaultChartsItemContent(props) {
|
|
|
13
13
|
if (itemData.dataIndex === undefined) {
|
|
14
14
|
return null;
|
|
15
15
|
}
|
|
16
|
-
const
|
|
17
|
-
|
|
16
|
+
const {
|
|
17
|
+
displayedLabel,
|
|
18
|
+
color
|
|
19
|
+
} = series.type === 'pie' ? {
|
|
20
|
+
color: series.data[itemData.dataIndex].color,
|
|
21
|
+
displayedLabel: series.data[itemData.dataIndex].label
|
|
22
|
+
} : {
|
|
23
|
+
color: series.color,
|
|
24
|
+
displayedLabel: series.label
|
|
25
|
+
};
|
|
26
|
+
|
|
18
27
|
// TODO: Manage to let TS understand series.data and series.valueFormatter are coherent
|
|
19
28
|
// @ts-ignore
|
|
20
29
|
const formattedValue = series.valueFormatter(series.data[itemData.dataIndex]);
|
|
@@ -125,6 +125,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
|
|
|
125
125
|
legend: PropTypes.shape({
|
|
126
126
|
classes: PropTypes.object,
|
|
127
127
|
direction: PropTypes.oneOf(['column', 'row']),
|
|
128
|
+
hidden: PropTypes.bool,
|
|
128
129
|
itemWidth: PropTypes.number,
|
|
129
130
|
markSize: PropTypes.number,
|
|
130
131
|
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;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _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 const pieArcClasses = generateUtilityClasses('MuiPieArc', ['root', 'highlighted', 'faded']);
|
|
18
|
+
const useUtilityClasses = ownerState => {
|
|
19
|
+
const {
|
|
20
|
+
classes,
|
|
21
|
+
id,
|
|
22
|
+
isFaded,
|
|
23
|
+
isHighlighted
|
|
24
|
+
} = ownerState;
|
|
25
|
+
const slots = {
|
|
26
|
+
root: ['root', `series-${id}`, isHighlighted && 'highlighted', isFaded && 'faded']
|
|
27
|
+
};
|
|
28
|
+
return composeClasses(slots, getPieArcUtilityClass, classes);
|
|
29
|
+
};
|
|
30
|
+
const PieArcRoot = styled('path', {
|
|
31
|
+
name: 'MuiPieArc',
|
|
32
|
+
slot: 'Root',
|
|
33
|
+
overridesResolver: (_, styles) => styles.arc
|
|
34
|
+
})(({
|
|
35
|
+
ownerState,
|
|
36
|
+
theme
|
|
37
|
+
}) => ({
|
|
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
|
+
export default function PieArc(props) {
|
|
45
|
+
const {
|
|
46
|
+
id,
|
|
47
|
+
dataIndex,
|
|
48
|
+
classes: innerClasses,
|
|
49
|
+
color,
|
|
50
|
+
highlightScope,
|
|
51
|
+
innerRadius: baseInnerRadius = 0,
|
|
52
|
+
outerRadius: baseOuterRadius,
|
|
53
|
+
cornerRadius: baseCornerRadius = 0,
|
|
54
|
+
highlighted,
|
|
55
|
+
faded = {
|
|
56
|
+
additionalRadius: -5
|
|
57
|
+
}
|
|
58
|
+
} = props,
|
|
59
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
60
|
+
const getInteractionItemProps = useInteractionItemProps(highlightScope);
|
|
61
|
+
const {
|
|
62
|
+
item
|
|
63
|
+
} = React.useContext(InteractionContext);
|
|
64
|
+
const isHighlighted = getIsHighlighted(item, {
|
|
65
|
+
type: 'pie',
|
|
66
|
+
seriesId: id,
|
|
67
|
+
dataIndex
|
|
68
|
+
}, highlightScope);
|
|
69
|
+
const isFaded = !isHighlighted && getIsFaded(item, {
|
|
70
|
+
type: 'pie',
|
|
71
|
+
seriesId: id,
|
|
72
|
+
dataIndex
|
|
73
|
+
}, highlightScope);
|
|
74
|
+
const ownerState = {
|
|
75
|
+
id,
|
|
76
|
+
dataIndex,
|
|
77
|
+
classes: innerClasses,
|
|
78
|
+
color,
|
|
79
|
+
isFaded,
|
|
80
|
+
isHighlighted
|
|
81
|
+
};
|
|
82
|
+
const classes = useUtilityClasses(ownerState);
|
|
83
|
+
const attibuesOverride = _extends({
|
|
84
|
+
additionalRadius: 0
|
|
85
|
+
}, isFaded && faded || isHighlighted && highlighted || {});
|
|
86
|
+
const innerRadius = Math.max(0, attibuesOverride.innerRadius ?? baseInnerRadius);
|
|
87
|
+
const outerRadius = Math.max(0, attibuesOverride.outerRadius ?? baseOuterRadius + attibuesOverride.additionalRadius);
|
|
88
|
+
const cornerRadius = attibuesOverride.cornerRadius ?? baseCornerRadius;
|
|
89
|
+
return /*#__PURE__*/_jsx(PieArcRoot, _extends({
|
|
90
|
+
d: d3Arc().cornerRadius(cornerRadius)(_extends({}, other, {
|
|
91
|
+
innerRadius,
|
|
92
|
+
outerRadius
|
|
93
|
+
})),
|
|
94
|
+
ownerState: ownerState,
|
|
95
|
+
className: classes.root
|
|
96
|
+
}, getInteractionItemProps({
|
|
97
|
+
type: 'pie',
|
|
98
|
+
seriesId: id,
|
|
99
|
+
dataIndex
|
|
100
|
+
})));
|
|
101
|
+
}
|
|
102
|
+
process.env.NODE_ENV !== "production" ? PieArc.propTypes = {
|
|
103
|
+
// ----------------------------- Warning --------------------------------
|
|
104
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
105
|
+
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
106
|
+
// ----------------------------------------------------------------------
|
|
107
|
+
classes: PropTypes.object,
|
|
108
|
+
cornerRadius: PropTypes.number,
|
|
109
|
+
dataIndex: PropTypes.number.isRequired,
|
|
110
|
+
highlightScope: PropTypes.shape({
|
|
111
|
+
faded: PropTypes.oneOf(['global', 'none', 'series']),
|
|
112
|
+
highlighted: PropTypes.oneOf(['item', 'none', 'series'])
|
|
113
|
+
}),
|
|
114
|
+
innerRadius: PropTypes.number,
|
|
115
|
+
outerRadius: PropTypes.number.isRequired
|
|
116
|
+
} : void 0;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "innerRadius", "outerRadius", "cornerRadius", "formattedArcLabel"];
|
|
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 } from '../hooks/useInteractionItemProps';
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
export function getPieArcLabelUtilityClass(slot) {
|
|
15
|
+
return generateUtilityClass('MuiPieArcLabel', slot);
|
|
16
|
+
}
|
|
17
|
+
export const pieArcLabelClasses = generateUtilityClasses('MuiPieArcLabel', ['root', 'highlighted', 'faded']);
|
|
18
|
+
const useUtilityClasses = ownerState => {
|
|
19
|
+
const {
|
|
20
|
+
classes,
|
|
21
|
+
id,
|
|
22
|
+
isFaded,
|
|
23
|
+
isHighlighted
|
|
24
|
+
} = ownerState;
|
|
25
|
+
const slots = {
|
|
26
|
+
root: ['root', `series-${id}`, isHighlighted && 'highlighted', isFaded && 'faded']
|
|
27
|
+
};
|
|
28
|
+
return composeClasses(slots, getPieArcLabelUtilityClass, classes);
|
|
29
|
+
};
|
|
30
|
+
const PieArcLabelRoot = styled('text', {
|
|
31
|
+
name: 'MuiPieArcLabel',
|
|
32
|
+
slot: 'Root',
|
|
33
|
+
overridesResolver: (_, styles) => styles.root
|
|
34
|
+
})(({
|
|
35
|
+
theme
|
|
36
|
+
}) => ({
|
|
37
|
+
fill: theme.palette.text.primary,
|
|
38
|
+
alignmentBaseline: 'baseline',
|
|
39
|
+
textAnchor: 'middle'
|
|
40
|
+
}));
|
|
41
|
+
export default function PieArcLabel(props) {
|
|
42
|
+
const {
|
|
43
|
+
id,
|
|
44
|
+
dataIndex,
|
|
45
|
+
classes: innerClasses,
|
|
46
|
+
color,
|
|
47
|
+
highlightScope,
|
|
48
|
+
innerRadius = 0,
|
|
49
|
+
outerRadius,
|
|
50
|
+
cornerRadius = 0,
|
|
51
|
+
formattedArcLabel
|
|
52
|
+
} = props,
|
|
53
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
54
|
+
const {
|
|
55
|
+
item
|
|
56
|
+
} = React.useContext(InteractionContext);
|
|
57
|
+
const isHighlighted = getIsHighlighted(item, {
|
|
58
|
+
type: 'pie',
|
|
59
|
+
seriesId: id,
|
|
60
|
+
dataIndex
|
|
61
|
+
}, highlightScope);
|
|
62
|
+
const isFaded = !isHighlighted && getIsFaded(item, {
|
|
63
|
+
type: 'pie',
|
|
64
|
+
seriesId: id,
|
|
65
|
+
dataIndex
|
|
66
|
+
}, highlightScope);
|
|
67
|
+
const ownerState = {
|
|
68
|
+
id,
|
|
69
|
+
dataIndex,
|
|
70
|
+
classes: innerClasses,
|
|
71
|
+
color,
|
|
72
|
+
isFaded,
|
|
73
|
+
isHighlighted
|
|
74
|
+
};
|
|
75
|
+
const classes = useUtilityClasses(ownerState);
|
|
76
|
+
const arcLabelPosition = formattedArcLabel ? d3Arc().cornerRadius(cornerRadius).centroid(_extends({}, other, {
|
|
77
|
+
innerRadius,
|
|
78
|
+
outerRadius
|
|
79
|
+
})) : [0, 0];
|
|
80
|
+
return /*#__PURE__*/_jsx(PieArcLabelRoot, {
|
|
81
|
+
className: classes.root,
|
|
82
|
+
x: arcLabelPosition[0],
|
|
83
|
+
y: arcLabelPosition[1],
|
|
84
|
+
children: formattedArcLabel
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
process.env.NODE_ENV !== "production" ? PieArcLabel.propTypes = {
|
|
88
|
+
// ----------------------------- Warning --------------------------------
|
|
89
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
90
|
+
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
91
|
+
// ----------------------------------------------------------------------
|
|
92
|
+
classes: PropTypes.object,
|
|
93
|
+
cornerRadius: PropTypes.number,
|
|
94
|
+
dataIndex: PropTypes.number.isRequired,
|
|
95
|
+
highlightScope: PropTypes.shape({
|
|
96
|
+
faded: PropTypes.oneOf(['global', 'none', 'series']),
|
|
97
|
+
highlighted: PropTypes.oneOf(['item', 'none', 'series'])
|
|
98
|
+
}),
|
|
99
|
+
innerRadius: PropTypes.number,
|
|
100
|
+
outerRadius: PropTypes.number.isRequired
|
|
101
|
+
} : void 0;
|