Skip to content

Commit

Permalink
feat: simplified insights data fetching (#6342)
Browse files Browse the repository at this point in the history
Simplify insights data fetching - let charts pick data instead of
preparing labels in hook.
  • Loading branch information
Tymek committed Feb 27, 2024
1 parent 7cebf7b commit ed44de6
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 27 deletions.
Expand Up @@ -11,7 +11,18 @@ interface IFlagsProjectChartProps {
export const FlagsProjectChart: VFC<IFlagsProjectChartProps> = ({
projectFlagTrends,
}) => {
const data = useProjectChartData(projectFlagTrends, 'total');
const data = useProjectChartData(projectFlagTrends);

return <LineChart data={data} isLocalTooltip />;
return (
<LineChart
data={data}
isLocalTooltip
overrideOptions={{
parsing: {
yAxisKey: 'total',
xAxisKey: 'date',
},
}}
/>
);
};
Expand Up @@ -10,8 +10,8 @@ import {
Chart,
Filler,
type ChartData,
type ScatterDataPoint,
TooltipModel,
ChartOptions,
} from 'chart.js';
import { Line } from 'react-chartjs-2';
import 'chartjs-adapter-date-fns';
Expand Down Expand Up @@ -223,28 +223,38 @@ const customHighlightPlugin = {
};

const LineChartComponent: VFC<{
data: ChartData<'line', (number | ScatterDataPoint | null)[], unknown>;
data: ChartData<'line', unknown>;
aspectRatio?: number;
cover?: ReactNode;
isLocalTooltip?: boolean;
overrideOptions?: ChartOptions<'line'>;
TooltipComponent?: ({
tooltip,
}: { tooltip: TooltipState | null }) => ReturnType<VFC>;
}> = ({ data, aspectRatio, cover, isLocalTooltip, TooltipComponent }) => {
}> = ({
data,
aspectRatio,
cover,
isLocalTooltip,
overrideOptions,
TooltipComponent,
}) => {
const theme = useTheme();
const { locationSettings } = useLocationSettings();

const [tooltip, setTooltip] = useState<null | TooltipState>(null);
const options = useMemo(
() =>
createOptions(
() => ({
...createOptions(
theme,
locationSettings,
setTooltip,
Boolean(cover),
isLocalTooltip,
),
[theme, locationSettings],
...overrideOptions,
}),
[theme, locationSettings, overrideOptions],
);

return (
Expand Down
Expand Up @@ -74,13 +74,19 @@ const TooltipComponent: VFC<{ tooltip: TooltipState | null }> = ({
export const ProjectHealthChart: VFC<IFlagsProjectChartProps> = ({
projectFlagTrends,
}) => {
const data = useProjectChartData(projectFlagTrends, 'health');
const data = useProjectChartData(projectFlagTrends);

return (
<LineChart
data={data}
isLocalTooltip
TooltipComponent={TooltipComponent}
overrideOptions={{
parsing: {
yAxisKey: 'health',
xAxisKey: 'date',
},
}}
/>
);
};
Expand Up @@ -11,7 +11,18 @@ interface IFlagsProjectChartProps {
export const TimeToProductionChart: VFC<IFlagsProjectChartProps> = ({
projectFlagTrends,
}) => {
const data = useProjectChartData(projectFlagTrends, 'timeToProduction');
const data = useProjectChartData(projectFlagTrends);

return <LineChart data={data} isLocalTooltip />;
return (
<LineChart
data={data}
isLocalTooltip
overrideOptions={{
parsing: {
yAxisKey: 'timeToProduction',
xAxisKey: 'date',
},
}}
/>
);
};
19 changes: 3 additions & 16 deletions frontend/src/component/executiveDashboard/useProjectChartData.ts
Expand Up @@ -8,10 +8,7 @@ import { useTheme } from '@mui/material';

type ProjectFlagTrends = ExecutiveSummarySchema['projectFlagTrends'];

export const useProjectChartData = (
projectFlagTrends: ProjectFlagTrends,
field: 'timeToProduction' | 'total' | 'health',
) => {
export const useProjectChartData = (projectFlagTrends: ProjectFlagTrends) => {
const theme = useTheme();

const data = useMemo(() => {
Expand All @@ -30,25 +27,15 @@ export const useProjectChartData = (
const color = getProjectColor(project);
return {
label: project,
data: trends.map((item) => {
return item[field] || 0;
}),
data: trends,
borderColor: color,
backgroundColor: color,
fill: false,
};
},
);

const objectKeys = Object.keys(groupedFlagTrends);

const firstElementTrends = groupedFlagTrends[objectKeys[0]] || [];
const firstElementsDates = firstElementTrends.map((item) => item.date);

return {
labels: firstElementsDates,
datasets,
};
return { datasets };
}, [theme, projectFlagTrends]);

return data;
Expand Down

0 comments on commit ed44de6

Please sign in to comment.