diff --git a/client/src/webpages/dashboard/mrt/visualization/ManualReviewDashboardInsightsChart.test.ts b/client/src/webpages/dashboard/mrt/visualization/ManualReviewDashboardInsightsChart.test.ts new file mode 100644 index 00000000..10d5d9bd --- /dev/null +++ b/client/src/webpages/dashboard/mrt/visualization/ManualReviewDashboardInsightsChart.test.ts @@ -0,0 +1,18 @@ +import { describe, expect, it } from 'vitest'; + +import { getPieChartData } from './ManualReviewDashboardInsightsChart'; + +describe('getPieChartData', () => { + it('zeros a hidden category and restores its value without changing legend order', () => { + const sums = { foo: 6, bar: 4 }; + + expect(getPieChartData(sums, ['foo'])).toEqual([ + { name: 'foo', value: 0 }, + { name: 'bar', value: 4 }, + ]); + expect(getPieChartData(sums, [])).toEqual([ + { name: 'foo', value: 6 }, + { name: 'bar', value: 4 }, + ]); + }); +}); diff --git a/client/src/webpages/dashboard/mrt/visualization/ManualReviewDashboardInsightsChart.tsx b/client/src/webpages/dashboard/mrt/visualization/ManualReviewDashboardInsightsChart.tsx index be9d7511..4dd1aeb6 100644 --- a/client/src/webpages/dashboard/mrt/visualization/ManualReviewDashboardInsightsChart.tsx +++ b/client/src/webpages/dashboard/mrt/visualization/ManualReviewDashboardInsightsChart.tsx @@ -179,6 +179,16 @@ gql` export type ManualReviewDashboardInsightsChartMetric = 'DECISIONS' | 'JOBS' | 'REVIEWED_JOBS' | 'SKIPPED_JOBS'; +export function getPieChartData( + chartDataSums: Record, + hiddenLines: string[], +) { + return Object.entries(chartDataSums).map(([name, value]) => ({ + name, + value: hiddenLines.includes(name) ? 0 : value, + })); +} + export function getEmptyFilterState( metric: ManualReviewDashboardInsightsChartMetric, timeWindow: TimeWindow, @@ -1113,23 +1123,22 @@ export default function ManualReviewDashboardInsightsChart(props: { /> )); + const pieChartData = getPieChartData(chartDataSums, hiddenLines); + const pieChart = ( ({ - name: key, - value, - }))} + data={pieChartData} cx="50%" cy="50%" outerRadius={80} fill={PRIMARY_COLOR} label > - {Object.entries(chartDataSums).map((_, index) => ( + {pieChartData.map((_, index) => (