@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
40 lines • 6.23 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 buttons for the alarm details view.
*/
export class AlarmDetailsButtonService {
constructor(serviceRegistry, pluginsResolver) {
this.serviceRegistry = serviceRegistry;
this.pluginsResolver = pluginsResolver;
}
get$(alarm, source) {
const providers$ = this.pluginsResolver.allPluginsLoaded$.pipe(filter(Boolean), map(() => {
return this.serviceRegistry.get('alarmDetailsButton');
}));
return providers$.pipe(switchMap(providers => {
const observables$ = providers.map(provider => provider.getAlarmDetailsButton$(alarm, source).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: AlarmDetailsButtonService, 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: AlarmDetailsButtonService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmDetailsButtonService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: i1.ServiceRegistry }, { type: i1.PluginsResolveService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tZGV0YWlscy1idXR0b24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2FsYXJtcy9hbGFybS1kZXRhaWxzLWN1c3RvbS1idXR0b24vYWxhcm0tZGV0YWlscy1idXR0b24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFHbkM7O0dBRUc7QUFDSCxNQUFNLE9BQU8seUJBQXlCO0lBQ3BDLFlBQ1UsZUFBZ0MsRUFDaEMsZUFBc0M7UUFEdEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUF1QjtJQUM3QyxDQUFDO0lBRUosSUFBSSxDQUFDLEtBQWEsRUFBRSxNQUFzQjtRQUN4QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDNUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUNmLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FDcEIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FDNUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3RFLENBQUM7WUFDRixPQUFPLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDZixPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUF5QixDQUFDO1FBQzVELENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQ3ZELENBQUM7SUFDSixDQUFDO0lBRU8sVUFBVSxDQUFDLElBQXdCO1FBQ3pDLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN4QixDQUFDOytHQWpDVSx5QkFBeUI7bUhBQXpCLHlCQUF5QixjQUpaLE1BQU07OzRGQUluQix5QkFBeUI7a0JBSnJDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUFsYXJtLCBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBsdWdpbnNSZXNvbHZlU2VydmljZSwgU2VydmljZVJlZ2lzdHJ5IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBbGFybURldGFpbHNCdXR0b24gfSBmcm9tICcuLi9hbGFybXMubW9kZWwnO1xuaW1wb3J0IHsgc29ydEJ5IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbi8qKlxuICogQSBzZXJ2aWNlIHRvIHJldHJpZXZlIGN1c3RvbSBidXR0b25zIGZvciB0aGUgYWxhcm0gZGV0YWlscyB2aWV3LlxuICovXG5leHBvcnQgY2xhc3MgQWxhcm1EZXRhaWxzQnV0dG9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VydmljZVJlZ2lzdHJ5OiBTZXJ2aWNlUmVnaXN0cnksXG4gICAgcHJpdmF0ZSBwbHVnaW5zUmVzb2x2ZXI6IFBsdWdpbnNSZXNvbHZlU2VydmljZVxuICApIHt9XG5cbiAgZ2V0JChhbGFybTogSUFsYXJtLCBzb3VyY2U6IElNYW5hZ2VkT2JqZWN0KTogT2JzZXJ2YWJsZTxBbGFybURldGFpbHNCdXR0b25bXT4ge1xuICAgIGNvbnN0IHByb3ZpZGVycyQgPSB0aGlzLnBsdWdpbnNSZXNvbHZlci5hbGxQbHVnaW5zTG9hZGVkJC5waXBlKFxuICAgICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZVJlZ2lzdHJ5LmdldCgnYWxhcm1EZXRhaWxzQnV0dG9uJyk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gcHJvdmlkZXJzJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKHByb3ZpZGVycyA9PiB7XG4gICAgICAgIGNvbnN0IG9ic2VydmFibGVzJCA9IHByb3ZpZGVycy5tYXAocHJvdmlkZXIgPT5cbiAgICAgICAgICBwcm92aWRlci5nZXRBbGFybURldGFpbHNCdXR0b24kKGFsYXJtLCBzb3VyY2UpLnBpcGUoc3RhcnRXaXRoKGZhbHNlKSlcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3Qob2JzZXJ2YWJsZXMkKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKGluZGljYXRvcnMgPT4ge1xuICAgICAgICByZXR1cm4gaW5kaWNhdG9ycy5maWx0ZXIoQm9vbGVhbikgYXMgQWxhcm1EZXRhaWxzQnV0dG9uW107XG4gICAgICB9KSxcbiAgICAgIG1hcChpbmRpY2F0b3JzID0+IHNvcnRCeShpbmRpY2F0b3JzLCB0aGlzLmJ5UHJpb3JpdHkpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJ5UHJpb3JpdHkoaXRlbTogQWxhcm1EZXRhaWxzQnV0dG9uKSB7XG4gICAgaWYgKGl0ZW0ucHJpb3JpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHJldHVybiAtaXRlbS5wcmlvcml0eTtcbiAgfVxufVxuIl19