1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-27 11:02:16 +01:00
unleash.unleash/frontend/src/component/insights/hooks/useProjectChartData.ts
2024-07-29 11:52:14 +02:00

39 lines
1.3 KiB
TypeScript

import { useMemo } from 'react';
import type { InstanceInsightsSchema } from 'openapi';
import { useProjectColor } from './useProjectColor';
import { useTheme } from '@mui/material';
import type { GroupedDataByProject } from './useGroupedProjectTrends';
import useProjects from 'hooks/api/getters/useProjects/useProjects';
type ProjectFlagTrends = InstanceInsightsSchema['projectFlagTrends'];
export const useProjectChartData = (
projectFlagTrends: GroupedDataByProject<ProjectFlagTrends>,
) => {
const theme = useTheme();
const getProjectColor = useProjectColor();
const { projects } = useProjects();
const projectNames = new Map(
projects.map((project) => [project.id, project.name]),
);
const data = useMemo(() => {
const datasets = Object.entries(projectFlagTrends).map(
([project, trends]) => {
const color = getProjectColor(project);
return {
label: projectNames.get(project) || project,
data: trends,
borderColor: color,
backgroundColor: color,
fill: false,
};
},
);
return { datasets };
}, [theme, projectFlagTrends]);
return data;
};