Browse Source

Add delete button to selection in alarm table

pull/9037/head
rusikv 3 years ago
parent
commit
dd19109034
  1. 12
      ui-ngx/src/app/core/http/alarm.service.ts
  2. 65
      ui-ngx/src/app/modules/home/components/alarm/alarm-table-config.ts
  3. 4
      ui-ngx/src/app/modules/home/components/widget/lib/alarms-table-widget.component.ts
  4. 3
      ui-ngx/src/assets/locale/locale.constant-en_US.json

12
ui-ngx/src/app/core/http/alarm.service.ts

@ -52,12 +52,12 @@ export class AlarmService {
return this.http.post<Alarm>('/api/alarm', alarm, defaultHttpOptionsFromConfig(config));
}
public ackAlarm(alarmId: string, config?: RequestConfig): Observable<void> {
return this.http.post<void>(`/api/alarm/${alarmId}/ack`, null, defaultHttpOptionsFromConfig(config));
public ackAlarm(alarmId: string, config?: RequestConfig): Observable<AlarmInfo> {
return this.http.post<AlarmInfo>(`/api/alarm/${alarmId}/ack`, null, defaultHttpOptionsFromConfig(config));
}
public clearAlarm(alarmId: string, config?: RequestConfig): Observable<void> {
return this.http.post<void>(`/api/alarm/${alarmId}/clear`, null, defaultHttpOptionsFromConfig(config));
public clearAlarm(alarmId: string, config?: RequestConfig): Observable<AlarmInfo> {
return this.http.post<AlarmInfo>(`/api/alarm/${alarmId}/clear`, null, defaultHttpOptionsFromConfig(config));
}
public assignAlarm(alarmId: string, assigneeId: string, config?: RequestConfig): Observable<void> {
@ -68,8 +68,8 @@ export class AlarmService {
return this.http.delete<void>(`/api/alarm/${alarmId}/assign`, defaultHttpOptionsFromConfig(config));
}
public deleteAlarm(alarmId: string, config?: RequestConfig): Observable<void> {
return this.http.delete<void>(`/api/alarm/${alarmId}`, defaultHttpOptionsFromConfig(config));
public deleteAlarm(alarmId: string, config?: RequestConfig): Observable<boolean> {
return this.http.delete<boolean>(`/api/alarm/${alarmId}`, defaultHttpOptionsFromConfig(config));
}
public getAlarms(query: AlarmQuery,

65
ui-ngx/src/app/modules/home/components/alarm/alarm-table-config.ts

@ -162,14 +162,18 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
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)
},
{
name: this.translate.instant('alarm.delete'),
icon: 'delete',
isEnabled: true,
onAction: ($event, entities) => this.deleteAlarms($event, entities)
}
)
}
@ -318,12 +322,17 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
const unacknowledgedAlarms = alarms.filter(alarm => {
return alarm.status === AlarmStatus.CLEARED_UNACK || alarm.status === AlarmStatus.ACTIVE_UNACK;
})
let title = '';
let content = '';
if (!unacknowledgedAlarms.length) {
this.dialogService.alert(this.translate.instant('alarm.selected-alarms', {count: alarms.length}),
this.translate.instant('alarm.selected-alarms-are-acknowledged')).subscribe();
title = this.translate.instant('alarm.selected-alarms', {count: alarms.length});
content = this.translate.instant('alarm.selected-alarms-are-acknowledged');
this.dialogService.alert(
title,
content).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});
title = this.translate.instant('alarm.aknowledge-alarms-title', {count: unacknowledgedAlarms.length});
content = this.translate.instant('alarm.aknowledge-alarms-text', {count: unacknowledgedAlarms.length});
this.dialogService.confirm(
title,
content,
@ -331,7 +340,7 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
this.translate.instant('action.yes')
).subscribe((res) => {
if (res) {
const tasks: Observable<void>[] = [];
const tasks: Observable<AlarmInfo>[] = [];
for (const alarm of unacknowledgedAlarms) {
tasks.push(this.alarmService.ackAlarm(alarm.id.id));
}
@ -350,12 +359,18 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
const activeAlarms = alarms.filter(alarm => {
return alarm.status === AlarmStatus.ACTIVE_ACK || alarm.status === AlarmStatus.ACTIVE_UNACK;
})
let title = '';
let content = '';
if (!activeAlarms.length) {
this.dialogService.alert(this.translate.instant('alarm.selected-alarms', {count: alarms.length}),
this.translate.instant('alarm.selected-alarms-are-cleared')).subscribe();
title = this.translate.instant('alarm.selected-alarms', {count: alarms.length});
content = this.translate.instant('alarm.selected-alarms-are-cleared');
this.dialogService.alert(
title,
content
).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});
title = this.translate.instant('alarm.clear-alarms-title', {count: activeAlarms.length});
content = this.translate.instant('alarm.clear-alarms-text', {count: activeAlarms.length});
this.dialogService.confirm(
title,
content,
@ -363,7 +378,7 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
this.translate.instant('action.yes')
).subscribe((res) => {
if (res) {
const tasks: Observable<void>[] = [];
const tasks: Observable<AlarmInfo>[] = [];
for (const alarm of activeAlarms) {
tasks.push(this.alarmService.clearAlarm(alarm.id.id));
}
@ -375,4 +390,28 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
}
}
deleteAlarms($event: Event, alarms: Array<AlarmInfo>) {
if ($event) {
$event.stopPropagation();
}
const title = this.translate.instant('alarm.delete-alarms-title', {count: alarms.length});
const content = this.translate.instant('alarm.delete-alarms-text', {count: alarms.length});
this.dialogService.confirm(
title,
content,
this.translate.instant('action.no'),
this.translate.instant('action.yes')
).subscribe((res) => {
if (res) {
const tasks: Observable<boolean>[] = [];
for (const alarm of alarms) {
tasks.push(this.alarmService.deleteAlarm(alarm.id.id));
}
forkJoin(tasks).subscribe(() => {
this.updateData();
});
}
});
}
}

4
ui-ngx/src/app/modules/home/components/widget/lib/alarms-table-widget.component.ts

@ -927,7 +927,7 @@ export class AlarmsTableWidgetComponent extends PageComponent implements OnInit,
).subscribe((res) => {
if (res) {
if (res) {
const tasks: Observable<void>[] = [];
const tasks: Observable<AlarmInfo>[] = [];
for (const alarmId of alarmIds) {
tasks.push(this.alarmService.ackAlarm(alarmId));
}
@ -983,7 +983,7 @@ export class AlarmsTableWidgetComponent extends PageComponent implements OnInit,
).subscribe((res) => {
if (res) {
if (res) {
const tasks: Observable<void>[] = [];
const tasks: Observable<AlarmInfo>[] = [];
for (const alarmId of alarmIds) {
tasks.push(this.alarmService.clearAlarm(alarmId));
}

3
ui-ngx/src/assets/locale/locale.constant-en_US.json

@ -512,6 +512,7 @@
"severity-indeterminate": "Indeterminate",
"acknowledge": "Acknowledge",
"clear": "Clear",
"delete": "Delete",
"search": "Search alarms",
"selected-alarms": "{ count, plural, =1 {1 alarm} other {# alarms} } selected",
"no-data": "No data to display",
@ -527,6 +528,8 @@
"clear-alarms-text": "Are you sure you want to clear { count, plural, =1 {1 alarm} other {# alarms} }?",
"clear-alarm-title": "Clear Alarm",
"clear-alarm-text": "Are you sure you want to clear Alarm?",
"delete-alarms-title": "Delete { count, plural, =1 {1 alarm} other {# alarms} }",
"delete-alarms-text": "Are you sure you want to delete { count, plural, =1 {1 alarm} other {# alarms} }?",
"selected-alarms-are-cleared": "Selected alarms are already cleared",
"alarm-status-filter": "Alarm Status Filter",
"alarm-filter-title": "Alarm Filter",

Loading…
Cancel
Save