};
interface ProcessDetailsAttributesActionProps {
- navigateToOutput: (uuid: string) => void;
+ navigateToOutput: (resource: ContainerRequestResource) => void;
openWorkflow: (uuid: string) => void;
}
const mapDispatchToProps = (dispatch: Dispatch): ProcessDetailsAttributesActionProps => ({
- navigateToOutput: (uuid) => dispatch<any>(navigateToOutput(uuid)),
+ navigateToOutput: (resource) => dispatch<any>(navigateToOutput(resource)),
openWorkflow: (uuid) => dispatch<any>(openWorkflow(uuid)),
});
const workflowPath = props.workflowPath;
const filteredPropertyKeys = Object.keys(containerRequest.properties)
.filter(k => (typeof containerRequest.properties[k] !== 'object'));
+ const hasTotalCost = containerRequest && containerRequest.cumulativeCost > 0;
+ const totalCostNotReady = container && container.cost > 0 && container.state === "Running" && containerRequest && containerRequest.cumulativeCost === 0 && subprocesses.length > 0;
return <Grid container>
<Grid item xs={12}>
<ProcessRuntimeStatus runtimeStatus={container?.runtimeStatus} containerCount={containerRequest.containerCount} />
</Grid>
<Grid item xs={6}>
<DetailsAttribute label='Output collection' />
- {containerRequest.outputUuid && <span onClick={() => props.navigateToOutput(containerRequest.outputUuid!)}>
+ {containerRequest.outputUuid && <span onClick={() => props.navigateToOutput(containerRequest!)}>
<CollectionName className={classes.link} uuid={containerRequest.outputUuid} />
</span>}
</Grid>
- {container && container.cost > 0 && <Grid item xs={12} md={mdSize}>
- <DetailsAttribute label='Cost ' value={formatContainerCost(container.cost)} />
- </Grid>}
-
- {container && workflowCollection && <Grid item xs={12} md={mdSize}>
- <DetailsAttribute label='Workflow code' link={getCollectionUrl(workflowCollection)} value={workflowPath} />
- </Grid>}
+ {container && <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute label='Cost' value={
+ `${hasTotalCost ? formatContainerCost(containerRequest.cumulativeCost) + ' total, ' : (totalCostNotReady ? 'total pending completion, ' : '')}${container.cost > 0 ? formatContainerCost(container.cost) : 'not available'} for this container`
+ } />
- {containerRequest && containerRequest.cumulativeCost > 0 && subprocesses.length > 0 && <Grid item xs={12} md={mdSize}>
- <DetailsAttribute label='Container & subprocess cost' value={formatContainerCost(containerRequest.cumulativeCost)} />
+ {container && workflowCollection && <Grid item xs={12} md={mdSize}>
+ <DetailsAttribute label='Workflow code' link={getCollectionUrl(workflowCollection)} value={workflowPath} />
+ </Grid>}
</Grid>}
{containerRequest.properties.template_uuid &&
<Grid item xs={12} md={mdSize}>
<DetailsAttribute label='Priority' value={containerRequest.priority} />
</Grid>
{/*
- NOTE: The property list should be kept at the bottom, because it spans
- the entire available width, without regards of the twoCol prop.
- */}
+ NOTE: The property list should be kept at the bottom, because it spans
+ the entire available width, without regards of the twoCol prop.
+ */}
<Grid item xs={12} md={12}>
<DetailsAttribute label='Properties' />
{filteredPropertyKeys.length > 0