Commit 39a8aa34 authored by El Mghazli Yacine's avatar El Mghazli Yacine

confirm dialog before sending cmd

parent e18753db
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
"lint": "ng lint", "lint": "ng lint",
"build": "ng build", "build": "ng build",
"dev": "ng serve --configuration=development", "dev": "ng serve --configuration=development",
"prod": "ng serve --configuration=production" "prod": "ng serve --configuration=production"
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
......
...@@ -29,6 +29,7 @@ import { CommandsApi } from './api/commands.api'; ...@@ -29,6 +29,7 @@ import { CommandsApi } from './api/commands.api';
import { AppRoutingModule } from './app-routing.module'; import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { CommandsComponent } from './components/commands/commands.component'; import { CommandsComponent } from './components/commands/commands.component';
import { ConfirmDialogComponent } from './components/confirm/confirm.component';
import { ErrorDialogComponent } from './components/error-dialog/error-dialog.component'; import { ErrorDialogComponent } from './components/error-dialog/error-dialog.component';
import { NavComponent } from './components/nav/nav.component'; import { NavComponent } from './components/nav/nav.component';
import { InterceptorProviders } from './interceptors/interceptors'; import { InterceptorProviders } from './interceptors/interceptors';
...@@ -40,6 +41,7 @@ import { LoadingService } from './services/loading.service'; ...@@ -40,6 +41,7 @@ import { LoadingService } from './services/loading.service';
NavComponent, NavComponent,
ErrorDialogComponent, ErrorDialogComponent,
CommandsComponent, CommandsComponent,
ConfirmDialogComponent
], ],
imports: [ imports: [
BrowserModule, BrowserModule,
......
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { Observable } from 'rxjs/internal/Observable'; import { Observable } from 'rxjs/internal/Observable';
import { map } from 'rxjs/internal/operators/map'; import { map } from 'rxjs/internal/operators/map';
import { tap, mergeMap } from 'rxjs/operators'; import { tap, mergeMap, filter } from 'rxjs/operators';
import { CommandsApi, IArgType, ILog } from 'src/app/api/commands.api'; import { CommandsApi, IArgType, ILog } from 'src/app/api/commands.api';
import { CmdCtrl } from 'src/app/controls/cmd.control'; import { CmdCtrl } from 'src/app/controls/cmd.control';
import { VarCtrl } from 'src/app/controls/var.control'; import { VarCtrl } from 'src/app/controls/var.control';
...@@ -92,16 +92,19 @@ export class CommandsComponent { ...@@ -92,16 +92,19 @@ export class CommandsComponent {
} }
onCmdSubmit(control: CmdCtrl) { onCmdSubmit(control: CmdCtrl) {
this.logs$ = this.commandsApi.runCommand$(control.api(), `${this.selectedModule!.nameFC.value}`).pipe( this.logs$ = this.dialogService.openConfirmDialog().pipe(
mergeMap(() => this.commandsApi.runCommand$(control.api(), `${this.selectedModule!.nameFC.value}`)),
tap(resp => this.success('runCommand ' + control.nameFC.value + ' OK', resp.display!.join("</p><p>"))), tap(resp => this.success('runCommand ' + control.nameFC.value + ' OK', resp.display!.join("</p><p>"))),
map(iresp => iresp.logs!) map(iresp => iresp.logs!)
); );
} }
private success = (mess: string, str: string) => this.dialogService.openDialog({ private success = (mess: string, str: string) => {
title: mess, return this.dialogService.openDialog({
body: str, title: mess,
}); body: str,
})
};
} }
\ No newline at end of file
<h1>Really ?</h1>
<div fxLayoutGap="10px" mat-dialog-actions fxLayout="row" fxLayoutAlign="center start">
<button mat-button [mat-dialog-close]="true" cdkFocusInitial>Ok</button>
<button mat-button (click)="onNoClick()">Cancel</button>
</div>
\ No newline at end of file
/* eslint-disable @typescript-eslint/naming-convention */
import { Component } from '@angular/core';
import { MatDialogRef } from '@angular/material/dialog';
@Component({
selector: 'app-confirm',
templateUrl: './confirm.component.html',
styleUrls: ['./confirm.component.css']
})
export class ConfirmDialogComponent {
constructor(
public dialogRef: MatDialogRef<void>
) { }
onNoClick() {
this.dialogRef.close();
}
}
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { MatDialog } from '@angular/material/dialog'; import { MatDialog } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar'; import { MatSnackBar } from '@angular/material/snack-bar';
import { of } from 'rxjs/internal/observable/of';
import { tap } from 'rxjs/internal/operators/tap';
import { ConfirmDialogComponent } from '../components/confirm/confirm.component';
import { ErrorDialogComponent } from '../components/error-dialog/error-dialog.component'; import { ErrorDialogComponent } from '../components/error-dialog/error-dialog.component';
@Injectable({ @Injectable({
...@@ -39,4 +42,18 @@ export class DialogService { ...@@ -39,4 +42,18 @@ export class DialogService {
verticalPosition: 'bottom', verticalPosition: 'bottom',
}); });
} }
openConfirmDialog() {
if (this.isDialogOpen) {
return of(undefined);
}
this.isDialogOpen = true;
return this._dialog.open(ConfirmDialogComponent, {
width: '300px'
})
.afterClosed()
.pipe(tap(() => this.isDialogOpen = false));
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment