Commit bdd8b17bf01e94ad190aa442c64dba10c19ecf07
1 parent
c4390e89
UI: Notify about alarm data overflow. Fix Audit log created time
Showing
7 changed files
with
28 additions
and
14 deletions
@@ -298,7 +298,7 @@ public class AuditLogServiceImpl implements AuditLogService { | @@ -298,7 +298,7 @@ public class AuditLogServiceImpl implements AuditLogService { | ||
298 | AuditLog result = new AuditLog(); | 298 | AuditLog result = new AuditLog(); |
299 | UUID id = Uuids.timeBased(); | 299 | UUID id = Uuids.timeBased(); |
300 | result.setId(new AuditLogId(id)); | 300 | result.setId(new AuditLogId(id)); |
301 | - result.setCreatedTime(id.timestamp()); | 301 | + result.setCreatedTime(Uuids.unixTimestamp(id)); |
302 | result.setTenantId(tenantId); | 302 | result.setTenantId(tenantId); |
303 | result.setEntityId(entityId); | 303 | result.setEntityId(entityId); |
304 | result.setEntityName(entityName); | 304 | result.setEntityName(entityName); |
@@ -136,7 +136,7 @@ export class AlarmDataSubscription { | @@ -136,7 +136,7 @@ export class AlarmDataSubscription { | ||
136 | 136 | ||
137 | this.subscriber.alarmData$.subscribe((alarmDataUpdate) => { | 137 | this.subscriber.alarmData$.subscribe((alarmDataUpdate) => { |
138 | if (alarmDataUpdate.data) { | 138 | if (alarmDataUpdate.data) { |
139 | - this.onPageData(alarmDataUpdate.data); | 139 | + this.onPageData(alarmDataUpdate.data, alarmDataUpdate.allowedEntities, alarmDataUpdate.totalEntities); |
140 | } else if (alarmDataUpdate.update) { | 140 | } else if (alarmDataUpdate.update) { |
141 | this.onDataUpdate(alarmDataUpdate.update); | 141 | this.onDataUpdate(alarmDataUpdate.update); |
142 | } | 142 | } |
@@ -151,7 +151,7 @@ export class AlarmDataSubscription { | @@ -151,7 +151,7 @@ export class AlarmDataSubscription { | ||
151 | totalElements: 1, | 151 | totalElements: 1, |
152 | totalPages: 1 | 152 | totalPages: 1 |
153 | }; | 153 | }; |
154 | - this.onPageData(pageData); | 154 | + this.onPageData(pageData, 1024, 1); |
155 | } | 155 | } |
156 | } | 156 | } |
157 | 157 | ||
@@ -163,10 +163,10 @@ export class AlarmDataSubscription { | @@ -163,10 +163,10 @@ export class AlarmDataSubscription { | ||
163 | } | 163 | } |
164 | } | 164 | } |
165 | 165 | ||
166 | - private onPageData(pageData: PageData<AlarmData>) { | 166 | + private onPageData(pageData: PageData<AlarmData>, allowedEntities: number, totalEntities: number) { |
167 | this.pageData = pageData; | 167 | this.pageData = pageData; |
168 | this.resetData(); | 168 | this.resetData(); |
169 | - this.listener.alarmsLoaded(pageData, this.alarmDataSubscriptionOptions.pageLink); | 169 | + this.listener.alarmsLoaded(pageData, this.alarmDataSubscriptionOptions.pageLink, allowedEntities, totalEntities); |
170 | } | 170 | } |
171 | 171 | ||
172 | private onDataUpdate(update: Array<AlarmData>) { | 172 | private onDataUpdate(update: Array<AlarmData>) { |
@@ -31,7 +31,7 @@ import { deepClone } from '@core/utils'; | @@ -31,7 +31,7 @@ import { deepClone } from '@core/utils'; | ||
31 | export interface AlarmDataListener { | 31 | export interface AlarmDataListener { |
32 | subscriptionTimewindow?: SubscriptionTimewindow; | 32 | subscriptionTimewindow?: SubscriptionTimewindow; |
33 | alarmSource: Datasource; | 33 | alarmSource: Datasource; |
34 | - alarmsLoaded: (pageData: PageData<AlarmData>, pageLink: AlarmDataPageLink) => void; | 34 | + alarmsLoaded: (pageData: PageData<AlarmData>, pageLink: AlarmDataPageLink, allowedEntities: number, totalEntities: number) => void; |
35 | alarmsUpdated: (update: Array<AlarmData>, pageData: PageData<AlarmData>) => void; | 35 | alarmsUpdated: (update: Array<AlarmData>, pageData: PageData<AlarmData>) => void; |
36 | subscription?: AlarmDataSubscription; | 36 | subscription?: AlarmDataSubscription; |
37 | } | 37 | } |
@@ -1272,8 +1272,16 @@ export class WidgetSubscription implements IWidgetSubscription { | @@ -1272,8 +1272,16 @@ export class WidgetSubscription implements IWidgetSubscription { | ||
1272 | } | 1272 | } |
1273 | } | 1273 | } |
1274 | 1274 | ||
1275 | - private alarmsLoaded(alarms: PageData<AlarmData>) { | 1275 | + private alarmsLoaded(alarms: PageData<AlarmData>, allowedEntities: number, totalEntities: number) { |
1276 | this.alarms = alarms; | 1276 | this.alarms = alarms; |
1277 | + if (totalEntities > allowedEntities) { | ||
1278 | + const message = this.ctx.translate.instant('widget.alarm-data-overflow', | ||
1279 | + { allowedEntities, totalEntities }); | ||
1280 | + this.onSubscriptionMessage({ | ||
1281 | + severity: 'warn', | ||
1282 | + message | ||
1283 | + }); | ||
1284 | + } | ||
1277 | if (this.subscriptionTimewindow && this.subscriptionTimewindow.realtimeWindowMs) { | 1285 | if (this.subscriptionTimewindow && this.subscriptionTimewindow.realtimeWindowMs) { |
1278 | this.updateTimewindow(); | 1286 | this.updateTimewindow(); |
1279 | } | 1287 | } |
@@ -1281,7 +1289,7 @@ export class WidgetSubscription implements IWidgetSubscription { | @@ -1281,7 +1289,7 @@ export class WidgetSubscription implements IWidgetSubscription { | ||
1281 | } | 1289 | } |
1282 | 1290 | ||
1283 | private alarmsUpdated(_updated: Array<AlarmData>, alarms: PageData<AlarmData>) { | 1291 | private alarmsUpdated(_updated: Array<AlarmData>, alarms: PageData<AlarmData>) { |
1284 | - this.alarmsLoaded(alarms); | 1292 | + this.alarmsLoaded(alarms, 0, 0); |
1285 | } | 1293 | } |
1286 | 1294 | ||
1287 | private updateLegend(dataIndex: number, data: DataSet, detectChanges: boolean) { | 1295 | private updateLegend(dataIndex: number, data: DataSet, detectChanges: boolean) { |
@@ -336,11 +336,9 @@ export class TelemetryWebsocketService implements TelemetryService { | @@ -336,11 +336,9 @@ export class TelemetryWebsocketService implements TelemetryService { | ||
336 | } | 336 | } |
337 | 337 | ||
338 | private showWsError(errorCode: number, errorMsg: string) { | 338 | private showWsError(errorCode: number, errorMsg: string) { |
339 | - let message = 'WebSocket Error: '; | ||
340 | - if (errorMsg) { | ||
341 | - message += errorMsg; | ||
342 | - } else { | ||
343 | - message += `error code - ${errorCode}.`; | 339 | + let message = errorMsg; |
340 | + if (!message) { | ||
341 | + message += `WebSocket Error: error code - ${errorCode}.`; | ||
344 | } | 342 | } |
345 | this.store.dispatch(new ActionNotificationShow( | 343 | this.store.dispatch(new ActionNotificationShow( |
346 | { | 344 | { |
@@ -284,6 +284,8 @@ export interface EntityDataUpdateMsg extends DataUpdateMsg<EntityData> { | @@ -284,6 +284,8 @@ export interface EntityDataUpdateMsg extends DataUpdateMsg<EntityData> { | ||
284 | 284 | ||
285 | export interface AlarmDataUpdateMsg extends DataUpdateMsg<AlarmData> { | 285 | export interface AlarmDataUpdateMsg extends DataUpdateMsg<AlarmData> { |
286 | dataUpdateType: DataUpdateType.ALARM_DATA; | 286 | dataUpdateType: DataUpdateType.ALARM_DATA; |
287 | + allowedEntities: number; | ||
288 | + totalEntities: number; | ||
287 | } | 289 | } |
288 | 290 | ||
289 | export type WebsocketDataMsg = AlarmDataUpdateMsg | EntityDataUpdateMsg | SubscriptionUpdateMsg; | 291 | export type WebsocketDataMsg = AlarmDataUpdateMsg | EntityDataUpdateMsg | SubscriptionUpdateMsg; |
@@ -372,8 +374,13 @@ export class EntityDataUpdate extends DataUpdate<EntityData> { | @@ -372,8 +374,13 @@ export class EntityDataUpdate extends DataUpdate<EntityData> { | ||
372 | } | 374 | } |
373 | 375 | ||
374 | export class AlarmDataUpdate extends DataUpdate<AlarmData> { | 376 | export class AlarmDataUpdate extends DataUpdate<AlarmData> { |
377 | + allowedEntities: number; | ||
378 | + totalEntities: number; | ||
379 | + | ||
375 | constructor(msg: AlarmDataUpdateMsg) { | 380 | constructor(msg: AlarmDataUpdateMsg) { |
376 | super(msg); | 381 | super(msg); |
382 | + this.allowedEntities = msg.allowedEntities; | ||
383 | + this.totalEntities = msg.totalEntities; | ||
377 | } | 384 | } |
378 | } | 385 | } |
379 | 386 |
@@ -1806,7 +1806,8 @@ | @@ -1806,7 +1806,8 @@ | ||
1806 | "undo": "Undo widget changes", | 1806 | "undo": "Undo widget changes", |
1807 | "export": "Export widget", | 1807 | "export": "Export widget", |
1808 | "no-data": "No data to display on widget", | 1808 | "no-data": "No data to display on widget", |
1809 | - "data-overflow": "Widget displays {{count}} out of {{total}} entities" | 1809 | + "data-overflow": "Widget displays {{count}} out of {{total}} entities", |
1810 | + "alarm-data-overflow": "Widget displays alarms for {{allowedEntities}} (maximum allowed) entities out of {{totalEntities}} entities" | ||
1810 | }, | 1811 | }, |
1811 | "widget-action": { | 1812 | "widget-action": { |
1812 | "header-button": "Widget header button", | 1813 | "header-button": "Widget header button", |