From f73bbb9d02bfcc41b1ffa1fc658fee83ee20c68e Mon Sep 17 00:00:00 2001
From: Pim Hutting
Date: Thu, 22 Jan 2026 10:15:20 +0100
Subject: [PATCH] chore: added tests and removed restart phase
this version also has recursive goals functional
---
.../MonitoringPage/MonitoringPage.module.css | 5 --
src/pages/MonitoringPage/MonitoringPage.tsx | 41 +--------
src/pages/MonitoringPage/MonitoringPageAPI.ts | 10 ---
.../nodes/BasicBeliefNode.tsx | 4 +-
.../monitoringPage/MonitoringPage.test.tsx | 8 +-
.../monitoringPage/MonitoringPageAPI.test.ts | 11 +--
test/utils/programStore.test.ts | 83 +++++++++++++++++++
7 files changed, 96 insertions(+), 66 deletions(-)
diff --git a/src/pages/MonitoringPage/MonitoringPage.module.css b/src/pages/MonitoringPage/MonitoringPage.module.css
index 5f23eea..183fe4b 100644
--- a/src/pages/MonitoringPage/MonitoringPage.module.css
+++ b/src/pages/MonitoringPage/MonitoringPage.module.css
@@ -77,11 +77,6 @@
color: white;
}
-.restartPhase{
- background-color: rgb(255, 123, 0);
- color: white;
-}
-
.restartExperiment{
background-color: red;
color: white;
diff --git a/src/pages/MonitoringPage/MonitoringPage.tsx b/src/pages/MonitoringPage/MonitoringPage.tsx
index cd7f95e..3b79df9 100644
--- a/src/pages/MonitoringPage/MonitoringPage.tsx
+++ b/src/pages/MonitoringPage/MonitoringPage.tsx
@@ -1,4 +1,4 @@
-import React, { useCallback, useRef, useState } from 'react';
+import React, { useCallback, useState } from 'react';
import styles from './MonitoringPage.module.css';
// Store & API
@@ -52,16 +52,12 @@ function useExperimentLogic() {
const [phaseIndex, setPhaseIndex] = useState(0);
const [isFinished, setIsFinished] = useState(false);
- // Ref to suppress stream updates during the "Reset Phase" fast-forward sequence
- const suppressUpdates = useRef(false);
-
const phaseIds = getPhaseIds();
const phaseNames = getPhaseNames();
// --- Stream Handlers ---
const handleStreamUpdate = useCallback((data: ExperimentStreamData) => {
- if (suppressUpdates.current) return;
if (data.type === 'phase_update' && data.id) {
const payload = data as PhaseUpdate;
console.log(`${data.type} received, id : ${data.id}`);
@@ -105,7 +101,6 @@ function useExperimentLogic() {
}, [getPhaseIds, getGoalsInPhase, phaseIds, phaseIndex, phaseNames]);
const handleStatusUpdate = useCallback((data: unknown) => {
- if (suppressUpdates.current) return;
const payload = data as CondNormsStateUpdate;
if (payload.type !== 'cond_norms_state_update') return;
@@ -145,7 +140,7 @@ function useExperimentLogic() {
}
}, [setProgramState]);
- const handleControlAction = async (action: "pause" | "play" | "nextPhase" | "resetPhase") => {
+ const handleControlAction = async (action: "pause" | "play" | "nextPhase") => {
try {
setLoading(true);
switch (action) {
@@ -160,30 +155,6 @@ function useExperimentLogic() {
case "nextPhase":
await nextPhase();
break;
- case "resetPhase":
- //make sure you don't see the phases pass to arrive back at current phase
- suppressUpdates.current = true;
-
- const targetIndex = phaseIndex;
- console.log(`Resetting phase: Restarting and skipping to index ${targetIndex}`);
- const phases = graphReducer();
- setProgramState({ phases });
-
- setActiveIds({});
- setPhaseIndex(0); // Visually reset to start
- setGoalIndex(0);
- setIsFinished(false);
-
- // Restart backend
- await runProgramm();
- for (let i = 0; i < targetIndex; i++) {
- console.log(`Skipping phase ${i}...`);
- await nextPhase();
- }
- suppressUpdates.current = false;
- setPhaseIndex(targetIndex);
- setIsPlaying(true); //Maybe you pause and then reset
- break;
}
} catch (err) {
console.error(err);
@@ -251,7 +222,7 @@ function ControlPanel({
}: {
loading: boolean,
isPlaying: boolean,
- onAction: (a: "pause" | "play" | "nextPhase" | "resetPhase") => void,
+ onAction: (a: "pause" | "play" | "nextPhase") => void,
onReset: () => void
}) {
return (
@@ -276,12 +247,6 @@ function ControlPanel({
disabled={loading}
>⏭
-
-