X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/9638d07155597ad006b2c7e325e82a1bc5281aba..f8f33868de654c1bdded337cb2ad5c486ccf1c93:/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 db0769f1..4c938017 100644 --- a/src/views/process-panel/process-information-card.tsx +++ b/src/views/process-panel/process-information-card.tsx @@ -2,20 +2,22 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; +import React from 'react'; import { StyleRulesCallback, WithStyles, withStyles, Card, CardHeader, IconButton, CardContent, Grid, Chip, Typography, Tooltip } from '@material-ui/core'; -import { ArvadosTheme } from '~/common/custom-theme'; -import { MoreOptionsIcon, ProcessIcon } from '~/components/icon/icon'; -import { DetailsAttribute } from '~/components/details-attribute/details-attribute'; -import { Process } from '~/store/processes/process'; -import { getProcessStatus, getProcessStatusColor } from '~/store/processes/process'; -import { formatDate } from '~/common/formatters'; -import * as classNames from 'classnames'; +import { ArvadosTheme } from 'common/custom-theme'; +import { CloseIcon, MoreOptionsIcon, ProcessIcon } from 'components/icon/icon'; +import { DetailsAttribute } from 'components/details-attribute/details-attribute'; +import { Process } from 'store/processes/process'; +import { getProcessStatus, getProcessStatusColor } from 'store/processes/process'; +import { formatDate } from 'common/formatters'; +import classNames from 'classnames'; +import { ContainerState } from 'models/container'; +import { MPVPanelProps } from 'components/multi-panel-view/multi-panel-view'; -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 +64,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' + } } }); @@ -71,12 +81,13 @@ export interface ProcessInformationCardDataProps { openProcessInputDialog: (uuid: string) => void; navigateToOutput: (uuid: string) => void; openWorkflow: (uuid: string) => void; + cancelProcess: (uuid: string) => void; } -type ProcessInformationCardProps = ProcessInformationCardDataProps & WithStyles; +type ProcessInformationCardProps = ProcessInformationCardDataProps & WithStyles & MPVPanelProps; export const ProcessInformationCard = withStyles(styles, { withTheme: true })( - ({ classes, process, onContextMenu, theme, openProcessInputDialog, navigateToOutput, openWorkflow }: ProcessInformationCardProps) => { + ({ classes, process, onContextMenu, theme, openProcessInputDialog, navigateToOutput, openWorkflow, cancelProcess, doHidePanel, panelName }: ProcessInformationCardProps) => { const { container } = process; const startedAt = container ? formatDate(container.startedAt) : 'N/A'; const finishedAt = container ? formatDate(container.finishedAt) : 'N/A'; @@ -89,6 +100,8 @@ export const ProcessInformationCard = withStyles(styles, { withTheme: true })( avatar={} action={
+ {process.container && process.container.state === ContainerState.RUNNING && + cancelProcess(process.containerRequest.uuid)}>Cancel} @@ -99,6 +112,10 @@ export const ProcessInformationCard = withStyles(styles, { withTheme: true })( + { doHidePanel && + + + }
} title={ @@ -119,14 +136,14 @@ export const ProcessInformationCard = withStyles(styles, { withTheme: true })( + value={startedAt} /> + value={finishedAt} /> {process.containerRequest.properties.workflowUuid && openWorkflow(process.containerRequest.properties.workflowUuid)}> - + }