UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

40 lines 6.12 kB
import { combineLatest } from 'rxjs'; import { filter, map, startWith, switchMap } from 'rxjs/operators'; import { Injectable } from '@angular/core'; import { PluginsResolveService, ServiceRegistry } from '@c8y/ngx-components'; import { sortBy } from 'lodash-es'; import * as i0 from "@angular/core"; import * as i1 from "@c8y/ngx-components"; /** * A service to retrieve custom indicators for the alarm list view. */ export class AlarmListIndicatorService { constructor(serviceRegistry, pluginsResolver) { this.serviceRegistry = serviceRegistry; this.pluginsResolver = pluginsResolver; } get$(alarm) { const providers$ = this.pluginsResolver.allPluginsLoaded$.pipe(filter(Boolean), map(() => { return this.serviceRegistry.get('alarmListIndicator'); })); return providers$.pipe(switchMap(providers => { const observables$ = providers.map(provider => provider.getAlarmListIndicator$(alarm).pipe(startWith(false))); return combineLatest(observables$); }), map(indicators => { return indicators.filter(Boolean); }), map(indicators => sortBy(indicators, this.byPriority))); } byPriority(item) { if (item.priority === undefined) { return 0; } return -item.priority; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmListIndicatorService, deps: [{ token: i1.ServiceRegistry }, { token: i1.PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmListIndicatorService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmListIndicatorService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.ServiceRegistry }, { type: i1.PluginsResolveService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tbGlzdC1pbmRpY2F0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FsYXJtcy9hbGFybS1saXN0LWN1c3RvbS1pbmRpY2F0b3IvYWxhcm0tbGlzdC1pbmRpY2F0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFHbkM7O0dBRUc7QUFDSCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQ1UsZUFBZ0MsRUFDaEMsZUFBc0M7UUFEdEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUF1QjtJQUM3QyxDQUFDO0lBRUosSUFBSSxDQUFDLEtBQWE7UUFDaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQzVELE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFDZixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3hELENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQ3BCLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNwQixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQzVDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzlELENBQUM7WUFDRixPQUFPLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDZixPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUF5QixDQUFDO1FBQzVELENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQ3ZELENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVSxDQUFDLElBQXdCO1FBQ3pDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDOytHQWpDVSx5QkFBeUI7bUhBQXpCLHlCQUF5QixjQUpaLE1BQU07OzRGQUluQix5QkFBeUI7a0JBSnJDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUFsYXJtIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlLCBTZXJ2aWNlUmVnaXN0cnkgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFsYXJtTGlzdEluZGljYXRvciB9IGZyb20gJy4uL2FsYXJtcy5tb2RlbCc7XG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuLyoqXG4gKiBBIHNlcnZpY2UgdG8gcmV0cmlldmUgY3VzdG9tIGluZGljYXRvcnMgZm9yIHRoZSBhbGFybSBsaXN0IHZpZXcuXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGFybUxpc3RJbmRpY2F0b3JTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlUmVnaXN0cnk6IFNlcnZpY2VSZWdpc3RyeSxcbiAgICBwcml2YXRlIHBsdWdpbnNSZXNvbHZlcjogUGx1Z2luc1Jlc29sdmVTZXJ2aWNlXG4gICkge31cblxuICBnZXQkKGFsYXJtOiBJQWxhcm0pOiBPYnNlcnZhYmxlPEFsYXJtTGlzdEluZGljYXRvcltdPiB7XG4gICAgY29uc3QgcHJvdmlkZXJzJCA9IHRoaXMucGx1Z2luc1Jlc29sdmVyLmFsbFBsdWdpbnNMb2FkZWQkLnBpcGUoXG4gICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXJ2aWNlUmVnaXN0cnkuZ2V0KCdhbGFybUxpc3RJbmRpY2F0b3InKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBwcm92aWRlcnMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAocHJvdmlkZXJzID0+IHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YWJsZXMkID0gcHJvdmlkZXJzLm1hcChwcm92aWRlciA9PlxuICAgICAgICAgIHByb3ZpZGVyLmdldEFsYXJtTGlzdEluZGljYXRvciQoYWxhcm0pLnBpcGUoc3RhcnRXaXRoKGZhbHNlKSlcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3Qob2JzZXJ2YWJsZXMkKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKGluZGljYXRvcnMgPT4ge1xuICAgICAgICByZXR1cm4gaW5kaWNhdG9ycy5maWx0ZXIoQm9vbGVhbikgYXMgQWxhcm1MaXN0SW5kaWNhdG9yW107XG4gICAgICB9KSxcbiAgICAgIG1hcChpbmRpY2F0b3JzID0+IHNvcnRCeShpbmRpY2F0b3JzLCB0aGlzLmJ5UHJpb3JpdHkpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ5UHJpb3JpdHkoaXRlbTogQWxhcm1MaXN0SW5kaWNhdG9yKSB7XG4gICAgaWYgKGl0ZW0ucHJpb3JpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiAtaXRlbS5wcmlvcml0eTtcbiAgfVxufVxuIl19