X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/2e21cc7eeaecd3282d464c096549486b391c9461..b63d426ec60483c5f3d99d493e62de821eed926a:/src/views/process-panel/process-details-card.tsx diff --git a/src/views/process-panel/process-details-card.tsx b/src/views/process-panel/process-details-card.tsx index 4fa4701a..abcbcdb4 100644 --- a/src/views/process-panel/process-details-card.tsx +++ b/src/views/process-panel/process-details-card.tsx @@ -16,15 +16,14 @@ import { Button, } from '@material-ui/core'; import { ArvadosTheme } from 'common/custom-theme'; -import { CloseIcon, MoreOptionsIcon, ProcessIcon, StartIcon } from 'components/icon/icon'; -import { Process } from 'store/processes/process'; +import { CloseIcon, MoreOptionsIcon, ProcessIcon, StartIcon, StopIcon } from 'components/icon/icon'; +import { Process, isProcessRunnable, isProcessResumable, isProcessCancelable } from 'store/processes/process'; import { MPVPanelProps } from 'components/multi-panel-view/multi-panel-view'; import { ProcessDetailsAttributes } from './process-details-attributes'; import { ProcessStatus } from 'views-components/data-explorer/renderers'; -import { ContainerState } from 'models/container'; -import { ContainerRequestState } from 'models/container-request'; +import classNames from 'classnames'; -type CssRules = 'card' | 'content' | 'title' | 'header' | 'cancelButton' | 'avatar' | 'iconHeader' | 'runButton'; +type CssRules = 'card' | 'content' | 'title' | 'header' | 'cancelButton' | 'avatar' | 'iconHeader' | 'actionButton'; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ card: { @@ -54,21 +53,20 @@ const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ paddingTop: theme.spacing.unit * 0.5, color: theme.customs.colors.green700, }, - cancelButton: { - paddingRight: theme.spacing.unit * 2, - fontSize: '14px', - color: theme.customs.colors.red900, - "&:hover": { - cursor: 'pointer' - } + actionButton: { + padding: "0px 5px 0 0", + marginRight: "5px", + fontSize: '0.78rem', }, - runButton: { - backgroundColor: theme.customs.colors.green700, + cancelButton: { + color: theme.palette.common.white, + backgroundColor: theme.customs.colors.red900, '&:hover': { - backgroundColor: theme.customs.colors.green800, + backgroundColor: theme.customs.colors.red900, + }, + '& svg': { + fontSize: '22px', }, - padding: "0px 5px 0 0", - marginRight: "5px", }, }); @@ -76,13 +74,21 @@ export interface ProcessDetailsCardDataProps { process: Process; cancelProcess: (uuid: string) => void; startProcess: (uuid: string) => void; + resumeOnHoldWorkflow: (uuid: string) => void; onContextMenu: (event: React.MouseEvent) => void; } type ProcessDetailsCardProps = ProcessDetailsCardDataProps & WithStyles & MPVPanelProps; export const ProcessDetailsCard = withStyles(styles)( - ({ cancelProcess, startProcess, onContextMenu, classes, process, doHidePanel, panelName }: ProcessDetailsCardProps) => { + ({ cancelProcess, startProcess, resumeOnHoldWorkflow, onContextMenu, classes, process, doHidePanel, panelName }: ProcessDetailsCardProps) => { + let runAction: ((uuid: string) => void) | undefined = undefined; + if (isProcessRunnable(process)) { + runAction = startProcess; + } else if (isProcessResumable(process)) { + runAction = resumeOnHoldWorkflow; + } + return } action={
- {process.containerRequest.state === ContainerRequestState.UNCOMMITTED && + {runAction !== undefined && } + {isProcessCancelable(process) && + } - {process.container && process.container.state === ContainerState.RUNNING && - cancelProcess(process.containerRequest.uuid)}>Cancel} - { doHidePanel && - - - } + {doHidePanel && + + + }
} />