{url: '/shared-with-me', label: 'Shared with me'},
{url: '/public-favorites', label: 'Public Favorites'},
{url: '/favorites', label: 'My Favorites'},
- // {url: '/workflows', label: 'Workflows'},
{url: '/all_processes', label: 'All Processes'},
{url: '/trash', label: 'Trash'},
].map(function(section) {
GENERAL = 'nil',
OUTPUT = 'output',
LOG = 'log',
+ INTERMEDIATE = 'intermediate',
}
const runProcessMatch = Routes.matchRunProcessRoute(pathname);
const virtualMachineUserMatch = Routes.matchUserVirtualMachineRoute(pathname);
const virtualMachineAdminMatch = Routes.matchAdminVirtualMachineRoute(pathname);
- const workflowMatch = Routes.matchWorkflowRoute(pathname);
const sshKeysUserMatch = Routes.matchSshKeysUserRoute(pathname);
const sshKeysAdminMatch = Routes.matchSshKeysAdminRoute(pathname);
const siteManagerMatch = Routes.matchSiteManagerRoute(pathname);
store.dispatch(WorkbenchActions.loadSharedWithMe);
} else if (runProcessMatch) {
store.dispatch(WorkbenchActions.loadRunProcess);
- } else if (workflowMatch) {
- store.dispatch(WorkbenchActions.loadWorkflow);
} else if (searchResultsMatch) {
store.dispatch(WorkbenchActions.loadSearchResults);
} else if (virtualMachineUserMatch) {
case SidePanelTreeCategory.SHARED_WITH_ME:
dispatch(navigateToSharedWithMe);
return;
- case SidePanelTreeCategory.WORKFLOWS:
- dispatch(navigateToWorkflows);
- return;
case SidePanelTreeCategory.TRASH:
dispatch(navigateToTrash);
return;
deselectNode(ObjectTypeFilter.PROCESS),
deselectNode(CollectionTypeFilter.GENERAL_COLLECTION),
deselectNode(CollectionTypeFilter.LOG_COLLECTION),
+ deselectNode(CollectionTypeFilter.INTERMEDIATE_COLLECTION),
)();
const serializedFilters = serializeResourceTypeFilters(filters);
.toEqual(`["uuid","is_a",["${ResourceKind.PROJECT}","${ResourceKind.COLLECTION}"]],["collections.properties.type","in",["output"]]`);
});
+ it("should serialize intermediate collections and projects", () => {
+ const filters = pipe(
+ () => getInitialResourceTypeFilters(),
+ deselectNode(ObjectTypeFilter.PROCESS),
+ deselectNode(CollectionTypeFilter.GENERAL_COLLECTION),
+ deselectNode(CollectionTypeFilter.LOG_COLLECTION),
+ deselectNode(CollectionTypeFilter.OUTPUT_COLLECTION),
+ )();
+
+ const serializedFilters = serializeResourceTypeFilters(filters);
+ expect(serializedFilters)
+ .toEqual(`["uuid","is_a",["${ResourceKind.PROJECT}","${ResourceKind.COLLECTION}"]],["collections.properties.type","in",["intermediate"]]`);
+ });
+
it("should serialize general and log collections", () => {
const filters = pipe(
() => getInitialResourceTypeFilters(),
GENERAL_COLLECTION = 'General',
OUTPUT_COLLECTION = 'Output',
LOG_COLLECTION = 'Log',
+ INTERMEDIATE_COLLECTION = 'Intermediate',
}
export enum ProcessTypeFilter {
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)
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 CollectionType.OUTPUT;
case CollectionTypeFilter.LOG_COLLECTION:
return CollectionType.LOG;
+ case CollectionTypeFilter.INTERMEDIATE_COLLECTION:
+ return CollectionType.INTERMEDIATE;
+ default:
+ return CollectionType.GENERAL;
}
};
email: "test@gmail.com",
firstName: "TestFirstName",
lastName: "TestLastName",
- uuid: "ce8i5-tpzed-yid70bw31f51234",
- ownerUuid: "ce8i5-tpzed-000000000000000",
+ uuid: "zzzzz-tpzed-yid70bw31f51234",
+ ownerUuid: "zzzzz-tpzed-000000000000000",
isAdmin: false,
isActive: true,
username: "testfirstname",
},
},
runProcessPanel: {
- processPathname: "/projects/ce8i5-tpzed-yid70bw31f51234",
- processOwnerUuid: "ce8i5-tpzed-yid70bw31f51234",
+ processPathname: "/projects/zzzzz-tpzed-yid70bw31f51234",
+ processOwnerUuid: "zzzzz-tpzed-yid70bw31f51234",
selectedWorkflow: {
- href: "/workflows/ce8i5-7fd4e-2tlnerdkxnl4fjt",
+ href: "/workflows/zzzzz-7fd4e-2tlnerdkxnl4fjt",
kind: "arvados#workflow",
etag: "8gh5xlhlgo61yqscyl1spw8tc",
- uuid: "ce8i5-7fd4e-2tlnerdkxnl4fjt",
- ownerUuid: "ce8i5-tpzed-o4njwilpp4ov321",
+ uuid: "zzzzz-7fd4e-2tlnerdkxnl4fjt",
+ ownerUuid: "zzzzz-tpzed-o4njwilpp4ov321",
createdAt: "2020-07-15T19:40:50.296041000Z",
- modifiedByClientUuid: "ce8i5-ozdt8-libnr89sc5nq111",
- modifiedByUserUuid: "ce8i5-tpzed-o4njwilpp4ov321",
+ modifiedByClientUuid: "zzzzz-ozdt8-libnr89sc5nq111",
+ modifiedByUserUuid: "zzzzz-tpzed-o4njwilpp4ov321",
modifiedAt: "2020-07-15T19:40:50.296376000Z",
name: "revsort.cwl",
description:
"arvados-cwl-runner",
"--api=containers",
"--local",
- "--project-uuid=ce8i5-tpzed-yid70bw31f51234",
+ "--project-uuid=zzzzz-tpzed-yid70bw31f51234",
"/var/lib/cwl/workflow.json#main",
"/var/lib/cwl/cwl.input.json",
],
name: "basicFormTestName",
outputName: "Output from basicFormTestName",
outputPath: "/var/spool/cwl",
- ownerUuid: "ce8i5-tpzed-yid70bw31f51234",
+ ownerUuid: "zzzzz-tpzed-yid70bw31f51234",
priority: 1,
properties: {
workflowName: "revsort.cwl",
- template_uuid: "ce8i5-7fd4e-2tlnerdkxnl4fjt",
+ template_uuid: "zzzzz-7fd4e-2tlnerdkxnl4fjt",
},
runtimeConstraints: {
API: true,
export const loadRunProcessPanel = () =>
async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
try {
- dispatch(setBreadcrumbs([{ label: 'Run Process' }]));
+ dispatch(setBreadcrumbs([{ label: 'Run workflow' }]));
const response = await services.workflowService.list();
dispatch(runProcessPanelActions.SET_WORKFLOWS(response.items));
} catch (e) {
PROJECTS = 'Projects',
SHARED_WITH_ME = 'Shared with me',
PUBLIC_FAVORITES = 'Public Favorites',
- WORKFLOWS = 'Workflows',
FAVORITES = 'My Favorites',
TRASH = 'Trash',
ALL_PROCESSES = 'All Processes',
SidePanelTreeCategory.SHARED_WITH_ME,
SidePanelTreeCategory.PUBLIC_FAVORITES,
SidePanelTreeCategory.FAVORITES,
- // SidePanelTreeCategory.WORKFLOWS,
SidePanelTreeCategory.GROUPS,
SidePanelTreeCategory.ALL_PROCESSES,
SidePanelTreeCategory.TRASH
sharedWithMePanelActions
} from 'store/shared-with-me-panel/shared-with-me-panel-actions';
import { CopyFormDialogData } from 'store/copy-dialog/copy-dialog';
-import { loadWorkflowPanel, workflowPanelActions } from 'store/workflow-panel/workflow-panel-actions';
+import { workflowPanelActions } from 'store/workflow-panel/workflow-panel-actions';
import { loadSshKeysPanel } from 'store/auth/auth-action-ssh';
import { loadLinkAccountPanel, linkAccountPanelActions } from 'store/link-account-panel/link-account-panel-actions';
import { loadSiteManagerPanel } from 'store/auth/auth-action-session';
}
);
-export const loadWorkflow = handleFirstTimeLoad(async (dispatch: Dispatch<any>) => {
- dispatch(activateSidePanelTreeItem(SidePanelTreeCategory.WORKFLOWS));
- await dispatch(loadWorkflowPanel());
- dispatch(setSidePanelBreadcrumbs(SidePanelTreeCategory.WORKFLOWS));
-});
-
export const loadPublicFavorites = () =>
handleFirstTimeLoad(
(dispatch: Dispatch) => {
import { ProjectResource } from "models/project";
import { ListItemTextIcon } from "components/list-item-text-icon/list-item-text-icon";
import { ProcessIcon, ProjectIcon, FilterGroupIcon, FavoriteIcon, ProjectsIcon, ShareMeIcon, TrashIcon, PublicFavoriteIcon, GroupsIcon } from 'components/icon/icon';
-import { WorkflowIcon } from 'components/icon/icon';
import { activateSidePanelTreeItem, toggleSidePanelTreeItemCollapse, SIDE_PANEL_TREE, SidePanelTreeCategory } from 'store/side-panel-tree/side-panel-tree-actions';
import { openSidePanelContextMenu } from 'store/context-menu/context-menu-actions';
import { noop } from 'lodash';
export const SidePanelTree = connect(undefined, mapDispatchToProps)(
(props: SidePanelTreeActionProps) =>
<span data-cy="side-panel-tree">
- <TreePicker {...props} render={renderSidePanelItem} pickerId={SIDE_PANEL_TREE} />
+ <TreePicker {...props} render={renderSidePanelItem} pickerId={SIDE_PANEL_TREE} />
</span>);
const renderSidePanelItem = (item: TreeItem<ProjectResource>) => {
return ShareMeIcon;
case SidePanelTreeCategory.TRASH:
return TrashIcon;
- case SidePanelTreeCategory.WORKFLOWS:
- return WorkflowIcon;
case SidePanelTreeCategory.PUBLIC_FAVORITES:
return PublicFavoriteIcon;
case SidePanelTreeCategory.ALL_PROCESSES:
import { RUN_PROCESS_INPUTS_FORM } from './run-process-inputs-form';
import { RunProcessAdvancedForm, RUN_PROCESS_ADVANCED_FORM } from './run-process-advanced-form';
import { createStructuredSelector } from 'reselect';
-import { WorkflowPresetSelect } from 'views/run-process-panel/workflow-preset-select';
import { selectPreset } from 'store/run-process-panel/run-process-panel-actions';
export interface RunProcessSecondStepFormDataProps {
({ inputs, workflow, selectedPreset, presets, onPresetChange, valid, goBack, runProcess }: RunProcessSecondStepFormProps) =>
<Grid container spacing={16} data-cy="new-process-panel">
<Grid item xs={12}>
- {/* <Grid container spacing={32}>
- <Grid item xs={12} md={6}>
- {workflow && selectedPreset && presets &&
- < WorkflowPresetSelect
- {...{ workflow, selectedPreset, presets, onChange: onPresetChange }} />
- }
- </Grid>
- </Grid> */}
<RunProcessBasicForm />
<RunProcessInputsForm inputs={inputs} />
<RunProcessAdvancedForm />
Back
</Button>
<Button disabled={!valid} variant="contained" color="primary" onClick={runProcess}>
- Run Process
+ Run workflow
</Button>
</Grid>
</Grid>);
import { WorkflowIcon } from 'components/icon/icon';
import { DataTableDefaultView } from 'components/data-table-default-view/data-table-default-view';
import { parseWorkflowDefinition, getWorkflowInputs, getInputLabel, stringifyInputType } from 'models/workflow';
-// import { WorkflowGraph } from "views/workflow-panel/workflow-graph";
-
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';
<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} />