From a9fef617875b5e9400a4121ca6ddf5d3fc093929 Mon Sep 17 00:00:00 2001 From: Kevin Su Date: Mon, 7 Sep 2020 17:38:49 +0800 Subject: [PATCH] SUBMARINE-609. [WEB] Delete environment through UI --- .../src/app/interfaces/environment-spec.ts | 1 + .../environment/environment.component.html | 2 +- .../environment/environment.component.ts | 35 ++++++++++++++++--- .../experiment/experiment.component.ts | 2 +- .../src/app/services/environment.service.ts | 16 +++++++-- 5 files changed, 47 insertions(+), 9 deletions(-) diff --git a/submarine-workbench/workbench-web-ng/src/app/interfaces/environment-spec.ts b/submarine-workbench/workbench-web-ng/src/app/interfaces/environment-spec.ts index bfe702f26..ffc32e88e 100644 --- a/submarine-workbench/workbench-web-ng/src/app/interfaces/environment-spec.ts +++ b/submarine-workbench/workbench-web-ng/src/app/interfaces/environment-spec.ts @@ -23,6 +23,7 @@ export interface KernelSpec { } export interface EnvironmentSpec { + name: string; description: string; dockerImage: string; image: string; diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.html b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.html index 6ff5a4513..10de4d5ed 100644 --- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.html +++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.html @@ -71,7 +71,7 @@

Environment

nzTitle="Confirm to delete?" nzCancelText="Cancel" nzOkText="Ok" - (nzOnConfirm)="deleteEnvironment()" + (nzOnConfirm)="deleteEnvironments()" > Delete diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.ts b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.ts index 256fe2d70..dbef9ec5f 100644 --- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.ts +++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/environment/environment.component.ts @@ -18,8 +18,9 @@ */ import { Component, OnInit } from '@angular/core'; -import { EnvironmentService } from '@submarine/services/environment.service'; import { Environment } from '@submarine/interfaces/environment-info'; +import { EnvironmentService } from '@submarine/services/environment.service'; +import { NzMessageService } from 'ng-zorro-antd'; @Component({ selector: 'submarine-environment', @@ -27,7 +28,9 @@ import { Environment } from '@submarine/interfaces/environment-info'; styleUrls: ['./environment.component.scss'] }) export class EnvironmentComponent implements OnInit { - constructor(private environmentService: EnvironmentService) {} + constructor( + private environmentService: EnvironmentService, + private nzMessageService: NzMessageService) {} environmentList: Environment[] = []; checkedList: boolean[] = []; @@ -53,8 +56,32 @@ export class EnvironmentComponent implements OnInit { // TODO(kobe860219): Update an environment updateEnvironment(id: string, data) {} - // TODO(kobe860219): Delete an environment - deleteEnvironment(id: string) {} + onDeleteEnvironment(name: string, onMessage: boolean) { + this.environmentService.deleteEnvironment(name).subscribe( + () => { + if (onMessage === true) { + this.nzMessageService.success('Delete Experiment Successfully!'); + } + this.fetchEnvironmentList(); + }, + (err) => { + if (onMessage === true) { + this.nzMessageService.error(err.message); + } + } + ); + } + + deleteEnvironments() { + for (let i = this.checkedList.length - 1; i >= 0; i--) { + console.log(this.environmentList[i].environmentSpec.name) + if (this.checkedList[i] === true) { + this.onDeleteEnvironment(this.environmentList[i].environmentSpec.name, false); + } + } + + this.selectAllChecked = false; + } selectAllEnv() { for (let i = 0; i < this.checkedList.length; i++) { diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.ts b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.ts index f22ee4a31..69f0a3ef7 100644 --- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.ts +++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.ts @@ -430,7 +430,7 @@ export class ExperimentComponent implements OnInit { }, (err) => { if (onMessage === true) { - this.nzMessageService.success(err.message); + this.nzMessageService.error(err.message); } } ); diff --git a/submarine-workbench/workbench-web-ng/src/app/services/environment.service.ts b/submarine-workbench/workbench-web-ng/src/app/services/environment.service.ts index 7ace6b0be..7f283652a 100644 --- a/submarine-workbench/workbench-web-ng/src/app/services/environment.service.ts +++ b/submarine-workbench/workbench-web-ng/src/app/services/environment.service.ts @@ -20,10 +20,10 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Rest } from '@submarine/interfaces'; +import { Environment } from '@submarine/interfaces/environment-info'; import { BaseApiService } from '@submarine/services/base-api.service'; import { of, throwError, Observable } from 'rxjs'; import { catchError, map, switchMap } from 'rxjs/operators'; -import { Environment } from '@submarine/interfaces/environment-info'; @Injectable({ providedIn: 'root' @@ -54,6 +54,16 @@ export class EnvironmentService { // TODO(kobe860219): Update an environment updateEnvironment(updateData) {} - // TODO(kobe860219): Delete an environment - deleteEnvironment(id: string) {} + deleteEnvironment(name: string): Observable { + const apiUrl = this.baseApi.getRestApi(`/v1/environment/${name}`); + return this.httpClient.delete>(apiUrl).pipe( + switchMap((res) => { + if (res.success) { + return of(res.result); + } else { + throw this.baseApi.createRequestError(res.message, res.code, apiUrl, 'delete', name); + } + }) + ); + } }