1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-09 00:18:00 +01:00
unleash.unleash/frontend/src/component/executiveDashboard/useProjectChartData.ts

43 lines
1.3 KiB
TypeScript
Raw Normal View History

2024-02-01 12:22:27 +01:00
import { useMemo } from 'react';
import {
ExecutiveSummarySchema,
ExecutiveSummarySchemaProjectFlagTrendsItem,
} from '../../openapi';
2024-02-23 09:05:59 +01:00
import { getProjectColor } from './executive-dashboard-utils';
2024-02-01 12:22:27 +01:00
import { useTheme } from '@mui/material';
type ProjectFlagTrends = ExecutiveSummarySchema['projectFlagTrends'];
export const useProjectChartData = (projectFlagTrends: ProjectFlagTrends) => {
2024-02-01 12:22:27 +01:00
const theme = useTheme();
const data = useMemo(() => {
const groupedFlagTrends = projectFlagTrends.reduce<
Record<string, ExecutiveSummarySchemaProjectFlagTrendsItem[]>
>((groups, item) => {
if (!groups[item.project]) {
groups[item.project] = [];
}
groups[item.project].push(item);
return groups;
}, {});
const datasets = Object.entries(groupedFlagTrends).map(
([project, trends]) => {
2024-02-23 09:05:59 +01:00
const color = getProjectColor(project);
2024-02-01 12:22:27 +01:00
return {
label: project,
data: trends,
2024-02-01 12:22:27 +01:00
borderColor: color,
backgroundColor: color,
fill: false,
2024-02-01 12:22:27 +01:00
};
},
);
return { datasets };
2024-02-01 12:22:27 +01:00
}, [theme, projectFlagTrends]);
return data;
};