@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
76 lines • 10.1 kB
JavaScript
import { Injectable } from '@angular/core';
import { ReplaySubject } from 'rxjs';
import { map, switchMap, tap } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "rxjs";
import * as i2 from "../../process/process.service";
/**
* This service holds the information about the allowed nets for a specific view.
*/
export class AllowedNetsService {
_processService;
_allowedNets$;
_allowedNets;
_allowedNetsIdentifiers$;
_allowedNetsIdentifiers;
subAllowedNets;
/**
* The service converts identifiers to {@link Net} objects on its own.
*
* When a new set of allowed nets is emitted into the input Observable the allowed nets for the view are updated.
*
* @param allowedNetIdentifiers$ identifiers of the allowed nets
* @param _processService process service
*/
constructor(allowedNetIdentifiers$, _processService) {
this._processService = _processService;
this._allowedNets$ = new ReplaySubject(1);
this._allowedNetsIdentifiers$ = new ReplaySubject(1);
this.subAllowedNets = allowedNetIdentifiers$.pipe(tap(identifiers => {
this._allowedNetsIdentifiers$.next(identifiers);
this._allowedNetsIdentifiers = [...identifiers];
}), map(identifiers => this._processService.getNets(identifiers)), switchMap(nets => nets)).subscribe(nets => {
this._allowedNets$.next(nets);
this._allowedNets = [...nets];
});
}
/**
* Emits any time the allowed nets change. The first emission comes after the source observable emits for the first time.
*
* If a value has already been emitted, subscribing to the stream will provide the last emitted value.
*/
get allowedNets$() {
return this._allowedNets$.asObservable();
}
/**
* @returns the current value of the allowed nets. If allowed nets are yet to bee set, `undefined` is returned.
*/
get allowedNets() {
return this._allowedNets;
}
/**
* Emits any time the allowed nets change. The first emission comes after the source observable emits for the first time.
*
* If a value has already been emitted, subscribing to the stream will provide the last emitted value.
*/
get allowedNetsIdentifiers$() {
return this._allowedNetsIdentifiers$.asObservable();
}
/**
* @returns the current value of the allowed nets identifiers. If allowed nets are yet to bee set, `undefined` is returned.
*/
get allowedNetsIdentifiers() {
return this._allowedNetsIdentifiers;
}
ngOnDestroy() {
this._allowedNets$.complete();
this._allowedNetsIdentifiers$.complete();
this.subAllowedNets.unsubscribe();
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AllowedNetsService, deps: [{ token: i1.Observable }, { token: i2.ProcessService }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AllowedNetsService });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AllowedNetsService, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.Observable }, { type: i2.ProcessService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb3dlZC1uZXRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL2FsbG93ZWQtbmV0cy9zZXJ2aWNlcy9hbGxvd2VkLW5ldHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBYSxhQUFhLEVBQWUsTUFBTSxNQUFNLENBQUM7QUFHN0QsT0FBTyxFQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFbkQ7O0dBRUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBZ0I4QztJQWQvRCxhQUFhLENBQTRCO0lBQ3pDLFlBQVksQ0FBYTtJQUN6Qix3QkFBd0IsQ0FBK0I7SUFDdkQsdUJBQXVCLENBQWdCO0lBQ3pDLGNBQWMsQ0FBZTtJQUVyQzs7Ozs7OztPQU9HO0lBQ0gsWUFBWSxzQkFBaUQsRUFBWSxlQUErQjtRQUEvQixvQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDcEcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBYSxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxhQUFhLENBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxjQUFjLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUM3QyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDN0QsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQzFCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsdUJBQXVCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsc0JBQXNCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO0lBQ3hDLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QyxDQUFDO3dHQXBFUSxrQkFBa0I7NEdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFEOUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7UHJvY2Vzc1NlcnZpY2V9IGZyb20gJy4uLy4uL3Byb2Nlc3MvcHJvY2Vzcy5zZXJ2aWNlJztcbmltcG9ydCB7TmV0fSBmcm9tICcuLi8uLi9wcm9jZXNzL25ldCc7XG5pbXBvcnQge21hcCwgc3dpdGNoTWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBUaGlzIHNlcnZpY2UgaG9sZHMgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhbGxvd2VkIG5ldHMgZm9yIGEgc3BlY2lmaWMgdmlldy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFsbG93ZWROZXRzU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgICBwcm90ZWN0ZWQgX2FsbG93ZWROZXRzJDogUmVwbGF5U3ViamVjdDxBcnJheTxOZXQ+PjtcbiAgICBwcm90ZWN0ZWQgX2FsbG93ZWROZXRzOiBBcnJheTxOZXQ+O1xuICAgIHByb3RlY3RlZCBfYWxsb3dlZE5ldHNJZGVudGlmaWVycyQ6IFJlcGxheVN1YmplY3Q8QXJyYXk8c3RyaW5nPj47XG4gICAgcHJvdGVjdGVkIF9hbGxvd2VkTmV0c0lkZW50aWZpZXJzOiBBcnJheTxzdHJpbmc+O1xuICAgIHByaXZhdGUgc3ViQWxsb3dlZE5ldHM6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBzZXJ2aWNlIGNvbnZlcnRzIGlkZW50aWZpZXJzIHRvIHtAbGluayBOZXR9IG9iamVjdHMgb24gaXRzIG93bi5cbiAgICAgKlxuICAgICAqIFdoZW4gYSBuZXcgc2V0IG9mIGFsbG93ZWQgbmV0cyBpcyBlbWl0dGVkIGludG8gdGhlIGlucHV0IE9ic2VydmFibGUgdGhlIGFsbG93ZWQgbmV0cyBmb3IgdGhlIHZpZXcgYXJlIHVwZGF0ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYWxsb3dlZE5ldElkZW50aWZpZXJzJCBpZGVudGlmaWVycyBvZiB0aGUgYWxsb3dlZCBuZXRzXG4gICAgICogQHBhcmFtIF9wcm9jZXNzU2VydmljZSBwcm9jZXNzIHNlcnZpY2VcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihhbGxvd2VkTmV0SWRlbnRpZmllcnMkOiBPYnNlcnZhYmxlPEFycmF5PHN0cmluZz4+LCBwcm90ZWN0ZWQgX3Byb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSkge1xuICAgICAgICB0aGlzLl9hbGxvd2VkTmV0cyQgPSBuZXcgUmVwbGF5U3ViamVjdDxBcnJheTxOZXQ+PigxKTtcbiAgICAgICAgdGhpcy5fYWxsb3dlZE5ldHNJZGVudGlmaWVycyQgPSBuZXcgUmVwbGF5U3ViamVjdDxBcnJheTxzdHJpbmc+PigxKTtcbiAgICAgICAgdGhpcy5zdWJBbGxvd2VkTmV0cyA9IGFsbG93ZWROZXRJZGVudGlmaWVycyQucGlwZShcbiAgICAgICAgICAgIHRhcChpZGVudGlmaWVycyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWxsb3dlZE5ldHNJZGVudGlmaWVycyQubmV4dChpZGVudGlmaWVycyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWxsb3dlZE5ldHNJZGVudGlmaWVycyA9IFsuLi5pZGVudGlmaWVyc107XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG1hcChpZGVudGlmaWVycyA9PiB0aGlzLl9wcm9jZXNzU2VydmljZS5nZXROZXRzKGlkZW50aWZpZXJzKSksXG4gICAgICAgICAgICBzd2l0Y2hNYXAobmV0cyA9PiBuZXRzKVxuICAgICAgICApLnN1YnNjcmliZShuZXRzID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2FsbG93ZWROZXRzJC5uZXh0KG5ldHMpO1xuICAgICAgICAgICAgdGhpcy5fYWxsb3dlZE5ldHMgPSBbLi4ubmV0c107XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFueSB0aW1lIHRoZSBhbGxvd2VkIG5ldHMgY2hhbmdlLiBUaGUgZmlyc3QgZW1pc3Npb24gY29tZXMgYWZ0ZXIgdGhlIHNvdXJjZSBvYnNlcnZhYmxlIGVtaXRzIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICAgKlxuICAgICAqIElmIGEgdmFsdWUgaGFzIGFscmVhZHkgYmVlbiBlbWl0dGVkLCBzdWJzY3JpYmluZyB0byB0aGUgc3RyZWFtIHdpbGwgcHJvdmlkZSB0aGUgbGFzdCBlbWl0dGVkIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYWxsb3dlZE5ldHMkKCk6IE9ic2VydmFibGU8QXJyYXk8TmV0Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dlZE5ldHMkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBhbGxvd2VkIG5ldHMuIElmIGFsbG93ZWQgbmV0cyBhcmUgeWV0IHRvIGJlZSBzZXQsIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYWxsb3dlZE5ldHMoKTogUmVhZG9ubHlBcnJheTxOZXQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93ZWROZXRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFueSB0aW1lIHRoZSBhbGxvd2VkIG5ldHMgY2hhbmdlLiBUaGUgZmlyc3QgZW1pc3Npb24gY29tZXMgYWZ0ZXIgdGhlIHNvdXJjZSBvYnNlcnZhYmxlIGVtaXRzIGZvciB0aGUgZmlyc3QgdGltZS5cbiAgICAgKlxuICAgICAqIElmIGEgdmFsdWUgaGFzIGFscmVhZHkgYmVlbiBlbWl0dGVkLCBzdWJzY3JpYmluZyB0byB0aGUgc3RyZWFtIHdpbGwgcHJvdmlkZSB0aGUgbGFzdCBlbWl0dGVkIHZhbHVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYWxsb3dlZE5ldHNJZGVudGlmaWVycyQoKTogT2JzZXJ2YWJsZTxBcnJheTxzdHJpbmc+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGxvd2VkTmV0c0lkZW50aWZpZXJzJC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgYWxsb3dlZCBuZXRzIGlkZW50aWZpZXJzLiBJZiBhbGxvd2VkIG5ldHMgYXJlIHlldCB0byBiZWUgc2V0LCBgdW5kZWZpbmVkYCBpcyByZXR1cm5lZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGFsbG93ZWROZXRzSWRlbnRpZmllcnMoKTogUmVhZG9ubHlBcnJheTxzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93ZWROZXRzSWRlbnRpZmllcnM7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FsbG93ZWROZXRzJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLl9hbGxvd2VkTmV0c0lkZW50aWZpZXJzJC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLnN1YkFsbG93ZWROZXRzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIl19