@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
40 lines • 6.12 kB
JavaScript
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