/*-------------------------------------------------------------------------------------------------------------- * Copyright (c) insite-gmbh. All rights reserved. * Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------------------------*/ import { Observable } from 'rxjs/Rx'; import { Injectable, OpaqueToken, Inject } from '@angular/core'; import { Http, Headers } from '@angular/http'; import { Map } from '../../../../@inax/common'; import { IHmiAlarmEntry } from '../domain'; import { AlarmConfig } from './interfaces/alarmConfig'; export const ALARM_CONFIG_TOKEN: OpaqueToken = new OpaqueToken('alarmConfigToken'); @Injectable() export class InaxAlarmConfig { constructor(private _http: Http, @Inject(ALARM_CONFIG_TOKEN) private _config: AlarmConfig) { } public apply(config: AlarmConfig) { this._config = config; } public createActiveAlarmFilterByConfigSettings():string{ if(this._config == null) return "1=1"; let msgClassFilterResult = ""; if (this._config.pendingAlarmMsgClassFilter != null) { this._config.pendingAlarmMsgClassFilter.forEach(msgClassFilter => { if (msgClassFilterResult.length > 0) msgClassFilterResult += " OR "; msgClassFilterResult += "MsgClass=" + msgClassFilter; }); } let stateFilerResult = ""; if (this._config.pendingAlarmStateFilter != null) { this._config.pendingAlarmStateFilter.forEach(stateFilter => { if (stateFilerResult.length > 0) stateFilerResult += " OR "; stateFilerResult += "StateAfter=" + stateFilter; }); } let result = ""; if (msgClassFilterResult.length > 0) { result += "(" + msgClassFilterResult + ")"; if (stateFilerResult.length > 0) result += " AND "; } if (stateFilerResult.length > 0) result += "(" + stateFilerResult + ")"; return result; } public applyConfigSettingsOnAlarms(alarms:Array):Array{ if(this._config == null) return alarms; let cfg = this._config; alarms.forEach(alarm => { alarm.LineColore = cfg.defaultMsgColore; cfg.messageClasses.forEach(msgClass => { if (alarm.LineColore == cfg.defaultMsgColore && msgClass.id === alarm.MsgClass) { alarm.LineColore = msgClass.colors[alarm.StateAfter]; } }); }); return alarms; } }