X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/4ad6191d53207a8b2d4c0c8a30b18119daaa5fbc..9b81f1cb8c16ad2e164e83d8e2b123fd271cea89:/services/workbench2/src/store/breadcrumbs/breadcrumbs-actions.ts diff --git a/services/workbench2/src/store/breadcrumbs/breadcrumbs-actions.ts b/services/workbench2/src/store/breadcrumbs/breadcrumbs-actions.ts index 9aebeb904c..dc34e91b69 100644 --- a/services/workbench2/src/store/breadcrumbs/breadcrumbs-actions.ts +++ b/services/workbench2/src/store/breadcrumbs/breadcrumbs-actions.ts @@ -20,7 +20,7 @@ import { ProcessResource } from 'models/process'; import { OrderBuilder } from 'services/api/order-builder'; import { Breadcrumb } from 'components/breadcrumbs/breadcrumbs'; import { ContainerRequestResource, containerRequestFieldsNoMounts } from 'models/container-request'; -import { CollectionIcon, IconType, ProcessIcon, ProjectIcon, WorkflowIcon } from 'components/icon/icon'; +import { AdminMenuIcon, CollectionIcon, IconType, ProcessIcon, ProjectIcon, ResourceIcon, TerminalIcon, WorkflowIcon } from 'components/icon/icon'; import { CollectionResource } from 'models/collection'; import { getSidePanelIcon } from 'views-components/side-panel-tree/side-panel-tree'; import { WorkflowResource } from 'models/workflow'; @@ -30,7 +30,8 @@ export const BREADCRUMBS = 'breadcrumbs'; export const setBreadcrumbs = (breadcrumbs: any, currentItem?: CollectionResource | ContainerRequestResource | GroupResource | WorkflowResource) => { if (currentItem) { - breadcrumbs.push(resourceToBreadcrumb(currentItem)); + const currentCrumb = resourceToBreadcrumb(currentItem) + if (currentCrumb.label.length) breadcrumbs.push(currentCrumb); } return propertiesActions.SET_PROPERTY({ key: BREADCRUMBS, value: breadcrumbs }); }; @@ -50,8 +51,8 @@ const resourceToBreadcrumbIcon = (resource: CollectionResource | ContainerReques } } -const resourceToBreadcrumb = (resource: CollectionResource | ContainerRequestResource | GroupResource | WorkflowResource): Breadcrumb => ({ - label: resource.name, +const resourceToBreadcrumb = (resource: (CollectionResource | ContainerRequestResource | GroupResource | WorkflowResource) & {fullName?: string} ): Breadcrumb => ({ + label: resource.name || resource.fullName || '', uuid: resource.uuid, icon: resourceToBreadcrumbIcon(resource), }) @@ -268,11 +269,16 @@ export const setUserProfileBreadcrumbs = (userUuid: string) => try { const user = getResource(userUuid)(getState().resources) || await services.userService.get(userUuid, false); - const breadcrumbs: Breadcrumb[] = [ + const currentCrumbs = getState().properties.breadcrumbs as Breadcrumb[] + const userProfileBreadcrumbs: Breadcrumb[] = [ { label: USERS_PANEL_LABEL, uuid: USERS_PANEL_LABEL }, - { label: user ? user.username : userUuid, uuid: userUuid }, + { label: user ? `${user.firstName} ${user.lastName}` : userUuid, uuid: userUuid }, + ]; + const breadcrumbsWithPreviousCrumbs: Breadcrumb[] = [ + ...currentCrumbs, + { label: user ? `${user.firstName} ${user.lastName}` : userUuid, uuid: userUuid }, ]; - dispatch(setBreadcrumbs(breadcrumbs)); + dispatch(setBreadcrumbs(currentCrumbs.some(crumb => crumb.label === SidePanelTreeCategory.GROUPS) ? breadcrumbsWithPreviousCrumbs : userProfileBreadcrumbs)); } catch (e) { const breadcrumbs: Breadcrumb[] = [ { label: USERS_PANEL_LABEL, uuid: USERS_PANEL_LABEL }, @@ -290,3 +296,39 @@ export const setMyAccountBreadcrumbs = () => { label: MY_ACCOUNT_PANEL_LABEL, uuid: MY_ACCOUNT_PANEL_LABEL }, ])); }; + +export const INSTANCE_TYPES_PANEL_LABEL = 'Instance Types'; + +export const setInstanceTypesBreadcrumbs = () => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + dispatch(setBreadcrumbs([ + { label: INSTANCE_TYPES_PANEL_LABEL, uuid: INSTANCE_TYPES_PANEL_LABEL, icon: ResourceIcon }, + ])); + }; + +export const VIRTUAL_MACHINES_USER_PANEL_LABEL = 'Shell Access'; + +export const setVirtualMachinesBreadcrumbs = () => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + dispatch(setBreadcrumbs([ + { label: VIRTUAL_MACHINES_USER_PANEL_LABEL, uuid: VIRTUAL_MACHINES_USER_PANEL_LABEL, icon: TerminalIcon }, + ])); + }; + +export const VIRTUAL_MACHINES_ADMIN_PANEL_LABEL = 'Shell Access Admin'; + +export const setVirtualMachinesAdminBreadcrumbs = () => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + dispatch(setBreadcrumbs([ + { label: VIRTUAL_MACHINES_ADMIN_PANEL_LABEL, uuid: VIRTUAL_MACHINES_ADMIN_PANEL_LABEL, icon: AdminMenuIcon }, + ])); + }; + +export const REPOSITORIES_PANEL_LABEL = 'Repositories'; + +export const setRepositoriesBreadcrumbs = () => + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + dispatch(setBreadcrumbs([ + { label: REPOSITORIES_PANEL_LABEL, uuid: REPOSITORIES_PANEL_LABEL, icon: AdminMenuIcon }, + ])); + };