@mui/x-charts
Version:
The community edition of MUI X Charts components.
38 lines • 1.17 kB
JavaScript
import { useRotationScale } from "../../hooks/useScale.js";
import { useDrawingArea } from "../../hooks/useDrawingArea.js";
import { useRadiusAxes } from "../../hooks/index.js";
import { useChartContext } from "../../context/ChartProvider/useChartContext.js";
export function useRadarGridData() {
const {
instance
} = useChartContext();
const rotationScale = useRotationScale();
const {
radiusAxis
} = useRadiusAxes();
const drawingArea = useDrawingArea();
const cx = drawingArea.left + drawingArea.width / 2;
const cy = drawingArea.top + drawingArea.height / 2;
if (!rotationScale || rotationScale.domain().length === 0) {
return null;
}
const metrics = rotationScale.domain();
const angles = metrics.map(key => rotationScale(key));
return {
center: {
x: cx,
y: cy
},
corners: metrics.map((metric, dataIndex) => {
const radiusScale = radiusAxis[metric].scale;
const r = radiusScale.range()[1];
const angle = angles[dataIndex];
const [x, y] = instance.polar2svg(r, angle);
return {
x,
y
};
}),
radius: radiusAxis[metrics[0]].scale.range()[1]
};
}