import { SidePanelTreeCategory } from '../side-panel-tree/side-panel-tree-actions';
import { Routes, getGroupUrl, getNavUrl, getUserProfileUrl } from 'routes/routes';
import { RootState } from 'store/store';
+import { openDetailsPanel } from 'store/details-panel/details-panel-action';
import { ServiceRepository } from 'services/services';
import { pluginConfig } from 'plugins';
import { snackbarActions, SnackbarKind } from 'store/snackbar/snackbar-actions';
case ResourceKind.VIRTUAL_MACHINE:
dispatch<any>(navigateToAdminVirtualMachines);
return;
+ case ResourceKind.WORKFLOW:
+ dispatch<any>(openDetailsPanel(uuid));
+ return;
}
switch (uuid) {
case SidePanelTreeCategory.SHARED_WITH_ME:
dispatch(navigateToSharedWithMe);
return;
- case SidePanelTreeCategory.WORKFLOWS:
- dispatch(navigateToWorkflows);
- return;
case SidePanelTreeCategory.TRASH:
dispatch(navigateToTrash);
return;
PROJECT = 'Project',
PROCESS = 'Process',
COLLECTION = 'Data collection',
+ WORKFLOW = 'Workflow',
}
export enum GroupTypeFilter {
GENERAL_COLLECTION = 'General',
OUTPUT_COLLECTION = 'Output',
LOG_COLLECTION = 'Log',
+ INTERMEDIATE_COLLECTION = 'Intermediate',
}
export enum ProcessTypeFilter {
initFilter(ObjectTypeFilter.PROJECT),
initFilter(ObjectTypeFilter.PROCESS),
initFilter(ObjectTypeFilter.COLLECTION),
+ initFilter(ObjectTypeFilter.WORKFLOW),
);
// Using pipe() with more than 7 arguments makes the return type be 'any',
initFilter(ObjectTypeFilter.COLLECTION),
initFilter(CollectionTypeFilter.GENERAL_COLLECTION, ObjectTypeFilter.COLLECTION),
initFilter(CollectionTypeFilter.OUTPUT_COLLECTION, ObjectTypeFilter.COLLECTION),
+ initFilter(CollectionTypeFilter.INTERMEDIATE_COLLECTION, ObjectTypeFilter.COLLECTION),
initFilter(CollectionTypeFilter.LOG_COLLECTION, ObjectTypeFilter.COLLECTION),
),
+ initFilter(ObjectTypeFilter.WORKFLOW)
+
);
export const getInitialProcessTypeFilters = pipe(
initFilter(ObjectTypeFilter.COLLECTION),
initFilter(CollectionTypeFilter.GENERAL_COLLECTION, ObjectTypeFilter.COLLECTION),
initFilter(CollectionTypeFilter.OUTPUT_COLLECTION, ObjectTypeFilter.COLLECTION),
+ initFilter(CollectionTypeFilter.INTERMEDIATE_COLLECTION, ObjectTypeFilter.COLLECTION),
initFilter(CollectionTypeFilter.LOG_COLLECTION, ObjectTypeFilter.COLLECTION),
);
return ResourceKind.PROCESS;
case ObjectTypeFilter.COLLECTION:
return ResourceKind.COLLECTION;
+ case ObjectTypeFilter.WORKFLOW:
+ return ResourceKind.WORKFLOW;
}
};
return CollectionType.OUTPUT;
case CollectionTypeFilter.LOG_COLLECTION:
return CollectionType.LOG;
+ case CollectionTypeFilter.INTERMEDIATE_COLLECTION:
+ return CollectionType.INTERMEDIATE;
+ default:
+ return CollectionType.GENERAL;
}
};
TableCell,
TableBody,
TableRow,
- Grid,
} from '@material-ui/core';
import { ArvadosTheme } from 'common/custom-theme';
import { WorkflowIcon } from 'components/icon/icon';
import { DataTableDefaultView } from 'components/data-table-default-view/data-table-default-view';
- // import { WorkflowGraph } from "views/workflow-panel/workflow-graph";
-
+import { parseWorkflowDefinition, getWorkflowInputs, getInputLabel, stringifyInputType } from 'models/workflow';
+import { WorkflowDetailsCardDataProps, WorkflowDetailsAttributes } from 'views-components/details-panel/workflow-details';
+ import { WorkflowResource, parseWorkflowDefinition, getWorkflowInputs, getInputLabel, stringifyInputType } from 'models/workflow';
+ import { DetailsAttribute } from 'components/details-attribute/details-attribute';
+ import { ResourceOwnerWithName } from 'views-components/data-explorer/renderers';
+ import { formatDate } from "common/formatters";
export type CssRules = 'root' | 'tab' | 'inputTab' | 'graphTab' | 'graphTabWithChosenWorkflow' | 'descriptionTab' | 'inputsTable';
},
});
-interface WorkflowDetailsCardDataProps {
- workflow?: WorkflowResource;
-}
-
type WorkflowDetailsCardProps = WorkflowDetailsCardDataProps & WithStyles<CssRules>;
export const WorkflowDetailsCard = withStyles(styles)(
<Tab className={classes.tab} label="Description" />
<Tab className={classes.tab} label="Inputs" />
<Tab className={classes.tab} label="Details" />
- {/* <Tab className={classes.tab} label="Graph" /> */}
</Tabs>
{value === 0 && <CardContent className={classes.descriptionTab}>
{workflow ? <div>
messages={['Please select a workflow to see its inputs.']} />
}
</CardContent>}
- {/* {value === 2 && <CardContent className={workflow ? classes.graphTabWithChosenWorkflow : classes.graphTab}>
- {workflow
- ? <WorkflowGraph workflow={workflow} />
- : <DataTableDefaultView
- icon={WorkflowIcon}
- messages={['Please select a workflow to see its visualisation.']} />
- }
- </CardContent>} */}
{value === 2 && <CardContent className={classes.descriptionTab}>
{workflow
? <WorkflowDetailsAttributes workflow={workflow} />
</Table>;
}
});
-
-export const WorkflowDetailsAttributes = ({ workflow }: WorkflowDetailsCardDataProps) => {
- return <Grid container>
- <Grid item xs={12} >
- <DetailsAttribute
- label={"Workflow UUID"}
- linkToUuid={workflow?.uuid} />
- </Grid>
- <Grid item xs={12} >
- <DetailsAttribute
- label='Owner' linkToUuid={workflow?.ownerUuid}
- uuidEnhancer={(uuid: string) => <ResourceOwnerWithName uuid={uuid} />} />
- </Grid>
- <Grid item xs={12}>
- <DetailsAttribute label='Created at' value={formatDate(workflow?.createdAt)} />
- </Grid>
- <Grid item xs={12}>
- <DetailsAttribute label='Last modified' value={formatDate(workflow?.modifiedAt)} />
- </Grid>
- <Grid item xs={12} >
- <DetailsAttribute
- label='Last modified by user' linkToUuid={workflow?.modifiedByUserUuid}
- uuidEnhancer={(uuid: string) => <ResourceOwnerWithName uuid={uuid} />} />
- </Grid>
- </Grid >;
-};