UI: Handle premature entity and alarm data updates from websocket.
This commit is contained in:
parent
a1c4d29e48
commit
0b825e8dc3
@ -62,6 +62,7 @@ export class AlarmDataSubscription {
|
|||||||
private alarmDataCommand: AlarmDataCmd;
|
private alarmDataCommand: AlarmDataCmd;
|
||||||
|
|
||||||
private pageData: PageData<AlarmData>;
|
private pageData: PageData<AlarmData>;
|
||||||
|
private prematureUpdates: Array<Array<AlarmData>>;
|
||||||
private alarmIdToDataIndex: {[id: string]: number};
|
private alarmIdToDataIndex: {[id: string]: number};
|
||||||
|
|
||||||
private subsTw: SubscriptionTimewindow;
|
private subsTw: SubscriptionTimewindow;
|
||||||
@ -136,9 +137,22 @@ export class AlarmDataSubscription {
|
|||||||
this.subscriber.alarmData$.subscribe((alarmDataUpdate) => {
|
this.subscriber.alarmData$.subscribe((alarmDataUpdate) => {
|
||||||
if (alarmDataUpdate.data) {
|
if (alarmDataUpdate.data) {
|
||||||
this.onPageData(alarmDataUpdate.data, alarmDataUpdate.allowedEntities, alarmDataUpdate.totalEntities);
|
this.onPageData(alarmDataUpdate.data, alarmDataUpdate.allowedEntities, alarmDataUpdate.totalEntities);
|
||||||
|
if (this.prematureUpdates) {
|
||||||
|
for (const update of this.prematureUpdates) {
|
||||||
|
this.onDataUpdate(update);
|
||||||
|
}
|
||||||
|
this.prematureUpdates = null;
|
||||||
|
}
|
||||||
} else if (alarmDataUpdate.update) {
|
} else if (alarmDataUpdate.update) {
|
||||||
|
if (!this.pageData) {
|
||||||
|
if (!this.prematureUpdates) {
|
||||||
|
this.prematureUpdates = [];
|
||||||
|
}
|
||||||
|
this.prematureUpdates.push(alarmDataUpdate.update);
|
||||||
|
} else {
|
||||||
this.onDataUpdate(alarmDataUpdate.update);
|
this.onDataUpdate(alarmDataUpdate.update);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.subscriber.subscribe();
|
this.subscriber.subscribe();
|
||||||
|
|||||||
@ -120,6 +120,7 @@ export class EntityDataSubscription {
|
|||||||
|
|
||||||
private entityDataResolveSubject: Subject<EntityDataLoadResult>;
|
private entityDataResolveSubject: Subject<EntityDataLoadResult>;
|
||||||
private pageData: PageData<EntityData>;
|
private pageData: PageData<EntityData>;
|
||||||
|
private prematureUpdates: Array<Array<EntityData>>;
|
||||||
private data: Array<Array<DataSetHolder>>;
|
private data: Array<Array<DataSetHolder>>;
|
||||||
private subsTw: SubscriptionTimewindow;
|
private subsTw: SubscriptionTimewindow;
|
||||||
private latestTsOffset: number;
|
private latestTsOffset: number;
|
||||||
@ -348,10 +349,23 @@ export class EntityDataSubscription {
|
|||||||
(entityDataUpdate) => {
|
(entityDataUpdate) => {
|
||||||
if (entityDataUpdate.data) {
|
if (entityDataUpdate.data) {
|
||||||
this.onPageData(entityDataUpdate.data);
|
this.onPageData(entityDataUpdate.data);
|
||||||
|
if (this.prematureUpdates) {
|
||||||
|
for (const update of this.prematureUpdates) {
|
||||||
|
this.onDataUpdate(update);
|
||||||
|
}
|
||||||
|
this.prematureUpdates = null;
|
||||||
|
}
|
||||||
} else if (entityDataUpdate.update) {
|
} else if (entityDataUpdate.update) {
|
||||||
|
if (!this.pageData) {
|
||||||
|
if (!this.prematureUpdates) {
|
||||||
|
this.prematureUpdates = [];
|
||||||
|
}
|
||||||
|
this.prematureUpdates.push(entityDataUpdate.update);
|
||||||
|
} else {
|
||||||
this.onDataUpdate(entityDataUpdate.update);
|
this.onDataUpdate(entityDataUpdate.update);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
this.subscriber.reconnect$.subscribe(() => {
|
this.subscriber.reconnect$.subscribe(() => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user