Skip to content

Commit c38b2b3

Browse files
authored
fix(metrics): Reset focused series on hiding metrics (#68965)
- closes #68546
1 parent 9169879 commit c38b2b3

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

static/app/views/metrics/context.tsx

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,12 @@ export function useMetricWidgets() {
100100
const setWidgets = useCallback(
101101
(newWidgets: React.SetStateAction<MetricsWidget[]>) => {
102102
const currentWidgets = currentWidgetsRef.current;
103-
updateQuery({
104-
widgets: JSON.stringify(
105-
typeof newWidgets === 'function' ? newWidgets(currentWidgets) : newWidgets
106-
),
107-
});
103+
const newData =
104+
typeof newWidgets === 'function' ? newWidgets(currentWidgets) : newWidgets;
105+
106+
updateQuery({widgets: JSON.stringify(newData)});
107+
// We need to update the ref so that the next call to setWidgets in the same render cycle will have the updated value
108+
currentWidgetsRef.current = newData;
108109
},
109110
[updateQuery, currentWidgetsRef]
110111
);
@@ -230,7 +231,7 @@ export function DDMContextProvider({children}: {children: React.ReactNode}) {
230231
const {setDefaultQuery, isDefaultQuery} = useDefaultQuery();
231232

232233
const [selectedWidgetIndex, setSelectedWidgetIndex] = useState(0);
233-
const {widgets, updateWidget, addWidget, removeWidget, duplicateWidget} =
234+
const {widgets, updateWidget, addWidget, removeWidget, duplicateWidget, setWidgets} =
234235
useMetricWidgets();
235236

236237
const [metricsSamples, setMetricsSamples] = useState<
@@ -338,9 +339,15 @@ export function DDMContextProvider({children}: {children: React.ReactNode}) {
338339
const firstVisibleWidgetIndex = widgets.findIndex(w => !w.isHidden);
339340
setSelectedWidgetIndex(firstVisibleWidgetIndex);
340341
}
342+
if (!isMultiChartMode) {
343+
// Reset the focused series when hiding a widget
344+
setWidgets(currentWidgets => {
345+
return currentWidgets.map(w => ({...w, focusedSeries: undefined}));
346+
});
347+
}
341348
updateWidget(index, {isHidden: !widgets[index].isHidden});
342349
},
343-
[selectedWidgetIndex, updateWidget, widgets]
350+
[isMultiChartMode, selectedWidgetIndex, setWidgets, updateWidget, widgets]
344351
);
345352

346353
const selectedWidget = widgets[selectedWidgetIndex];

0 commit comments

Comments
 (0)