@mui/x-charts
Version:
The community edition of MUI X Charts components.
68 lines (67 loc) • 2.31 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useRadarSeriesData = useRadarSeriesData;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _useScale = require("../../hooks/useScale");
var _useRadarSeries = require("../../hooks/useRadarSeries");
var _useAxis = require("../../hooks/useAxis");
var _useItemHighlightedGetter = require("../../hooks/useItemHighlightedGetter");
var _useChartContext = require("../../context/ChartProvider/useChartContext");
/**
* This hook provides all the data needed to display radar series.
* @param querySeriesId The id of the series to display
* @returns
*/
function useRadarSeriesData(querySeriesId) {
const {
instance
} = (0, _useChartContext.useChartContext)();
const rotationScale = (0, _useScale.useRotationScale)();
const {
radiusAxis
} = (0, _useAxis.useRadiusAxes)();
const radarSeries = (0, _useRadarSeries.useRadarSeries)(querySeriesId === undefined ? undefined : [querySeriesId]);
const {
isFaded: isItemFaded,
isHighlighted: isItemHighlighted
} = (0, _useItemHighlightedGetter.useItemHighlightedGetter)();
const metrics = rotationScale?.domain() ?? [];
const angles = metrics.map(key => rotationScale?.(key));
return radarSeries.map(series => {
const seriesId = series.id;
const isSeriesHighlighted = isItemHighlighted({
seriesId
});
const isSeriesFaded = !isSeriesHighlighted && isItemFaded({
seriesId
});
return (0, _extends2.default)({}, series, {
seriesId: series.id,
isSeriesHighlighted,
isSeriesFaded,
points: series.data.map((value, dataIndex) => {
const highlighted = isItemHighlighted({
seriesId,
dataIndex
});
const faded = !highlighted && isItemFaded({
seriesId,
dataIndex
});
const r = radiusAxis[metrics[dataIndex]].scale(value);
const angle = angles[dataIndex];
const [x, y] = instance.polar2svg(r, angle);
return {
x,
y,
isItemHighlighted: highlighted,
isItemFaded: faded,
dataIndex
};
})
});
});
}
;