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