cr changes
[arvados-workbench2.git] / src / views / process-panel / process-subprocesses-card.tsx
index 17c44246adab4d0a2dc8f101acd77e7cc8f645a8..340e3c65deb42efde65088213b6af7e8217c488c 100644 (file)
@@ -11,7 +11,9 @@ import * as classnames from "classnames";
 import { ArvadosTheme } from '~/common/custom-theme';
 import { MoreOptionsIcon } from '~/components/icon/icon';
 import { DetailsAttribute } from '~/components/details-attribute/details-attribute';
-import { getBackgroundColorStatus } from '~/views/process-panel/process-panel-root';
+import { getStatusColor } from '~/views/process-panel/process-panel-root';
+import { Process, getProcessStatus, getProcessRuntime } from '~/store/processes/process';
+import { formatTime } from '~/common/formatters';
 
 export type CssRules = 'label' | 'value' | 'title' | 'content' | 'action' | 'options' | 'status' | 'rightSideHeader' | 'titleHeader'
     | 'header' | 'headerActive' | 'headerCompleted' | 'headerQueued' | 'headerFailed' | 'headerCanceled';
@@ -73,42 +75,56 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
 });
 
+export enum SubprocessesStatus {
+    ACTIVE = 'Active',
+    COMPLETED = 'Completed',
+    QUEUED = 'Queued',
+    FAILED = 'Failed',
+    CANCELED = 'Canceled'
+}
+
+export interface SubprocessItemProps {
+    title: string;
+    status: string;
+    runtime?: string;
+}
+
 export interface ProcessSubprocessesCardDataProps {
     onContextMenu: (event: React.MouseEvent<HTMLElement>) => void;
-    items: any;
+    subprocess: Process;
 }
 
 type ProcessSubprocessesCardProps = ProcessSubprocessesCardDataProps & WithStyles<CssRules>;
 
 export const ProcessSubprocessesCard = withStyles(styles)(
-    ({ classes, onContextMenu, items }: ProcessSubprocessesCardProps) => {
+    ({ classes, onContextMenu, subprocess }: ProcessSubprocessesCardProps) => {
         return <Card>
             <CardHeader
-                className={classnames([classes.header, getBackgroundColorStatus(items.status, classes)])}
+                className={classnames([classes.header, getStatusColor(getProcessStatus(subprocess), classes)])}
                 classes={{ content: classes.title, action: classes.action }}
                 action={
                     <div className={classes.rightSideHeader}>
                         <Typography noWrap variant="body2" className={classes.status}>
-                            {items.status}
+                            {getProcessStatus(subprocess)}
                         </Typography>
                         <IconButton
                             className={classes.options}
                             aria-label="More options"
-                            onClick={event => onContextMenu(event)}>
+                            onClick={onContextMenu}>
                             <MoreOptionsIcon />
                         </IconButton>
                     </div>
                 }
                 title={
-                    <Tooltip title={items.title}>
+                    <Tooltip title={subprocess.containerRequest.name}>
                         <Typography noWrap variant="body2" className={classes.titleHeader}>
-                            {items.title}
+                            {subprocess.containerRequest.name}
                         </Typography>
                     </Tooltip>
                 } />
             <CardContent className={classes.content}>
                 <DetailsAttribute classLabel={classes.label} classValue={classes.value}
-                    label='Runtime' value="0h 2m" />
+                    label="Runtime" value={formatTime(getProcessRuntime(subprocess))} />
             </CardContent>
         </Card>;
     });
\ No newline at end of file