+ // Trigger processing output params when raw or definitions change
+ React.useEffect(() => {
+ updateOutputParams();
+ }, [outputRaw, outputDefinitions, updateOutputParams]);
+
+ return process ? (
+ <MPVContainer
+ className={props.classes.root}
+ spacing={8}
+ panelStates={panelsData}
+ justify-content="flex-start"
+ direction="column"
+ wrap="nowrap">
+ <MPVPanelContent
+ forwardProps
+ xs="auto"
+ data-cy="process-details">
+ <ProcessDetailsCard
+ process={process}
+ onContextMenu={event => props.onContextMenu(event, process)}
+ cancelProcess={props.cancelProcess}
+ startProcess={props.startProcess}
+ resumeOnHoldWorkflow={props.resumeOnHoldWorkflow}
+ />
+ </MPVPanelContent>
+ <MPVPanelContent
+ forwardProps
+ xs="auto"
+ data-cy="process-cmd">
+ <ProcessCmdCard
+ onCopy={props.onCopyToClipboard}
+ process={process}
+ />
+ </MPVPanelContent>
+ <MPVPanelContent
+ forwardProps
+ xs
+ minHeight="50%"
+ data-cy="process-logs">
+ <ProcessLogsCard
+ onCopy={props.onCopyToClipboard}
+ process={process}
+ lines={getProcessPanelLogs(processLogsPanel)}
+ selectedFilter={{
+ label: processLogsPanel.selectedFilter,
+ value: processLogsPanel.selectedFilter,
+ }}
+ filters={processLogsPanel.filters.map(filter => ({ label: filter, value: filter }))}
+ onLogFilterChange={props.onLogFilterChange}
+ navigateToLog={props.navigateToLog}
+ pollProcessLogs={props.pollProcessLogs}
+ />
+ </MPVPanelContent>
+ <MPVPanelContent
+ forwardProps
+ xs
+ maxHeight="50%"
+ data-cy="process-inputs">
+ <ProcessIOCard
+ label={ProcessIOCardType.INPUT}
+ process={process}
+ params={inputParams}
+ raw={inputRaw}
+ mounts={inputMounts}
+ />
+ </MPVPanelContent>
+ <MPVPanelContent
+ forwardProps
+ xs
+ maxHeight="50%"
+ data-cy="process-outputs">
+ <ProcessIOCard
+ label={ProcessIOCardType.OUTPUT}
+ process={process}
+ params={outputParams}
+ raw={outputRaw?.rawOutputs}
+ outputUuid={outputUuid || ""}
+ />
+ </MPVPanelContent>
+ <MPVPanelContent
+ forwardProps
+ xs
+ data-cy="process-resources">
+ <ProcessResourceCard
+ process={process}
+ nodeInfo={nodeInfo}
+ />
+ </MPVPanelContent>
+ <MPVPanelContent
+ forwardProps
+ xs
+ maxHeight="50%"
+ data-cy="process-children">
+ <SubprocessPanel />
+ </MPVPanelContent>
+ </MPVContainer>
+ ) : (
+ <NotFoundView
+ icon={ProcessIcon}
+ messages={["Process not found"]}
+ />
+ );
+ }
+);