diff --git a/src/loaders/multigridSetup.tsx b/src/loaders/multigridSetup.tsx index c9f9a01..5526c2b 100644 --- a/src/loaders/multigridSetup.tsx +++ b/src/loaders/multigridSetup.tsx @@ -33,4 +33,5 @@ export const startMultigridWatcher = async ( } return response.data; + }; diff --git a/src/loaders/sessionSetup.tsx b/src/loaders/sessionSetup.tsx index d9b9647..6fc5f72 100644 --- a/src/loaders/sessionSetup.tsx +++ b/src/loaders/sessionSetup.tsx @@ -19,4 +19,3 @@ export const registerProcessingParameters = async ( return response.data; }; - diff --git a/src/loaders/session_clients.tsx b/src/loaders/session_clients.tsx index 2f1de98..cde0dab 100644 --- a/src/loaders/session_clients.tsx +++ b/src/loaders/session_clients.tsx @@ -72,6 +72,17 @@ export const createSession = async (visit: string, sessionName: string, instrume return response.data; }; +export const updateSession = async (sessionID: number, process: boolean = true) => { + const response = await client.post( + `sessions/${sessionID}?process=${process ? 'true': 'false'}`, + {}, + ); + if (response.status !== 200) { + return null; + } + return response.data; +} + export const deleteSessionData = async (sessid: number) => { const response = await client.delete(`sessions/${sessid}`); if (response.status !== 200) { diff --git a/src/routes/MultigridSetup.tsx b/src/routes/MultigridSetup.tsx index 4ec0eff..3ed8b83 100644 --- a/src/routes/MultigridSetup.tsx +++ b/src/routes/MultigridSetup.tsx @@ -16,7 +16,7 @@ import { ArrowForwardIcon } from "@chakra-ui/icons"; import { Link as LinkRouter, useLoaderData, useParams } from "react-router-dom"; import { components } from "schema/main"; -import { setupMultigridWatcher } from "loaders/multigridSetup"; +import { setupMultigridWatcher, startMultigridWatcher } from "loaders/multigridSetup"; import { getSessionData } from "loaders/session_clients"; import { SetupStepper } from "components/setupStepper"; import React, { useEffect } from "react"; @@ -49,15 +49,18 @@ const MultigridSetup = () => { const handleDirectorySelection = (e: React.ChangeEvent) => setSelectedDirectory(e.target.value); - const handleSelection = () => { + const recipesDefined = machineConfig ? machineConfig.recipes ? Object.keys(machineConfig.recipes).length !== 0: false: false; + + const handleSelection = async () => { if (typeof sessid !== "undefined"){ - setupMultigridWatcher( + await setupMultigridWatcher( { source: selectedDirectory, skip_existing_processing: skipExistingProcessing, } as MultigridWatcherSpec, parseInt(sessid), ); + if(!recipesDefined) await startMultigridWatcher(parseInt(sessid)); } }; @@ -140,7 +143,7 @@ const MultigridSetup = () => { w={{ base: "100%", md: "19.6%" }} _hover={{ textDecor: "none" }} as={LinkRouter} - to={`../new_session/parameters/${sessid}`} + to={recipesDefined ? `../new_session/parameters/${sessid}`: `../sessions/${sessid}`} > { setSelectedDirectory(mcfg["data_directories"][0]); } - useEffect(() => {getSessionProcessingParameterData(sessid).then((params) => {if(params === null) navigate(`/new_session/parameters/${sessid}`);})}) - - useEffect(() => {getMachineConfigData().then((mcfg) => handleMachineConfig(mcfg))}, []); - useEffect(() => { getSessionData(sessid).then((sess) => setSession(sess.session)); setUUID(uuid4()); }, []); + const recipesDefined = machineConfig ? machineConfig.recipes ? Object.keys(machineConfig.recipes).length !== 0: false: false; + + useEffect(() => {getSessionProcessingParameterData(sessid).then((params) => {if(params === null && recipesDefined && session !== undefined && session.process) navigate(`/new_session/parameters/${sessid}`);})}) + + useEffect(() => {getMachineConfigData().then((mcfg) => handleMachineConfig(mcfg))}, []); + const parseWebsocketMessage = (message: any) => { let parsedMessage: any = {}; try { diff --git a/src/routes/SessionSetup.tsx b/src/routes/SessionSetup.tsx index 0d2fb3a..917e75f 100644 --- a/src/routes/SessionSetup.tsx +++ b/src/routes/SessionSetup.tsx @@ -1,9 +1,6 @@ import { Button, Box, - FormControl, - FormLabel, - Input, RadioGroup, Radio, Stack, @@ -12,12 +9,12 @@ import { Heading, } from "@chakra-ui/react"; import { getForm } from "components/forms"; -import { Link as LinkRouter, useParams, useLoaderData, useNavigate } from "react-router-dom"; +import { Link as LinkRouter, useParams, useLoaderData } from "react-router-dom"; import { SetupStepper } from "components/setupStepper"; import { components } from "schema/main"; import { getProcessingParameterData } from "loaders/processingParameters"; import { startMultigridWatcher } from "loaders/multigridSetup"; -import { getSessionData } from "loaders/session_clients"; +import { getSessionData, updateSession } from "loaders/session_clients"; import { registerProcessingParameters } from "loaders/sessionSetup"; import React, { useEffect } from "react"; @@ -52,6 +49,13 @@ const SessionSetup = () => { } }; + const handleSkip = async () => { + if (sessid !== undefined){ + await updateSession(parseInt(sessid), false); + startMultigridWatcher(parseInt(sessid)); + } + } + if (session) getProcessingParameterData(session.session.id.toString()).then((params) => setProcParams(params), @@ -63,7 +67,6 @@ const SessionSetup = () => { ? 3 : 0 : 3; - let navigate = useNavigate(); return (
@@ -145,7 +148,7 @@ const SessionSetup = () => { as={LinkRouter} to={`../sessions/${sessid}`} > - + diff --git a/src/schema/main.ts b/src/schema/main.ts index 9a9eb50..9cad56c 100644 --- a/src/schema/main.ts +++ b/src/schema/main.ts @@ -1833,6 +1833,11 @@ export interface components { * @default */ instrument_name?: string; + /** + * Process + * @default + */ + process?: boolean; }; /** SessionClients */ SessionClients: {