Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | 29x 29x 29x 29x 29x 29x 29x 29x 18x 18x 18x 17x 14x 1x 13x 1x 12x 1x 11x 1x 10x 1x 9x 9x 4x 4x 5x 1x 4x 4x 3x 3x 1x | import { Injectable } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
import { EMPTY, Observable, of } from 'rxjs';
import { map, switchMap, withLatestFrom } from 'rxjs/operators';
import { AppFacade } from 'ish-core/facades/app.facade';
import { BreadcrumbItem } from 'ish-core/models/breadcrumb-item/breadcrumb-item.interface';
import { whenFalsy, whenTruthy } from 'ish-core/utils/operators';
import { OrganizationManagementFacade } from '../../facades/organization-management.facade';
@Injectable({ providedIn: 'root' })
export class OrganizationManagementBreadcrumbService {
constructor(
private appFacade: AppFacade,
private organizationManagementFacade: OrganizationManagementFacade,
private translateService: TranslateService
) {}
breadcrumb$(prefix: string): Observable<BreadcrumbItem[]> {
return this.appFacade.routingInProgress$.pipe(
whenFalsy(),
withLatestFrom(this.appFacade.path$.pipe(whenTruthy())),
// eslint-disable-next-line complexity
switchMap(([, path]) => {
if (path.endsWith('users')) {
return of([{ key: 'account.organization.user_management' }]);
} else if (path.endsWith('settings')) {
return of([{ key: 'account.organization.org_settings' }]);
} else if (path.endsWith('settings/company')) {
return of([
{ key: 'account.organization.org_settings', link: `${prefix}/settings` },
{ key: 'account.company_profile.heading' },
]);
} else if (path.endsWith('cost-centers')) {
return of([{ key: 'account.organization.cost_center_management' }]);
} else if (path.endsWith('users/create')) {
return of([
{ key: 'account.organization.user_management', link: `${prefix}/users` },
{ key: 'account.user.breadcrumbs.new_user.text' },
]);
} else Iif (path.endsWith('users/import')) {
return of([
{ key: 'account.organization.user_management', link: `${prefix}/users` },
{ key: 'account.user.import.breadcrumb' },
]);
} else if (/users\/:B2BCustomerLogin(\/(profile|roles|budget))?$/.test(path)) {
return this.organizationManagementFacade.selectedUser$.pipe(
whenTruthy(),
withLatestFrom(this.translateService.get('account.organization.user_management.user_detail.breadcrumb')),
map(([user, translation]) =>
path.endsWith('profile') || path.endsWith('roles') || path.endsWith('budget')
? // edit user detail
[
{ key: 'account.organization.user_management', link: `${prefix}/users` },
{
text: `${translation} - ${user.firstName} ${user.lastName}`,
link: `${prefix}/users/${user.login}`,
},
{
key: `account.user.update_${path.substring(path.lastIndexOf('/') + 1)}.heading`,
},
]
: // user detail
[
{ key: 'account.organization.user_management', link: `${prefix}/users` },
{ text: `${translation} - ${user.firstName} ${user.lastName}` },
]
)
);
} else if (path.endsWith('cost-centers/create')) {
return of([
{ key: 'account.organization.cost_center_management', link: `${prefix}/cost-centers` },
{ key: 'account.costcenter.create.heading' },
]);
} else Iif (path.endsWith('cost-centers/import')) {
return of([
{ key: 'account.organization.cost_center_management', link: `${prefix}/cost-centers` },
{ key: 'account.costcenter.import.breadcrumb' },
]);
} else if (/cost-centers\/:CostCenterId(\/(edit|buyers))?$/.test(path)) {
return this.organizationManagementFacade.selectedCostCenter$.pipe(
whenTruthy(),
map(cc =>
path.endsWith('edit') || path.endsWith('buyers')
? [
{ key: 'account.organization.cost_center_management', link: `${prefix}/cost-centers` },
{
text: `${cc.name}`,
link: `${prefix}/cost-centers/${cc.id}`,
},
{
key: `account.costcenter.details.${path.substring(path.lastIndexOf('/') + 1)}.heading`,
},
]
: [
{ key: 'account.organization.cost_center_management', link: `${prefix}/cost-centers` },
{ text: cc.name },
]
)
);
}
return EMPTY;
})
);
}
}
|