From 39f013c47fae038dc50c6ef19f1067529c836d6b Mon Sep 17 00:00:00 2001 From: Pim Hutting Date: Thu, 8 Jan 2026 14:51:02 +0100 Subject: [PATCH] feat: goals now update in UI ref: N25B-400 --- src/pages/MonitoringPage/Components.tsx | 11 ++++++++-- src/pages/MonitoringPage/MonitoringPage.tsx | 21 ++++++++++++++++--- src/pages/MonitoringPage/MonitoringPageAPI.ts | 1 + 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/pages/MonitoringPage/Components.tsx b/src/pages/MonitoringPage/Components.tsx index c5fe47b..c60a702 100644 --- a/src/pages/MonitoringPage/Components.tsx +++ b/src/pages/MonitoringPage/Components.tsx @@ -119,7 +119,7 @@ export const StatusList: React.FC = ({ title, items, type }) => let isAchieved = item.achieved; const showIndicator = type !== 'norm'; const canOverride = showIndicator && !isAchieved; - + const isCurrentGoal = type === 'goal' && item.isCurrent; const handleOverrideClick = () => { if (!canOverride) return; let contextValue = String(item.id); @@ -136,7 +136,14 @@ export const StatusList: React.FC = ({ title, items, type }) => {isAchieved ? "✔️" : "❌"} )} - + {item.description || item.label || item.norm} diff --git a/src/pages/MonitoringPage/MonitoringPage.tsx b/src/pages/MonitoringPage/MonitoringPage.tsx index 3385274..3d354ec 100644 --- a/src/pages/MonitoringPage/MonitoringPage.tsx +++ b/src/pages/MonitoringPage/MonitoringPage.tsx @@ -17,6 +17,7 @@ const MonitoringPage: React.FC = () => { // Can be used to block actions until feedback from CB. const [loading, setLoading] = React.useState(false); const [activeIds, setActiveIds] = React.useState>({}); + const [goalIndex, setGoalIndex] = React.useState(0); const phaseIds = getPhaseIds(); const [phaseIndex, setPhaseIndex] = React.useState(0); @@ -29,11 +30,25 @@ const MonitoringPage: React.FC = () => { const newIndex = allIds.indexOf(data.phase_id); if (newIndex !== -1) { setPhaseIndex(newIndex); + setGoalIndex(0); //when phase change we reset the index } } - - - else if (data.type === 'trigger_update' || data.type === 'goal_update') { + else if (data.type === 'goal_update') { + // We find which goal in the current phase matches this ID + const currentPhaseGoals = getGoalsInPhase(phaseIds[phaseIndex]); + const gIndex = currentPhaseGoals.findIndex((g: any) => g.id === data.id); + if (gIndex !== -1) { + setGoalIndex(gIndex); + console.log(`Goal index updated to ${gIndex} for goal ID ${data.id}`); + } + + setActiveIds((prev) => ({ + ...prev, + [data.id]: true + })); + } + + else if (data.type === 'trigger_update') { setActiveIds((prev) => ({ ...prev, [data.id]: data.achieved // data.id is de key, achieved is true/false diff --git a/src/pages/MonitoringPage/MonitoringPageAPI.ts b/src/pages/MonitoringPage/MonitoringPageAPI.ts index b85a1eb..bf222c4 100644 --- a/src/pages/MonitoringPage/MonitoringPageAPI.ts +++ b/src/pages/MonitoringPage/MonitoringPageAPI.ts @@ -31,6 +31,7 @@ export function useExperimentLogger(onUpdate?: (data: any) => void) { try { const parsedData = JSON.parse(event.data); if (onUpdate) { + console.log(event.data); onUpdate(parsedData); } } catch (err) {