X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/9a37cc202448e431064b247d36ac0229a6bfa9b2..31e84a9315728c2f58a26bf0e9e1d2b38326fb86:/src/views/process-panel/process-information-card.tsx diff --git a/src/views/process-panel/process-information-card.tsx b/src/views/process-panel/process-information-card.tsx index 52f13987..be1b92a9 100644 --- a/src/views/process-panel/process-information-card.tsx +++ b/src/views/process-panel/process-information-card.tsx @@ -13,9 +13,10 @@ import { DetailsAttribute } from '~/components/details-attribute/details-attribu import { Process } from '~/store/processes/process'; import { getProcessStatus, getProcessStatusColor } from '~/store/processes/process'; import { formatDate } from '~/common/formatters'; -import { openWorkflow } from "~/store/process-panel/process-panel-actions"; +import * as classNames from 'classnames'; +import { ContainerState } from '~/models/container'; -type CssRules = 'card' | 'iconHeader' | 'label' | 'value' | 'chip' | 'link' | 'content' | 'title' | 'avatar'; +type CssRules = 'card' | 'iconHeader' | 'label' | 'value' | 'chip' | 'link' | 'content' | 'title' | 'avatar' | 'cancelButton'; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ card: { @@ -62,6 +63,14 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ title: { overflow: 'hidden', paddingTop: theme.spacing.unit * 0.5 + }, + cancelButton: { + paddingRight: theme.spacing.unit * 2, + fontSize: '14px', + color: theme.customs.colors.red900, + "&:hover": { + cursor: 'pointer' + } } }); @@ -70,13 +79,14 @@ export interface ProcessInformationCardDataProps { onContextMenu: (event: React.MouseEvent) => void; openProcessInputDialog: (uuid: string) => void; navigateToOutput: (uuid: string) => void; - navigateToWorkflow: (uuid: string) => void; + openWorkflow: (uuid: string) => void; + cancelProcess: (uuid: string) => void; } type ProcessInformationCardProps = ProcessInformationCardDataProps & WithStyles; export const ProcessInformationCard = withStyles(styles, { withTheme: true })( - ({ classes, process, onContextMenu, theme, openProcessInputDialog, navigateToOutput, navigateToWorkflow }: ProcessInformationCardProps) => { + ({ classes, process, onContextMenu, theme, openProcessInputDialog, navigateToOutput, openWorkflow, cancelProcess }: ProcessInformationCardProps) => { const { container } = process; const startedAt = container ? formatDate(container.startedAt) : 'N/A'; const finishedAt = container ? formatDate(container.finishedAt) : 'N/A'; @@ -86,55 +96,57 @@ export const ProcessInformationCard = withStyles(styles, { withTheme: true })( content: classes.title, avatar: classes.avatar }} - avatar={} + avatar={} action={
+ {process.container && process.container.state === ContainerState.RUNNING && + cancelProcess(process.containerRequest.uuid)}>Cancel} + className={classes.chip} + style={{ backgroundColor: getProcessStatusColor(getProcessStatus(process), theme as ArvadosTheme) }} /> onContextMenu(event)}> - +
} title={ - + {process.containerRequest.name} } subheader={ - + {getDescription(process)} - }/> + } /> + label='From' + value={startedAt} /> - {process.containerRequest.properties.templateUuid && - navigateToWorkflow(process.containerRequest.properties.templateUuid)} - />} + label='To' + value={finishedAt} /> + {process.containerRequest.properties.workflowUuid && + openWorkflow(process.containerRequest.properties.workflowUuid)}> + + } navigateToOutput(process.containerRequest.outputUuid!)}> - + openProcessInputDialog(process.containerRequest.uuid)}> - +