diff --git a/webtool/frontend/src/components/ConfigureAndSimulate.tsx b/webtool/frontend/src/components/ConfigureAndSimulate.tsx index 355ec94..7aabf8a 100644 --- a/webtool/frontend/src/components/ConfigureAndSimulate.tsx +++ b/webtool/frontend/src/components/ConfigureAndSimulate.tsx @@ -8,11 +8,16 @@ import {intializePilotFromDeeplink} from "./deeplink.ts" import {ResourcefullyDialog} from "./resourcefully/dialog.tsx" import {useForceUpdate} from "../services/use-force-update.ts" import {usePromiseValue} from "../services/use-promise-value.ts" +import {useOpenFormTracker} from "../services/open-form-tracker.ts" export const ConfigureAndSimulate: FunctionComponent> = (props) => { const [pilot, setPilot] = useState(intializePilotFromDeeplink) const [showSimulation, setShowSimulation] = useState(false) const [simulation, setSimulation] = useState() + + // track which form is open + const openFormTracker = useOpenFormTracker() + // allows to sync the GUI after simulation changes const forceUpdate = useForceUpdate() @@ -29,6 +34,10 @@ export const ConfigureAndSimulate: FunctionComponent> = (p } const onClickStart = async (anylogicElementId: string) => { + if (openFormTracker.isOpen) { + alert("Sla eerst de wijzigingen op en start dan de simulatie") + } + stopAnyLogicSession() const sessionId = await savePilot(pilot) setShowSimulation(true) diff --git a/webtool/frontend/src/services/open-form-tracker.ts b/webtool/frontend/src/services/open-form-tracker.ts new file mode 100644 index 0000000..e787f31 --- /dev/null +++ b/webtool/frontend/src/services/open-form-tracker.ts @@ -0,0 +1,20 @@ +import {useState} from "react" + +interface OpenFormTracker { + isOpen: boolean + formId: string + setFormId: (id: string) => void + clearFormId: () => void +} + +export function useOpenFormTracker(): OpenFormTracker { + const [formId, setFormId] = useState("") + const clearFormId = () => setFormId("") + + return { + isOpen: formId !== "", + formId, + setFormId, + clearFormId, + } +}