UI: Fixed updated Alarm widget in change entity state parameters

This commit is contained in:
Vladyslav_Prykhodko 2020-11-06 15:58:00 +02:00
parent a99a8e458c
commit 39c2e3c39d
3 changed files with 12 additions and 13 deletions

View File

@ -52,6 +52,7 @@ export interface AlarmDataSubscriptionOptions {
export class AlarmDataSubscription { export class AlarmDataSubscription {
private alarmDataSubscriptionOptions = this.listener.alarmDataSubscriptionOptions;
private datasourceType: DatasourceType = this.alarmDataSubscriptionOptions.datasourceType; private datasourceType: DatasourceType = this.alarmDataSubscriptionOptions.datasourceType;
private history: boolean; private history: boolean;
@ -65,8 +66,7 @@ export class AlarmDataSubscription {
private subsTw: SubscriptionTimewindow; private subsTw: SubscriptionTimewindow;
constructor(public alarmDataSubscriptionOptions: AlarmDataSubscriptionOptions, constructor(private listener: AlarmDataListener,
private listener: AlarmDataListener,
private telemetryService: TelemetryService) { private telemetryService: TelemetryService) {
} }

View File

@ -32,6 +32,7 @@ export interface AlarmDataListener {
alarmSource: Datasource; alarmSource: Datasource;
alarmsLoaded: (pageData: PageData<AlarmData>, allowedEntities: number, totalEntities: number) => void; alarmsLoaded: (pageData: PageData<AlarmData>, allowedEntities: number, totalEntities: number) => void;
alarmsUpdated: (update: Array<AlarmData>, pageData: PageData<AlarmData>) => void; alarmsUpdated: (update: Array<AlarmData>, pageData: PageData<AlarmData>) => void;
alarmDataSubscriptionOptions?: AlarmDataSubscriptionOptions;
subscription?: AlarmDataSubscription; subscription?: AlarmDataSubscription;
} }
@ -47,11 +48,11 @@ export class AlarmDataService {
pageLink: AlarmDataPageLink, pageLink: AlarmDataPageLink,
keyFilters: KeyFilter[]) { keyFilters: KeyFilter[]) {
const alarmSource = listener.alarmSource; const alarmSource = listener.alarmSource;
listener.alarmDataSubscriptionOptions = this.createAlarmSubscriptionOptions(listener, pageLink, keyFilters);
if (alarmSource.type === DatasourceType.entity && (!alarmSource.entityFilter || !pageLink)) { if (alarmSource.type === DatasourceType.entity && (!alarmSource.entityFilter || !pageLink)) {
return; return;
} }
listener.subscription = this.createSubscription(listener, listener.subscription = new AlarmDataSubscription(listener, this.telemetryService);
pageLink, alarmSource.keyFilters, keyFilters);
return listener.subscription.subscribe(); return listener.subscription.subscribe();
} }
@ -61,10 +62,9 @@ export class AlarmDataService {
} }
} }
private createSubscription(listener: AlarmDataListener, private createAlarmSubscriptionOptions(listener: AlarmDataListener,
pageLink: AlarmDataPageLink, pageLink: AlarmDataPageLink,
keyFilters: KeyFilter[], additionalKeyFilters: KeyFilter[]): AlarmDataSubscriptionOptions {
additionalKeyFilters: KeyFilter[]): AlarmDataSubscription {
const alarmSource = listener.alarmSource; const alarmSource = listener.alarmSource;
const alarmSubscriptionDataKeys: Array<AlarmSubscriptionDataKey> = []; const alarmSubscriptionDataKeys: Array<AlarmSubscriptionDataKey> = [];
alarmSource.dataKeys.forEach((dataKey) => { alarmSource.dataKeys.forEach((dataKey) => {
@ -82,11 +82,10 @@ export class AlarmDataService {
if (alarmDataSubscriptionOptions.datasourceType === DatasourceType.entity) { if (alarmDataSubscriptionOptions.datasourceType === DatasourceType.entity) {
alarmDataSubscriptionOptions.entityFilter = alarmSource.entityFilter; alarmDataSubscriptionOptions.entityFilter = alarmSource.entityFilter;
alarmDataSubscriptionOptions.pageLink = pageLink; alarmDataSubscriptionOptions.pageLink = pageLink;
alarmDataSubscriptionOptions.keyFilters = keyFilters; alarmDataSubscriptionOptions.keyFilters = alarmSource.keyFilters;
alarmDataSubscriptionOptions.additionalKeyFilters = additionalKeyFilters; alarmDataSubscriptionOptions.additionalKeyFilters = additionalKeyFilters;
} }
return new AlarmDataSubscription(alarmDataSubscriptionOptions, return alarmDataSubscriptionOptions;
listener, this.telemetryService);
} }
} }

View File

@ -960,8 +960,8 @@ export class WidgetSubscription implements IWidgetSubscription {
private updateAlarmDataSubscription() { private updateAlarmDataSubscription() {
if (this.alarmDataListener) { if (this.alarmDataListener) {
const pageLink = this.alarmDataListener.subscription.alarmDataSubscriptionOptions.pageLink; const pageLink = this.alarmDataListener.alarmDataSubscriptionOptions.pageLink;
const keyFilters = this.alarmDataListener.subscription.alarmDataSubscriptionOptions.additionalKeyFilters; const keyFilters = this.alarmDataListener.alarmDataSubscriptionOptions.additionalKeyFilters;
this.subscribeForAlarms(pageLink, keyFilters); this.subscribeForAlarms(pageLink, keyFilters);
} }
} }