Added selection to alarms table for bulk acknowledge and clear
This commit is contained in:
parent
fdab832982
commit
47543ad5e2
@ -26,17 +26,17 @@ import { DatePipe } from '@angular/common';
|
|||||||
import { Direction } from '@shared/models/page/sort-order';
|
import { Direction } from '@shared/models/page/sort-order';
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
import { TimePageLink } from '@shared/models/page/page-link';
|
import { TimePageLink } from '@shared/models/page/page-link';
|
||||||
import { Observable } from 'rxjs';
|
import { forkJoin, Observable } from 'rxjs';
|
||||||
import { PageData } from '@shared/models/page/page-data';
|
import { PageData } from '@shared/models/page/page-data';
|
||||||
import { EntityId } from '@shared/models/id/entity-id';
|
import { EntityId } from '@shared/models/id/entity-id';
|
||||||
import {
|
import {
|
||||||
AlarmInfo,
|
AlarmInfo,
|
||||||
AlarmQuery,
|
|
||||||
AlarmQueryV2,
|
AlarmQueryV2,
|
||||||
AlarmSearchStatus,
|
AlarmSearchStatus,
|
||||||
alarmSeverityColors,
|
alarmSeverityColors,
|
||||||
alarmSeverityTranslations,
|
alarmSeverityTranslations,
|
||||||
AlarmsMode,
|
AlarmsMode,
|
||||||
|
AlarmStatus,
|
||||||
alarmStatusTranslations
|
alarmStatusTranslations
|
||||||
} from '@app/shared/models/alarm.models';
|
} from '@app/shared/models/alarm.models';
|
||||||
import { AlarmService } from '@app/core/http/alarm.service';
|
import { AlarmService } from '@app/core/http/alarm.service';
|
||||||
@ -46,7 +46,7 @@ import {
|
|||||||
AlarmDetailsDialogComponent,
|
AlarmDetailsDialogComponent,
|
||||||
AlarmDetailsDialogData
|
AlarmDetailsDialogData
|
||||||
} from '@home/components/alarm/alarm-details-dialog.component';
|
} from '@home/components/alarm/alarm-details-dialog.component';
|
||||||
import { DAY, forAllTimeInterval, historyInterval } from '@shared/models/time/time.models';
|
import { forAllTimeInterval } from '@shared/models/time/time.models';
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
import { AppState } from '@core/core.state';
|
import { AppState } from '@core/core.state';
|
||||||
import { getCurrentAuthUser } from '@core/auth/auth.selectors';
|
import { getCurrentAuthUser } from '@core/auth/auth.selectors';
|
||||||
@ -93,7 +93,7 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
|
|||||||
this.pageMode = pageMode;
|
this.pageMode = pageMode;
|
||||||
this.defaultTimewindowInterval = forAllTimeInterval();
|
this.defaultTimewindowInterval = forAllTimeInterval();
|
||||||
this.detailsPanelEnabled = false;
|
this.detailsPanelEnabled = false;
|
||||||
this.selectionEnabled = false;
|
this.selectionEnabled = true;
|
||||||
this.searchEnabled = true;
|
this.searchEnabled = true;
|
||||||
this.addEnabled = false;
|
this.addEnabled = false;
|
||||||
this.entitiesDeleteEnabled = false;
|
this.entitiesDeleteEnabled = false;
|
||||||
@ -155,6 +155,23 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
|
|||||||
onAction: ($event, entity) => this.showAlarmDetails(entity)
|
onAction: ($event, entity) => this.showAlarmDetails(entity)
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
this.groupActionDescriptors.push(
|
||||||
|
{
|
||||||
|
name: this.translate.instant('alarm.acknowledge'),
|
||||||
|
icon: 'done',
|
||||||
|
isEnabled: true,
|
||||||
|
onAction: ($event, entities) => this.ackAlarms($event, entities)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
this.groupActionDescriptors.push(
|
||||||
|
{
|
||||||
|
name: this.translate.instant('alarm.clear'),
|
||||||
|
icon: 'clear',
|
||||||
|
isEnabled: true,
|
||||||
|
onAction: ($event, entities) => this.clearAlarms($event, entities)
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fetchAlarms(pageLink: TimePageLink): Observable<PageData<AlarmInfo>> {
|
fetchAlarms(pageLink: TimePageLink): Observable<PageData<AlarmInfo>> {
|
||||||
@ -294,4 +311,68 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ackAlarms($event: Event, alarms: Array<AlarmInfo>) {
|
||||||
|
if ($event) {
|
||||||
|
$event.stopPropagation();
|
||||||
|
}
|
||||||
|
const unacknowledgedAlarms = alarms.filter(alarm => {
|
||||||
|
return alarm.status === AlarmStatus.CLEARED_UNACK || alarm.status === AlarmStatus.ACTIVE_UNACK;
|
||||||
|
})
|
||||||
|
if (!unacknowledgedAlarms.length) {
|
||||||
|
this.dialogService.alert(this.translate.instant('alarm.selected-alarms', {count: alarms.length}),
|
||||||
|
this.translate.instant('alarm.selected-alarms-are-acknowledged')).subscribe();
|
||||||
|
} else {
|
||||||
|
const title = this.translate.instant('alarm.aknowledge-alarms-title', {count: unacknowledgedAlarms.length});
|
||||||
|
const content = this.translate.instant('alarm.aknowledge-alarms-text', {count: unacknowledgedAlarms.length});
|
||||||
|
this.dialogService.confirm(
|
||||||
|
title,
|
||||||
|
content,
|
||||||
|
this.translate.instant('action.no'),
|
||||||
|
this.translate.instant('action.yes')
|
||||||
|
).subscribe((res) => {
|
||||||
|
if (res) {
|
||||||
|
const tasks: Observable<void>[] = [];
|
||||||
|
for (const alarm of unacknowledgedAlarms) {
|
||||||
|
tasks.push(this.alarmService.ackAlarm(alarm.id.id));
|
||||||
|
}
|
||||||
|
forkJoin(tasks).subscribe(() => {
|
||||||
|
this.updateData();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
clearAlarms($event: Event, alarms: Array<AlarmInfo>) {
|
||||||
|
if ($event) {
|
||||||
|
$event.stopPropagation();
|
||||||
|
}
|
||||||
|
const activeAlarms = alarms.filter(alarm => {
|
||||||
|
return alarm.status === AlarmStatus.ACTIVE_ACK || alarm.status === AlarmStatus.ACTIVE_UNACK;
|
||||||
|
})
|
||||||
|
if (!activeAlarms.length) {
|
||||||
|
this.dialogService.alert(this.translate.instant('alarm.selected-alarms', {count: alarms.length}),
|
||||||
|
this.translate.instant('alarm.selected-alarms-are-cleared')).subscribe();
|
||||||
|
} else {
|
||||||
|
const title = this.translate.instant('alarm.clear-alarms-title', {count: activeAlarms.length});
|
||||||
|
const content = this.translate.instant('alarm.clear-alarms-text', {count: activeAlarms.length});
|
||||||
|
this.dialogService.confirm(
|
||||||
|
title,
|
||||||
|
content,
|
||||||
|
this.translate.instant('action.no'),
|
||||||
|
this.translate.instant('action.yes')
|
||||||
|
).subscribe((res) => {
|
||||||
|
if (res) {
|
||||||
|
const tasks: Observable<void>[] = [];
|
||||||
|
for (const alarm of activeAlarms) {
|
||||||
|
tasks.push(this.alarmService.clearAlarm(alarm.id.id));
|
||||||
|
}
|
||||||
|
forkJoin(tasks).subscribe(() => {
|
||||||
|
this.updateData();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -521,10 +521,12 @@
|
|||||||
"aknowledge-alarms-text": "Are you sure you want to acknowledge { count, plural, =1 {1 alarm} other {# alarms} }?",
|
"aknowledge-alarms-text": "Are you sure you want to acknowledge { count, plural, =1 {1 alarm} other {# alarms} }?",
|
||||||
"aknowledge-alarm-title": "Acknowledge Alarm",
|
"aknowledge-alarm-title": "Acknowledge Alarm",
|
||||||
"aknowledge-alarm-text": "Are you sure you want to acknowledge Alarm?",
|
"aknowledge-alarm-text": "Are you sure you want to acknowledge Alarm?",
|
||||||
|
"selected-alarms-are-acknowledged": "Selected alarms are already acknowledged",
|
||||||
"clear-alarms-title": "Clear { count, plural, =1 {1 alarm} other {# alarms} }",
|
"clear-alarms-title": "Clear { count, plural, =1 {1 alarm} other {# alarms} }",
|
||||||
"clear-alarms-text": "Are you sure you want to clear { count, plural, =1 {1 alarm} other {# alarms} }?",
|
"clear-alarms-text": "Are you sure you want to clear { count, plural, =1 {1 alarm} other {# alarms} }?",
|
||||||
"clear-alarm-title": "Clear Alarm",
|
"clear-alarm-title": "Clear Alarm",
|
||||||
"clear-alarm-text": "Are you sure you want to clear Alarm?",
|
"clear-alarm-text": "Are you sure you want to clear Alarm?",
|
||||||
|
"selected-alarms-are-cleared": "Selected alarms are already cleared",
|
||||||
"alarm-status-filter": "Alarm Status Filter",
|
"alarm-status-filter": "Alarm Status Filter",
|
||||||
"alarm-filter-title": "Alarm Filter",
|
"alarm-filter-title": "Alarm Filter",
|
||||||
"assigned": "Assigned",
|
"assigned": "Assigned",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user