UNPKG

@netgrif/components-core

Version:

Netgrif Application engine frontend core Angular library

101 lines 12.7 kB
import { Inject, Injectable, Optional } from '@angular/core'; import { BehaviorSubject, ReplaySubject } from 'rxjs'; import { NAE_URI_NODE_CASES_PAGE_SIZE } from '../model/size-menu-injection-token'; import { HttpErrorResponse } from "@angular/common/http"; import * as i0 from "@angular/core"; import * as i1 from "../../logger/services/logger.service"; /** * Service for managing URIs */ export class PathService { _logger; static SEPARATOR = '/'; _activePath$; pageSize; _datafieldsForMenuResolver$; constructor(_logger, pageSize = 20) { this._logger = _logger; let finalPageSize; if (pageSize == null) { this._logger.debug('No pageSize provided, defaulting to 20.'); finalPageSize = 20; } else if (typeof pageSize === 'string') { const parsed = parseInt(pageSize, 10); if (isNaN(parsed)) { this._logger.warn('Invalid pageSize string provided, defaulting to 20.', { provided: pageSize }); finalPageSize = 20; } else { finalPageSize = parsed; } } else { finalPageSize = pageSize; } this.pageSize = finalPageSize; this._logger.debug('PathService initialized with pageSize', { pageSize: this.pageSize }); this._activePath$ = new BehaviorSubject(PathService.SEPARATOR); this._datafieldsForMenuResolver$ = new ReplaySubject(); } set activePath(path) { this._activePath$.next(path); } get activePath$() { return this._activePath$.asObservable(); } get activePath() { return this._activePath$.getValue(); } set datafieldsForMenuResolver(data) { if (!this._datafieldsForMenuResolver$.closed) { this._datafieldsForMenuResolver$.next(data); this._datafieldsForMenuResolver$.complete(); } else { this._logger.error('PathService can have datafields for Menu resolver set only once'); } } set datafieldsForMenuResolverError(error) { if (!this._datafieldsForMenuResolver$.closed) { this._datafieldsForMenuResolver$.error(error instanceof HttpErrorResponse ? error.error.message : error.message); this._datafieldsForMenuResolver$.complete(); } else { this._logger.error('PathService can\'t handle error for datafields for Menu resolver, because stream is already closed'); } } get datafieldsForMenuResolver() { return this._datafieldsForMenuResolver$.asObservable(); } get isMenuResolverClosed() { return this._datafieldsForMenuResolver$.closed; } reset() { this.activePath = PathService.SEPARATOR; return PathService.SEPARATOR; } splitPath(path) { return path.split(PathService.SEPARATOR); } ngOnDestroy() { this._activePath$.complete(); if (!this._datafieldsForMenuResolver$.closed) { this._datafieldsForMenuResolver$.complete(); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PathService, deps: [{ token: i1.LoggerService }, { token: NAE_URI_NODE_CASES_PAGE_SIZE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PathService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PathService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: () => [{ type: i1.LoggerService }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NAE_URI_NODE_CASES_PAGE_SIZE] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9uYXZpZ2F0aW9uL3NlcnZpY2UvcGF0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFhLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUMsZUFBZSxFQUFjLGFBQWEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVoRSxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUVoRixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRXZEOztHQUVHO0FBSUgsTUFBTSxPQUFPLFdBQVc7SUFRTjtJQU5QLE1BQU0sQ0FBQyxTQUFTLEdBQVcsR0FBRyxDQUFDO0lBQ3JCLFlBQVksQ0FBMEI7SUFDN0MsUUFBUSxDQUFTO0lBQ1YsMkJBQTJCLENBQWtDO0lBRTlFLFlBQ2MsT0FBc0IsRUFDa0IsV0FBNEIsRUFBRTtRQUR0RSxZQUFPLEdBQVAsT0FBTyxDQUFlO1FBR2hDLElBQUksYUFBcUIsQ0FBQztRQUUxQixJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztZQUM5RCxhQUFhLEdBQUcsRUFBRSxDQUFDO1NBQ3RCO2FBQU0sSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0QyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDZixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxxREFBcUQsRUFBRSxFQUFFLFFBQVEsRUFBRSxR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QUFROzswQkFBSSxNQUFNOzJCQUFDLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7TkFFX1VSSV9OT0RFX0NBU0VTX1BBR0VfU0laRX0gZnJvbSAnLi4vbW9kZWwvc2l6ZS1tZW51LWluamVjdGlvbi10b2tlbic7XG5pbXBvcnQge0RhdGFHcm91cH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9pbnRlcmZhY2UvZGF0YS1ncm91cHNcIjtcbmltcG9ydCB7SHR0cEVycm9yUmVzcG9uc2V9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuXG4vKipcbiAqIFNlcnZpY2UgZm9yIG1hbmFnaW5nIFVSSXNcbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUGF0aFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgcHVibGljIHN0YXRpYyBTRVBBUkFUT1I6IHN0cmluZyA9ICcvJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmVQYXRoJDogQmVoYXZpb3JTdWJqZWN0PHN0cmluZz47XG4gICAgcHJvdGVjdGVkIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGF0YWZpZWxkc0Zvck1lbnVSZXNvbHZlciQ6IFJlcGxheVN1YmplY3Q8QXJyYXk8RGF0YUdyb3VwPj47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIF9sb2dnZXI6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTkFFX1VSSV9OT0RFX0NBU0VTX1BBR0VfU0laRSkgcGFnZVNpemU6IHN0cmluZyB8IG51bWJlciA9IDIwXG4gICAgKSB7XG4gICAgICAgIGxldCBmaW5hbFBhZ2VTaXplOiBudW1iZXI7XG5cbiAgICAgICAgaWYgKHBhZ2VTaXplID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnTm8gcGFnZVNpemUgcHJvdmlkZWQsIGRlZmF1bHRpbmcgdG8gMjAuJyk7XG4gICAgICAgICAgICBmaW5hbFBhZ2VTaXplID0gMjA7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHBhZ2VTaXplID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQocGFnZVNpemUsIDEwKTtcbiAgICAgICAgICAgIGlmIChpc05hTihwYXJzZWQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ0ludmFsaWQgcGFnZVNpemUgc3RyaW5nIHByb3ZpZGVkLCBkZWZhdWx0aW5nIHRvIDIwLicsIHsgcHJvdmlkZWQ6IHBhZ2VTaXplIH0pO1xuICAgICAgICAgICAgICAgIGZpbmFsUGFnZVNpemUgPSAyMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmluYWxQYWdlU2l6ZSA9IHBhcnNlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbmFsUGFnZVNpemUgPSBwYWdlU2l6ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGFnZVNpemUgPSBmaW5hbFBhZ2VTaXplO1xuICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1BhdGhTZXJ2aWNlIGluaXRpYWxpemVkIHdpdGggcGFnZVNpemUnLCB7IHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplIH0pO1xuXG4gICAgICAgIHRoaXMuX2FjdGl2ZVBhdGgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KFBhdGhTZXJ2aWNlLlNFUEFSQVRPUik7XG4gICAgICAgIHRoaXMuX2RhdGFmaWVsZHNGb3JNZW51UmVzb2x2ZXIkID0gbmV3IFJlcGxheVN1YmplY3Q8QXJyYXk8RGF0YUdyb3VwPj4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGFjdGl2ZVBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBhdGgkLm5leHQocGF0aCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3RpdmVQYXRoJCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlUGF0aCQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3RpdmVQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVQYXRoJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGF0YWZpZWxkc0Zvck1lbnVSZXNvbHZlcihkYXRhOiBBcnJheTxEYXRhR3JvdXA+KSB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0YWZpZWxkc0Zvck1lbnVSZXNvbHZlciQuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRzRm9yTWVudVJlc29sdmVyJC5uZXh0KGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5fZGF0YWZpZWxkc0Zvck1lbnVSZXNvbHZlciQuY29tcGxldGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignUGF0aFNlcnZpY2UgY2FuIGhhdmUgZGF0YWZpZWxkcyBmb3IgTWVudSByZXNvbHZlciBzZXQgb25seSBvbmNlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGRhdGFmaWVsZHNGb3JNZW51UmVzb2x2ZXJFcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhZmllbGRzRm9yTWVudVJlc29sdmVyJC5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFmaWVsZHNGb3JNZW51UmVzb2x2ZXIkLmVycm9yKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgPyBlcnJvci5lcnJvci5tZXNzYWdlIDogZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRzRm9yTWVudVJlc29sdmVyJC5jb21wbGV0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdQYXRoU2VydmljZSBjYW5cXCd0IGhhbmRsZSBlcnJvciBmb3IgZGF0YWZpZWxkcyBmb3IgTWVudSByZXNvbHZlciwgYmVjYXVzZSBzdHJlYW0gaXMgYWxyZWFkeSBjbG9zZWQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0YWZpZWxkc0Zvck1lbnVSZXNvbHZlcigpOiBPYnNlcnZhYmxlPEFycmF5PERhdGFHcm91cD4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFmaWVsZHNGb3JNZW51UmVzb2x2ZXIkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGdldCBpc01lbnVSZXNvbHZlckNsb3NlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFmaWVsZHNGb3JNZW51UmVzb2x2ZXIkLmNsb3NlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXQoKTogc3RyaW5nIHtcbiAgICAgICAgdGhpcy5hY3RpdmVQYXRoID0gUGF0aFNlcnZpY2UuU0VQQVJBVE9SO1xuICAgICAgICByZXR1cm4gUGF0aFNlcnZpY2UuU0VQQVJBVE9SO1xuICAgIH1cblxuICAgIHB1YmxpYyBzcGxpdFBhdGgocGF0aDogc3RyaW5nKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBwYXRoLnNwbGl0KFBhdGhTZXJ2aWNlLlNFUEFSQVRPUik7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZVBhdGgkLmNvbXBsZXRlKCk7XG4gICAgICAgIGlmICghdGhpcy5fZGF0YWZpZWxkc0Zvck1lbnVSZXNvbHZlciQuY2xvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhZmllbGRzRm9yTWVudVJlc29sdmVyJC5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19