@mui/x-charts
Version:
The community edition of MUI X Charts components.
35 lines • 1.14 kB
JavaScript
import { useDrawingArea } from "../../hooks/useDrawingArea.js";
import { useRadiusAxes, useRotationAxis } from "../../hooks/useAxis.js";
import { rad2deg } from "../../internals/angleConversion.js";
export function useRadarMetricData() {
const rotationAxis = useRotationAxis();
const {
scale: rotationScale,
valueFormatter,
labelGap = 10
} = rotationAxis;
const {
radiusAxis
} = useRadiusAxes();
const drawingArea = useDrawingArea();
const cx = drawingArea.left + drawingArea.width / 2;
const cy = drawingArea.top + drawingArea.height / 2;
const metrics = rotationScale.domain();
const angles = metrics.map(key => rotationScale(key));
return {
corners: metrics.map((metric, dataIndex) => {
const radiusScale = radiusAxis[metric].scale;
const r = radiusScale.range()[1] + labelGap;
const angle = angles[dataIndex];
return {
x: cx + r * Math.sin(angle),
y: cy - r * Math.cos(angle),
angle: rad2deg(angle),
label: valueFormatter?.(metric, {
location: 'tick',
scale: rotationScale
}) ?? metric
};
})
};
}