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 298 AuditLog result = new AuditLog();
299 299 UUID id = Uuids.timeBased();
300 300 result.setId(new AuditLogId(id));
301   - result.setCreatedTime(id.timestamp());
  301 + result.setCreatedTime(Uuids.unixTimestamp(id));
302 302 result.setTenantId(tenantId);
303 303 result.setEntityId(entityId);
304 304 result.setEntityName(entityName);
... ...
... ... @@ -136,7 +136,7 @@ export class AlarmDataSubscription {
136 136
137 137 this.subscriber.alarmData$.subscribe((alarmDataUpdate) => {
138 138 if (alarmDataUpdate.data) {
139   - this.onPageData(alarmDataUpdate.data);
  139 + this.onPageData(alarmDataUpdate.data, alarmDataUpdate.allowedEntities, alarmDataUpdate.totalEntities);
140 140 } else if (alarmDataUpdate.update) {
141 141 this.onDataUpdate(alarmDataUpdate.update);
142 142 }
... ... @@ -151,7 +151,7 @@ export class AlarmDataSubscription {
151 151 totalElements: 1,
152 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 163 }
164 164 }
165 165
166   - private onPageData(pageData: PageData<AlarmData>) {
  166 + private onPageData(pageData: PageData<AlarmData>, allowedEntities: number, totalEntities: number) {
167 167 this.pageData = pageData;
168 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 172 private onDataUpdate(update: Array<AlarmData>) {
... ...
... ... @@ -31,7 +31,7 @@ import { deepClone } from '@core/utils';
31 31 export interface AlarmDataListener {
32 32 subscriptionTimewindow?: SubscriptionTimewindow;
33 33 alarmSource: Datasource;
34   - alarmsLoaded: (pageData: PageData<AlarmData>, pageLink: AlarmDataPageLink) => void;
  34 + alarmsLoaded: (pageData: PageData<AlarmData>, pageLink: AlarmDataPageLink, allowedEntities: number, totalEntities: number) => void;
35 35 alarmsUpdated: (update: Array<AlarmData>, pageData: PageData<AlarmData>) => void;
36 36 subscription?: AlarmDataSubscription;
37 37 }
... ...
... ... @@ -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 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 1285 if (this.subscriptionTimewindow && this.subscriptionTimewindow.realtimeWindowMs) {
1278 1286 this.updateTimewindow();
1279 1287 }
... ... @@ -1281,7 +1289,7 @@ export class WidgetSubscription implements IWidgetSubscription {
1281 1289 }
1282 1290
1283 1291 private alarmsUpdated(_updated: Array<AlarmData>, alarms: PageData<AlarmData>) {
1284   - this.alarmsLoaded(alarms);
  1292 + this.alarmsLoaded(alarms, 0, 0);
1285 1293 }
1286 1294
1287 1295 private updateLegend(dataIndex: number, data: DataSet, detectChanges: boolean) {
... ...
... ... @@ -336,11 +336,9 @@ export class TelemetryWebsocketService implements TelemetryService {
336 336 }
337 337
338 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 343 this.store.dispatch(new ActionNotificationShow(
346 344 {
... ...
... ... @@ -284,6 +284,8 @@ export interface EntityDataUpdateMsg extends DataUpdateMsg<EntityData> {
284 284
285 285 export interface AlarmDataUpdateMsg extends DataUpdateMsg<AlarmData> {
286 286 dataUpdateType: DataUpdateType.ALARM_DATA;
  287 + allowedEntities: number;
  288 + totalEntities: number;
287 289 }
288 290
289 291 export type WebsocketDataMsg = AlarmDataUpdateMsg | EntityDataUpdateMsg | SubscriptionUpdateMsg;
... ... @@ -372,8 +374,13 @@ export class EntityDataUpdate extends DataUpdate<EntityData> {
372 374 }
373 375
374 376 export class AlarmDataUpdate extends DataUpdate<AlarmData> {
  377 + allowedEntities: number;
  378 + totalEntities: number;
  379 +
375 380 constructor(msg: AlarmDataUpdateMsg) {
376 381 super(msg);
  382 + this.allowedEntities = msg.allowedEntities;
  383 + this.totalEntities = msg.totalEntities;
377 384 }
378 385 }
379 386
... ...
... ... @@ -1806,7 +1806,8 @@
1806 1806 "undo": "Undo widget changes",
1807 1807 "export": "Export widget",
1808 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 1812 "widget-action": {
1812 1813 "header-button": "Widget header button",
... ...