You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@submarine.apache.org by li...@apache.org on 2020/07/29 14:00:24 UTC

[submarine] branch master updated: SUBMARINE-573. [WEB] Add checkbox in experiment page

This is an automated email from the ASF dual-hosted git repository.

liuxun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/submarine.git


The following commit(s) were added to refs/heads/master by this push:
     new 539e9f3  SUBMARINE-573. [WEB] Add checkbox in experiment page
539e9f3 is described below

commit 539e9f38d219eb6042ff42dfd1cc6160f2b12f68
Author: kevin85421 <b0...@ntu.edu.tw>
AuthorDate: Tue Jul 28 19:17:18 2020 +0800

    SUBMARINE-573. [WEB] Add checkbox in experiment page
    
    ### What is this PR for?
    1. Add checkbox in the experiment page.
    Checkbox enables users to delete multiple experiments at the same time.
    
    2. Fix experiment E2E testcase
    
    ### What type of PR is it?
    [Improvement]
    
    ### Todos
    1. Create Experiments via Web UI
    2. Add E2E testcases
    
    ### What is the Jira issue?
    https://issues.apache.org/jira/browse/SUBMARINE-573
    
    ### How should this be tested?
    https://travis-ci.org/github/kevin85421/hadoop-submarine
    
    ### Screenshots (if appropriate)
    ![SUBMARINE-checkbox](https://user-images.githubusercontent.com/20109646/88566103-20947d80-d068-11ea-9abb-111ffcaa813c.gif)
    
    ### Questions:
    * Does the licenses files need update? No
    * Is there breaking changes for older versions? No
    * Does this needs documentation? No
    
    Author: kevin85421 <b0...@ntu.edu.tw>
    
    Closes #363 from kevin85421/SUBMARINE-573 and squashes the following commits:
    
    450bc6d [kevin85421] Update submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.ts
    040908a [kevin85421] SUBMARINE-573. [WEB] Revise Angular code style
    3846bf4 [kevin85421] SUBMARINE-573. [WEB] Add checkbox in experiment page
---
 .../apache/submarine/integration/experimentIT.java |  8 ++++++
 .../workbench/experiment/experiment.component.html | 24 ++++++++++++++--
 .../workbench/experiment/experiment.component.ts   | 32 ++++++++++++++++++++--
 3 files changed, 58 insertions(+), 6 deletions(-)

diff --git a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/experimentIT.java b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/experimentIT.java
index 7dce204..a450f82 100644
--- a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/experimentIT.java
+++ b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/experimentIT.java
@@ -27,6 +27,13 @@ import org.testng.Assert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
+import org.testng.Assert;
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import sun.rmi.runtime.Log;
+import org.apache.submarine.CommandExecutor;
+import org.apache.submarine.ProcessData;
+import java.io.File;
 
 public class experimentIT extends AbstractSubmarineIT {
 
@@ -45,6 +52,7 @@ public class experimentIT extends AbstractSubmarineIT {
 
   @Test
   public void experimentNavigation() throws Exception {
+    LOG.info("[Testacse: experimentNavigation]");
     // Init the page object
     ExperimentPage experimentPage = new ExperimentPage(driver);
     // Login
diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.html b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.html
index 480b32e..246ab8a 100644
--- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.html
+++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/experiment/experiment.component.html
@@ -62,12 +62,24 @@
           nz-button
           id="openExperiment"
           nzType="primary"
-          style="margin-right: 30px; margin-bottom: 15px; margin-top: 15px;"
+          style="margin-right: 5px; margin-bottom: 15px; margin-top: 15px;"
           (click)="isVisible = true"
         >
           <i nz-icon nzType="plus"></i>
           New Experiment
         </button>
+        <button
+          nz-button
+          nzType="primary"
+          style="margin-bottom: 15px; margin-top: 15px;"
+          nz-popconfirm
+          nzTitle="Confirm to delete?"
+          nzCancelText="Cancel"
+          nzOkText="Ok"
+          (nzOnConfirm)="deleteExperiments()"
+        >
+          Delete
+        </button>
       </div>
       <nz-table
         id="releaseTable"
@@ -79,6 +91,9 @@
       >
         <thead>
           <tr>
+            <th>
+              <label nz-checkbox [(ngModel)]="selectAllChecked" (ngModelChange)="selectAll()"></label>
+            </th>
             <th>Experiment Name</th>
             <th>Experiment ID</th>
             <th>Status</th>
@@ -91,7 +106,10 @@
           </tr>
         </thead>
         <tbody>
-          <tr *ngFor="let data of basicTable.data">
+          <tr *ngFor="let data of basicTable.data; let i = index">
+            <td>
+              <label nz-checkbox [(ngModel)]="checkedList[i]"></label>
+            </td>
             <td>{{ data.name }}</td>
             <td>
               <a [routerLink]="['info', data.experimentId]" (click)="experimentID = data.experimentId; isInfo = true">
@@ -126,7 +144,7 @@
                     nzTitle="Confirm to delete?"
                     nzCancelText="Cancel"
                     nzOkText="Ok"
-                    (nzOnConfirm)="onDeleteExperiment(data)"
+                    (nzOnConfirm)="onDeleteExperiment(data, true)"
                   >
                     Delete
                   </li>
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 37af51c..7765f8c 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
@@ -33,6 +33,8 @@ import { SpecMeta, Specs, SpecEnviroment, ExperimentSpec } from '@submarine/inte
 })
 export class ExperimentComponent implements OnInit {
   experimentList: ExperimentInfo[] = [];
+  checkedList: boolean[] = [];
+  selectAllChecked: boolean = false;
   // About experiment information
   isInfo = false;
   experimentID: string;
@@ -274,16 +276,25 @@ export class ExperimentComponent implements OnInit {
   fetchExperimentList() {
     this.experimentService.fetchExperimentList().subscribe((list) => {
       this.experimentList = list;
+      this.checkedList = [];
+      for (let i = 0; i < this.experimentList.length; i++) {
+        this.checkedList.push(false);
+      }
     });
   }
-  onDeleteExperiment(data: ExperimentInfo) {
+
+  onDeleteExperiment(data: ExperimentInfo, onMessage: boolean) {
     this.experimentService.deleteExperiment(data.experimentId).subscribe(
       () => {
-        this.nzMessageService.success('Delete user success!');
+        if (onMessage === true) {
+          this.nzMessageService.success('Delete Experiment Successfully!');
+        }
         this.fetchExperimentList();
       },
       (err) => {
-        this.nzMessageService.success(err.message);
+        if (onMessage === true) {
+          this.nzMessageService.success(err.message);
+        }
       }
     );
   }
@@ -300,6 +311,21 @@ export class ExperimentComponent implements OnInit {
     }
   }
 
+  deleteExperiments() {
+    for (let i = this.checkedList.length - 1; i >= 0; i--) {
+      if (this.checkedList[i] === true) {
+        this.onDeleteExperiment(this.experimentList[i], false);
+      }
+    }
+
+    this.selectAllChecked = false;
+  }
+
+  selectAll() {
+    for (let i = 0; i < this.checkedList.length; i++) {
+      this.checkedList[i] = this.selectAllChecked;
+    }
+  }
   // TODO(jasoonn): Filter experiment list
   filter(event) {
     console.log(this.searchText + event.key);


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@submarine.apache.org
For additional commands, e-mail: dev-help@submarine.apache.org