@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
95 lines • 13 kB
JavaScript
import { Injectable } from '@angular/core';
import { AlarmService, EventService } from '@c8y/client';
import { ColorService } from '@c8y/ngx-components';
import { uniqBy } from 'lodash-es';
import { ALARM_TEXTS, EVENT_TEXTS } from './alarm-event-selector.model';
import * as i0 from "@angular/core";
import * as i1 from "@c8y/client";
import * as i2 from "@c8y/ngx-components";
export class AlarmEventSelectorService {
constructor(alarmService, eventsService, color) {
this.alarmService = alarmService;
this.eventsService = eventsService;
this.color = color;
this.timelineTypeTextsMap = new Map([
['ALARM', ALARM_TEXTS],
['EVENT', EVENT_TEXTS]
]);
}
/**
* This method returns the texts for the timeline type.
* @param timelineType The timeline type.
* @returns The texts for the timeline type.
*/
timelineTypeTexts(timelineType) {
return this.timelineTypeTextsMap.get(timelineType);
}
/**
* This method returns all alarms or events of the platform based on the timeline type
* @param timelineType The timeline type.
* @returns The alarms or events of the asset.
*/
async getItems(timelineType) {
const filters = {
pageSize: 1000
};
return timelineType === 'ALARM'
? await this.getAlarmsOfAsset(filters)
: await this.getEventsOfAsset(filters);
}
/**
* This method returns the items of the asset based on the timeline type.
* @param parentReference The parent reference.
* @param timelineType The timeline type.
* @returns The alarms or events of the asset.
*/
async getAlarmsOrEvents(parentReference, timelineType) {
const filters = { source: parentReference.id, pageSize: 1000 };
return timelineType === 'ALARM'
? await this.getAlarmsOfAsset(filters)
: await this.getEventsOfAsset(filters);
}
async getUniqueAlarmsOnly(data) {
return Promise.all(uniqBy(data, 'type').map(async (alarm) => this.createItem('ALARM', alarm)));
}
async getUniqueEventsOnly(data) {
return Promise.all(uniqBy(data, 'type').map(async (event) => this.createItem('EVENT', event)));
}
async createItem(timelineType, item) {
const color = await this.color.generateColor(item.type);
if (item.source && !item.source.name) {
item.source.name = `Device ${item.source.id}`;
}
return {
timelineType,
color,
label: item.type,
filters: {
type: item.type
},
__target: item.source
};
}
async getAlarmsOfAsset(filters) {
const res = await this.alarmService.list({
...filters,
withSourceAssets: !!filters.source,
withSourceDevices: !!filters.source,
pageSize: 1000
});
const alarms = await this.getUniqueAlarmsOnly(res.data);
return alarms;
}
async getEventsOfAsset(filters) {
const res = await this.eventsService.list(filters);
const events = this.getUniqueEventsOnly(res.data);
return events;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmEventSelectorService, deps: [{ token: i1.AlarmService }, { token: i1.EventService }, { token: i2.ColorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmEventSelectorService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AlarmEventSelectorService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: i1.AlarmService }, { type: i1.EventService }, { type: i2.ColorService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhcm0tZXZlbnQtc2VsZWN0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2FsYXJtLWV2ZW50LXNlbGVjdG9yL2FsYXJtLWV2ZW50LXNlbGVjdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBK0IsTUFBTSxhQUFhLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUNMLFdBQVcsRUFHWCxXQUFXLEVBSVosTUFBTSw4QkFBOEIsQ0FBQzs7OztBQUd0QyxNQUFNLE9BQU8seUJBQXlCO0lBTXBDLFlBQ1UsWUFBMEIsRUFDMUIsYUFBMkIsRUFDM0IsS0FBbUI7UUFGbkIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0IsVUFBSyxHQUFMLEtBQUssQ0FBYztRQVJyQix5QkFBb0IsR0FBeUMsSUFBSSxHQUFHLENBQUM7WUFDM0UsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO1lBQ3RCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQztTQUN2QixDQUFDLENBQUM7SUFNQSxDQUFDO0lBRUo7Ozs7T0FJRztJQUNILGlCQUFpQixDQUFDLFlBQTBCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBMEI7UUFDdkMsTUFBTSxPQUFPLEdBQUc7WUFDZCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFFRixPQUFPLFlBQVksS0FBSyxPQUFPO1lBQzdCLENB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QXlCO21IQUF6Qix5QkFBeUIsY0FEWixNQUFNOzs0RkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsYXJtU2VydmljZSwgRXZlbnRTZXJ2aWNlLCBJQWxhcm0sIElFdmVudCwgSUlkZW50aWZpZWQgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBDb2xvclNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IHVuaXFCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBBTEFSTV9URVhUUyxcbiAgQWxhcm1EZXRhaWxzLFxuICBBbGFybU9yRXZlbnQsXG4gIEVWRU5UX1RFWFRTLFxuICBFdmVudERldGFpbHMsXG4gIFRpbWVsaW5lVHlwZSxcbiAgVGltZWxpbmVUeXBlVGV4dHNcbn0gZnJvbSAnLi9hbGFybS1ldmVudC1zZWxlY3Rvci5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQWxhcm1FdmVudFNlbGVjdG9yU2VydmljZSB7XG4gIHByaXZhdGUgdGltZWxpbmVUeXBlVGV4dHNNYXA6IE1hcDxUaW1lbGluZVR5cGUsIFRpbWVsaW5lVHlwZVRleHRzPiA9IG5ldyBNYXAoW1xuICAgIFsnQUxBUk0nLCBBTEFSTV9URVhUU10sXG4gICAgWydFVkVOVCcsIEVWRU5UX1RFWFRTXVxuICBdKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFsYXJtU2VydmljZTogQWxhcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRzU2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29sb3I6IENvbG9yU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIHRleHRzIGZvciB0aGUgdGltZWxpbmUgdHlwZS5cbiAgICogQHBhcmFtIHRpbWVsaW5lVHlwZSBUaGUgdGltZWxpbmUgdHlwZS5cbiAgICogQHJldHVybnMgVGhlIHRleHRzIGZvciB0aGUgdGltZWxpbmUgdHlwZS5cbiAgICovXG4gIHRpbWVsaW5lVHlwZVRleHRzKHRpbWVsaW5lVHlwZTogVGltZWxpbmVUeXBlKTogVGltZWxpbmVUeXBlVGV4dHMge1xuICAgIHJldHVybiB0aGlzLnRpbWVsaW5lVHlwZVRleHRzTWFwLmdldCh0aW1lbGluZVR5cGUpITtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFsbCBhbGFybXMgb3IgZXZlbnRzIG9mIHRoZSBwbGF0Zm9ybSBiYXNlZCBvbiB0aGUgdGltZWxpbmUgdHlwZVxuICAgKiBAcGFyYW0gdGltZWxpbmVUeXBlIFRoZSB0aW1lbGluZSB0eXBlLlxuICAgKiBAcmV0dXJucyBUaGUgYWxhcm1zIG9yIGV2ZW50cyBvZiB0aGUgYXNzZXQuXG4gICAqL1xuICBhc3luYyBnZXRJdGVtcyh0aW1lbGluZVR5cGU6IFRpbWVsaW5lVHlwZSk6IFByb21pc2U8QWxhcm1PckV2ZW50W10+IHtcbiAgICBjb25zdCBmaWx0ZXJzID0ge1xuICAgICAgcGFnZVNpemU6IDEwMDBcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRpbWVsaW5lVHlwZSA9PT0gJ0FMQVJNJ1xuICAgICAgPyBhd2FpdCB0aGlzLmdldEFsYXJtc09mQXNzZXQoZmlsdGVycylcbiAgICAgIDogYXdhaXQgdGhpcy5nZXRFdmVudHNPZkFzc2V0KGZpbHRlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGl0ZW1zIG9mIHRoZSBhc3NldCBiYXNlZCBvbiB0aGUgdGltZWxpbmUgdHlwZS5cbiAgICogQHBhcmFtIHBhcmVudFJlZmVyZW5jZSBUaGUgcGFyZW50IHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIHRpbWVsaW5lVHlwZSBUaGUgdGltZWxpbmUgdHlwZS5cbiAgICogQHJldHVybnMgVGhlIGFsYXJtcyBvciBldmVudHMgb2YgdGhlIGFzc2V0LlxuICAgKi9cbiAgYXN5bmMgZ2V0QWxhcm1zT3JFdmVudHMoXG4gICAgcGFyZW50UmVmZXJlbmNlOiBJSWRlbnRpZmllZCxcbiAgICB0aW1lbGluZVR5cGU6IFRpbWVsaW5lVHlwZVxuICApOiBQcm9taXNlPEFsYXJtT3JFdmVudFtdPiB7XG4gICAgY29uc3QgZmlsdGVycyA9IHsgc291cmNlOiBwYXJlbnRSZWZlcmVuY2UuaWQsIHBhZ2VTaXplOiAxMDAwIH07XG5cbiAgICByZXR1cm4gdGltZWxpbmVUeXBlID09PSAnQUxBUk0nXG4gICAgICA/IGF3YWl0IHRoaXMuZ2V0QWxhcm1zT2ZBc3NldChmaWx0ZXJzKVxuICAgICAgOiBhd2FpdCB0aGlzLmdldEV2ZW50c09mQXNzZXQoZmlsdGVycyk7XG4gIH1cblxuICBhc3luYyBnZXRVbmlxdWVBbGFybXNPbmx5KGRhdGE6IElBbGFybVtdKTogUHJvbWlzZTxBbGFybURldGFpbHNbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIHVuaXFCeShkYXRhLCAndHlwZScpLm1hcChhc3luYyAoYWxhcm06IElBbGFybSkgPT4gdGhpcy5jcmVhdGVJdGVtKCdBTEFSTScsIGFsYXJtKSlcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgZ2V0VW5pcXVlRXZlbnRzT25seShkYXRhOiBJRXZlbnRbXSk6IFByb21pc2U8RXZlbnREZXRhaWxzW10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICB1bmlxQnkoZGF0YSwgJ3R5cGUnKS5tYXAoYXN5bmMgKGV2ZW50OiBJRXZlbnQpID0+IHRoaXMuY3JlYXRlSXRlbSgnRVZFTlQnLCBldmVudCkpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUl0ZW0odGltZWxpbmVUeXBlOiAnQUxBUk0nICYgVGltZWxpbmVUeXBlLCBpdGVtOiBJQWxhcm0pOiBQcm9taXNlPEFsYXJtRGV0YWlscz47XG4gIGFzeW5jIGNyZWF0ZUl0ZW0odGltZWxpbmVUeXBlOiAnRVZFTlQnICYgVGltZWxpbmVUeXBlLCBpdGVtOiBJRXZlbnQpOiBQcm9taXNlPEV2ZW50RGV0YWlscz47XG4gIGFzeW5jIGNyZWF0ZUl0ZW0odGltZWxpbmVUeXBlOiBUaW1lbGluZVR5cGUsIGl0ZW06IElBbGFybSB8IElFdmVudCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgY29sb3IgPSBhd2FpdCB0aGlzLmNvbG9yLmdlbmVyYXRlQ29sb3IoaXRlbS50eXBlKTtcbiAgICBpZiAoaXRlbS5zb3VyY2UgJiYgIWl0ZW0uc291cmNlLm5hbWUpIHtcbiAgICAgIGl0ZW0uc291cmNlLm5hbWUgPSBgRGV2aWNlICR7aXRlbS5zb3VyY2UuaWR9YDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpbWVsaW5lVHlwZSxcbiAgICAgIGNvbG9yLFxuICAgICAgbGFiZWw6IGl0ZW0udHlwZSxcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgdHlwZTogaXRlbS50eXBlXG4gICAgICB9LFxuICAgICAgX190YXJnZXQ6IGl0ZW0uc291cmNlXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0QWxhcm1zT2ZBc3NldChmaWx0ZXJzOiB7XG4gICAgcGFnZVNpemU6IG51bWJlcjtcbiAgICBkYXRlVG8/OiBzdHJpbmc7XG4gICAgZGF0ZUZyb20/OiBzdHJpbmc7XG4gICAgc291cmNlPzogc3RyaW5nIHwgbnVtYmVyO1xuICB9KTogUHJvbWlzZTxBbGFybURldGFpbHNbXT4ge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuYWxhcm1TZXJ2aWNlLmxpc3Qoe1xuICAgICAgLi4uZmlsdGVycyxcbiAgICAgIHdpdGhTb3VyY2VBc3NldHM6ICEhZmlsdGVycy5zb3VyY2UsXG4gICAgICB3aXRoU291cmNlRGV2aWNlczogISFmaWx0ZXJzLnNvdXJjZSxcbiAgICAgIHBhZ2VTaXplOiAxMDAwXG4gICAgfSk7XG4gICAgY29uc3QgYWxhcm1zID0gYXdhaXQgdGhpcy5nZXRVbmlxdWVBbGFybXNPbmx5KHJlcy5kYXRhKTtcbiAgICByZXR1cm4gYWxhcm1zO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRFdmVudHNPZkFzc2V0KGZpbHRlcnM6IHtcbiAgICBwYWdlU2l6ZTogbnVtYmVyO1xuICAgIGRhdGVUbz86IHN0cmluZztcbiAgICBkYXRlRnJvbT86IHN0cmluZztcbiAgICBzb3VyY2U/OiBzdHJpbmcgfCBudW1iZXI7XG4gIH0pOiBQcm9taXNlPEV2ZW50RGV0YWlsc1tdPiB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ldmVudHNTZXJ2aWNlLmxpc3QoZmlsdGVycyk7XG4gICAgY29uc3QgZXZlbnRzID0gdGhpcy5nZXRVbmlxdWVFdmVudHNPbmx5KHJlcy5kYXRhKTtcbiAgICByZXR1cm4gZXZlbnRzO1xuICB9XG59XG4iXX0=