From cd7f6fd81788f459642408df05be2daf214ef437 Mon Sep 17 00:00:00 2001 From: Stephen Smith Date: Thu, 29 Sep 2022 17:34:07 -0400 Subject: [PATCH] 16073: Show loading indicator when process io params are not loaded Arvados-DCO-1.1-Signed-off-by: Stephen Smith --- src/views/process-panel/process-io-card.tsx | 18 +++++++++------ .../process-panel/process-panel-root.tsx | 23 +++++++++++-------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/views/process-panel/process-io-card.tsx b/src/views/process-panel/process-io-card.tsx index d60d71c4..7284159e 100644 --- a/src/views/process-panel/process-io-card.tsx +++ b/src/views/process-panel/process-io-card.tsx @@ -24,6 +24,7 @@ import { Paper, Grid, Chip, + CircularProgress, } from '@material-ui/core'; import { ArvadosTheme } from 'common/custom-theme'; import { CloseIcon, ImageIcon, InputIcon, ImageOffIcon, OutputIcon, MaximizeIcon } from 'components/icon/icon'; @@ -192,7 +193,7 @@ export enum ProcessIOCardType { export interface ProcessIOCardDataProps { process: Process; label: ProcessIOCardType; - params: ProcessIOParameter[]; + params?: ProcessIOParameter[]; raw?: any; mounts?: InputCollectionMount[]; outputUuid?: string; @@ -251,7 +252,10 @@ export const ProcessIOCard = withStyles(styles)(connect(null, mapDispatchToProps {mainProcess ? (<> - {params.length ? + {params === undefined && + + } + {params && params.length > 0 && <> @@ -263,12 +267,12 @@ export const ProcessIOCard = withStyles(styles)(connect(null, mapDispatchToProps {mainProcTabState === 1 &&
} - : - - - - } + } + {params && params.length === 0 && + + } ) : + // Subprocess (<> {((mounts && mounts.length) || outputUuid) ? <> diff --git a/src/views/process-panel/process-panel-root.tsx b/src/views/process-panel/process-panel-root.tsx index 9fc043d9..a08d8aec 100644 --- a/src/views/process-panel/process-panel-root.tsx +++ b/src/views/process-panel/process-panel-root.tsx @@ -68,18 +68,25 @@ const panelsData: MPVPanelState[] = [ export const ProcessPanelRoot = withStyles(styles)( ({ process, auth, processLogsPanel, fetchOutputs, ...props }: ProcessPanelRootProps) => { - const [outputDetails, setOutputs] = useState({}); - const [rawInputs, setInputs] = useState([]); + const [outputDetails, setOutputs] = useState(undefined); + const [rawInputs, setInputs] = useState(undefined); - - const [processedOutputs, setProcessedOutputs] = useState([]); - const [processedInputs, setProcessedInputs] = useState([]); + const [processedOutputs, setProcessedOutputs] = useState(undefined); + const [processedInputs, setProcessedInputs] = useState(undefined); const outputUuid = process?.containerRequest.outputUuid; const requestUuid = process?.containerRequest.uuid; const inputMounts = getInputCollectionMounts(process?.containerRequest); + // Resets state when changing processes + React.useEffect(() => { + setOutputs(undefined); + setInputs(undefined); + setProcessedOutputs(undefined); + setProcessedInputs(undefined); + }, [requestUuid]); + React.useEffect(() => { if (outputUuid) { fetchOutputs(outputUuid, setOutputs); @@ -87,11 +94,9 @@ export const ProcessPanelRoot = withStyles(styles)( }, [outputUuid, fetchOutputs]); React.useEffect(() => { - if (outputDetails.rawOutputs && process) { + if (outputDetails !== undefined && outputDetails.rawOutputs && process) { const outputDefinitions = getOutputParameters(process.containerRequest); setProcessedOutputs(formatOutputData(outputDefinitions, outputDetails.rawOutputs, outputDetails.pdh, auth)); - } else { - setProcessedOutputs([]); } }, [outputDetails, auth, process]); @@ -149,7 +154,7 @@ export const ProcessPanelRoot = withStyles(styles)( label={ProcessIOCardType.OUTPUT} process={process} params={processedOutputs} - raw={outputDetails.rawOutputs} + raw={outputDetails?.rawOutputs} outputUuid={outputUuid || ""} /> -- 2.30.2