Browse Source

Merge pull request #6775 from vvlladd28/improvement/alarm-details/show-permision

[3.4] UI: Fixed permission check in show alarm details
pull/6782/head
Igor Kulikov 4 years ago
committed by GitHub
parent
commit
fc90105efb
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 37
      ui-ngx/src/app/modules/home/components/alarm/alarm-details-dialog.component.ts
  2. 15
      ui-ngx/src/app/modules/home/components/alarm/alarm-table-config.ts
  3. 8
      ui-ngx/src/app/modules/home/components/alarm/alarm-table.component.ts

37
ui-ngx/src/app/modules/home/components/alarm/alarm-details-dialog.component.ts

@ -35,7 +35,8 @@ import { DatePipe } from '@angular/common';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
export interface AlarmDetailsDialogData { export interface AlarmDetailsDialogData {
alarmId: string; alarmId?: string;
alarm?: AlarmInfo;
allowAcknowledgment: boolean; allowAcknowledgment: boolean;
allowClear: boolean; allowClear: boolean;
displayDetails: boolean; displayDetails: boolean;
@ -48,6 +49,7 @@ export interface AlarmDetailsDialogData {
}) })
export class AlarmDetailsDialogComponent extends DialogComponent<AlarmDetailsDialogComponent, boolean> implements OnInit { export class AlarmDetailsDialogComponent extends DialogComponent<AlarmDetailsDialogComponent, boolean> implements OnInit {
alarmId: string;
alarmFormGroup: FormGroup; alarmFormGroup: FormGroup;
allowAcknowledgment: boolean; allowAcknowledgment: boolean;
@ -93,12 +95,17 @@ export class AlarmDetailsDialogComponent extends DialogComponent<AlarmDetailsDia
} }
); );
this.loadAlarm(); if (!this.data.alarm) {
this.alarmId = this.data.alarmId;
this.loadAlarm();
} else {
this.alarmId = this.data.alarm?.id?.id;
this.loadAlarmSubject.next(this.data.alarm);
}
} }
loadAlarm() { loadAlarm() {
this.alarmService.getAlarmInfo(this.data.alarmId).subscribe( this.alarmService.getAlarmInfo(this.alarmId).subscribe(
alarm => this.loadAlarmSubject.next(alarm) alarm => this.loadAlarmSubject.next(alarm)
); );
} }
@ -140,15 +147,25 @@ export class AlarmDetailsDialogComponent extends DialogComponent<AlarmDetailsDia
} }
acknowledge(): void { acknowledge(): void {
this.alarmService.ackAlarm(this.data.alarmId).subscribe( if (this.alarmId) {
() => { this.alarmUpdated = true; this.loadAlarm(); } this.alarmService.ackAlarm(this.alarmId).subscribe(
); () => {
this.alarmUpdated = true;
this.loadAlarm();
}
);
}
} }
clear(): void { clear(): void {
this.alarmService.clearAlarm(this.data.alarmId).subscribe( if (this.alarmId) {
() => { this.alarmUpdated = true; this.loadAlarm(); } this.alarmService.clearAlarm(this.alarmId).subscribe(
); () => {
this.alarmUpdated = true;
this.loadAlarm();
}
);
}
} }
} }

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

@ -44,9 +44,15 @@ import {
AlarmDetailsDialogData AlarmDetailsDialogData
} from '@home/components/alarm/alarm-details-dialog.component'; } from '@home/components/alarm/alarm-details-dialog.component';
import { DAY, historyInterval } from '@shared/models/time/time.models'; import { DAY, historyInterval } from '@shared/models/time/time.models';
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
import { getCurrentAuthUser } from '@core/auth/auth.selectors';
import { Authority } from '@shared/models/authority.enum';
export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink> { export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink> {
private authUser = getCurrentAuthUser(this.store);
searchStatus: AlarmSearchStatus; searchStatus: AlarmSearchStatus;
constructor(private alarmService: AlarmService, constructor(private alarmService: AlarmService,
@ -55,7 +61,8 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
private datePipe: DatePipe, private datePipe: DatePipe,
private dialog: MatDialog, private dialog: MatDialog,
public entityId: EntityId = null, public entityId: EntityId = null,
private defaultSearchStatus: AlarmSearchStatus = AlarmSearchStatus.ANY) { private defaultSearchStatus: AlarmSearchStatus = AlarmSearchStatus.ANY,
private store: Store<AppState>) {
super(); super();
this.loadDataOnInit = false; this.loadDataOnInit = false;
this.tableTitle = ''; this.tableTitle = '';
@ -114,6 +121,7 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
} }
showAlarmDetails(entity: AlarmInfo) { showAlarmDetails(entity: AlarmInfo) {
const isPermissionWrite = this.authUser.authority !== Authority.CUSTOMER_USER || entity.customerId.id === this.authUser.customerId;
this.dialog.open<AlarmDetailsDialogComponent, AlarmDetailsDialogData, boolean> this.dialog.open<AlarmDetailsDialogComponent, AlarmDetailsDialogData, boolean>
(AlarmDetailsDialogComponent, (AlarmDetailsDialogComponent,
{ {
@ -121,8 +129,9 @@ export class AlarmTableConfig extends EntityTableConfig<AlarmInfo, TimePageLink>
panelClass: ['tb-dialog', 'tb-fullscreen-dialog'], panelClass: ['tb-dialog', 'tb-fullscreen-dialog'],
data: { data: {
alarmId: entity.id.id, alarmId: entity.id.id,
allowAcknowledgment: true, alarm: entity,
allowClear: true, allowAcknowledgment: isPermissionWrite,
allowClear: isPermissionWrite,
displayDetails: true displayDetails: true
} }
}).afterClosed().subscribe( }).afterClosed().subscribe(

8
ui-ngx/src/app/modules/home/components/alarm/alarm-table.component.ts

@ -24,6 +24,8 @@ import { DialogService } from '@core/services/dialog.service';
import { AlarmTableConfig } from './alarm-table-config'; import { AlarmTableConfig } from './alarm-table-config';
import { AlarmSearchStatus } from '@shared/models/alarm.models'; import { AlarmSearchStatus } from '@shared/models/alarm.models';
import { AlarmService } from '@app/core/http/alarm.service'; import { AlarmService } from '@app/core/http/alarm.service';
import { Store } from '@ngrx/store';
import { AppState } from '@core/core.state';
@Component({ @Component({
selector: 'tb-alarm-table', selector: 'tb-alarm-table',
@ -68,7 +70,8 @@ export class AlarmTableComponent implements OnInit {
private dialogService: DialogService, private dialogService: DialogService,
private translate: TranslateService, private translate: TranslateService,
private datePipe: DatePipe, private datePipe: DatePipe,
private dialog: MatDialog) { private dialog: MatDialog,
private store: Store<AppState>) {
} }
ngOnInit() { ngOnInit() {
@ -80,7 +83,8 @@ export class AlarmTableComponent implements OnInit {
this.datePipe, this.datePipe,
this.dialog, this.dialog,
this.entityIdValue, this.entityIdValue,
AlarmSearchStatus.ANY AlarmSearchStatus.ANY,
this.store
); );
} }

Loading…
Cancel
Save