Commit bdd8b17bf01e94ad190aa442c64dba10c19ecf07

Authored by Igor Kulikov
1 parent c4390e89

UI: Notify about alarm data overflow. Fix Audit log created time

@@ -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",