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

This commit is contained in:
Igor Kulikov 2020-07-10 18:04:48 +03:00
parent c4390e896a
commit bdd8b17bf0
7 changed files with 28 additions and 14 deletions

View File

@ -298,7 +298,7 @@ public class AuditLogServiceImpl implements AuditLogService {
AuditLog result = new AuditLog(); AuditLog result = new AuditLog();
UUID id = Uuids.timeBased(); UUID id = Uuids.timeBased();
result.setId(new AuditLogId(id)); result.setId(new AuditLogId(id));
result.setCreatedTime(id.timestamp()); result.setCreatedTime(Uuids.unixTimestamp(id));
result.setTenantId(tenantId); result.setTenantId(tenantId);
result.setEntityId(entityId); result.setEntityId(entityId);
result.setEntityName(entityName); result.setEntityName(entityName);

View File

@ -136,7 +136,7 @@ export class AlarmDataSubscription {
this.subscriber.alarmData$.subscribe((alarmDataUpdate) => { this.subscriber.alarmData$.subscribe((alarmDataUpdate) => {
if (alarmDataUpdate.data) { if (alarmDataUpdate.data) {
this.onPageData(alarmDataUpdate.data); this.onPageData(alarmDataUpdate.data, alarmDataUpdate.allowedEntities, alarmDataUpdate.totalEntities);
} else if (alarmDataUpdate.update) { } else if (alarmDataUpdate.update) {
this.onDataUpdate(alarmDataUpdate.update); this.onDataUpdate(alarmDataUpdate.update);
} }
@ -151,7 +151,7 @@ export class AlarmDataSubscription {
totalElements: 1, totalElements: 1,
totalPages: 1 totalPages: 1
}; };
this.onPageData(pageData); this.onPageData(pageData, 1024, 1);
} }
} }
@ -163,10 +163,10 @@ export class AlarmDataSubscription {
} }
} }
private onPageData(pageData: PageData<AlarmData>) { private onPageData(pageData: PageData<AlarmData>, allowedEntities: number, totalEntities: number) {
this.pageData = pageData; this.pageData = pageData;
this.resetData(); this.resetData();
this.listener.alarmsLoaded(pageData, this.alarmDataSubscriptionOptions.pageLink); this.listener.alarmsLoaded(pageData, this.alarmDataSubscriptionOptions.pageLink, allowedEntities, totalEntities);
} }
private onDataUpdate(update: Array<AlarmData>) { private onDataUpdate(update: Array<AlarmData>) {

View File

@ -31,7 +31,7 @@ import { deepClone } from '@core/utils';
export interface AlarmDataListener { export interface AlarmDataListener {
subscriptionTimewindow?: SubscriptionTimewindow; subscriptionTimewindow?: SubscriptionTimewindow;
alarmSource: Datasource; alarmSource: Datasource;
alarmsLoaded: (pageData: PageData<AlarmData>, pageLink: AlarmDataPageLink) => void; alarmsLoaded: (pageData: PageData<AlarmData>, pageLink: AlarmDataPageLink, allowedEntities: number, totalEntities: number) => void;
alarmsUpdated: (update: Array<AlarmData>, pageData: PageData<AlarmData>) => void; alarmsUpdated: (update: Array<AlarmData>, pageData: PageData<AlarmData>) => void;
subscription?: AlarmDataSubscription; subscription?: AlarmDataSubscription;
} }

View File

@ -1272,8 +1272,16 @@ export class WidgetSubscription implements IWidgetSubscription {
} }
} }
private alarmsLoaded(alarms: PageData<AlarmData>) { private alarmsLoaded(alarms: PageData<AlarmData>, allowedEntities: number, totalEntities: number) {
this.alarms = alarms; this.alarms = alarms;
if (totalEntities > allowedEntities) {
const message = this.ctx.translate.instant('widget.alarm-data-overflow',
{ allowedEntities, totalEntities });
this.onSubscriptionMessage({
severity: 'warn',
message
});
}
if (this.subscriptionTimewindow && this.subscriptionTimewindow.realtimeWindowMs) { if (this.subscriptionTimewindow && this.subscriptionTimewindow.realtimeWindowMs) {
this.updateTimewindow(); this.updateTimewindow();
} }
@ -1281,7 +1289,7 @@ export class WidgetSubscription implements IWidgetSubscription {
} }
private alarmsUpdated(_updated: Array<AlarmData>, alarms: PageData<AlarmData>) { private alarmsUpdated(_updated: Array<AlarmData>, alarms: PageData<AlarmData>) {
this.alarmsLoaded(alarms); this.alarmsLoaded(alarms, 0, 0);
} }
private updateLegend(dataIndex: number, data: DataSet, detectChanges: boolean) { private updateLegend(dataIndex: number, data: DataSet, detectChanges: boolean) {

View File

@ -336,11 +336,9 @@ export class TelemetryWebsocketService implements TelemetryService {
} }
private showWsError(errorCode: number, errorMsg: string) { private showWsError(errorCode: number, errorMsg: string) {
let message = 'WebSocket Error: '; let message = errorMsg;
if (errorMsg) { if (!message) {
message += errorMsg; message += `WebSocket Error: error code - ${errorCode}.`;
} else {
message += `error code - ${errorCode}.`;
} }
this.store.dispatch(new ActionNotificationShow( this.store.dispatch(new ActionNotificationShow(
{ {

View File

@ -284,6 +284,8 @@ export interface EntityDataUpdateMsg extends DataUpdateMsg<EntityData> {
export interface AlarmDataUpdateMsg extends DataUpdateMsg<AlarmData> { export interface AlarmDataUpdateMsg extends DataUpdateMsg<AlarmData> {
dataUpdateType: DataUpdateType.ALARM_DATA; dataUpdateType: DataUpdateType.ALARM_DATA;
allowedEntities: number;
totalEntities: number;
} }
export type WebsocketDataMsg = AlarmDataUpdateMsg | EntityDataUpdateMsg | SubscriptionUpdateMsg; export type WebsocketDataMsg = AlarmDataUpdateMsg | EntityDataUpdateMsg | SubscriptionUpdateMsg;
@ -372,8 +374,13 @@ export class EntityDataUpdate extends DataUpdate<EntityData> {
} }
export class AlarmDataUpdate extends DataUpdate<AlarmData> { export class AlarmDataUpdate extends DataUpdate<AlarmData> {
allowedEntities: number;
totalEntities: number;
constructor(msg: AlarmDataUpdateMsg) { constructor(msg: AlarmDataUpdateMsg) {
super(msg); super(msg);
this.allowedEntities = msg.allowedEntities;
this.totalEntities = msg.totalEntities;
} }
} }

View File

@ -1806,7 +1806,8 @@
"undo": "Undo widget changes", "undo": "Undo widget changes",
"export": "Export widget", "export": "Export widget",
"no-data": "No data to display on widget", "no-data": "No data to display on widget",
"data-overflow": "Widget displays {{count}} out of {{total}} entities" "data-overflow": "Widget displays {{count}} out of {{total}} entities",
"alarm-data-overflow": "Widget displays alarms for {{allowedEntities}} (maximum allowed) entities out of {{totalEntities}} entities"
}, },
"widget-action": { "widget-action": {
"header-button": "Widget header button", "header-button": "Widget header button",