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/zeppelin.git


The following commit(s) were added to refs/heads/master by this push:
     new a4a9e07  [ZEPPELIN-4160] Fixed Move this note to trash icon always show
a4a9e07 is described below

commit a4a9e07d8f6f1d322ab8fbab7a60babd1f5dac2f
Author: Xun Liu <liu...@apache.org>
AuthorDate: Thu May 16 09:46:03 2019 +0800

    [ZEPPELIN-4160] Fixed Move this note to trash icon always show
    
    ### What is this PR for?
    when the note moved to trash, the note should show 'Remove this note 
permanently', it does not work correctly after clicked again, more ~Trash 
folder will be created
    
    ### What type of PR is it?
    [Bug Fix]
    
    ### Todos
    * [ ] - Task
    
    ### What is the Jira issue?
    * https://issues.apache.org/jira/browse/ZEPPELIN-4160
    
    ### How should this be tested?
    * [CI pass](https://travis-ci.org/liuxunorg/zeppelin/builds/532764123)
    
    ### Screenshots (if appropriate)
    
    ### Questions:
    * Does the licenses files need update? NO
    * Is there breaking changes for older versions? NO
    * Does this needs documentation? NO
    
    Author: Xun Liu <liu...@apache.org>
    
    Closes #3365 from liuxunorg/ZEPPELIN-4160 and squashes the following 
commits:
    
    03549ce87 [Xun Liu] remove console log.
    197cac235 [Xun Liu] [ZEPPELIN-4160] Move this note to trash icon always show
---
 .../org/apache/zeppelin/AbstractZeppelinIT.java    | 10 ++++++++
 .../apache/zeppelin/integration/ZeppelinIT.java    | 28 ++++++++++++++++++++++
 .../src/app/notebook/notebook.controller.js        |  2 +-
 .../src/components/note-list/note-list.factory.js  |  2 +-
 .../java/org/apache/zeppelin/notebook/Note.java    |  3 ++-
 5 files changed, 42 insertions(+), 3 deletions(-)

diff --git 
a/zeppelin-integration/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java
 
b/zeppelin-integration/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java
index 030ddeb..b7cf80d 100644
--- 
a/zeppelin-integration/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java
+++ 
b/zeppelin-integration/src/test/java/org/apache/zeppelin/AbstractZeppelinIT.java
@@ -123,6 +123,16 @@ abstract public class AbstractZeppelinIT {
     ZeppelinITUtils.sleep(100, false);
   }
 
+  protected void deleteTrashNotebook(final WebDriver driver) {
+    WebDriverWait block = new WebDriverWait(driver, MAX_BROWSER_TIMEOUT_SEC);
+    
driver.findElement(By.xpath(".//*[@id='main']//button[@ng-click='removeNote(note.id)']"))
+        .sendKeys(Keys.ENTER);
+    
block.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='main']//button[@ng-click='removeNote(note.id)']")));
+    driver.findElement(By.xpath("//div[@class='modal-dialog'][contains(.,'This 
cannot be undone. Are you sure?')]" +
+        "//div[@class='modal-footer']//button[contains(.,'OK')]")).click();
+    ZeppelinITUtils.sleep(100, false);
+  }
+
   protected void clickAndWait(final By locator) {
     pollingWait(locator, MAX_IMPLICIT_WAIT).click();
     ZeppelinITUtils.sleep(1000, false);
diff --git 
a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java
 
b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java
index 66ed342..9315056 100644
--- 
a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java
+++ 
b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ZeppelinIT.java
@@ -323,4 +323,32 @@ public class ZeppelinIT extends AbstractZeppelinIT {
     }
 
   }
+
+  @Test
+  public void deleteTrashNode() throws Exception {
+    try {
+      createNewNote();
+
+      // wait for first paragraph's " READY " status text
+      waitForParagraph(1, "READY");
+
+      String currentUrl = driver.getCurrentUrl();
+      LOG.info("currentUrl = " + currentUrl);
+
+      //delete created notebook to trash
+      deleteTestNotebook(driver);
+      ZeppelinITUtils.sleep(3000, false);
+
+      // reopen trash note
+      driver.get(currentUrl);
+      ZeppelinITUtils.sleep(3000, false);
+
+      // delete note from trash
+      deleteTrashNotebook(driver);
+      ZeppelinITUtils.sleep(2000, false);
+      LOG.info("deleteTrashNode executed");
+    }  catch (Exception e) {
+      handleException("Exception in ZeppelinIT while deleteTrashNode", e);
+    }
+  }
 }
diff --git a/zeppelin-web/src/app/notebook/notebook.controller.js 
b/zeppelin-web/src/app/notebook/notebook.controller.js
index 085c94e..e2a05b1 100644
--- a/zeppelin-web/src/app/notebook/notebook.controller.js
+++ b/zeppelin-web/src/app/notebook/notebook.controller.js
@@ -237,7 +237,7 @@ function NotebookCtrl($scope, $route, $routeParams, 
$location, $rootScope,
   };
 
   $scope.isTrash = function(note) {
-    return note ? note.name.split('/')[0] === TRASH_FOLDER_ID : false;
+    return note ? note.path.split('/')[1] === TRASH_FOLDER_ID : false;
   };
 
   // Export notebook
diff --git a/zeppelin-web/src/components/note-list/note-list.factory.js 
b/zeppelin-web/src/components/note-list/note-list.factory.js
index c20b854..20310e3 100644
--- a/zeppelin-web/src/components/note-list/note-list.factory.js
+++ b/zeppelin-web/src/components/note-list/note-list.factory.js
@@ -26,7 +26,7 @@ function NoteListFactory(arrayOrderingSrv, TRASH_FOLDER_ID) {
       // a flat list to boost searching
       notes.flatList = _.map(notesList, (note) => {
         note.isTrash = note.path
-          ? note.path.split('/')[0] === TRASH_FOLDER_ID : false;
+          ? note.path.split('/')[1] === TRASH_FOLDER_ID : false;
         return note;
       });
 
diff --git 
a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java 
b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java
index b5fc876..b01b8c2 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Note.java
@@ -92,10 +92,11 @@ public class Note implements JsonSerializable {
    */
   private Map<String, Object> info = new HashMap<>();
 
+  // The front end needs to judge TRASH_FOLDER according to the path
+  private String path;
 
   /********************************** transient fields 
******************************************/
   private transient boolean loaded = false;
-  private transient String path;
   private transient InterpreterFactory interpreterFactory;
   private transient InterpreterSettingManager interpreterSettingManager;
   private transient ParagraphJobListener paragraphJobListener;

Reply via email to