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/09/26 06:36:33 UTC

[submarine] branch master updated: SUBMARINE-628. [WEB] Disable WIP page link

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 baf0676  SUBMARINE-628. [WEB] Disable WIP page link
baf0676 is described below

commit baf06763481fbc850351774f21ce53ad9434571b
Author: Kevin Su <pi...@gmail.com>
AuthorDate: Fri Sep 25 11:51:04 2020 +0800

    SUBMARINE-628. [WEB] Disable WIP page link
    
    ### What is this PR for?
    There are some pages still WIP, temporarily disable those page links.
    and disable related integration tests
    
    ### What type of PR is it?
    [Improvement]
    
    ### Todos
    * [ ] - Task
    
    ### What is the Jira issue?
    https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE-628
    
    ### How should this be tested?
    https://travis-ci.org/github/pingsutw/hadoop-submarine/builds/729560198
    
    ### Screenshots (if appropriate)
    ![Screenshot from 2020-09-23 17-05-43](https://user-images.githubusercontent.com/37936015/94103060-2e972c80-fe66-11ea-935f-366090aa58cc.png)
    
    ### Questions:
    * Does the licenses files need update? No
    * Is there breaking changes for older versions? No
    * Does this needs documentation? No
    
    Author: Kevin Su <pi...@gmail.com>
    
    Closes #410 from pingsutw/SUBMARINE-628 and squashes the following commits:
    
    8120250 [Kevin Su] Disable workbench home
    42eaf5b [Kevin Su] Update test
    80cabc0 [Kevin Su] Update test
    8a3166c [Kevin Su] Update test
    f0e045f [Kevin Su] Update test
    800c34c [Kevin Su] Update test
    792d5cb [Kevin Su] SUBMARINE-628. [WEB] Disable WIP page link
---
 .../submarine/integration/SubmarineLogIT.java      |  7 ---
 .../org/apache/submarine/integration/dataIT.java   | 16 +++--
 .../apache/submarine/integration/datadictIT.java   | 19 +++---
 .../org/apache/submarine/integration/homeIT.java   | 13 ++---
 .../submarine/integration/interpreterIT.java       | 11 ++--
 .../apache/submarine/integration/sidebarIT.java    | 22 +++----
 .../org/apache/submarine/integration/teamIT.java   | 15 ++---
 .../apache/submarine/integration/workspaceIT.java  | 17 +++---
 .../app/pages/workbench/workbench.component.html   |  9 +--
 .../src/app/pages/workbench/workbench.component.ts | 68 +++++++++++++---------
 10 files changed, 104 insertions(+), 93 deletions(-)

diff --git a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/SubmarineLogIT.java b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/SubmarineLogIT.java
index d4447e4..11dce9a 100644
--- a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/SubmarineLogIT.java
+++ b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/SubmarineLogIT.java
@@ -18,19 +18,12 @@
  */
 package org.apache.submarine.integration;
 
-import bsh.StringUtil;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.submarine.AbstractSubmarineIT;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.annotations.Test;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 
 public class SubmarineLogIT extends AbstractSubmarineIT {
   public final static Logger LOG = LoggerFactory.getLogger(SubmarineLogIT.class);
diff --git a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/dataIT.java b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/dataIT.java
index f574c67..4b9a46d 100644
--- a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/dataIT.java
+++ b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/dataIT.java
@@ -19,14 +19,17 @@ package org.apache.submarine.integration;
 
 import org.apache.submarine.AbstractSubmarineIT;
 import org.apache.submarine.WebDriverManager;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.Assert;
 import org.openqa.selenium.By;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.Assert;
 
+
+@Ignore("SUBMARINE-628")
 public class dataIT extends AbstractSubmarineIT {
 
   public final static Logger LOG = LoggerFactory.getLogger(dataIT.class);
@@ -42,6 +45,7 @@ public class dataIT extends AbstractSubmarineIT {
     driver.quit();
   }
 
+
   @Test
   public void dataNavigation() throws Exception {
     // Login
@@ -57,13 +61,13 @@ public class dataIT extends AbstractSubmarineIT {
 
     // Test create new Table
     pollingWait(By.xpath("//button[@id='createBtn']"), MAX_BROWSER_TIMEOUT_SEC).click();
-    Assert.assertEquals(pollingWait(By.xpath("//form"), MAX_BROWSER_TIMEOUT_SEC).isDisplayed(), true);
+    Assert.assertTrue(pollingWait(By.xpath("//form"), MAX_BROWSER_TIMEOUT_SEC).isDisplayed());
 
     pollingWait(By.xpath("//button[@id='firstNextBtn']"), MAX_BROWSER_TIMEOUT_SEC).click();
     pollingWait(By.xpath("//input[@id='tableName']"), MAX_BROWSER_TIMEOUT_SEC).sendKeys("e2e test Table");
     pollingWait(By.xpath("//button[@id='secondNextBtn']"), MAX_BROWSER_TIMEOUT_SEC).click();
 
     pollingWait(By.xpath("//button[@id='submit']"), MAX_BROWSER_TIMEOUT_SEC).click();
-    Assert.assertEquals(pollingWait(By.xpath("//thead"), MAX_BROWSER_TIMEOUT_SEC).isDisplayed(), true);
+    Assert.assertTrue(pollingWait(By.xpath("//thead"), MAX_BROWSER_TIMEOUT_SEC).isDisplayed());
   }
 }
diff --git a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/datadictIT.java b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/datadictIT.java
index 329ff24..f545538 100644
--- a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/datadictIT.java
+++ b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/datadictIT.java
@@ -19,19 +19,14 @@ package org.apache.submarine.integration;
 
 import org.apache.submarine.AbstractSubmarineIT;
 import org.apache.submarine.WebDriverManager;
-import org.apache.submarine.SubmarineITUtils;
+import org.openqa.selenium.By;
 import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
-import org.openqa.selenium.By;
-import org.openqa.selenium.Keys;
-import org.openqa.selenium.interactions.Actions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.testng.Assert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.Assert;
-import java.util.*;
 
 public class datadictIT extends AbstractSubmarineIT {
 
@@ -57,7 +52,7 @@ public class datadictIT extends AbstractSubmarineIT {
     clickAndWait(By.cssSelector("button[class='login-form-button ant-btn ant-btn-primary']"));
     pollingWait(By.cssSelector("a[routerlink='/workbench/dashboard']"), MAX_BROWSER_TIMEOUT_SEC);
 
-    // Start Routing & Navigation in data-dict 
+    // Start Routing & Navigation in data-dict
     LOG.info("Start Routing & Navigation in data-dict");
     pollingWait(By.xpath("//span[contains(text(), \"Manager\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
     WebDriverWait wait = new WebDriverWait( driver, 60);
@@ -76,14 +71,14 @@ public class datadictIT extends AbstractSubmarineIT {
     pollingWait(By.cssSelector("button[class='ant-btn ng-star-inserted ant-btn-default']"), MAX_BROWSER_TIMEOUT_SEC).click();
     Assert.assertEquals( driver.findElements(By.xpath("//div[contains(text(), \"Add\")]")).size(), 0);
     // Add --> set input --> close
-    pollingWait(By.cssSelector("form > nz-form-item:nth-child(3) > nz-form-control > div > span > button.ant-btn.ant-btn-default"), MAX_BROWSER_TIMEOUT_SEC).click(); 
+    pollingWait(By.cssSelector("form > nz-form-item:nth-child(3) > nz-form-control > div > span > button.ant-btn.ant-btn-default"), MAX_BROWSER_TIMEOUT_SEC).click();
     pollingWait(By.xpath("//input[@id='inputNewDictCode']"), MAX_BROWSER_TIMEOUT_SEC).sendKeys("test new dict code");
     pollingWait(By.xpath("//input[@id='inputNewDictName']"), MAX_BROWSER_TIMEOUT_SEC).sendKeys("test new dict name");
     pollingWait(By.xpath("//input[@id='inputNewDictDescription']"), MAX_BROWSER_TIMEOUT_SEC).sendKeys("test new dict description");
     pollingWait(By.cssSelector("button[class='ant-btn ng-star-inserted ant-btn-default']"), MAX_BROWSER_TIMEOUT_SEC).click();
     Assert.assertEquals( driver.findElements(By.xpath("//td[@id='dataDictCodetest new dict code']")).size(), 0);
-    // Add --> set input --> ok --> new dict 
-    pollingWait(By.cssSelector("form > nz-form-item:nth-child(3) > nz-form-control > div > span > button.ant-btn.ant-btn-default"), MAX_BROWSER_TIMEOUT_SEC).click(); 
+    // Add --> set input --> ok --> new dict
+    pollingWait(By.cssSelector("form > nz-form-item:nth-child(3) > nz-form-control > div > span > button.ant-btn.ant-btn-default"), MAX_BROWSER_TIMEOUT_SEC).click();
     pollingWait(By.xpath("//input[@id='inputNewDictCode']"), MAX_BROWSER_TIMEOUT_SEC).sendKeys("test new dict code");
     pollingWait(By.xpath("//input[@id='inputNewDictName']"), MAX_BROWSER_TIMEOUT_SEC).sendKeys("test new dict name");
     pollingWait(By.xpath("//input[@id='inputNewDictDescription']"), MAX_BROWSER_TIMEOUT_SEC).sendKeys("test new dict description");
@@ -109,7 +104,7 @@ public class datadictIT extends AbstractSubmarineIT {
     pollingWait(By.xpath("//li[@id='dataDictConfigurationPROJECT_TYPE']"), MAX_BROWSER_TIMEOUT_SEC).click();
     Assert.assertEquals( driver.findElements(By.xpath("//td[contains(text(), \"qqq\")]")).size(), 1);
     pollingWait(By.xpath("//button[@class='ant-btn ng-star-inserted ant-btn-primary']"), MAX_BROWSER_TIMEOUT_SEC).click();
-  
+
     // Edit button
     LOG.info("[TEST] Edit button");
     // Edit dict --> Update --> OK --> More --> Configuration
diff --git a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/homeIT.java b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/homeIT.java
index 446d8c8..043fd7c 100644
--- a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/homeIT.java
+++ b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/homeIT.java
@@ -19,19 +19,18 @@ package org.apache.submarine.integration;
 
 import org.apache.submarine.AbstractSubmarineIT;
 import org.apache.submarine.WebDriverManager;
-import org.apache.submarine.SubmarineITUtils;
-import org.openqa.selenium.support.ui.ExpectedConditions;
-import org.openqa.selenium.support.ui.WebDriverWait;
+import org.junit.Ignore;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.By;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.Assert;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.Assert;
 import java.util.List;
 
+@Ignore("SUBMARINE-628")
 public class homeIT extends AbstractSubmarineIT {
 
   public final static Logger LOG = LoggerFactory.getLogger(homeIT.class);
diff --git a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/interpreterIT.java b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/interpreterIT.java
index 99c385c..3e4314c 100644
--- a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/interpreterIT.java
+++ b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/interpreterIT.java
@@ -19,15 +19,16 @@ package org.apache.submarine.integration;
 
 import org.apache.submarine.AbstractSubmarineIT;
 import org.apache.submarine.WebDriverManager;
-import org.apache.submarine.SubmarineITUtils;
+import org.junit.Ignore;
 import org.openqa.selenium.By;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.Assert;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.Assert;
 
+@Ignore("SUBMARINE-628")
 public class interpreterIT extends AbstractSubmarineIT {
 
   public final static Logger LOG = LoggerFactory.getLogger(interpreterIT.class);
diff --git a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/sidebarIT.java b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/sidebarIT.java
index 796ab78..429a14d 100644
--- a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/sidebarIT.java
+++ b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/sidebarIT.java
@@ -56,19 +56,23 @@ public class sidebarIT extends AbstractSubmarineIT {
 
     // Start Routing & Navigation in sidebar
     LOG.info("Start Routing & Navigation in sidebar");
-    pollingWait(By.xpath("//span[contains(text(), \"Workspace\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
-    Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/workspace");
-    pollingWait(By.xpath("//span[contains(text(), \"Interpreter\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
-    Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/interpreter");
     pollingWait(By.xpath("//span[contains(text(), \"Experiment\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
     Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/experiment");
-    pollingWait(By.xpath("//span[contains(text(), \"Data\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
-    Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/data");
-    pollingWait(By.xpath("//span[contains(text(), \"Model\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
-    Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/model");
     pollingWait(By.xpath("//span[contains(text(), \"Manager\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
     pollingWait(By.xpath("//a[@href='/workbench/manager/user']"), MAX_BROWSER_TIMEOUT_SEC).click();
 
+    // SUBMARINE-628. [WEB] Disable WIP page link
+//    pollingWait(By.xpath("//span[contains(text(), \"Workspace\")]"), MAX_BROWSER_TIMEOUT_SEC).click()
+//    Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/workspace");
+//    pollingWait(By.xpath("//span[contains(text(), \"Interpreter\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
+//    Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/interpreter");
+//    pollingWait(By.xpath("//span[contains(text(), \"Data\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
+//    Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/data");
+//    pollingWait(By.xpath("//span[contains(text(), \"Model\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
+//    Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/model");
+//    pollingWait(By.xpath("//span[contains(text(), \"Home\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
+//    Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/home");
+
     // Lazy-loading
     WebDriverWait wait = new WebDriverWait( driver, 15, 5000);
     pollingWait(By.xpath("//a[@href='/workbench/manager/user']"), MAX_BROWSER_TIMEOUT_SEC).click();
@@ -77,7 +81,5 @@ public class sidebarIT extends AbstractSubmarineIT {
 
     pollingWait(By.xpath("//a[@href='/workbench/manager/dataDict']"), MAX_BROWSER_TIMEOUT_SEC).click();
     Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/manager/dataDict");
-    pollingWait(By.xpath("//span[contains(text(), \"Home\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
-    Assert.assertEquals(driver.getCurrentUrl(), "http://localhost:8080/workbench/home");
   }
 }
diff --git a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/teamIT.java b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/teamIT.java
index f0b87ef..c096768 100644
--- a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/teamIT.java
+++ b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/teamIT.java
@@ -19,15 +19,16 @@ package org.apache.submarine.integration;
 
 import org.apache.submarine.AbstractSubmarineIT;
 import org.apache.submarine.WebDriverManager;
-import org.apache.submarine.SubmarineITUtils;
+import org.junit.Ignore;
 import org.openqa.selenium.By;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.Assert;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.Assert;
 
+@Ignore("SUBMARINE-628")
 public class teamIT extends AbstractSubmarineIT {
 
   public final static Logger LOG = LoggerFactory.getLogger(teamIT.class);
@@ -58,12 +59,12 @@ public class teamIT extends AbstractSubmarineIT {
 
     //Test team part
     pollingWait(By.xpath("//li[contains(text(), \"Team\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
-    Assert.assertEquals(pollingWait(By.xpath("//div[@id='teamDiv']"), MAX_BROWSER_TIMEOUT_SEC).isDisplayed(), true);
+    Assert.assertTrue(pollingWait(By.xpath("//div[@id='teamDiv']"), MAX_BROWSER_TIMEOUT_SEC).isDisplayed());
 
     clickAndWait(By.cssSelector("button[id='btnAddTeam']"));
     pollingWait(By.xpath("//input[@id='inputNewTeamName']"), MAX_BROWSER_TIMEOUT_SEC).sendKeys("NewTeamNameTest");
     pollingWait(By.xpath("//input[@id='inputNewTeamOwner']"), MAX_BROWSER_TIMEOUT_SEC).sendKeys("NewTeamOwnerTest");
     clickAndWait(By.cssSelector("button[id='submitNewTeamBtn']"));
-    Assert.assertEquals(pollingWait(By.xpath("//td[contains(., 'NewTeamNameTest')]"), MAX_BROWSER_TIMEOUT_SEC).isDisplayed(), true);
+    Assert.assertTrue(pollingWait(By.xpath("//td[contains(., 'NewTeamNameTest')]"), MAX_BROWSER_TIMEOUT_SEC).isDisplayed());
   }
 }
diff --git a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/workspaceIT.java b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/workspaceIT.java
index 929f2a3..14a5c44 100644
--- a/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/workspaceIT.java
+++ b/submarine-test/test-e2e/src/test/java/org/apache/submarine/integration/workspaceIT.java
@@ -19,17 +19,18 @@ package org.apache.submarine.integration;
 
 import org.apache.submarine.AbstractSubmarineIT;
 import org.apache.submarine.WebDriverManager;
-import org.apache.submarine.SubmarineITUtils;
+import org.junit.Ignore;
 import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.WebDriverWait;
 import org.openqa.selenium.By;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.testng.Assert;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.Assert;
 
+@Ignore("SUBMARINE-628")
 public class workspaceIT extends AbstractSubmarineIT {
 
   public final static Logger LOG = LoggerFactory.getLogger(workspaceIT.class);
@@ -60,7 +61,7 @@ public class workspaceIT extends AbstractSubmarineIT {
 
     WebDriverWait wait = new WebDriverWait( driver, 60);
     wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[contains(text(), \"Release\")]")));
-    
+
     //Test release part
     pollingWait(By.xpath("//li[contains(text(), \"Release\")]"), MAX_BROWSER_TIMEOUT_SEC).click();
     Assert.assertEquals(pollingWait(By.xpath("//nz-table[@id='releaseTable']"), MAX_BROWSER_TIMEOUT_SEC).isDisplayed(), true);
@@ -96,8 +97,8 @@ public class workspaceIT extends AbstractSubmarineIT {
     //return to project page
     Assert.assertEquals(pollingWait(By.xpath("//div[@id='addProjectbtn']"), MAX_BROWSER_TIMEOUT_SEC).isDisplayed(), true);
 
-    
-    
+
+
   }
 }
 
diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/workbench.component.html b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/workbench.component.html
index 973ddb4..b27bbd2 100644
--- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/workbench.component.html
+++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/workbench.component.html
@@ -33,9 +33,9 @@
   </div>
   <ul nz-menu nzTheme="dark" nzMode="inline" [nzInlineCollapsed]="isCollapsed">
     <ng-container *ngFor="let menu of menus">
-      <li *ngIf="menu.children" nz-submenu [nzTitle]="menu.title" [nzIcon]="menu.iconType">
+      <li *ngIf="menu.children" nz-submenu [nzDisabled]="menu.disabled" [nzTitle]="menu.title" [nzIcon]="menu.iconType">
         <ul>
-          <li nz-menu-item nzMatchRouter *ngFor="let subItem of menu.children">
+          <li nz-menu-item nzMatchRouter [nzDisabled]="menu.disabled" *ngFor="let subItem of menu.children">
             <a [routerLink]="subItem.routerLink">{{ subItem.title }}</a>
           </li>
         </ul>
@@ -44,10 +44,11 @@
         *ngIf="!menu.children"
         nz-menu-item
         nz-tooltip
+        [nzDisabled]="menu.disabled"
         [nzTitle]="menu.title"
         nzPlacement="right"
-        nzMatchRouter
-        [routerLink]="menu.routerLink"
+        [nzMatchRouter]="!menu.disabled"
+        [routerLink]="menu.disabled ? null : menu.routerLink"
       >
         <i nz-icon [nzType]="menu.iconType"></i>
         <span>{{ menu.title }}</span>
diff --git a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/workbench.component.ts b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/workbench.component.ts
index 23d6d9c..ec8c801 100644
--- a/submarine-workbench/workbench-web-ng/src/app/pages/workbench/workbench.component.ts
+++ b/submarine-workbench/workbench-web-ng/src/app/pages/workbench/workbench.component.ts
@@ -29,9 +29,11 @@ interface SidebarMenu {
   title: string;
   iconType: string;
   routerLink?: string;
+  disabled: boolean;
   children?: Array<{
     title: string;
     routerLink?: string;
+    disabled: boolean;
   }>;
 }
 
@@ -47,60 +49,72 @@ export class WorkbenchComponent implements OnInit {
     {
       title: 'Home',
       iconType: 'home',
-      routerLink: '/workbench/home'
-    },
-    {
-      title: 'Workspace',
-      iconType: 'desktop',
-      routerLink: '/workbench/workspace'
+      routerLink: '/workbench/home',
+      disabled: true
     },
     {
       title: 'Notebook',
       iconType: 'book',
-      routerLink: '/workbench/notebook'
-    },
-    {
-      title: 'Interpreter',
-      iconType: 'api',
-      routerLink: '/workbench/interpreter'
+      routerLink: '/workbench/notebook',
+      disabled: false
     },
     {
       title: 'Experiment',
       iconType: 'cluster',
-      routerLink: '/workbench/experiment'
+      routerLink: '/workbench/experiment',
+      disabled: false
     },
     {
       title: 'Environment',
       iconType: 'codepen',
-      routerLink: '/workbench/environment'
-    },
-    {
-      title: 'Data',
-      iconType: 'bar-chart',
-      routerLink: '/workbench/data'
-    },
-    {
-      title: 'Model',
-      iconType: 'experiment',
-      routerLink: '/workbench/model'
+      routerLink: '/workbench/environment',
+      disabled: false
     },
     {
       title: 'Manager',
       iconType: 'setting',
+      disabled: false,
       children: [
         {
           title: 'User',
-          routerLink: '/workbench/manager/user'
+          routerLink: '/workbench/manager/user',
+          disabled: false
         },
         {
           title: 'Data dict',
-          routerLink: '/workbench/manager/dataDict'
+          routerLink: '/workbench/manager/dataDict',
+          disabled: false
         },
         {
           title: 'Department',
-          routerLink: '/workbench/manager/department'
+          routerLink: '/workbench/manager/department',
+          disabled: false
         }
       ]
+    },
+    {
+      title: 'Data',
+      iconType: 'bar-chart',
+      routerLink: '/workbench/data',
+      disabled: true
+    },
+    {
+      title: 'Model',
+      iconType: 'experiment',
+      routerLink: '/workbench/model',
+      disabled: true
+    },
+    {
+      title: 'Workspace',
+      iconType: 'desktop',
+      routerLink: '/workbench/workspace',
+      disabled: true
+    },
+    {
+      title: 'Interpreter',
+      iconType: 'api',
+      routerLink: '/workbench/interpreter',
+      disabled: true
     }
   ];
   userInfo$: Observable<UserInfo>;


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