@mui/x-charts
Version:
The community edition of the charts components (MUI X).
35 lines • 1.51 kB
JavaScript
const getBaseExtremum = params => {
const {
axis
} = params;
const minX = Math.min(...(axis.data ?? []));
const maxX = Math.max(...(axis.data ?? []));
return [minX, maxX];
};
const getValueExtremum = params => {
const {
series,
axis,
isDefaultAxis
} = params;
return Object.keys(series).filter(seriesId => series[seriesId].yAxisKey === axis.id || isDefaultAxis && series[seriesId].yAxisKey === undefined).reduce((acc, seriesId) => {
const [seriesMin, seriesMax] = series[seriesId].stackedData.reduce((seriesAcc, values) => [Math.min(...values, ...(seriesAcc[0] === null ? [] : [seriesAcc[0]])), Math.max(...values, ...(seriesAcc[1] === null ? [] : [seriesAcc[1]]))], series[seriesId].stackedData[0]);
return [acc[0] === null ? seriesMin : Math.min(seriesMin, acc[0]), acc[1] === null ? seriesMax : Math.max(seriesMax, acc[1])];
}, [null, null]);
};
export const getExtremumX = params => {
// Notice that bar should be all horizontal or all vertical.
// Don't think it's a problem for now
const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');
if (isHorizontal) {
return getValueExtremum(params);
}
return getBaseExtremum(params);
};
export const getExtremumY = params => {
const isHorizontal = Object.keys(params.series).some(seriesId => params.series[seriesId].layout === 'horizontal');
if (isHorizontal) {
return getBaseExtremum(params);
}
return getValueExtremum(params);
};