-export type ProcessPanelRootProps = ProcessPanelRootDataProps & ProcessPanelRootActionProps;
-
-export const ProcessPanelRoot = ({ process, ...props }: ProcessPanelRootProps) =>
- process
- ? <MPVContainer spacing={8} panelNames={["Info", "Subprocesses"]} alignItems="stretch">
- <MPVPanelContent sm={12} md={12}>
- <ProcessInformationCard
- process={process}
- onContextMenu={event => props.onContextMenu(event, process)}
- openProcessInputDialog={props.openProcessInputDialog}
- navigateToOutput={props.navigateToOutput}
- openWorkflow={props.navigateToWorkflow}
- cancelProcess={props.cancelProcess}
- />
- </MPVPanelContent>
- <MPVPanelContent sm={12} md={12}>
- <SubprocessPanel />
- </MPVPanelContent>
- </MPVContainer>
- : <Grid container
- alignItems='center'
- justify='center'
- style={{ minHeight: '100%' }}>
- <DefaultView
- icon={ProcessIcon}
- messages={['Process not found']} />
- </Grid>;
+export type ProcessPanelRootProps = ProcessPanelRootDataProps & ProcessPanelRootActionProps & WithStyles<CssRules>;
+
+const panelsData: MPVPanelState[] = [
+ { name: "Details" },
+ { name: "Command" },
+ { name: "Logs", visible: true },
+ { name: "Inputs" },
+ { name: "Outputs" },
+ { name: "Resources" },
+ { name: "Subprocesses" },
+];
+
+export const ProcessPanelRoot = withStyles(styles)(
+ ({
+ process,
+ auth,
+ processLogsPanel,
+ inputRaw,
+ inputParams,
+ outputRaw,
+ outputDefinitions,
+ outputParams,
+ nodeInfo,
+ loadInputs,
+ loadOutputs,
+ loadNodeJson,
+ loadOutputDefinitions,
+ updateOutputParams,
+ ...props
+ }: ProcessPanelRootProps) => {
+
+ const outputUuid = process?.containerRequest.outputUuid;
+ const containerRequest = process?.containerRequest;
+ const inputMounts = getInputCollectionMounts(process?.containerRequest);
+
+ React.useEffect(() => {
+ if (containerRequest) {
+ // Load inputs from mounts or props
+ loadInputs(containerRequest);
+ // Fetch raw output (loads from props or keep)
+ loadOutputs(containerRequest);
+ // Loads output definitions from mounts into store
+ loadOutputDefinitions(containerRequest);
+ // load the assigned instance type from node.json in
+ // the log collection
+ loadNodeJson(containerRequest);
+ }
+ }, [containerRequest, loadInputs, loadOutputs, loadOutputDefinitions, loadNodeJson]);
+
+ // Trigger processing output params when raw or definitions change
+ React.useEffect(() => {
+ updateOutputParams();
+ }, [outputRaw, outputDefinitions, updateOutputParams]);