1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-01-31 00:16:47 +01:00
unleash.unleash/frontend/src/component/executiveDashboard/useProjectChartData.ts
Tymoteusz Czech ed44de6c94
feat: simplified insights data fetching (#6342)
Simplify insights data fetching - let charts pick data instead of
preparing labels in hook.
2024-02-27 09:20:45 +01:00

43 lines
1.3 KiB
TypeScript

import { useMemo } from 'react';
import {
ExecutiveSummarySchema,
ExecutiveSummarySchemaProjectFlagTrendsItem,
} from '../../openapi';
import { getProjectColor } from './executive-dashboard-utils';
import { useTheme } from '@mui/material';
type ProjectFlagTrends = ExecutiveSummarySchema['projectFlagTrends'];
export const useProjectChartData = (projectFlagTrends: ProjectFlagTrends) => {
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]) => {
const color = getProjectColor(project);
return {
label: project,
data: trends,
borderColor: color,
backgroundColor: color,
fill: false,
};
},
);
return { datasets };
}, [theme, projectFlagTrends]);
return data;
};