From f54305c8b7517ff1fcc0eed93630d05fdffa4edc Mon Sep 17 00:00:00 2001 From: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com> Date: Tue, 22 Jul 2025 10:08:29 +0200 Subject: [PATCH] refactor: impact metrics modal - label filtering and UX (#10377) Modal for editing a chart now follows design of other parts of the app more closely. --- .../ChartConfigModal.tsx | 42 ++++-- .../ImpactMetricsControls.tsx | 81 +++++++++++ .../ModeSelector}/ModeSelector.tsx | 8 +- .../RangeSelector}/RangeSelector.tsx | 0 .../SeriesSelector}/SeriesSelector.tsx | 1 + .../LabelFilterItem/LabelFilterItem.tsx | 104 ++++++++++++++ .../LabelFilter/LabelsFilter.tsx | 102 +++++++++++++ .../impact-metrics/ImpactMetrics.tsx | 2 +- .../ImpactMetricsChartPreview.tsx | 50 ------- .../ImpactMetricsControls.tsx | 88 ------------ .../components/LabelsFilter.tsx | 136 ------------------ 11 files changed, 321 insertions(+), 293 deletions(-) rename frontend/src/component/impact-metrics/{ => ChartConfigModal}/ChartConfigModal.tsx (71%) create mode 100644 frontend/src/component/impact-metrics/ChartConfigModal/ImpactMetricsControls/ImpactMetricsControls.tsx rename frontend/src/component/impact-metrics/{ImpactMetricsControls/components => ChartConfigModal/ImpactMetricsControls/ModeSelector}/ModeSelector.tsx (88%) rename frontend/src/component/impact-metrics/{ImpactMetricsControls/components => ChartConfigModal/ImpactMetricsControls/RangeSelector}/RangeSelector.tsx (100%) rename frontend/src/component/impact-metrics/{ImpactMetricsControls/components => ChartConfigModal/ImpactMetricsControls/SeriesSelector}/SeriesSelector.tsx (98%) create mode 100644 frontend/src/component/impact-metrics/ChartConfigModal/LabelFilter/LabelFilterItem/LabelFilterItem.tsx create mode 100644 frontend/src/component/impact-metrics/ChartConfigModal/LabelFilter/LabelsFilter.tsx delete mode 100644 frontend/src/component/impact-metrics/ImpactMetricsChartPreview.tsx delete mode 100644 frontend/src/component/impact-metrics/ImpactMetricsControls/ImpactMetricsControls.tsx delete mode 100644 frontend/src/component/impact-metrics/ImpactMetricsControls/components/LabelsFilter.tsx diff --git a/frontend/src/component/impact-metrics/ChartConfigModal.tsx b/frontend/src/component/impact-metrics/ChartConfigModal/ChartConfigModal.tsx similarity index 71% rename from frontend/src/component/impact-metrics/ChartConfigModal.tsx rename to frontend/src/component/impact-metrics/ChartConfigModal/ChartConfigModal.tsx index 17a1db9fea..04624c60ff 100644 --- a/frontend/src/component/impact-metrics/ChartConfigModal.tsx +++ b/frontend/src/component/impact-metrics/ChartConfigModal/ChartConfigModal.tsx @@ -8,12 +8,16 @@ import { TextField, Box, styled, + useTheme, + useMediaQuery, + Divider, } from '@mui/material'; import { ImpactMetricsControls } from './ImpactMetricsControls/ImpactMetricsControls.tsx'; -import { ImpactMetricsChartPreview } from './ImpactMetricsChartPreview.tsx'; -import { useChartFormState } from './hooks/useChartFormState.ts'; -import type { ChartConfig } from './types.ts'; +import { useChartFormState } from '../hooks/useChartFormState.ts'; +import type { ChartConfig } from '../types.ts'; import type { ImpactMetricsSeries } from 'hooks/api/getters/useImpactMetricsMetadata/useImpactMetricsMetadata'; +import { LabelsFilter } from './LabelFilter/LabelsFilter.tsx'; +import { ImpactMetricsChart } from '../ImpactMetricsChart.tsx'; export const StyledConfigPanel = styled(Box)(({ theme }) => ({ display: 'flex', @@ -62,6 +66,8 @@ export const ChartConfigModal: FC = ({ open, initialConfig, }); + const theme = useTheme(); + const screenBreakpoint = useMediaQuery(theme.breakpoints.down('lg')); const handleSave = () => { if (!isValid) return; @@ -111,21 +117,33 @@ export const ChartConfigModal: FC = ({ actions={actions} metricSeries={metricSeries} loading={loading} - availableLabels={currentAvailableLabels} /> - + ({ padding: theme.spacing(1) })}> + + + + {currentAvailableLabels ? ( + + ) : null} - + + ({ margin: theme.spacing(2, 3, 3) })}>