09. Example Flows with Code Links¶
Concrete, code-linked walkthroughs for common journeys. Routes reflect PathNames and PrivateRoutes, with pointers to components and sagas that handle each step.
A) Projects → Processes → Results¶
1) Open Projects
- Route: / or /projects → ProjectFiles.
- Definitions: src/routes/PrivateRoutes.jsx:31, src/routes/PrivateRoutes.jsx:39, src/components/ProjectFiles.js:1.
2) Enter Project
- Route: /projects/:projectId → Project container with sidebar (Resources, Analysis, Results).
- Definitions: src/routes/PrivateRoutes.jsx:48, src/components/Project/index.jsx:1.
- Path constants: src/models/PathNames.js:1.
3) Go to Processes (Analysis)
- Route: /projects/:projectId/processes → components/Project/Processes (list + CRUD).
- Definitions: src/routes/PrivateRoutes.jsx:52, src/components/Project/Processes/index.jsx:1.
- Fetch list: processes.actions.fetchProcesses(projectId) → src/components/Project/Processes/index.jsx:220, saga src/redux/modules/processes/index.js:144.
- Create/Update/Delete: src/components/Project/Processes/index.jsx:88-122,172-207, sagas src/redux/modules/processes/index.js:214,236,257.
4) Open a Process
- Route: /projects/:projectId/processes/:processId (tabs and review supported).
- Definitions: src/routes/PrivateRoutes.jsx:53-55, src/components/Project/index.jsx:112-140.
- Process graph view: src/components/Project/Process/index.jsx:1.
- Load process + jobs: jobs.actions.fetchJobsByProcessId(processId) → src/components/Project/Process/index.jsx:437,793, saga src/redux/modules/jobs/index.js:262.
5) Configure Blocks and Start
- Select block: click node in React Flow → onBlockClick sets selectedBlock.
- Handler: src/components/Project/Process/index.jsx:450-522.
- Configure and submit:
- New link or job: processes.actions.createConn / processes.actions.createJob.
- Existing job update: processes.actions.updateJob.
- Handlers: src/components/Project/Process/index.jsx:393-413.
- Sagas (create/update/link): src/redux/modules/processes/index.js:282,304,210.
- Start process execution:
- UI Control: Start ▶ control button → onStartProcess.
- UI: src/components/Project/Process/index.jsx:886-896,728-740.
- Saga: jobs.actions.startProcess(processId) → src/redux/modules/jobs/index.js:286.
6) Review Results
- Route: /projects/:projectId/results or process review tabs /projects/:projectId/processes/:processId/review/:tab.
- Definitions: src/routes/PrivateRoutes.jsx:56, src/components/Project/index.jsx:169-176.
- Results UI (Vitessce, tabs, tables): src/components/Project/Results/index.jsx:1.
- Load process for visualization: processes.actions.fetchProcessesForVis → src/components/Project/Results/index.jsx:214-221, saga src/redux/modules/processes/index.js:186.
- Variable names, clusters, and panel data: tasks.actions.getVarNames, tasks.actions.checkTaskData, tasks.actions.deleteTaskData, tasks.actions.saveZarrData used in src/components/Project/Results/index.jsx:306-351,493-523.
- Open review tab in new window: src/components/Project/Results/index.jsx:516-523.
7) Download Outputs
- From Process view, download job output (e.g., AnnData): jobs.actions.downloadJob({ jobId, fileName }).
- UI: src/components/Project/Process/index.jsx:512-523.
- Saga: src/redux/modules/jobs/index.js:520-556.
OMERO Integration (images/thumbnails)
- Fetch thumbnails/details (Project/Process and Results):
- omero.actions.fetchImagesThumbnails(ids) → src/redux/modules/omero/index.js:164-176.
- omero.actions.fetchImagesDetails(ids) → src/redux/modules/omero/index.js:180-192.
- Usage in Process: src/components/Project/Process/index.jsx:232-260,268-294.
- Usage in Results: src/components/Project/Results/index.jsx:46-75,200-223.
B) Files Management (Global or In-Project)¶
1) Navigate to Files
- Global: /files → components/Files.
- In project context (filtered to project files) when under /projects/:projectId/*.
- Definitions: src/routes/PrivateRoutes.jsx:43, component src/components/Files/index.jsx:1.
2) Upload
- UI: file picker triggers files.actions.uploadFile(file).
- Handler: src/components/Files/index.jsx:31-40.
- Saga: src/redux/modules/files/index.js:84-116.
3) Check File
- UI: “Check” button → files.actions.checkFile(file).
- Handler: src/components/Files/index.jsx:117-124.
- Saga: src/redux/modules/files/index.js:64-82.
4) Delete
- UI: “Delete” button opens confirm modal; submit dispatches files.actions.deleteFile(file).
- Handlers: src/components/Files/index.jsx:43-61,179-189.
- Saga: src/redux/modules/files/index.js:118-147.
Route Reference¶
- Router entry:
src/routes/index.jsx:10-14. - Private routes:
src/routes/PrivateRoutes.jsx:21-62. - Path constants:
src/models/PathNames.js:1-12.
Notes
- Cross-tab logout via Storage event: src/routes/PrivateRoutes.jsx:17-24.
- Sidebar navigation (Resources, Analysis, Results): src/components/Project/index.jsx:147-176.