1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import * as React from 'react';
6 import { StyleRulesCallback, withStyles, Grid, Button, WithStyles, List, ListItem, ListItemText, ListItemIcon, Tabs, Tab } from '@material-ui/core';
7 import { ArvadosTheme } from '~/common/custom-theme';
8 import { WorkflowResource } from '~/models/workflow';
9 import { WorkflowIcon } from '~/components/icon/icon';
10 import { WorkflowDetailsCard } from '../workflow-panel/workflow-description-card';
12 type CssRules = 'rightGrid' | 'list' | 'listItem' | 'itemSelected' | 'listItemText' | 'listItemIcon';
14 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
16 borderLeft: `1px solid ${theme.palette.grey["300"]}`
24 padding: theme.spacing.unit,
27 backgroundColor: 'rgba(3, 190, 171, 0.3) !important'
33 color: theme.customs.colors.red900
37 export interface RunProcessFirstStepDataProps {
38 workflows: WorkflowResource[];
39 selectedWorkflow: WorkflowResource | undefined;
42 export interface RunProcessFirstStepActionProps {
43 onSetStep: (step: number) => void;
44 onSetWorkflow: (workflow: WorkflowResource) => void;
47 type RunProcessFirstStepProps = RunProcessFirstStepDataProps & RunProcessFirstStepActionProps & WithStyles<CssRules>;
49 export const RunProcessFirstStep = withStyles(styles)(
50 ({ onSetStep, onSetWorkflow, workflows, selectedWorkflow, classes }: RunProcessFirstStepProps) =>
51 <Grid container spacing={16}>
52 <Grid container item xs={6}>
54 {/* TODO: add filters */}
57 <List className={classes.list}>
58 {workflows.map(workflow => (
59 <ListItem key={workflow.uuid} button
60 classes={{ root: classes.listItem, selected: classes.itemSelected}}
61 selected={selectedWorkflow && (selectedWorkflow.uuid === workflow.uuid)}
62 onClick={() => onSetWorkflow(workflow)}>
64 <WorkflowIcon className={classes.listItemIcon}/>
66 <ListItemText className={classes.listItemText} primary={workflow.name} disableTypography={true} />
72 <Grid item xs={6} className={classes.rightGrid}>
73 <WorkflowDetailsCard workflow={selectedWorkflow}/>
76 <Button variant="contained" color="primary"
77 disabled={!(!!selectedWorkflow)}
78 onClick={() => onSetStep(1)}>