import { ArvadosTheme } from '~/common/custom-theme';
import { MoreOptionsIcon, ProcessIcon } from '~/components/icon/icon';
import { DetailsAttribute } from '~/components/details-attribute/details-attribute';
-import { Process, getProcessStatusColor } from '~/store/processes/process';
-import { getProcessStatus } from '~/store/processes/process';
+import { Process } from '~/store/processes/process';
+import { getProcessStatus, getProcessStatusColor } from '../../store/processes/process';
+import { formatDate } from '~/common/formatters';
type CssRules = 'card' | 'iconHeader' | 'label' | 'value' | 'chip' | 'link' | 'content' | 'title' | 'avatar';
<Grid container>
<Grid item xs={6}>
<DetailsAttribute classLabel={classes.label} classValue={classes.value}
- label='From' value={process.container ? process.container.startedAt : 'N/A'} />
+ label='From' value={process.container ? formatDate(process.container.startedAt!) : 'N/A'} />
<DetailsAttribute classLabel={classes.label} classValue={classes.value}
- label='To' value={process.container ? process.container.finishedAt : 'N/A'} />
+ label='To' value={process.container ? formatDate(process.container.finishedAt!) : 'N/A'} />
<DetailsAttribute classLabel={classes.label} classValue={classes.link}
label='Workflow' value='???' />
</Grid>
import { ProcessInformationCard } from './process-information-card';
import { DefaultView } from '~/components/default-view/default-view';
import { ProcessIcon } from '~/components/icon/icon';
-import { Process } from '~/store/processes/process';
+import { Process, getProcessStatus } from '~/store/processes/process';
import { SubprocessesCard } from './subprocesses-card';
+import { SubprocessFilterDataProps } from '~/components/subprocess-filter/subprocess-filter';
+import { groupBy } from 'lodash';
import { ProcessSubprocesses } from '~/views/process-panel/process-subprocesses';
-import { SubprocessesStatus } from '~/views/process-panel/process-subprocesses-card';
-
-type CssRules = 'headerActive' | 'headerCompleted' | 'headerQueued' | 'headerFailed' | 'headerCanceled';
export interface ProcessPanelRootDataProps {
process?: Process;
<ProcessInformationCard
process={props.process}
onContextMenu={props.onContextMenu} />
+ {console.log(props.subprocesses)}
</Grid>
<Grid item xs={5}>
<SubprocessesCard
- subprocesses={4}
- filters={[
- {
- key: 'queued',
- value: 1,
- label: 'Queued',
- checked: true
- }, {
- key: 'active',
- value: 2,
- label: 'Active',
- checked: true
- },
- {
- key: 'completed',
- value: 2,
- label: 'Completed',
- checked: true
- },
- {
- key: 'failed',
- value: 2,
- label: 'Failed',
- checked: true
- }
- ]}
- onToggle={() => { return; }}
- />
+ subprocesses={props.subprocesses}
+ filters={mapGroupedProcessesToFilters(groupSubprocessesByStatus(props.subprocesses))}
+ onToggle={() => { return; }} />
</Grid>
<Grid item xs={12}>
<ProcessSubprocesses
icon={ProcessIcon}
messages={['Process not found']} />
</Grid>;
+
+const groupSubprocessesByStatus = (processes: Process[]) =>
+ groupBy(processes, getProcessStatus);
+
+const mapGroupedProcessesToFilters = (groupedProcesses: { [status: string]: Process[] }): SubprocessFilterDataProps[] =>
+ Object
+ .keys(groupedProcesses)
+ .map(status => ({
+ label: status,
+ key: status,
+ value: groupedProcesses[status].length
+ }));
import { StyleRulesCallback, withStyles, WithStyles, Card, CardHeader, CardContent, Grid, Switch } from '@material-ui/core';
import { SubprocessFilter } from '~/components/subprocess-filter/subprocess-filter';
import { SubprocessFilterDataProps } from '~/components/subprocess-filter/subprocess-filter';
+import { Process } from '~/store/processes/process';
type CssRules = 'root';
});
interface SubprocessesDataProps {
- subprocesses: number;
+ subprocesses: Array<Process>;
filters: SubprocessFilterDataProps[];
onToggle: (filter: SubprocessFilterDataProps) => void;
}
<CardContent>
<Grid container direction="column" spacing={16}>
<Grid item xs={12} container spacing={16}>
- <SubprocessFilter label='Subprocesses' value={subprocesses} />
+ <SubprocessFilter label='Subprocesses' value={subprocesses.length} />
</Grid>
<Grid item xs={12} container spacing={16}>
{