From a72df8cdad1f22c764410c8ccc930d54fac97349 Mon Sep 17 00:00:00 2001 From: Daniel Hatton Date: Wed, 21 May 2025 12:09:20 +0100 Subject: [PATCH 1/3] Update URLs in loaders --- src/loaders/dataCollectionGroups.tsx | 2 +- src/loaders/general.tsx | 4 ++-- src/loaders/gridSquares.tsx | 6 ++--- src/loaders/jwt.tsx | 6 ++--- src/loaders/machineConfig.tsx | 2 +- src/loaders/magTable.tsx | 4 ++-- src/loaders/multigridSetup.tsx | 4 ++-- src/loaders/possibleGainRefs.tsx | 8 +++---- src/loaders/processingParameters.tsx | 6 ++--- src/loaders/rsyncers.tsx | 12 +++++----- src/loaders/sessionSetup.tsx | 2 +- src/loaders/session_clients.tsx | 33 ++++++---------------------- src/loaders/visits.tsx | 2 +- 13 files changed, 36 insertions(+), 55 deletions(-) diff --git a/src/loaders/dataCollectionGroups.tsx b/src/loaders/dataCollectionGroups.tsx index 93af47b..e27fc3d 100644 --- a/src/loaders/dataCollectionGroups.tsx +++ b/src/loaders/dataCollectionGroups.tsx @@ -5,7 +5,7 @@ import { Params } from "react-router-dom"; const getDataCollectionGroups = async (sessid: string = "0") => { console.log("data collection groups gather"); const response = await client.get( - `sessions/${sessid}/data_collection_groups`, + `session_info/sessions/${sessid}/data_collection_groups`, ); if (response.status !== 200) { diff --git a/src/loaders/general.tsx b/src/loaders/general.tsx index ccba532..2b107b3 100644 --- a/src/loaders/general.tsx +++ b/src/loaders/general.tsx @@ -20,7 +20,7 @@ export const getInstrumentConnectionStatus = async () => { }; export const getUpstreamVisits = async (sessid: number) => { - const response = await client.get(`sessions/${sessid}/upstream_visits`); + const response = await client.get(`session_info/correlative/sessions/${sessid}/upstream_visits`); if (response.status !== 200) { return null; @@ -29,7 +29,7 @@ export const getUpstreamVisits = async (sessid: number) => { }; export const upstreamDataDownloadRequest = async (visitName: string, sessid: number) => { - const response = await client.get(`visits/${visitName}/${sessid}/upstream_tiff_data_request`); + const response = await client.get(`session_info/correlative/visits/${visitName}/${sessid}/upstream_tiff_data_request`); if (response.status !== 200) { return null; diff --git a/src/loaders/gridSquares.tsx b/src/loaders/gridSquares.tsx index c7bfd9b..c82d00b 100644 --- a/src/loaders/gridSquares.tsx +++ b/src/loaders/gridSquares.tsx @@ -5,7 +5,7 @@ import { Params } from "react-router-dom"; const getGridSquares = async (sessid: string = "0", dataCollectionGroupId: string = "0") => { console.log("getting grid squares"); const response = await client.get( - `sessions/${sessid}/data_collection_groups/${dataCollectionGroupId}/grid_squares`, + `session_info/spa/sessions/${sessid}/data_collection_groups/${dataCollectionGroupId}/grid_squares`, ); if (response.status !== 200) { @@ -17,7 +17,7 @@ const getGridSquares = async (sessid: string = "0", dataCollectionGroupId: strin const getNumMovies = async (sessid: string, dataCollectionGroupId: string, gridSquareId: number) => { const response = await client.get( - `sessions/${sessid}/data_collection_groups/${dataCollectionGroupId}/grid_squares/${gridSquareId}/num_movies`, + `session_info/spa/sessions/${sessid}/data_collection_groups/${dataCollectionGroupId}/grid_squares/${gridSquareId}/num_movies`, ); if (response.status !== 200) { @@ -30,7 +30,7 @@ const getNumMovies = async (sessid: string, dataCollectionGroupId: string, gridS const getFoilHoles = async (sessid: string, dataCollectionGroupId: string, gridSquareId: number) => { const response = await client.get( - `sessions/${sessid}/data_collection_groups/${dataCollectionGroupId}/grid_squares/${gridSquareId}/foil_holes`, + `session_info/spa/sessions/${sessid}/data_collection_groups/${dataCollectionGroupId}/grid_squares/${gridSquareId}/foil_holes`, ); if (response.status !== 200) { diff --git a/src/loaders/jwt.tsx b/src/loaders/jwt.tsx index 83203aa..9544ecc 100644 --- a/src/loaders/jwt.tsx +++ b/src/loaders/jwt.tsx @@ -19,7 +19,7 @@ export const getJWT = async (loginDetails: LoginDetails) => { }; export const handshake = async () => { - const response = await client.post(`instruments/${sessionStorage.getItem("instrumentName")}/activate_instrument_server`, {}); + const response = await client.post(`instrument_server/instruments/${sessionStorage.getItem("instrumentName")}/activate_instrument_server`, {}); if (response.status !== 200) { return null; } @@ -28,11 +28,11 @@ export const handshake = async () => { } export const sessionHandshake = async (sessid: number) => { - const response = await client.post(`instruments/${sessionStorage.getItem("instrumentName")}/sessions/${sessid}/activate_instrument_server`, {}); + const response = await client.post(`instrument_server/instruments/${sessionStorage.getItem("instrumentName")}/sessions/${sessid}/activate_instrument_server`, {}); return response.data; } export const sessionTokenCheck = async (sessid: number) => { - const response = await client.get(`instruments/${sessionStorage.getItem("instrumentName")}/sessions/${sessid}/active`); + const response = await client.get(`instrument_server/instruments/${sessionStorage.getItem("instrumentName")}/sessions/${sessid}/active`); return response.data.active; } diff --git a/src/loaders/machineConfig.tsx b/src/loaders/machineConfig.tsx index 046e1aa..e617746 100644 --- a/src/loaders/machineConfig.tsx +++ b/src/loaders/machineConfig.tsx @@ -5,7 +5,7 @@ import { Params } from "react-router-dom"; import { parseDate } from "utils/generic"; export const getMachineConfigData = async () => { - const response = await client.get(`instruments/${sessionStorage.getItem("instrumentName")}/machine`); + const response = await client.get(`session_info/instruments/${sessionStorage.getItem("instrumentName")}/machine`); if (response.status !== 200) { return null; diff --git a/src/loaders/magTable.tsx b/src/loaders/magTable.tsx index aafb88c..88209c3 100644 --- a/src/loaders/magTable.tsx +++ b/src/loaders/magTable.tsx @@ -15,7 +15,7 @@ export const addMagTableRow = async ( magnification: number, pixelSize: number, ) => { - const response = await client.post(`mag_table/`, [{ + const response = await client.post(`mag_table/mag_table/`, [{ magnification: magnification, pixel_size: pixelSize, }]); @@ -28,7 +28,7 @@ export const addMagTableRow = async ( export const removeMagTableRow = async ( magnification: number, ) => { - const response = await client.delete(`mag_table/${magnification}`); + const response = await client.delete(`mag_table/mag_table/${magnification}`); if (response.status !== 200) { return null; } diff --git a/src/loaders/multigridSetup.tsx b/src/loaders/multigridSetup.tsx index 5526c2b..9720cb6 100644 --- a/src/loaders/multigridSetup.tsx +++ b/src/loaders/multigridSetup.tsx @@ -9,7 +9,7 @@ export const setupMultigridWatcher = async ( sessionId: number, ) => { const response = await client.post( - `sessions/${sessionId}/multigrid_watcher`, + `instrument_server/sessions/${sessionId}/multigrid_watcher`, multigridWatcher, ); @@ -24,7 +24,7 @@ export const startMultigridWatcher = async ( sessionId: number, ) => { const response = await client.post( - `sessions/${sessionId}/start_multigrid_watcher`, + `instrument_server/sessions/${sessionId}/start_multigrid_watcher`, {}, ); diff --git a/src/loaders/possibleGainRefs.tsx b/src/loaders/possibleGainRefs.tsx index 372747a..f72c019 100644 --- a/src/loaders/possibleGainRefs.tsx +++ b/src/loaders/possibleGainRefs.tsx @@ -3,7 +3,7 @@ import { client } from "utils/api/client"; import { Params } from "react-router-dom"; const getGainRefData = async (sessionId: string) => { - const response = await client.get(`instruments/${sessionStorage.getItem("instrumentName")}/sessions/${sessionId}/possible_gain_references`); + const response = await client.get(`instrument_server/instruments/${sessionStorage.getItem("instrumentName")}/sessions/${sessionId}/possible_gain_references`); if (response.status !== 200) { return null; @@ -16,7 +16,7 @@ export const transferGainReference = async ( sessionId: number, gainRef: string, ) => { - const response = await client.post(`sessions/${sessionId}/upload_gain_reference`, { + const response = await client.post(`instrument_server/sessions/${sessionId}/upload_gain_reference`, { gain_path: gainRef, }); if (response.status !== 200) { @@ -32,7 +32,7 @@ export const prepareGainReference = async ( eer: boolean = false, tag: string = "", ) => { - const response = await client.post(`sessions/${sessionId}/process_gain`, { + const response = await client.post(`file_manipulation/sessions/${sessionId}/process_gain`, { gain_ref: gainRef, rescale: rescale, eer: eer, @@ -48,7 +48,7 @@ export const updateCurrentGainReference = async ( sessionId: number, gainRef: string, ) => { - const response = await client.put(`sessions/${sessionId}/current_gain_ref`, { + const response = await client.put(`session_info/sessions/${sessionId}/current_gain_ref`, { path: gainRef, }); if (response.status !== 200) { diff --git a/src/loaders/processingParameters.tsx b/src/loaders/processingParameters.tsx index e8fcb79..c62b6d9 100644 --- a/src/loaders/processingParameters.tsx +++ b/src/loaders/processingParameters.tsx @@ -4,7 +4,7 @@ import { Params } from "react-router-dom"; export const getSessionProcessingParameterData = async (sessid: string = "0") => { const response = await client.get( - `sessions/${sessid}/session_processing_parameters`, + `session_parameters/sessions/${sessid}/session_processing_parameters`, ); if (response.status !== 200) { @@ -16,7 +16,7 @@ export const getSessionProcessingParameterData = async (sessid: string = "0") => const getProcessingParameterData = async (sessid: string = "0") => { const response = await client.get( - `sessions/${sessid}/spa_processing_parameters`, + `session_info/spa/sessions/${sessid}/spa_processing_parameters`, ); if (response.status !== 200) { @@ -27,7 +27,7 @@ const getProcessingParameterData = async (sessid: string = "0") => { }; export const updateSessionProcessingParameters = async (sessid: string, params: any = {}) => { - const response = await client.post(`sessions/${sessid}/session_processing_parameters`, { + const response = await client.post(`session_parameters/sessions/${sessid}/session_processing_parameters`, { gain_ref: params["gainRef"] ?? "", dose_per_frame: params["dosePerFrame"] ?? null, eer_fractionation_file: params["eerFractionationFile"] ?? "", diff --git a/src/loaders/rsyncers.tsx b/src/loaders/rsyncers.tsx index 4d638fd..af019c5 100644 --- a/src/loaders/rsyncers.tsx +++ b/src/loaders/rsyncers.tsx @@ -5,7 +5,7 @@ import { Params } from "react-router-dom"; import { parseDate } from "utils/generic"; const getRsyncerData = async (sessionId: string) => { - const response = await client.get(`instruments/${sessionStorage.getItem("instrumentName")}/sessions/${sessionId}/rsyncer_info`); + const response = await client.get(`instrument_server/instruments/${sessionStorage.getItem("instrumentName")}/sessions/${sessionId}/rsyncer_info`); if (response.status !== 200) { return null; @@ -17,7 +17,7 @@ const getRsyncerData = async (sessionId: string) => { export const pauseRsyncer = async (sessionId: number, source: string) => { console.log("stopping rsyncer"); - const response = await client.post(`sessions/${sessionId}/stop_rsyncer`, { + const response = await client.post(`instrument_server/sessions/${sessionId}/stop_rsyncer`, { source: source, }); @@ -33,7 +33,7 @@ export const pauseRsyncer = async (sessionId: number, source: string) => { export const restartRsyncer = async (sessionId: number, source: string) => { console.log("stopping rsyncer"); - const response = await client.post(`sessions/${sessionId}/restart_rsyncer`, { + const response = await client.post(`instrument_server/sessions/${sessionId}/restart_rsyncer`, { source: source, }); @@ -48,7 +48,7 @@ export const restartRsyncer = async (sessionId: number, source: string) => { export const finaliseRsyncer = async (sessionId: number, source: string) => { - const response = await client.post(`sessions/${sessionId}/finalise_rsyncer`, { + const response = await client.post(`instrument_server/sessions/${sessionId}/finalise_rsyncer`, { source: source, }); @@ -63,7 +63,7 @@ export const finaliseRsyncer = async (sessionId: number, source: string) => { export const finaliseSession = async (sessionId: number) => { - const response = await client.post(`sessions/${sessionId}/finalise_session`, {}); + const response = await client.post(`instrument_server/sessions/${sessionId}/finalise_session`, {}); if (response.status !== 200) { return null; @@ -77,7 +77,7 @@ export const finaliseSession = async (sessionId: number) => { export const removeRsyncer = async (sessionId: number, source: string) => { console.log("removing rsyncer"); - const response = await client.post(`sessions/${sessionId}/remove_rsyncer`, { + const response = await client.post(`instrument_server/sessions/${sessionId}/remove_rsyncer`, { source: source, }); diff --git a/src/loaders/sessionSetup.tsx b/src/loaders/sessionSetup.tsx index 6fc5f72..a80e735 100644 --- a/src/loaders/sessionSetup.tsx +++ b/src/loaders/sessionSetup.tsx @@ -9,7 +9,7 @@ export const registerProcessingParameters = async ( sessionId: number, ) => { const response = await client.post( - `sessions/${sessionId}/provided_processing_parameters`, + `instrument_server/sessions/${sessionId}/provided_processing_parameters`, processingParameters, ); diff --git a/src/loaders/session_clients.tsx b/src/loaders/session_clients.tsx index cde0dab..65168ae 100644 --- a/src/loaders/session_clients.tsx +++ b/src/loaders/session_clients.tsx @@ -7,7 +7,7 @@ export const includePage = (endpoint: string, limit: number, page: number) => `${endpoint}${endpoint.includes("?") ? "&" : "?"}page=${page - 1}&limit=${limit}`; const getSessionsData = async () => { - const response = await client.get(`sessions`); + const response = await client.get(`session_info/instrument_name/${sessionStorage.getItem("instrumentName")}/sessions`); if (response.status !== 200) { return null; @@ -20,7 +20,7 @@ const getSessionsData = async () => { export const getSessionDataForVisit = async (visit: string, instrumentName: string) => { if(visit === "" || instrumentName === "") return []; - const response = await client.get(`instruments/${instrumentName}/visits/${visit}/sessions`); + const response = await client.get(`session_info/instruments/${instrumentName}/visits/${visit}/sessions`); if (response.status !== 200) { return []; } @@ -28,18 +28,8 @@ export const getSessionDataForVisit = async (visit: string, instrumentName: stri return response.data; } -const getClientData = async () => { - const response = await client.get(`clients`); - - if (response.status !== 200) { - return null; - } - - return response.data; -}; - const getSessionData = async (sessid: string = "0") => { - const response = await client.get(`session/${sessid}`); + const response = await client.get(`session_info/session/${sessid}`); if (response.status !== 200) { return null; @@ -52,7 +42,7 @@ export const linkSessionToClient = async ( client_id: number, sessionName: string, ) => { - const response = await client.post(`clients/${client_id}/session`, { + const response = await client.post(`session_info/clients/${client_id}/session`, { session_name: sessionName, }); if (response.status !== 200) { @@ -63,7 +53,7 @@ export const linkSessionToClient = async ( export const createSession = async (visit: string, sessionName: string, instrumentName: string) => { const response = await client.post( - `instruments/${instrumentName}/visits/${visit}/session/${sessionName}`, + `session_info/instruments/${instrumentName}/visits/${visit}/session/${sessionName}`, {}, ); if (response.status !== 200) { @@ -74,7 +64,7 @@ export const createSession = async (visit: string, sessionName: string, instrume export const updateSession = async (sessionID: number, process: boolean = true) => { const response = await client.post( - `sessions/${sessionID}?process=${process ? 'true': 'false'}`, + `session_info/sessions/${sessionID}?process=${process ? 'true': 'false'}`, {}, ); if (response.status !== 200) { @@ -84,7 +74,7 @@ export const updateSession = async (sessionID: number, process: boolean = true) } export const deleteSessionData = async (sessid: number) => { - const response = await client.delete(`sessions/${sessid}`); + const response = await client.delete(`session_info/sessions/${sessid}`); if (response.status !== 200) { return null; } @@ -97,19 +87,10 @@ const query = { staleTime: 60000, }; -const clientQuery = { - queryKey: ["homepageClients", sessionStorage.getItem("instrumentName")], - queryFn: getClientData, - staleTime: 60000, -}; - export const sessionsLoader = (queryClient: QueryClient) => async () => (await queryClient.getQueryData(query.queryKey)) ?? (await queryClient.fetchQuery(query)); -export const clientsLoader = (queryClient: QueryClient) => async () => - (await queryClient.getQueryData(clientQuery.queryKey)) ?? - (await queryClient.fetchQuery(clientQuery)); const queryBuilder = (sessid: string = "0") => { return { diff --git a/src/loaders/visits.tsx b/src/loaders/visits.tsx index eef1be4..c56cadc 100644 --- a/src/loaders/visits.tsx +++ b/src/loaders/visits.tsx @@ -3,7 +3,7 @@ import { client } from "utils/api/client"; import { Params } from "react-router-dom"; const getVisitData = async (instrumentName: string) => { - const response = await client.get(`instruments/${instrumentName}/visits_raw`); + const response = await client.get(`session_info/instruments/${instrumentName}/visits_raw`); if (response.status !== 200) { return null; From e9f275a58748ba1c808ccef046647b185e58c33c Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Tue, 27 May 2025 18:44:38 +0100 Subject: [PATCH 2/3] Replaced 'SessionClient' with 'Session'; updated schema of 'Session' --- src/routes/Home.tsx | 28 ++++++++++++++-------------- src/schema/main.ts | 1 + 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/routes/Home.tsx b/src/routes/Home.tsx index 407fe05..7db0135 100644 --- a/src/routes/Home.tsx +++ b/src/routes/Home.tsx @@ -36,9 +36,9 @@ import useWebSocket from "react-use-websocket"; import React, { useEffect } from "react"; -type SessionClients = components["schemas"]["SessionClients"]; +type Session = components["schemas"]["Session"]; -const SessionRow = (session_client: SessionClients) => { +const SessionRow = (session: Session) => { const { isOpen: isOpenDelete, onOpen: onOpenDelete, onClose: onCloseDelete } = useDisclosure(); const { isOpen: isOpenCleanup, onOpen: onOpenCleanup, onClose: onCloseCleanup } = useDisclosure(); @@ -50,52 +50,52 @@ const SessionRow = (session_client: SessionClients) => { const [sessionActive, setSessionActive] = React.useState(false); - useEffect(() => {sessionTokenCheck(session_client.session.id).then((active) => setSessionActive(active))}, []); + useEffect(() => {sessionTokenCheck(session.id).then((active) => setSessionActive(active))}, []); return ( - {session_client ? + {session ? ( <> - Confirm removing session {session_client.session.name} from list + Confirm removing session {session.name} from list Are you sure you want to continue? This action is not reversible - + - Confirm removing files for session {session_client.session.name} + Confirm removing files for session {session.name} Are you sure you want to continue? This action is not reversible - + { textOverflow="ellipsis" overflow="hidden" > - {session_client.session.name}:{" "} - {session_client.session.id} + {session.name}:{" "} + {session.id} {sessionActive ? : <>} @@ -159,7 +159,7 @@ const SessionRow = (session_client: SessionClients) => { const Home = () => { const sessions = useLoaderData() as { - current: SessionClients[]; + current: Session[]; } | null; const [ UUID, setUUID ] = React.useState(""); const baseUrl = sessionStorage.getItem("murfeyServerURL") ?? process.env.REACT_APP_API_ENDPOINT diff --git a/src/schema/main.ts b/src/schema/main.ts index 9cad56c..f0cf3ad 100644 --- a/src/schema/main.ts +++ b/src/schema/main.ts @@ -1838,6 +1838,7 @@ export interface components { * @default */ process?: boolean; + visit_end_time: string; }; /** SessionClients */ SessionClients: { From adceeef1c9f81f655dc49ee169c8f81c2f92b2b6 Mon Sep 17 00:00:00 2001 From: Eu Pin Tien Date: Tue, 27 May 2025 18:45:53 +0100 Subject: [PATCH 3/3] Removed deprecated objects; fixed broken URLs caused by FastAPI endpoint refactoring --- src/index.tsx | 10 ---------- src/loaders/general.tsx | 4 ++-- src/loaders/session_clients.tsx | 2 +- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/index.tsx b/src/index.tsx index b1c1a69..b65c8ba 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -21,7 +21,6 @@ import { ProcessingParameters } from "routes/ProcessingParameters"; import { SessionParameters } from "routes/SessionParameters"; import { Error } from "routes/Error"; import { - clientsLoader, sessionsLoader, sessionLoader, } from "loaders/session_clients"; @@ -89,12 +88,6 @@ const router = createBrowserRouter([ errorElement: , loader: machineConfigLoader(queryClient), }, - { - path: "/link_session", - element: , - errorElement: , - loader: clientsLoader(queryClient), - }, { path: "/sessions/:sessid/gain_ref_transfer", element: , @@ -152,6 +145,3 @@ root.render( , ); - - -// loader: ({ params }) => gridSquaresLoader(queryClient)(params), \ No newline at end of file diff --git a/src/loaders/general.tsx b/src/loaders/general.tsx index 2b107b3..1cb5043 100644 --- a/src/loaders/general.tsx +++ b/src/loaders/general.tsx @@ -1,7 +1,7 @@ import { client } from "utils/api/client"; export const getInstrumentName = async () => { - const response = await client.get(`instruments/${sessionStorage.getItem("instrumentName")}/instrument_name`); + const response = await client.get(`display/instruments/${sessionStorage.getItem("instrumentName")}/instrument_name`); if (response.status !== 200) { return null; @@ -10,7 +10,7 @@ export const getInstrumentName = async () => { }; export const getInstrumentConnectionStatus = async () => { - const response = await client.get(`instruments/${sessionStorage.getItem("instrumentName")}/instrument_server`, {}, false); + const response = await client.get(`instrument_server/instruments/${sessionStorage.getItem("instrumentName")}/instrument_server`, {}, false); if (response.status !== 200) { return false; diff --git a/src/loaders/session_clients.tsx b/src/loaders/session_clients.tsx index 65168ae..4b692e6 100644 --- a/src/loaders/session_clients.tsx +++ b/src/loaders/session_clients.tsx @@ -7,7 +7,7 @@ export const includePage = (endpoint: string, limit: number, page: number) => `${endpoint}${endpoint.includes("?") ? "&" : "?"}page=${page - 1}&limit=${limit}`; const getSessionsData = async () => { - const response = await client.get(`session_info/instrument_name/${sessionStorage.getItem("instrumentName")}/sessions`); + const response = await client.get(`session_info/instruments/${sessionStorage.getItem("instrumentName")}/sessions`); if (response.status !== 200) { return null;