import { Component, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { Router } from '@angular/router'; import { MaintenanceService } from '@app/core/services/maintenance/maintenance.service'; import { SnackBarNotificationLevel, UiNotificationService } from '@app/core/services/notification/ui-notification-service'; import { BaseComponent } from '@common/base/base.component'; import { ConfirmationDialogComponent } from '@common/modules/confirmation-dialog/confirmation-dialog.component'; import { TranslateService } from '@ngx-translate/core'; import { takeUntil } from 'rxjs/operators'; @Component({ selector: 'app-maintenance-tasks', templateUrl: './maintenance-tasks.component.html', styleUrls: ['./maintenance-tasks.component.scss'] }) export class MaintenanceTasksComponent extends BaseComponent implements OnInit { constructor( protected dialog: MatDialog, protected language: TranslateService, private maintenanceService: MaintenanceService, private uiNotificationService: UiNotificationService, private translate: TranslateService, private router: Router, ) { super(); } ngOnInit(): void { } //TODO: refactor // migrateSemantics(ev: Event) { // (ev.srcElement as HTMLButtonElement).disabled = true; // this.maintenanceTasksService.migrateSemantics().pipe(takeUntil(this._destroyed)).subscribe( // response => { // (ev.srcElement as HTMLButtonElement).disabled = false; // this.onCallbackSuccess(); // }, // error => { // (ev.srcElement as HTMLButtonElement).disabled = false; // this.onCallbackError(error); // } // ); // } // addRdaInSemantics(ev: Event) { // (ev.srcElement as HTMLButtonElement).disabled = true; // this.maintenanceTasksService.addRdaInSemantics().pipe(takeUntil(this._destroyed)).subscribe( // response => { // (ev.srcElement as HTMLButtonElement).disabled = false; // this.onCallbackSuccess(); // }, // error => { // (ev.srcElement as HTMLButtonElement).disabled = false; // this.onCallbackError(error); // } // ); // } generateIndex(ev: Event) { this.dialog.open(ConfirmationDialogComponent, { data: { message: this.language.instant('MAINTENANCE-TASKS.CONFIRMATION.MESSAGE'), confirmButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CONFIRM'), cancelButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CANCEL') }, maxWidth: '30em' }) .afterClosed() .subscribe(confirm => { if (confirm) { this.doGenerateIndex(ev); } }); } private doGenerateIndex(ev: Event) { (ev.target as HTMLButtonElement).disabled = true; this.maintenanceService.generateElasticIndex().pipe(takeUntil(this._destroyed)).subscribe( _ => { (ev.target as HTMLButtonElement).disabled = false; this.onCallbackSuccess(); }, error => { (ev.target as HTMLButtonElement).disabled = false; this.onCallbackError(error); } ); } clearIndex(ev: Event) { this.dialog.open(ConfirmationDialogComponent, { data: { message: this.language.instant('MAINTENANCE-TASKS.CONFIRMATION.MESSAGE'), confirmButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CONFIRM'), cancelButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CANCEL') }, maxWidth: '30em' }) .afterClosed() .subscribe(confirm => { if (confirm) { this.doClearIndex(ev); } }); } private doClearIndex(ev: Event) { (ev.target as HTMLButtonElement).disabled = true; this.maintenanceService.clearElasticIndex().pipe(takeUntil(this._destroyed)).subscribe( _ => { (ev.target as HTMLButtonElement).disabled = false; this.onCallbackSuccess(); }, error => { (ev.target as HTMLButtonElement).disabled = false; this.onCallbackError(error); } ); } sendUserTouchEvents(ev: Event) { this.dialog.open(ConfirmationDialogComponent, { data: { message: this.language.instant('MAINTENANCE-TASKS.CONFIRMATION.MESSAGE'), confirmButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CONFIRM'), cancelButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CANCEL') }, maxWidth: '30em' }) .afterClosed() .subscribe(confirm => { if (confirm) { this.doSendUserTouchEvents(ev); } }); } private doSendUserTouchEvents(ev: Event) { (ev.target as HTMLButtonElement).disabled = true; this.maintenanceService.sendUserTouchEvents().pipe(takeUntil(this._destroyed)).subscribe( _ => { (ev.target as HTMLButtonElement).disabled = false; this.onCallbackSuccess(); }, error => { (ev.target as HTMLButtonElement).disabled = false; this.onCallbackError(error); } ); } sendTenantTouchEvents(ev: Event) { this.dialog.open(ConfirmationDialogComponent, { data: { message: this.language.instant('MAINTENANCE-TASKS.CONFIRMATION.MESSAGE'), confirmButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CONFIRM'), cancelButton: this.language.instant('GENERAL.CONFIRMATION-DIALOG.ACTIONS.CANCEL') }, maxWidth: '30em' }) .afterClosed() .subscribe(confirm => { if (confirm) { this.doSendTenantTouchEvents(ev); } }); } private doSendTenantTouchEvents(ev: Event) { (ev.target as HTMLButtonElement).disabled = true; this.maintenanceService.sendTenantTouchEvents().pipe(takeUntil(this._destroyed)).subscribe( _ => { (ev.target as HTMLButtonElement).disabled = false; this.onCallbackSuccess(); }, error => { (ev.target as HTMLButtonElement).disabled = false; this.onCallbackError(error); } ); } onCallbackSuccess(): void { this.uiNotificationService.snackBarNotification(this.translate.instant('GENERAL.SNACK-BAR.SUCCESSFUL-UPDATE'), SnackBarNotificationLevel.Success); this.router.navigate(['/reload']).then(() => this.router.navigate(['/maintenance-tasks'])); } onCallbackError(error: any) { this.uiNotificationService.snackBarNotification(error, SnackBarNotificationLevel.Error); } }