X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/a189d04efc7e3d8f7a66f7302ac1fda346c40a4e..789db184c88781fca23f769403003a7ce7715f5d:/src/store/breadcrumbs/breadcrumbs-actions.ts diff --git a/src/store/breadcrumbs/breadcrumbs-actions.ts b/src/store/breadcrumbs/breadcrumbs-actions.ts index 94f45aa7..71de5ce4 100644 --- a/src/store/breadcrumbs/breadcrumbs-actions.ts +++ b/src/store/breadcrumbs/breadcrumbs-actions.ts @@ -14,6 +14,7 @@ import { ServiceRepository } from '~/services/services'; import { SidePanelTreeCategory, activateSidePanelTreeItem } from '~/store/side-panel-tree/side-panel-tree-actions'; import { updateResources } from '../resources/resources-actions'; import { ResourceKind } from '~/models/resource'; +import { GroupResource } from '~/models/group'; export const BREADCRUMBS = 'breadcrumbs'; @@ -28,7 +29,7 @@ const getSidePanelTreeBreadcrumbs = (uuid: string) => (treePicker: TreePicker): const nodes = getSidePanelTreeBranch(uuid)(treePicker); return nodes.map(node => typeof node.value === 'string' - ? { label: node.value, uuid: node.nodeId } + ? { label: node.value, uuid: node.id } : { label: node.value.name, uuid: node.value.uuid }); }; @@ -40,11 +41,17 @@ export const setSidePanelBreadcrumbs = (uuid: string) => }; export const setSharedWithMeBreadcrumbs = (uuid: string) => + setCategoryBreadcrumbs(uuid, SidePanelTreeCategory.SHARED_WITH_ME); + +export const setTrashBreadcrumbs = (uuid: string) => + setCategoryBreadcrumbs(uuid, SidePanelTreeCategory.TRASH); + +export const setCategoryBreadcrumbs = (uuid: string, category: SidePanelTreeCategory) => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { const ancestors = await services.ancestorsService.ancestors(uuid, ''); dispatch(updateResources(ancestors)); const initialBreadcrumbs: ResourceBreadcrumb[] = [ - { label: SidePanelTreeCategory.SHARED_WITH_ME, uuid: SidePanelTreeCategory.SHARED_WITH_ME } + { label: category, uuid: category } ]; const breadrumbs = ancestors.reduce((breadcrumbs, ancestor) => ancestor.kind === ResourceKind.GROUP @@ -58,7 +65,8 @@ export const setSharedWithMeBreadcrumbs = (uuid: string) => export const setProjectBreadcrumbs = (uuid: string) => (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { const ancestors = getSidePanelTreeNodeAncestorsIds(uuid)(getState().treePicker); - if (ancestors.find(uuid => uuid === services.authService.getUuid())) { + const rootUuid = services.authService.getUuid(); + if (uuid === rootUuid || ancestors.find(uuid => uuid === rootUuid)) { dispatch(setSidePanelBreadcrumbs(uuid)); } else { dispatch(setSharedWithMeBreadcrumbs(uuid)); @@ -82,3 +90,22 @@ export const setProcessBreadcrumbs = (processUuid: string) => dispatch(setProjectBreadcrumbs(process.containerRequest.ownerUuid)); } }; + +export const GROUPS_PANEL_LABEL = 'Groups'; + +export const setGroupsBreadcrumbs = () => + setBreadcrumbs([{ label: GROUPS_PANEL_LABEL }]); + +export const setGroupDetailsBreadcrumbs = (groupUuid: string) => + (dispatch: Dispatch, getState: () => RootState) => { + + const group = getResource(groupUuid)(getState().resources); + + const breadcrumbs: ResourceBreadcrumb[] = [ + { label: GROUPS_PANEL_LABEL, uuid: GROUPS_PANEL_LABEL }, + { label: group ? group.name : groupUuid, uuid: groupUuid }, + ]; + + dispatch(setBreadcrumbs(breadcrumbs)); + + };