From: Pawel Kowalczyk Date: Thu, 27 Sep 2018 14:12:37 +0000 (+0200) Subject: merge master X-Git-Tag: 1.3.0~72^2~23^2~1 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/3367b1ff2a1d1050bb435f7bc8230c03435b2529 merge master Feature #13857 Arvados-DCO-1.1-Signed-off-by: Pawel Kowalczyk --- 3367b1ff2a1d1050bb435f7bc8230c03435b2529 diff --cc src/index.tsx index f81e9da9,52852847..d0154b66 --- a/src/index.tsx +++ b/src/index.tsx @@@ -36,9 -36,9 +36,10 @@@ import { initWebSocket } from '~/websoc import { Config } from '~/common/config'; import { addRouteChangeHandlers } from './routes/route-change-handlers'; import { setCurrentTokenDialogApiHost } from '~/store/current-token-dialog/current-token-dialog-actions'; - import { processResourceActionSet } from './views-components/context-menu/action-sets/process-resource-action-set'; + import { processResourceActionSet } from '~/views-components/context-menu/action-sets/process-resource-action-set'; import { progressIndicatorActions } from '~/store/progress-indicator/progress-indicator-actions'; +import { setUuidPrefix } from '~/store/workflow-panel/workflow-panel-actions'; + import { trashedCollectionActionSet } from '~/views-components/context-menu/action-sets/trashed-collection-action-set'; const getBuildNumber = () => "BN-" + (process.env.REACT_APP_BUILD_NUMBER || "dev"); const getGitCommit = () => "GIT-" + (process.env.REACT_APP_GIT_COMMIT || "latest").substr(0, 7); diff --cc src/store/navigation/navigation-action.ts index d332e0fc,943f38ce..c8a554c7 --- a/src/store/navigation/navigation-action.ts +++ b/src/store/navigation/navigation-action.ts @@@ -26,8 -26,8 +26,10 @@@ export const navigateTo = (uuid: string dispatch(navigateToFavorites); } else if (uuid === SidePanelTreeCategory.SHARED_WITH_ME) { dispatch(navigateToSharedWithMe); + } else if (uuid === SidePanelTreeCategory.WORKFLOWS) { + dispatch(navigateToWorkflows); + } else if (uuid === SidePanelTreeCategory.TRASH) { + dispatch(navigateToTrash); } }; diff --cc src/store/side-panel-tree/side-panel-tree-actions.ts index 073de22c,3fd2d68a..22a83dda --- a/src/store/side-panel-tree/side-panel-tree-actions.ts +++ b/src/store/side-panel-tree/side-panel-tree-actions.ts @@@ -13,6 -13,8 +13,7 @@@ import { getTreePicker, TreePicker } fr import { TreeItemStatus } from "~/components/tree/tree"; import { getNodeAncestors, getNodeValue, getNodeAncestorsIds, getNode } from '~/models/tree'; import { ProjectResource } from '~/models/project'; -import { progressIndicatorActions } from '../progress-indicator/progress-indicator-actions'; + import { OrderBuilder } from '../../services/api/order-builder'; export enum SidePanelTreeCategory { PROJECTS = 'Projects', diff --cc src/store/workbench/workbench-actions.ts index 01b5b92c,94b4b4f5..8f034ec0 --- a/src/store/workbench/workbench-actions.ts +++ b/src/store/workbench/workbench-actions.ts @@@ -39,10 -38,12 +38,14 @@@ import { loadProcessPanel } from '~/sto import { sharedWithMePanelActions } from '~/store/shared-with-me-panel/shared-with-me-panel-actions'; import { loadSharedWithMePanel } from '../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 { workflowPanelColumns } from '~/views/workflow-panel/workflow-panel-view'; import { progressIndicatorActions } from '~/store/progress-indicator/progress-indicator-actions'; import { getProgressIndicator } from '../progress-indicator/progress-indicator-reducer'; + import { ResourceKind, extractUuidKind } from '~/models/resource'; + import { FilterBuilder } from '~/services/api/filter-builder'; + import { GroupContentsResource } from '~/services/groups-service/groups-service'; + import { unionize, ofType, UnionOf, MatchCases } from '~/common/unionize'; export const WORKBENCH_LOADING_SCREEN = 'workbenchLoadingScreen'; @@@ -306,8 -347,58 +350,63 @@@ export const loadSharedWithMe = handleF await dispatch(setSidePanelBreadcrumbs(SidePanelTreeCategory.SHARED_WITH_ME)); }); +export const loadWorkflow = handleFirstTimeLoad(async (dispatch: Dispatch) => { + dispatch(activateSidePanelTreeItem(SidePanelTreeCategory.WORKFLOWS)); + await dispatch(loadWorkflowPanel()); + dispatch(setSidePanelBreadcrumbs(SidePanelTreeCategory.WORKFLOWS)); +}); + const finishLoadingProject = (project: GroupContentsResource | string) => + async (dispatch: Dispatch) => { + const uuid = typeof project === 'string' ? project : project.uuid; + dispatch(openProjectPanel(uuid)); + dispatch(loadDetailsPanel(uuid)); + if (typeof project !== 'string') { + dispatch(updateResources([project])); + } + }; + + const loadGroupContentsResource = async (params: { + uuid: string, + userUuid: string, + services: ServiceRepository + }) => { + const filters = new FilterBuilder() + .addEqual('uuid', params.uuid) + .getFilters(); + const { items } = await params.services.groupsService.contents(params.userUuid, { + filters, + recursive: true, + includeTrash: true, + }); + const resource = items.shift(); + let handler: GroupContentsHandler; + if (resource) { + handler = (resource.kind === ResourceKind.COLLECTION || resource.kind === ResourceKind.PROJECT) && resource.isTrashed + ? groupContentsHandlers.TRASHED(resource) + : groupContentsHandlers.OWNED(resource); + } else { + const kind = extractUuidKind(params.uuid); + let resource: GroupContentsResource; + if (kind === ResourceKind.COLLECTION) { + resource = await params.services.collectionService.get(params.uuid); + } else if (kind === ResourceKind.PROJECT) { + resource = await params.services.projectService.get(params.uuid); + } else { + resource = await params.services.containerRequestService.get(params.uuid); + } + handler = groupContentsHandlers.SHARED(resource); + } + return (cases: MatchCases) => + groupContentsHandlers.match(handler, cases); + + }; + + const groupContentsHandlersRecord = { + TRASHED: ofType(), + SHARED: ofType(), + OWNED: ofType(), + }; + + const groupContentsHandlers = unionize(groupContentsHandlersRecord); + + type GroupContentsHandler = UnionOf;