X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/88b93fd119eecca0247a9bb5a6fe14015d582826..21d7f6cb32902073193db810b4dfad85d9cdff7e:/src/views/process-panel/process-panel-root.tsx diff --git a/src/views/process-panel/process-panel-root.tsx b/src/views/process-panel/process-panel-root.tsx index ed808b36..28d2e978 100644 --- a/src/views/process-panel/process-panel-root.tsx +++ b/src/views/process-panel/process-panel-root.tsx @@ -13,17 +13,17 @@ import { MPVContainer, MPVPanelContent, MPVPanelState } from 'components/multi-p import { ArvadosTheme } from 'common/custom-theme'; import { ProcessDetailsCard } from './process-details-card'; import { ProcessIOCard, ProcessIOCardType, ProcessIOParameter } from './process-io-card'; - +import { ProcessResourceCard } from './process-resource-card'; import { getProcessPanelLogs, ProcessLogsPanel } from 'store/process-logs-panel/process-logs-panel'; import { ProcessLogsCard } from './process-log-card'; import { FilterOption } from 'views/process-panel/process-log-form'; import { getInputCollectionMounts } from 'store/processes/processes-actions'; -import { CommandInputParameter } from 'models/workflow'; +import { WorkflowInputsData } from 'models/workflow'; import { CommandOutputParameter } from 'cwlts/mappings/v1.0/CommandOutputParameter'; import { AuthState } from 'store/auth/auth-reducer'; import { ProcessCmdCard } from './process-cmd-card'; import { ContainerRequestResource } from 'models/container-request'; -import { OutputDetails } from 'store/process-panel/process-panel'; +import { OutputDetails, NodeInstanceType } from 'store/process-panel/process-panel'; type CssRules = 'root'; @@ -39,11 +39,12 @@ export interface ProcessPanelRootDataProps { filters: Array; processLogsPanel: ProcessLogsPanel; auth: AuthState; - inputRaw: CommandInputParameter[] | null; + inputRaw: WorkflowInputsData | null; inputParams: ProcessIOParameter[] | null; outputRaw: OutputDetails | null; outputDefinitions: CommandOutputParameter[]; outputParams: ProcessIOParameter[] | null; + nodeInfo: NodeInstanceType | null; } export interface ProcessPanelRootActionProps { @@ -55,6 +56,7 @@ export interface ProcessPanelRootActionProps { onCopyToClipboard: (uuid: string) => void; loadInputs: (containerRequest: ContainerRequestResource) => void; loadOutputs: (containerRequest: ContainerRequestResource) => void; + loadNodeJson: (containerRequest: ContainerRequestResource) => void; loadOutputDefinitions: (containerRequest: ContainerRequestResource) => void; updateOutputParams: () => void; } @@ -62,12 +64,13 @@ export interface ProcessPanelRootActionProps { export type ProcessPanelRootProps = ProcessPanelRootDataProps & ProcessPanelRootActionProps & WithStyles; const panelsData: MPVPanelState[] = [ - {name: "Details"}, - {name: "Command"}, - {name: "Logs", visible: true}, - {name: "Inputs"}, - {name: "Outputs"}, - {name: "Subprocesses"}, + { name: "Details" }, + { name: "Command" }, + { name: "Logs", visible: true }, + { name: "Inputs" }, + { name: "Outputs" }, + { name: "Resources" }, + { name: "Subprocesses" }, ]; export const ProcessPanelRoot = withStyles(styles)( @@ -80,92 +83,103 @@ export const ProcessPanelRoot = withStyles(styles)( 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); + 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); - } - }, [containerRequest, loadInputs, loadOutputs, loadOutputDefinitions]); + 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]); + // Trigger processing output params when raw or definitions change + React.useEffect(() => { + updateOutputParams(); + }, [outputRaw, outputDefinitions, updateOutputParams]); - return process - ? - - props.onContextMenu(event, process)} - cancelProcess={props.cancelProcess} - /> - - - - - - ({ label: filter, value: filter }) - )} - onLogFilterChange={props.onLogFilterChange} - navigateToLog={props.navigateToLog} - /> - - - - - - - - - - - - : - - ; + return process + ? + + props.onContextMenu(event, process)} + cancelProcess={props.cancelProcess} + /> + + + + + + ({ label: filter, value: filter }) + )} + onLogFilterChange={props.onLogFilterChange} + navigateToLog={props.navigateToLog} + /> + + + + + + + + + + + + + + + : + + ; } );