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';
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 });
};
}
}
-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),
})
uuid: SidePanelTreeCategory.PROJECTS,
icon: getSidePanelIcon(SidePanelTreeCategory.PROJECTS)
});
+ } else if (uuidKind === ResourceKind.USER) {
+ // Handle another user root project
+ const user = getResource<UserResource>(uuid)(getState().resources);
+ breadcrumbs.push({
+ label: (user as any)?.fullName || SidePanelTreeCategory.PROJECTS,
+ uuid: user?.uuid || uuid,
+ icon: getSidePanelIcon(SidePanelTreeCategory.PROJECTS)
+ });
} else if (Object.values(SidePanelTreeCategory).includes(uuid as SidePanelTreeCategory)) {
// Handle SidePanelTreeCategory root
breadcrumbs.push({
try {
const user = getResource<UserResource>(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 },
{ 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 setVirtualMachinesBreadcrumbs = () =>
+ async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ dispatch(setBreadcrumbs([
+ { label: SidePanelTreeCategory.SHELL_ACCESS, uuid: SidePanelTreeCategory.SHELL_ACCESS, 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 },
+ ]));
+ };