UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

69 lines 11.6 kB
import { Inject, Injectable, Injector, Optional } from '@angular/core'; import { Router } from '@angular/router'; import { flatten } from 'lodash-es'; import { forkJoin, of } from 'rxjs'; import { map } from 'rxjs/operators'; import { toObservable } from '../common'; import { HOOK_DYNAMIC_PROVIDER_CONFIG } from './provider-configuration-hook'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; export class ProviderConfigurationTabFactory { constructor(config, router, injector) { this.router = router; this.injector = injector; this.config = flatten(config); } get() { if (!this.config || !this.config.length) { return; } const configForRoute = this.config.find(c => c.tab ? this.router.url === '/' + this.getNodeTabPath(c.navigation.path, c.tab.path) || this.router.url.startsWith('/' + c.navigation.path.replace(/^\/|\/$/g, '')) : false); const filteredRoutes = configForRoute ? this.config.filter(c => c.navigation.path.replace(/^\/|\/$/g, '') === configForRoute.navigation.path.replace(/^\/|\/$/g, '') && c.tab) : []; const canActivate = filteredRoutes .map(c => c.tab.canActivate && c.tab.canActivate.length ? c.tab.canActivate.map(ca => this.injector.get(ca)) : undefined) .map(this.checkCanActivate.bind(this)); return canActivate.length > 0 ? forkJoin(canActivate).pipe(map((canActivateResult) => filteredRoutes .map((c, index) => { const tab = { ...c.tab, path: this.getNodeTabPath(c.navigation.path, c.tab.path) }; return canActivateResult[index] ? tab : undefined; }) .filter(el => !!el))) : []; } checkCanActivate(ca) { if (!!ca && ca.length) { const canActivateResult = ca .map((canActivate) => canActivate.canActivate(undefined, undefined)) .map(toObservable); return forkJoin(canActivateResult).pipe(map((caResult) => caResult.reduce((acc, curr) => acc && curr))); } return of(true); } getNodeTabPath(nodePath, tabPath) { return `${nodePath.replace(/^\/|\/$/g, '')}/${tabPath.replace(/^\/|\/$/g, '')}`; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProviderConfigurationTabFactory, deps: [{ token: HOOK_DYNAMIC_PROVIDER_CONFIG, optional: true }, { token: i1.Router }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProviderConfigurationTabFactory, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProviderConfigurationTabFactory, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [HOOK_DYNAMIC_PROVIDER_CONFIG] }] }, { type: i1.Router }, { type: i0.Injector }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItY29uZmlndXJhdGlvbi10YWIuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcHJvdmlkZXItY29uZmlndXJhdGlvbi9wcm92aWRlci1jb25maWd1cmF0aW9uLXRhYi5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLE1BQU0sRUFBaUIsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3pDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFHN0UsTUFBTSxPQUFPLCtCQUErQjtJQUcxQyxZQUdFLE1BQWlDLEVBQzFCLE1BQWMsRUFDYixRQUFrQjtRQURuQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUUxQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsR0FBRztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzFDLENBQUMsQ0FBQyxHQUFHO1lBQ0gs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SSxJQUFJLENBQUMsQ0FBQyxDQUMxRSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFTyxjQUFjLENBQUMsUUFBUSxFQUFFLE9BQU87UUFDdEMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDbEYsQ0FBQzsrR0EvRVUsK0JBQStCLGtCQUtoQyw0QkFBNEI7bUhBTDNCLCtCQUErQixjQURsQixNQUFNOzs0RkFDbkIsK0JBQStCO2tCQUQzQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBSzdCLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgQ2FuQWN0aXZhdGVGbiB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmbGF0dGVuIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IFRhYiwgVGFiRmFjdG9yeSB9IGZyb20gJy4uL3RhYnMnO1xuaW1wb3J0IHsgRHluYW1pY1Byb3ZpZGVyQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC9keW5hbWljLXByb3ZpZGVyLWNvbmZpZy5tb2RlbCc7XG5pbXBvcnQgeyBIT09LX0RZTkFNSUNfUFJPVklERVJfQ09ORklHIH0gZnJvbSAnLi9wcm92aWRlci1jb25maWd1cmF0aW9uLWhvb2snO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFByb3ZpZGVyQ29uZmlndXJhdGlvblRhYkZhY3RvcnkgaW1wbGVtZW50cyBUYWJGYWN0b3J5IHtcbiAgcHJpdmF0ZSBjb25maWc6IER5bmFtaWNQcm92aWRlckNvbmZpZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChIT09LX0RZTkFNSUNfUFJPVklERVJfQ09ORklHKVxuICAgIGNvbmZpZzogRHluYW1pY1Byb3ZpZGVyQ29uZmlnW11bXSxcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgdGhpcy5jb25maWcgPSBmbGF0dGVuKGNvbmZpZyk7XG4gIH1cblxuICBnZXQoKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZyB8fCAhdGhpcy5jb25maWcubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnRm9yUm91dGUgPSB0aGlzLmNvbmZpZy5maW5kKGMgPT5cbiAgICAgIGMudGFiXG4gICAgICAgID8gdGhpcy5yb3V0ZXIudXJsID09PSAnLycgKyB0aGlzLmdldE5vZGVUYWJQYXRoKGMubmF2aWdhdGlvbi5wYXRoLCBjLnRhYi5wYXRoKSB8fFxuICAgICAgICAgIHRoaXMucm91dGVyLnVybC5zdGFydHNXaXRoKCcvJyArIGMubmF2aWdhdGlvbi5wYXRoLnJlcGxhY2UoL15cXC98XFwvJC9nLCAnJykpXG4gICAgICAgIDogZmFsc2VcbiAgICApO1xuXG4gICAgY29uc3QgZmlsdGVyZWRSb3V0ZXMgPSBjb25maWdGb3JSb3V0ZVxuICAgICAgPyB0aGlzLmNvbmZpZy5maWx0ZXIoXG4gICAgICAgICAgYyA9PlxuICAgICAgICAgICAgYy5uYXZpZ2F0aW9uLnBhdGgucmVwbGFjZSgvXlxcL3xcXC8kL2csICcnKSA9PT1cbiAgICAgICAgICAgICAgY29uZmlnRm9yUm91dGUubmF2aWdhdGlvbi5wYXRoLnJlcGxhY2UoL15cXC98XFwvJC9nLCAnJykgJiYgYy50YWJcbiAgICAgICAgKVxuICAgICAgOiBbXTtcblxuICAgIGNvbnN0IGNhbkFjdGl2YXRlOiBBcnJheTxPYnNlcnZhYmxlPGJvb2xlYW4+PiA9IGZpbHRlcmVkUm91dGVzXG4gICAgICAubWFwKGMgPT5cbiAgICAgICAgYy50YWIuY2FuQWN0aXZhdGUgJiYgYy50YWIuY2FuQWN0aXZhdGUubGVuZ3RoXG4gICAgICAgICAgPyBjLnRhYi5jYW5BY3RpdmF0ZS5tYXAoY2EgPT4gdGhpcy5pbmplY3Rvci5nZXQoY2EpKVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICApXG4gICAgICAubWFwKHRoaXMuY2hlY2tDYW5BY3RpdmF0ZS5iaW5kKHRoaXMpKTtcblxuICAgIHJldHVybiBjYW5BY3RpdmF0ZS5sZW5ndGggPiAwXG4gICAgICA/IGZvcmtKb2luKGNhbkFjdGl2YXRlKS5waXBlKFxuICAgICAgICAgIG1hcCgoY2FuQWN0aXZhdGVSZXN1bHQ6IGJvb2xlYW5bXSkgPT5cbiAgICAgICAgICAgIGZpbHRlcmVkUm91dGVzXG4gICAgICAgICAgICAgIC5tYXAoKGMsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFiID0ge1xuICAgICAgICAgICAgICAgICAgLi4uYy50YWIsXG4gICAgICAgICAgICAgICAgICBwYXRoOiB0aGlzLmdldE5vZGVUYWJQYXRoKGMubmF2aWdhdGlvbi5wYXRoLCBjLnRhYi5wYXRoKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbkFjdGl2YXRlUmVzdWx0W2luZGV4XSA/ICh0YWIgYXMgVGFiKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZpbHRlcihlbCA9PiAhIWVsKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgOiBbXTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tDYW5BY3RpdmF0ZShcbiAgICBjYToge1xuICAgICAgY2FuQWN0aXZhdGU6IENhbkFjdGl2YXRlRm47XG4gICAgfVtdXG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGlmICghIWNhICYmIGNhLmxlbmd0aCkge1xuICAgICAgY29uc3QgY2FuQWN0aXZhdGVSZXN1bHQ6IEFycmF5PE9ic2VydmFibGU8Ym9vbGVhbj4+ID0gY2FcbiAgICAgICAgLm1hcCgoY2FuQWN0aXZhdGU6IHsgY2FuQWN0aXZhdGU6IENhbkFjdGl2YXRlRm4gfSkgPT5cbiAgICAgICAgICBjYW5BY3RpdmF0ZS5jYW5BY3RpdmF0ZSh1bmRlZmluZWQsIHVuZGVmaW5lZClcbiAgICAgICAgKVxuICAgICAgICAubWFwKHRvT2JzZXJ2YWJsZSkgYXMgQXJyYXk8T2JzZXJ2YWJsZTxib29sZWFuPj47XG5cbiAgICAgIHJldHVybiBmb3JrSm9pbihjYW5BY3RpdmF0ZVJlc3VsdCkucGlwZShcbiAgICAgICAgbWFwKChjYVJlc3VsdDogYm9vbGVhbltdKSA9PiBjYVJlc3VsdC5yZWR1Y2UoKGFjYywgY3VycikgPT4gYWNjICYmIGN1cnIpKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROb2RlVGFiUGF0aChub2RlUGF0aCwgdGFiUGF0aCkge1xuICAgIHJldHVybiBgJHtub2RlUGF0aC5yZXBsYWNlKC9eXFwvfFxcLyQvZywgJycpfS8ke3RhYlBhdGgucmVwbGFjZSgvXlxcL3xcXC8kL2csICcnKX1gO1xuICB9XG59XG4iXX0=