This is an automated email from the ASF dual-hosted git repository. dgnatyshyn pushed a commit to branch DLAB-1391 in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
commit 2e4a76ed370d4fed2066bc6b70ae4e9b0880e702 Author: Dmytro Gnatyshyn <di1...@ukr.net> AuthorDate: Mon Dec 16 14:41:10 2019 +0200 [DLAB-1391]: All actions collect in action menu for every project --- .../project-list/project-list.component.html | 12 +++--- .../project/project-list/project-list.component.ts | 49 +++++++++++++++++++--- .../administration/project/project.component.ts | 34 ++++++++------- .../webapp/src/app/shared/material.module.ts | 1 + .../edge-action-dialog}/index.ts | 27 ++++-------- .../webapp/src/app/shared/navbar/index.ts | 5 ++- 6 files changed, 82 insertions(+), 46 deletions(-) diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html index ad55b29..ad65236 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.html @@ -90,21 +90,21 @@ <bubble-up #actions class="list-menu" position="bottom-left" alternative="top-left"> <ul class="list-unstyled"> <div class="active-items"></div> - <li class="project-seting-item"> + <li class="project-seting-item" *ngIf="areStoppedEndpoints(element)"> <i class="material-icons">play_circle_outline</i> - <a class="action"> + <a class="action" (click)="openEdgeDialog('start', element)"> Start edge node </a> </li> - <li class="project-seting-item"> + <li class="project-seting-item" *ngIf="areStartedEndpoints(element)"> <i class="material-icons">pause_circle_outline</i> - <a class="action"> + <a class="action" (click)="openEdgeDialog('stop', element )"> Stop edge node </a> </li> - <li class="project-seting-item"> + <li class="project-seting-item" *ngIf="areStoppedEndpoints(element) || areStartedEndpoints(element)"> <i class="material-icons">highlight_off</i> - <a class="action"> + <a class="action" (click)="openEdgeDialog('terminate', element)"> Terminate edge node </a> </li> diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.ts b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.ts index ddc5acb..a8605bd 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/administration/project/project-list/project-list.component.ts @@ -17,14 +17,16 @@ * under the License. */ -import { Component, OnInit, Output, EventEmitter, OnDestroy } from '@angular/core'; +import {Component, OnInit, Output, EventEmitter, OnDestroy, Inject} from '@angular/core'; import { ToastrService } from 'ngx-toastr'; import { MatTableDataSource } from '@angular/material/table'; import { Subscription } from 'rxjs'; +import { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog'; import { ProjectDataService } from '../project-data.service'; import { Project, Endpoint } from '../project.component'; import { CheckUtils } from '../../../core/util'; +import {EdgeActionDialogComponent} from "../../../shared/modal-dialog/edge-action-dialog"; @Component({ selector: 'project-list', @@ -45,8 +47,12 @@ export class ProjectListComponent implements OnInit, OnDestroy { constructor( public toastr: ToastrService, - private projectDataService: ProjectDataService - ) { } + private projectDataService: ProjectDataService, + @Inject(MAT_DIALOG_DATA) public data: any, + public dialogRef: MatDialogRef<ProjectListComponent>, + public dialog: MatDialog, + ) { + } ngOnInit() { @@ -65,13 +71,13 @@ export class ProjectListComponent implements OnInit, OnDestroy { const filteredList = this.projectList.map(project => { project.endpoints = project.endpoints.filter((endpoint: Endpoint) => endpoint.status !== 'TERMINATED' && endpoint.status !== 'TERMINATING' && endpoint.status !== 'FAILED') return project; - }) + }); this.dataSource = new MatTableDataSource(filteredList); } public toggleEndpointAction(project, action, endpoint) { - this.toggleStatus.emit({ project, endpoint, action }); + this.toggleStatus.emit({project, endpoint, action}); } public editProject(item: Project[]) { @@ -95,4 +101,35 @@ export class ProjectListComponent implements OnInit, OnDestroy { public toEndpointStatus(status) { return CheckUtils.endpointStatus[status] || status; } -} \ No newline at end of file + + public openEdgeDialog(action, project) { + const endpoints = project.endpoints.filter(endpoint => { + if(action === "stop"){ + return endpoint.status == 'RUNNING' + } + if(action === "start"){ + return endpoint.status == 'STOPPED' + } + if(action === "terminate"){ + return endpoint.status == 'RUNNING' || endpoint.status == 'STOPPED' + } + }); + this.dialog.open(EdgeActionDialogComponent, {data: {type: action, item: endpoints}, panelClass: 'modal-sm'}) + .afterClosed().subscribe(endpoint => { + this.toggleStatus.emit({project, endpoint, action}); + console.log(endpoint) + // result && this.endpointService.deleteEndpoint(data.name).subscribe(() => { + // this.toastr.success('Endpoint successfully deleted!', 'Success!'); + + // }, error => this.toastr.error(error.message || 'Endpoint creation failed!', 'Oops!')); + }); + } + + public areStartedEndpoints(project) { + return project.endpoints.filter(endpoint => endpoint.status == 'RUNNING').length > 0; + } + + public areStoppedEndpoints(project) { + return project.endpoints.filter(endpoint => endpoint.status == 'STOPPED').length > 0; + } +} diff --git a/services/self-service/src/main/resources/webapp/src/app/administration/project/project.component.ts b/services/self-service/src/main/resources/webapp/src/app/administration/project/project.component.ts index a501ccc..6ea0c25 100644 --- a/services/self-service/src/main/resources/webapp/src/app/administration/project/project.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/administration/project/project.component.ts @@ -114,24 +114,28 @@ export class ProjectComponent implements OnInit, OnDestroy { } public toggleStatus($event) { - const data = { 'project_name': $event.project.name, endpoint: $event.endpoint.name }; - if ($event.action === 'stop' || $event.action === 'terminate') { - this.dialog.open(NotificationDialogComponent, { - data: { - type: 'confirmation', - template: `Edge node in endpoint <span class="strong">${$event.endpoint.name}</span> will be ${$event.action === 'stop' ? 'stopped' : 'terminated'} for <span class="strong">${$event.project.name}</span>`, - item: $event.endpoint, action: $event.action === 'stop' ? 'stopped' : 'terminated' - }, panelClass: 'modal-sm' - }) - .afterClosed().subscribe(result => { - result && this.toggleStatusRequest(data, $event.action); - }, error => this.toastr.error(error.message, 'Oops!')); - } else { - this.toggleStatusRequest(data, $event.action); - } + console.log($event); + const data = { 'project_name': $event.project.name, endpoint: $event.endpoint.map(endpoint => endpoint.name)}; + + console.log(data) + // if ($event.action === 'stop' || $event.action === 'terminate') { + // this.dialog.open(NotificationDialogComponent, { + // data: { + // type: 'confirmation', + // template: `Edge node in endpoint <span class="strong">${$event.endpoint.name}</span> will be ${$event.action === 'stop' ? 'stopped' : 'terminated'} for <span class="strong">${$event.project.name}</span>`, + // item: $event.endpoint, action: $event.action === 'stop' ? 'stopped' : 'terminated' + // }, panelClass: 'modal-sm' + // }) + // .afterClosed().subscribe(result => { + // result && this.toggleStatusRequest(data, $event.action); + // }, error => this.toastr.error(error.message, 'Oops!')); + // } else { + // this.toggleStatusRequest(data, $event.action); + // } } private toggleStatusRequest(data, action) { + console.log(data); this.projectService.toggleProjectStatus(data, action).subscribe(() => { this.refreshGrid(); this.toastr.success(`Endpoint ${this.toEndpointAction(action)} is in progress!`, 'Processing!'); diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/material.module.ts b/services/self-service/src/main/resources/webapp/src/app/shared/material.module.ts index ef81fe5..f5b953d 100644 --- a/services/self-service/src/main/resources/webapp/src/app/shared/material.module.ts +++ b/services/self-service/src/main/resources/webapp/src/app/shared/material.module.ts @@ -52,6 +52,7 @@ import { MatTabsModule } from '@angular/material/tabs'; import { MatToolbarModule } from '@angular/material/toolbar'; import { MatTooltipModule } from '@angular/material/tooltip'; import { DateAdapter } from '@angular/material/core'; +import { EdgeActionDialogComponent } from './modal-dialog/edge-action-dialog/edge-action-dialog.component'; @NgModule({ exports: [ diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/navbar/index.ts b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/edge-action-dialog/index.ts similarity index 60% copy from services/self-service/src/main/resources/webapp/src/app/shared/navbar/index.ts copy to services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/edge-action-dialog/index.ts index c5f19a4..fd6e98a 100644 --- a/services/self-service/src/main/resources/webapp/src/app/shared/navbar/index.ts +++ b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/edge-action-dialog/index.ts @@ -19,25 +19,16 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { RouterModule } from '@angular/router'; -import { MaterialModule } from '../material.module'; -import { ProgressDialogModule, BubbleModule } from '../index'; +import { EdgeActionDialogComponent } from './edge-action-dialog.component'; +import { MaterialModule } from '../../material.module'; +import {FormsModule} from "@angular/forms"; -import { NavbarComponent } from './navbar.component'; -import { NotificationDialogModule } from '../modal-dialog/notification-dialog'; - -export * from './navbar.component'; +export * from './edge-action-dialog.component'; @NgModule({ - imports: [ - CommonModule, - RouterModule, - MaterialModule, - NotificationDialogModule, - ProgressDialogModule, - BubbleModule - ], - declarations: [NavbarComponent], - exports: [NavbarComponent, RouterModule] + imports: [CommonModule, MaterialModule, FormsModule], + declarations: [EdgeActionDialogComponent], + entryComponents: [EdgeActionDialogComponent], + exports: [EdgeActionDialogComponent] }) -export class NavbarModule { } +export class EdgeActionDialogModule {} diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/navbar/index.ts b/services/self-service/src/main/resources/webapp/src/app/shared/navbar/index.ts index c5f19a4..c852892 100644 --- a/services/self-service/src/main/resources/webapp/src/app/shared/navbar/index.ts +++ b/services/self-service/src/main/resources/webapp/src/app/shared/navbar/index.ts @@ -25,6 +25,7 @@ import { ProgressDialogModule, BubbleModule } from '../index'; import { NavbarComponent } from './navbar.component'; import { NotificationDialogModule } from '../modal-dialog/notification-dialog'; +import {EdgeActionDialogModule} from "../modal-dialog/edge-action-dialog"; export * from './navbar.component'; @@ -34,8 +35,10 @@ export * from './navbar.component'; RouterModule, MaterialModule, NotificationDialogModule, + EdgeActionDialogModule, ProgressDialogModule, - BubbleModule + BubbleModule, + EdgeActionDialogModule ], declarations: [NavbarComponent], exports: [NavbarComponent, RouterModule] --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org