From 4d35909b20640222fa98ef931471cb450fe332f2 Mon Sep 17 00:00:00 2001 From: kwasniew Date: Wed, 16 Jul 2025 11:49:21 +0200 Subject: [PATCH] feat: use metric display name in impact charts --- frontend/src/component/impact-metrics/ChartItem.tsx | 8 ++++---- frontend/src/component/impact-metrics/types.ts | 12 ++++++++++-- .../useImpactMetricsSettings.ts | 10 +++++----- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/frontend/src/component/impact-metrics/ChartItem.tsx b/frontend/src/component/impact-metrics/ChartItem.tsx index b56cc0feb2..7223f0f740 100644 --- a/frontend/src/component/impact-metrics/ChartItem.tsx +++ b/frontend/src/component/impact-metrics/ChartItem.tsx @@ -4,18 +4,18 @@ import Edit from '@mui/icons-material/Edit'; import Delete from '@mui/icons-material/Delete'; import DragHandle from '@mui/icons-material/DragHandle'; import { ImpactMetricsChart } from './ImpactMetricsChart.tsx'; -import type { ChartConfig } from './types.ts'; +import type { ChartConfig, DisplayChartConfig } from './types.ts'; export interface ChartItemProps { - config: ChartConfig; + config: DisplayChartConfig; onEdit: (config: ChartConfig) => void; onDelete: (id: string) => void; } -const getConfigDescription = (config: ChartConfig): string => { +const getConfigDescription = (config: DisplayChartConfig): string => { const parts: string[] = []; - if (config.selectedSeries) { + if (config.displayName) { parts.push(`${config.displayName}`); } diff --git a/frontend/src/component/impact-metrics/types.ts b/frontend/src/component/impact-metrics/types.ts index 4a4c357e95..96abb0c3bc 100644 --- a/frontend/src/component/impact-metrics/types.ts +++ b/frontend/src/component/impact-metrics/types.ts @@ -1,8 +1,6 @@ export type ChartConfig = { id: string; selectedSeries: string; // e.g. unleash_counter_my_metric - type: 'counter' | 'gauge'; - displayName: string; // e.g. my_metric with unleash_counter stripped selectedRange: 'hour' | 'day' | 'week' | 'month'; beginAtZero: boolean; showRate: boolean; @@ -10,6 +8,11 @@ export type ChartConfig = { title?: string; }; +export type DisplayChartConfig = ChartConfig & { + type: 'counter' | 'gauge'; + displayName: string; // e.g. my_metric with unleash_counter stripped +}; + export type LayoutItem = { i: string; x: number; @@ -26,3 +29,8 @@ export type ImpactMetricsState = { charts: ChartConfig[]; layout: LayoutItem[]; }; + +export type DisplayImpactMetricsState = { + charts: DisplayChartConfig[]; + layout: LayoutItem[]; +}; diff --git a/frontend/src/hooks/api/getters/useImpactMetricsSettings/useImpactMetricsSettings.ts b/frontend/src/hooks/api/getters/useImpactMetricsSettings/useImpactMetricsSettings.ts index 6847abc294..3faa89a942 100644 --- a/frontend/src/hooks/api/getters/useImpactMetricsSettings/useImpactMetricsSettings.ts +++ b/frontend/src/hooks/api/getters/useImpactMetricsSettings/useImpactMetricsSettings.ts @@ -1,13 +1,13 @@ import { fetcher, useApiGetter } from '../useApiGetter/useApiGetter.js'; import { formatApiPath } from 'utils/formatPath'; -import type { ImpactMetricsState } from 'component/impact-metrics/types.ts'; +import type { DisplayImpactMetricsState } from 'component/impact-metrics/types.ts'; export const useImpactMetricsSettings = () => { const PATH = `api/admin/impact-metrics/settings`; - const { data, refetch, loading, error } = useApiGetter( - formatApiPath(PATH), - () => fetcher(formatApiPath(PATH), 'Impact metrics settings'), - ); + const { data, refetch, loading, error } = + useApiGetter(formatApiPath(PATH), () => + fetcher(formatApiPath(PATH), 'Impact metrics settings'), + ); return { settings: data || { charts: [], layout: [] },