From 96559875f85751d3e740da35858aa5e6b2e7669b Mon Sep 17 00:00:00 2001 From: Pulse Monitor Date: Tue, 12 Aug 2025 10:11:06 +0000 Subject: [PATCH] fix: preserve edit state during UI refresh for threshold overrides (#295) - Editing state is now tracked at parent component level - Edit state persists across WebSocket updates and re-renders - Save/Cancel buttons no longer disappear during 5-second refresh cycle - Fixes issue where users lost ability to save threshold changes --- frontend-modern/src/pages/Alerts.tsx | 32 ++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/frontend-modern/src/pages/Alerts.tsx b/frontend-modern/src/pages/Alerts.tsx index 83f2feace..817aed065 100644 --- a/frontend-modern/src/pages/Alerts.tsx +++ b/frontend-modern/src/pages/Alerts.tsx @@ -990,18 +990,27 @@ function AddOverrideForm(props: { // Override Item Component function OverrideItem(props: { override: Override; + isEditing: boolean; + onEditStart: () => void; + onEditEnd: () => void; onUpdate: (override: Override) => void; onRemove: () => void; }) { - const [editing, setEditing] = createSignal(false); const [editValues, setEditValues] = createSignal({ ...props.override.thresholds }); + // Update edit values when override changes or editing starts + createEffect(() => { + if (props.isEditing) { + setEditValues({ ...props.override.thresholds }); + } + }); + const handleSave = () => { props.onUpdate({ ...props.override, thresholds: { ...editValues() } }); - setEditing(false); + props.onEditEnd(); }; return ( @@ -1024,7 +1033,7 @@ function OverrideItem(props: { - +
v)}> {([key, value]) => ( @@ -1037,7 +1046,7 @@ function OverrideItem(props: {
- +
v)}> {([key]) => ( @@ -1064,11 +1073,10 @@ function OverrideItem(props: {
- + - +