From f57e03c5855f9865157149505fb307d9a773144d Mon Sep 17 00:00:00 2001 From: Jeff Zhang Date: Sat, 2 Jun 2018 14:38:25 +0800 Subject: [PATCH] ZEPPELIN-3520. Use the first one as the default value of dynamic form dropdown list --- .../zeppelin/spark/SparkZeppelinContext.java | 2 +- .../zeppelin/integration/ParagraphActionsIT.java | 8 ++++---- .../java/org/apache/zeppelin/display/GUI.java | 6 +++++- .../org/apache/zeppelin/display/GUITest.java | 16 ++++++++++++++++ 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/spark/interpreter/src/main/java/org/apache/zeppelin/spark/SparkZeppelinContext.java b/spark/interpreter/src/main/java/org/apache/zeppelin/spark/SparkZeppelinContext.java index 8847039efee..492a9974b49 100644 --- a/spark/interpreter/src/main/java/org/apache/zeppelin/spark/SparkZeppelinContext.java +++ b/spark/interpreter/src/main/java/org/apache/zeppelin/spark/SparkZeppelinContext.java @@ -177,7 +177,7 @@ public String showData(Object df) { @ZeppelinApi public Object select(String name, scala.collection.Iterable> options) { - return select(name, "", options); + return select(name, null, options); } @ZeppelinApi diff --git a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java index e5522ec6903..e5814103192 100644 --- a/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java +++ b/zeppelin-integration/src/test/java/org/apache/zeppelin/integration/ParagraphActionsIT.java @@ -571,7 +571,7 @@ public void testSingleDynamicFormSelectForm() throws Exception { waitForParagraph(1, "FINISHED"); collector.checkThat("Output text should not display any of the options in select form", driver.findElement(By.xpath(getParagraphXPath(1) + "//div[contains(@class, 'text plainTextContent')]")).getText(), - CoreMatchers.equalTo("Howdy ")); + CoreMatchers.equalTo("Howdy 1")); Select dropDownMenu = new Select(driver.findElement(By.xpath("(" + (getParagraphXPath(1) + "//select)[1]")))); @@ -649,13 +649,13 @@ public void testMultipleDynamicFormsSameType() throws Exception { waitForParagraph(1, "FINISHED"); collector.checkThat("Output text should not display any of the options in select form", driver.findElement(By.xpath(getParagraphXPath(1) + "//div[contains(@class, 'text plainTextContent')]")).getText(), - CoreMatchers.equalTo("Howdy \nHowdy ")); + CoreMatchers.equalTo("Howdy 1\nHowdy 1")); Select dropDownMenu = new Select(driver.findElement(By.xpath("(" + (getParagraphXPath(1) + "//select)[1]")))); dropDownMenu.selectByVisibleText("Apple"); collector.checkThat("After selection in drop down menu, output should display the new option we selected", driver.findElement(By.xpath(getParagraphXPath(1) + "//div[contains(@class, 'text plainTextContent')]")).getText(), - CoreMatchers.equalTo("Howdy 1\nHowdy ")); + CoreMatchers.equalTo("Howdy 1\nHowdy 1")); driver.findElement(By.xpath(getParagraphXPath(1) + "//span[@class='icon-settings']")).click(); clickAndWait(By.xpath(getParagraphXPath(1) + "//ul/li/form/input[contains(@ng-checked, 'true')]")); @@ -665,7 +665,7 @@ public void testMultipleDynamicFormsSameType() throws Exception { waitForParagraph(1, "FINISHED"); collector.checkThat("After 'Run on selection change' checkbox is unchecked, the paragraph should not run if selecting a different option", driver.findElement(By.xpath(getParagraphXPath(1) + "//div[contains(@class, 'text plainTextContent')]")).getText(), - CoreMatchers.equalTo("Howdy 1\nHowdy ")); + CoreMatchers.equalTo("Howdy 1\nHowdy 1")); deleteTestNotebook(driver); diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/GUI.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/GUI.java index 086f805da29..5657c58ba34 100644 --- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/GUI.java +++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/GUI.java @@ -91,11 +91,15 @@ public Object textbox(String id) { } public Object select(String id, Object defaultValue, ParamOption[] options) { + if (defaultValue == null && options != null && options.length > 0) { + defaultValue = options[0].getValue(); + } + forms.put(id, new Select(id, defaultValue, options)); Object value = params.get(id); if (value == null) { value = defaultValue; + params.put(id, value); } - forms.put(id, new Select(id, defaultValue, options)); return value; } diff --git a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/display/GUITest.java b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/display/GUITest.java index 7d369b83cef..211c379077c 100644 --- a/zeppelin-interpreter/src/test/java/org/apache/zeppelin/display/GUITest.java +++ b/zeppelin-interpreter/src/test/java/org/apache/zeppelin/display/GUITest.java @@ -46,6 +46,22 @@ public void setUp() { checkedItems.add("1"); } + @Test + public void testSelect() { + GUI gui = new GUI(); + Object selected = gui.select("list_1", null, options); + // use the first one as the default value + assertEquals("1", selected); + + gui = new GUI(); + selected = gui.select("list_1", "2", options); + assertEquals("2", selected); + // "2" is selected by above statement, so even this default value is "1", the selected value is + // still "2" + selected = gui.select("list_1", "1", options); + assertEquals("2", selected); + } + @Test public void testGson() { GUI gui = new GUI();