You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by mo...@apache.org on 2017/11/18 20:53:42 UTC
[3/3] zeppelin git commit: [ZEPPELIN-1363] Note level dynamic form
[ZEPPELIN-1363] Note level dynamic form
### What is this PR for?
Added dynamic forms for Note. All paragraphs has access to note forms.
### What type of PR is it?
[Feature]
### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-1363
### How should this be tested?
Create global interpreter JDBC and Spark. Create note with 2 paragraphs
```
%pyspark
print("Textbox paragraph " + z.textbox('input', 'default'))
print("Textbox note " + z.noteTextbox('note_input', 'default_note'))
print("Select paragraph " + z.select("sel", [("1","opt1"), ("2","opt2"), ("3","opt3")]))
print("Select note " + z.noteSelect("sel_note", [("1","noteOpt1"), ("2","noteOpt2"), ("3","noteOpt3")]))
options = [("key1","Name1"), ("key2","Name2")]
print("Checkbox paragraph "+ " and ".join(z.checkbox("chk", options, ["key1"])))
print("Checkbox note "+ " and ".join(z.noteCheckbox("chk_note", options, ["key1","key2"])))
```
```
%jdbc
select '$${checkbox:chk_note=key1|key2,key1|key2} $${note_input} ${note_input=sameName}'
```
### Screenshots (if appropriate)
1) native forms
![1](https://user-images.githubusercontent.com/25951039/32273062-b4d02526-bf22-11e7-9c95-f5aa3b41b8a0.gif)
2) remove
![2](https://user-images.githubusercontent.com/25951039/32273061-b4b0a926-bf22-11e7-8e5c-b26f37da7f61.gif)
3) simple forms
![3](https://user-images.githubusercontent.com/25951039/32273060-b48fff78-bf22-11e7-81be-e1afac00b709.gif)
### Questions:
* Does the licenses files need update? no
* Is there breaking changes for older versions? no
* Does this needs documentation? no
Author: tinkoff-dwh <ti...@gmail.com>
Closes #2641 from tinkoff-dwh/ZEPPELIN-1363 and squashes the following commits:
3ee4826 [tinkoff-dwh] [ZEPPELIN-1363] autosave textbox
f30033a [tinkoff-dwh] Merge remote-tracking branch 'upstream/master' into ZEPPELIN-1363
29eaca2 [tinkoff-dwh] [ZEPPELIN-1363] fix tests
bf8194e [tinkoff-dwh] Merge remote-tracking branch 'upstream/master' into ZEPPELIN-1363
9b2f3e9 [tinkoff-dwh] [ZEPPELIN-1363] button to remove form
c566462 [tinkoff-dwh] [ZEPPELIN-1363] note dynamic forms (simple; native: spark, python)
Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/50cfabdf
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/50cfabdf
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/50cfabdf
Branch: refs/heads/master
Commit: 50cfabdf9b4a55e1bb964376eb5eca22f6046913
Parents: 2a33fd3
Author: tinkoff-dwh <ti...@gmail.com>
Authored: Tue Nov 7 21:33:58 2017 +0500
Committer: Lee moon soo <mo...@apache.org>
Committed: Sat Nov 18 12:53:33 2017 -0800
----------------------------------------------------------------------
docs/usage/dynamic_form/intro.md | 43 ++++-
.../ElasticsearchInterpreterTest.java | 4 +-
.../zeppelin/flink/FlinkInterpreterTest.java | 2 +-
.../zeppelin/ignite/IgniteInterpreterTest.java | 2 +-
.../ignite/IgniteSqlInterpreterTest.java | 2 +-
.../zeppelin/jdbc/JDBCInterpreterTest.java | 12 +-
.../apache/zeppelin/livy/LivyInterpreterIT.java | 20 +--
.../graph/neo4j/Neo4jCypherInterpreterTest.java | 1 +
.../zeppelin/pig/PigInterpreterSparkTest.java | 4 +-
.../apache/zeppelin/pig/PigInterpreterTest.java | 4 +-
.../zeppelin/pig/PigInterpreterTezTest.java | 4 +-
.../zeppelin/pig/PigQueryInterpreterTest.java | 4 +-
.../zeppelin/python/IPythonInterpreter.java | 1 +
.../zeppelin/python/PythonInterpreter.java | 12 +-
.../resources/grpc/python/zeppelin_python.py | 33 ++--
.../main/resources/python/zeppelin_python.py | 35 ++--
.../zeppelin/python/IPythonInterpreterTest.java | 1 +
.../python/PythonCondaInterpreterTest.java | 1 +
.../python/PythonDockerInterpreterTest.java | 1 +
.../python/PythonInterpreterMatplotlibTest.java | 1 +
.../python/PythonInterpreterPandasSqlTest.java | 1 +
.../zeppelin/python/PythonInterpreterTest.java | 1 +
.../scalding/ScaldingInterpreterTest.java | 2 +-
.../zeppelin/scio/ScioInterpreterTest.java | 1 +
.../zeppelin/shell/ShellInterpreterTest.java | 3 +-
.../zeppelin/spark/PySparkInterpreter.java | 1 +
.../apache/zeppelin/spark/SparkInterpreter.java | 1 +
.../zeppelin/spark/SparkZeppelinContext.java | 42 ++++-
.../main/resources/python/zeppelin_pyspark.py | 40 +++--
.../zeppelin/spark/DepInterpreterTest.java | 2 +-
.../zeppelin/spark/IPySparkInterpreterTest.java | 1 +
.../spark/PySparkInterpreterMatplotlibTest.java | 1 +
.../zeppelin/spark/PySparkInterpreterTest.java | 1 +
.../zeppelin/spark/SparkInterpreterTest.java | 2 +
.../zeppelin/spark/SparkSqlInterpreterTest.java | 2 +-
.../angular/AbstractAngularElemTest.scala | 2 +-
.../angular/AbstractAngularModelTest.scala | 2 +-
.../java/org/apache/zeppelin/display/Input.java | 25 ++-
.../interpreter/BaseZeppelinContext.java | 94 +++++++++--
.../interpreter/InterpreterContext.java | 13 +-
.../remote/RemoteInterpreterServer.java | 9 +-
.../interpreter/thrift/CallbackInfo.java | 2 +-
.../thrift/InterpreterCompletion.java | 2 +-
.../thrift/RemoteApplicationResult.java | 2 +-
.../RemoteInterpreterCallbackService.java | 2 +-
.../thrift/RemoteInterpreterContext.java | 121 +++++++++++++-
.../thrift/RemoteInterpreterEvent.java | 2 +-
.../thrift/RemoteInterpreterResult.java | 115 ++++++++++++-
.../thrift/RemoteInterpreterResultMessage.java | 2 +-
.../thrift/RemoteInterpreterService.java | 2 +-
.../ZeppelinServerResourceParagraphRunner.java | 2 +-
.../main/thrift/RemoteInterpreterService.thrift | 4 +-
.../org/apache/zeppelin/display/InputTest.java | 18 +--
.../interpreter/InterpreterContextTest.java | 2 +-
.../zeppelin/interpreter/InterpreterTest.java | 1 +
.../interpreter/LazyOpenInterpreterTest.java | 2 +-
.../apache/zeppelin/socket/NotebookServer.java | 63 +++++++-
.../org/apache/zeppelin/AbstractZeppelinIT.java | 4 +
.../integration/ParagraphActionsIT.java | 160 +++++++++++++++++++
.../notebook/dynamic-forms/dynamic-forms.css | 24 +++
.../dynamic-forms/dynamic-forms.directive.html | 86 ++++++++++
.../dynamic-forms/dynamic-forms.directive.js | 62 +++++++
.../src/app/notebook/notebook.controller.js | 23 +++
zeppelin-web/src/app/notebook/notebook.html | 17 ++
.../paragraph-parameterized-query-form.html | 71 --------
.../notebook/paragraph/paragraph.controller.js | 22 +--
.../paragraph/paragraph.controller.test.js | 2 +-
.../src/app/notebook/paragraph/paragraph.css | 22 ---
.../src/app/notebook/paragraph/paragraph.html | 11 +-
.../websocket/websocket-event.factory.js | 2 +
.../websocket/websocket-message.service.js | 18 +++
zeppelin-web/src/index.js | 1 +
.../interpreter/remote/RemoteInterpreter.java | 7 +-
.../java/org/apache/zeppelin/notebook/Note.java | 19 +++
.../org/apache/zeppelin/notebook/Paragraph.java | 45 ++++--
.../zeppelin/notebook/socket/Message.java | 6 +-
.../lifecycle/TimeoutLifecycleManagerTest.java | 4 +-
.../remote/RemoteAngularObjectTest.java | 1 +
.../RemoteInterpreterOutputTestStream.java | 1 +
.../remote/RemoteInterpreterTest.java | 22 +--
.../resource/DistributedResourcePoolTest.java | 1 +
.../zeppelin/scheduler/RemoteSchedulerTest.java | 3 +
82 files changed, 1131 insertions(+), 278 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/docs/usage/dynamic_form/intro.md
----------------------------------------------------------------------
diff --git a/docs/usage/dynamic_form/intro.md b/docs/usage/dynamic_form/intro.md
index 7e4f1d4..1da5876 100644
--- a/docs/usage/dynamic_form/intro.md
+++ b/docs/usage/dynamic_form/intro.md
@@ -24,9 +24,10 @@ limitations under the License.
<div id="toc"></div>
Apache Zeppelin dynamically creates input forms. Depending on language backend, there're two different ways to create dynamic form.
-Custom language backend can select which type of form creation it wants to use.
+Custom language backend can select which type of form creation it wants to use. Forms can have different scope (paragraph or note).
+Forms with scope "note" available in all paragraphs regardless of which paragraph has code to create these forms.
-## Using form Templates
+## Using form Templates (scope: paragraph)
This mode creates form using simple template language. It's simple and easy to use. For example Markdown, Shell, Spark SQL language backend uses it.
@@ -81,7 +82,11 @@ Even if you uncheck this option, still you can run it by pressing `Enter`.
<img src="{{BASE_PATH}}/assets/themes/zeppelin/img/screenshots/selectForm-checkbox.png" />
-## Creates Programmatically
+## Using form Templates (scope: note)
+
+Has a same syntax but starts with two symbols `$`. (for ex. input `$${forName}`)
+
+## Creates Programmatically (scope: paragraph)
Some language backends can programmatically create forms. For example [ZeppelinContext](../../interpreter/spark.html#zeppelincontext) provides a form creation API
@@ -93,7 +98,7 @@ Here are some examples:
{% highlight scala %}
%spark
-println("Hello "+z.input("name"))
+println("Hello "+z.textbox("name"))
{% endhighlight %}
</div>
@@ -101,7 +106,7 @@ println("Hello "+z.input("name"))
{% highlight python %}
%pyspark
-print("Hello "+z.input("name"))
+print("Hello "+z.textbox("name"))
{% endhighlight %}
</div>
@@ -114,7 +119,7 @@ print("Hello "+z.input("name"))
{% highlight scala %}
%spark
-println("Hello "+z.input("name", "sun"))
+println("Hello "+z.textbox("name", "sun"))
{% endhighlight %}
</div>
@@ -122,7 +127,7 @@ println("Hello "+z.input("name", "sun"))
{% highlight python %}
%pyspark
-print("Hello "+z.input("name", "sun"))
+print("Hello "+z.textbox("name", "sun"))
{% endhighlight %}
</div>
@@ -184,3 +189,27 @@ print("Hello "+ " and ".join(z.checkbox("fruit", options, ["apple"])))
</div>
</div>
<img src="{{BASE_PATH}}/assets/themes/zeppelin/img/screenshots/form_checkbox_prog.png" />
+
+## Creates Programmatically (scope: note)
+
+The difference in the method names:
+
+<table class="table-configuration">
+ <tr>
+ <th>Scope paragraph</th>
+ <th>Scope note</th>
+ </tr>
+ <tr>
+ <td>input (or textbox)</td>
+ <td>noteTextbox</td>
+ </tr>
+ <tr>
+ <td>select</td>
+ <td>noteSelect</td>
+ </tr>
+ <tr>
+ <td>checkbox</td>
+ <td>noteCheckbox</td>
+ </tr>
+</table>
+
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/elasticsearch/src/test/java/org/apache/zeppelin/elasticsearch/ElasticsearchInterpreterTest.java
----------------------------------------------------------------------
diff --git a/elasticsearch/src/test/java/org/apache/zeppelin/elasticsearch/ElasticsearchInterpreterTest.java b/elasticsearch/src/test/java/org/apache/zeppelin/elasticsearch/ElasticsearchInterpreterTest.java
index 4679f29..64562b1 100644
--- a/elasticsearch/src/test/java/org/apache/zeppelin/elasticsearch/ElasticsearchInterpreterTest.java
+++ b/elasticsearch/src/test/java/org/apache/zeppelin/elasticsearch/ElasticsearchInterpreterTest.java
@@ -164,8 +164,8 @@ public class ElasticsearchInterpreterTest {
private InterpreterContext buildContext(String noteAndParagraphId) {
final AngularObjectRegistry angularObjReg = new AngularObjectRegistry("elasticsearch", null);
- return new InterpreterContext(noteAndParagraphId, noteAndParagraphId, null, null, null, null, null,
- null, angularObjReg , null, null, null);
+ return new InterpreterContext(noteAndParagraphId, noteAndParagraphId, null, null, null, null,
+ null, null, null, angularObjReg , null, null, null);
}
@Theory
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/flink/src/test/java/org/apache/zeppelin/flink/FlinkInterpreterTest.java
----------------------------------------------------------------------
diff --git a/flink/src/test/java/org/apache/zeppelin/flink/FlinkInterpreterTest.java b/flink/src/test/java/org/apache/zeppelin/flink/FlinkInterpreterTest.java
index d443508..c9cb1f6 100644
--- a/flink/src/test/java/org/apache/zeppelin/flink/FlinkInterpreterTest.java
+++ b/flink/src/test/java/org/apache/zeppelin/flink/FlinkInterpreterTest.java
@@ -40,7 +40,7 @@ public class FlinkInterpreterTest {
Properties p = new Properties();
flink = new FlinkInterpreter(p);
flink.open();
- context = new InterpreterContext(null, null, null, null, null, null, null, null, null, null, null, null);
+ context = new InterpreterContext(null, null, null, null, null, null, null, null, null, null, null, null, null);
}
@AfterClass
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/ignite/src/test/java/org/apache/zeppelin/ignite/IgniteInterpreterTest.java
----------------------------------------------------------------------
diff --git a/ignite/src/test/java/org/apache/zeppelin/ignite/IgniteInterpreterTest.java b/ignite/src/test/java/org/apache/zeppelin/ignite/IgniteInterpreterTest.java
index 9cb5eaf..e8f2265 100644
--- a/ignite/src/test/java/org/apache/zeppelin/ignite/IgniteInterpreterTest.java
+++ b/ignite/src/test/java/org/apache/zeppelin/ignite/IgniteInterpreterTest.java
@@ -40,7 +40,7 @@ public class IgniteInterpreterTest {
private static final String HOST = "127.0.0.1:47500..47509";
private static final InterpreterContext INTP_CONTEXT =
- new InterpreterContext(null, null, null, null, null, null, null, null, null, null, null, null);
+ new InterpreterContext(null, null, null, null, null, null, null, null, null, null, null, null, null);
private IgniteInterpreter intp;
private Ignite ignite;
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/ignite/src/test/java/org/apache/zeppelin/ignite/IgniteSqlInterpreterTest.java
----------------------------------------------------------------------
diff --git a/ignite/src/test/java/org/apache/zeppelin/ignite/IgniteSqlInterpreterTest.java b/ignite/src/test/java/org/apache/zeppelin/ignite/IgniteSqlInterpreterTest.java
index a6ae0ea..4cb2cbb 100644
--- a/ignite/src/test/java/org/apache/zeppelin/ignite/IgniteSqlInterpreterTest.java
+++ b/ignite/src/test/java/org/apache/zeppelin/ignite/IgniteSqlInterpreterTest.java
@@ -44,7 +44,7 @@ public class IgniteSqlInterpreterTest {
private static final String HOST = "127.0.0.1:47500..47509";
private static final InterpreterContext INTP_CONTEXT =
- new InterpreterContext(null, null, null, null, null, null, null, null, null, null, null, null);
+ new InterpreterContext(null, null, null, null, null, null, null, null, null, null, null, null, null);
private Ignite ignite;
private IgniteSqlInterpreter intp;
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java
----------------------------------------------------------------------
diff --git a/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java b/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java
index 1b3f045..6441267 100644
--- a/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java
+++ b/jdbc/src/test/java/org/apache/zeppelin/jdbc/JDBCInterpreterTest.java
@@ -91,8 +91,8 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
PreparedStatement insertStatement = connection.prepareStatement("insert into test_table(id, name) values ('a', 'a_name'),('b', 'b_name'),('c', ?);");
insertStatement.setString(1, null);
insertStatement.execute();
- interpreterContext = new InterpreterContext("", "1", null, "", "", new AuthenticationInfo("testUser"), null, null, null, null,
- null, null);
+ interpreterContext = new InterpreterContext("", "1", null, "", "",
+ new AuthenticationInfo("testUser"), null, null, null,null, null, null, null);
}
@@ -418,7 +418,7 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
// user1 runs jdbc1
jdbc1.open();
InterpreterContext ctx1 = new InterpreterContext("", "1", "jdbc1", "", "", user1Credential,
- null, null, null, null, null, null);
+ null, null, null, null, null, null, null);
jdbc1.interpret("", ctx1);
JDBCUserConfigurations user1JDBC1Conf = jdbc1.getJDBCConfiguration("user1");
@@ -429,7 +429,7 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
// user1 runs jdbc2
jdbc2.open();
InterpreterContext ctx2 = new InterpreterContext("", "1", "jdbc2", "", "", user1Credential,
- null, null, null, null, null, null);
+ null, null, null, null, null, null, null);
jdbc2.interpret("", ctx2);
JDBCUserConfigurations user1JDBC2Conf = jdbc2.getJDBCConfiguration("user1");
@@ -440,7 +440,7 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
// user2 runs jdbc1
jdbc1.open();
InterpreterContext ctx3 = new InterpreterContext("", "1", "jdbc1", "", "", user2Credential,
- null, null, null, null, null, null);
+ null, null, null, null, null, null, null);
jdbc1.interpret("", ctx3);
JDBCUserConfigurations user2JDBC1Conf = jdbc1.getJDBCConfiguration("user2");
@@ -451,7 +451,7 @@ public class JDBCInterpreterTest extends BasicJDBCTestCaseAdapter {
// user2 runs jdbc2
jdbc2.open();
InterpreterContext ctx4 = new InterpreterContext("", "1", "jdbc2", "", "", user2Credential,
- null, null, null, null, null, null);
+ null, null, null, null, null, null, null);
jdbc2.interpret("", ctx4);
JDBCUserConfigurations user2JDBC2Conf = jdbc2.getJDBCConfiguration("user2");
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/livy/src/test/java/org/apache/zeppelin/livy/LivyInterpreterIT.java
----------------------------------------------------------------------
diff --git a/livy/src/test/java/org/apache/zeppelin/livy/LivyInterpreterIT.java b/livy/src/test/java/org/apache/zeppelin/livy/LivyInterpreterIT.java
index d413134..ef3eabe 100644
--- a/livy/src/test/java/org/apache/zeppelin/livy/LivyInterpreterIT.java
+++ b/livy/src/test/java/org/apache/zeppelin/livy/LivyInterpreterIT.java
@@ -90,7 +90,7 @@ public class LivyInterpreterIT {
MyInterpreterOutputListener outputListener = new MyInterpreterOutputListener();
InterpreterOutput output = new InterpreterOutput(outputListener);
final InterpreterContext context = new InterpreterContext("noteId", "paragraphId", "livy.spark",
- "title", "text", authInfo, null, null, null, null, null, output);
+ "title", "text", authInfo, null, null, null, null, null, null, output);
sparkInterpreter.open();
try {
@@ -211,7 +211,7 @@ public class LivyInterpreterIT {
MyInterpreterOutputListener outputListener = new MyInterpreterOutputListener();
InterpreterOutput output = new InterpreterOutput(outputListener);
InterpreterContext context = new InterpreterContext("noteId", "paragraphId", "livy.spark",
- "title", "text", authInfo, null, null, null, null, null, output);
+ "title", "text", authInfo, null, null, null, null, null, null, output);
sparkInterpreter.open();
LivySparkSQLInterpreter sqlInterpreter = new LivySparkSQLInterpreter(properties);
@@ -307,7 +307,7 @@ public class LivyInterpreterIT {
MyInterpreterOutputListener outputListener = new MyInterpreterOutputListener();
InterpreterOutput output = new InterpreterOutput(outputListener);
InterpreterContext context = new InterpreterContext("noteId", "paragraphId", "livy.sql",
- "title", "text", authInfo, null, null, null, null, null, output);
+ "title", "text", authInfo, null, null, null, null, null, null, output);
InterpreterResult result = sqlInterpreter.interpret("show tables", context);
assertEquals(InterpreterResult.Code.SUCCESS, result.code());
assertEquals(InterpreterResult.Type.TABLE, result.message().get(0).getType());
@@ -334,7 +334,7 @@ public class LivyInterpreterIT {
MyInterpreterOutputListener outputListener = new MyInterpreterOutputListener();
InterpreterOutput output = new InterpreterOutput(outputListener);
final InterpreterContext context = new InterpreterContext("noteId", "paragraphId", "livy.spark",
- "title", "text", authInfo, null, null, null, null, null, output);
+ "title", "text", authInfo, null, null, null, null, null, null, output);
sparkInterpreter.open();
final LivySparkSQLInterpreter sqlInterpreter = new LivySparkSQLInterpreter(properties);
@@ -415,7 +415,7 @@ public class LivyInterpreterIT {
MyInterpreterOutputListener outputListener = new MyInterpreterOutputListener();
InterpreterOutput output = new InterpreterOutput(outputListener);
InterpreterContext context = new InterpreterContext("noteId", "paragraphId", "livy.spark",
- "title", "text", authInfo, null, null, null, null, null, output);
+ "title", "text", authInfo, null, null, null, null, null, null, output);
sparkInterpreter.open();
LivySparkSQLInterpreter sqlInterpreter = new LivySparkSQLInterpreter(properties);
@@ -481,7 +481,7 @@ public class LivyInterpreterIT {
MyInterpreterOutputListener outputListener = new MyInterpreterOutputListener();
InterpreterOutput output = new InterpreterOutput(outputListener);
InterpreterContext context = new InterpreterContext("noteId", "paragraphId", "livy.spark",
- "title", "text", authInfo, null, null, null, null, null, output);
+ "title", "text", authInfo, null, null, null, null, null, null, output);
sparkInterpreter.open();
LivySparkSQLInterpreter sqlInterpreter = new LivySparkSQLInterpreter(newProps);
@@ -538,7 +538,7 @@ public class LivyInterpreterIT {
MyInterpreterOutputListener outputListener = new MyInterpreterOutputListener();
InterpreterOutput output = new InterpreterOutput(outputListener);
final InterpreterContext context = new InterpreterContext("noteId", "paragraphId", "livy.pyspark",
- "title", "text", authInfo, null, null, null, null, null, output);
+ "title", "text", authInfo, null, null, null, null, null, null, output);
pysparkInterpreter.open();
// test traceback msg
@@ -665,7 +665,7 @@ public class LivyInterpreterIT {
MyInterpreterOutputListener outputListener = new MyInterpreterOutputListener();
InterpreterOutput output = new InterpreterOutput(outputListener);
InterpreterContext context = new InterpreterContext("noteId", "paragraphId", "livy.spark",
- "title", "text", authInfo, null, null, null, null, null, output);
+ "title", "text", authInfo, null, null, null, null, null, null, output);
sparkInterpreter.open();
try {
@@ -703,7 +703,7 @@ public class LivyInterpreterIT {
MyInterpreterOutputListener outputListener = new MyInterpreterOutputListener();
InterpreterOutput output = new InterpreterOutput(outputListener);
final InterpreterContext context = new InterpreterContext("noteId", "paragraphId", "livy.sparkr",
- "title", "text", authInfo, null, null, null, null, null, output);
+ "title", "text", authInfo, null, null, null, null, null, null, output);
sparkRInterpreter.open();
try {
@@ -780,7 +780,7 @@ public class LivyInterpreterIT {
MyInterpreterOutputListener outputListener = new MyInterpreterOutputListener();
InterpreterOutput output = new InterpreterOutput(outputListener);
InterpreterContext context = new InterpreterContext("noteId", "paragraphId", "livy.sql",
- "title", "text", authInfo, null, null, null, null, null, output);
+ "title", "text", authInfo, null, null, null, null, null, null, output);
String p1 = IOUtils.toString(getClass().getResourceAsStream("/livy_tutorial_1.scala"));
InterpreterResult result = sparkInterpreter.interpret(p1, context);
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/neo4j/src/test/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreterTest.java
----------------------------------------------------------------------
diff --git a/neo4j/src/test/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreterTest.java b/neo4j/src/test/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreterTest.java
index 1bb14b7..9781504 100644
--- a/neo4j/src/test/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreterTest.java
+++ b/neo4j/src/test/java/org/apache/zeppelin/graph/neo4j/Neo4jCypherInterpreterTest.java
@@ -93,6 +93,7 @@ public class Neo4jCypherInterpreterTest {
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
new AngularObjectRegistry(new InterpreterGroup().getId(), null),
new LocalResourcePool("id"),
new LinkedList<InterpreterContextRunner>(),
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterSparkTest.java
----------------------------------------------------------------------
diff --git a/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterSparkTest.java b/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterSparkTest.java
index e821bfe..43ade16 100644
--- a/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterSparkTest.java
+++ b/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterSparkTest.java
@@ -44,8 +44,8 @@ public class PigInterpreterSparkTest {
properties.put("zeppelin.pig.includeJobStats", includeJobStats + "");
pigInterpreter = new PigInterpreter(properties);
pigInterpreter.open();
- context = new InterpreterContext(null, "paragraph_id", null, null, null, null, null, null, null, null,
- null, null);
+ context = new InterpreterContext(null, "paragraph_id", null, null, null, null, null, null, null,
+ null, null, null, null);
}
@After
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterTest.java
----------------------------------------------------------------------
diff --git a/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterTest.java b/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterTest.java
index efcbb58..ac13390 100644
--- a/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterTest.java
+++ b/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterTest.java
@@ -47,8 +47,8 @@ public class PigInterpreterTest {
properties.put("zeppelin.pig.includeJobStats", includeJobStats + "");
pigInterpreter = new PigInterpreter(properties);
pigInterpreter.open();
- context = new InterpreterContext(null, "paragraph_id", null, null, null, null, null, null, null, null,
- null, null);
+ context = new InterpreterContext(null, "paragraph_id", null, null, null,
+ null, null, null, null, null, null,null, null);
}
@After
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterTezTest.java
----------------------------------------------------------------------
diff --git a/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterTezTest.java b/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterTezTest.java
index 964b31c..48f07bf 100644
--- a/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterTezTest.java
+++ b/pig/src/test/java/org/apache/zeppelin/pig/PigInterpreterTezTest.java
@@ -48,8 +48,8 @@ public class PigInterpreterTezTest {
properties.put("tez.queue.name", "test");
pigInterpreter = new PigInterpreter(properties);
pigInterpreter.open();
- context = new InterpreterContext(null, "paragraph_id", null, null, null, null, null, null, null, null,
- null, null);
+ context = new InterpreterContext(null, "paragraph_id", null, null, null, null, null, null, null,
+ null, null, null, null);
}
@After
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/pig/src/test/java/org/apache/zeppelin/pig/PigQueryInterpreterTest.java
----------------------------------------------------------------------
diff --git a/pig/src/test/java/org/apache/zeppelin/pig/PigQueryInterpreterTest.java b/pig/src/test/java/org/apache/zeppelin/pig/PigQueryInterpreterTest.java
index f14cad6..ad395b5 100644
--- a/pig/src/test/java/org/apache/zeppelin/pig/PigQueryInterpreterTest.java
+++ b/pig/src/test/java/org/apache/zeppelin/pig/PigQueryInterpreterTest.java
@@ -66,8 +66,8 @@ public class PigQueryInterpreterTest {
pigInterpreter.open();
pigQueryInterpreter.open();
- context = new InterpreterContext(null, "paragraph_id", null, null, null, null, null, null, null, null,
- null, null);
+ context = new InterpreterContext(null, "paragraph_id", null, null, null, null, null, null, null,
+ null, null, null, null);
}
@After
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java
----------------------------------------------------------------------
diff --git a/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java b/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java
index 77e45b9..2184c1f 100644
--- a/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java
+++ b/python/src/main/java/org/apache/zeppelin/python/IPythonInterpreter.java
@@ -303,6 +303,7 @@ public class IPythonInterpreter extends Interpreter implements ExecuteResultHand
@Override
public InterpreterResult interpret(String st, InterpreterContext context) {
zeppelinContext.setGui(context.getGui());
+ zeppelinContext.setNoteGui(context.getNoteGui());
interpreterOutput.setInterpreterOutput(context.out);
ExecuteResponse response =
ipythonClient.stream_execute(ExecuteRequest.newBuilder().setCode(st).build(),
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/python/src/main/java/org/apache/zeppelin/python/PythonInterpreter.java
----------------------------------------------------------------------
diff --git a/python/src/main/java/org/apache/zeppelin/python/PythonInterpreter.java b/python/src/main/java/org/apache/zeppelin/python/PythonInterpreter.java
index 4f897c8..051e1fa 100644
--- a/python/src/main/java/org/apache/zeppelin/python/PythonInterpreter.java
+++ b/python/src/main/java/org/apache/zeppelin/python/PythonInterpreter.java
@@ -69,6 +69,7 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl
public static final String DEFAULT_ZEPPELIN_PYTHON = "python";
public static final String MAX_RESULT = "zeppelin.python.maxResult";
+ private PythonZeppelinContext zeppelinContext;
private InterpreterContext context;
private Pattern errorInLastLine = Pattern.compile(".*(Error|Exception): .*$");
private String pythonPath;
@@ -223,6 +224,9 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl
// try IPythonInterpreter first. If it is not available, we will fallback to the original
// python interpreter implementation.
iPythonInterpreter = getIPythonInterpreter();
+ this.zeppelinContext = new PythonZeppelinContext(
+ getInterpreterGroup().getInterpreterHookRegistry(),
+ Integer.parseInt(getProperty("zeppelin.python.maxResult", "1000")));
if (getProperty("zeppelin.python.useIPython", "true").equals("true") &&
iPythonInterpreter.checkIPythonPrerequisite()) {
try {
@@ -374,12 +378,16 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl
if (iPythonInterpreter != null) {
return iPythonInterpreter.interpret(cmd, contextInterpreter);
}
+
if (cmd == null || cmd.isEmpty()) {
return new InterpreterResult(Code.SUCCESS, "");
}
this.context = contextInterpreter;
+ zeppelinContext.setGui(context.getGui());
+ zeppelinContext.setNoteGui(context.getNoteGui());
+
if (!pythonscriptRunning) {
return new InterpreterResult(Code.ERROR, "python process not running"
+ outputStream.toString());
@@ -559,8 +567,8 @@ public class PythonInterpreter extends Interpreter implements ExecuteResultHandl
}
}
- public GUI getGui() {
- return context.getGui();
+ public PythonZeppelinContext getZeppelinContext() {
+ return zeppelinContext;
}
String getLocalIp() {
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/python/src/main/resources/grpc/python/zeppelin_python.py
----------------------------------------------------------------------
diff --git a/python/src/main/resources/grpc/python/zeppelin_python.py b/python/src/main/resources/grpc/python/zeppelin_python.py
index 0f5638f..1a9e8af 100644
--- a/python/src/main/resources/grpc/python/zeppelin_python.py
+++ b/python/src/main/resources/grpc/python/zeppelin_python.py
@@ -34,26 +34,39 @@ class PyZeppelinContext(object):
self.max_result = z.getMaxResult()
def input(self, name, defaultValue=""):
- return self.z.getGui().input(name, defaultValue)
+ return self.z.input(name, defaultValue)
+
+ def textbox(self, name, defaultValue=""):
+ return self.z.textbox(name, defaultValue)
+
+ def noteTextbox(self, name, defaultValue=""):
+ return self.z.noteTextbox(name, defaultValue)
def select(self, name, options, defaultValue=""):
- javaOptions = gateway.new_array(self.paramOption, len(options))
- i = 0
- for tuple in options:
- javaOptions[i] = self.paramOption(tuple[0], tuple[1])
- i += 1
- return self.z.getGui().select(name, defaultValue, javaOptions)
+ return self.z.select(name, defaultValue, self.getParamOptions(options))
+
+ def noteSelect(self, name, options, defaultValue=""):
+ return self.z.noteSelect(name, defaultValue, self.getParamOptions(options))
def checkbox(self, name, options, defaultChecked=[]):
+ return self.z.checkbox(name, self.getDefaultChecked(defaultChecked), self.getParamOptions(options))
+
+ def noteCheckbox(self, name, options, defaultChecked=[]):
+ return self.z.noteCheckbox(name, self.getDefaultChecked(defaultChecked), self.getParamOptions(options))
+
+ def getParamOptions(self, options):
javaOptions = gateway.new_array(self.paramOption, len(options))
i = 0
for tuple in options:
javaOptions[i] = self.paramOption(tuple[0], tuple[1])
i += 1
- javaDefaultCheck = self.javaList()
+ return javaOptions
+
+ def getDefaultChecked(self, defaultChecked):
+ javaDefaultChecked = self.javaList()
for check in defaultChecked:
- javaDefaultCheck.append(check)
- return self.z.getGui().checkbox(name, javaDefaultCheck, javaOptions)
+ javaDefaultChecked.append(check)
+ return javaDefaultChecked
def show(self, p, **kwargs):
if type(p).__name__ == "DataFrame": # does not play well with sub-classes
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/python/src/main/resources/python/zeppelin_python.py
----------------------------------------------------------------------
diff --git a/python/src/main/resources/python/zeppelin_python.py b/python/src/main/resources/python/zeppelin_python.py
index 446201d..519d1af 100644
--- a/python/src/main/resources/python/zeppelin_python.py
+++ b/python/src/main/resources/python/zeppelin_python.py
@@ -64,26 +64,39 @@ class PyZeppelinContext(object):
return self.z.getCurrentInterpreterContext()
def input(self, name, defaultValue=""):
- return self.z.getGui().input(name, defaultValue)
+ return self.z.input(name, defaultValue)
+
+ def textbox(self, name, defaultValue=""):
+ return self.z.textbox(name, defaultValue)
+
+ def noteTextbox(self, name, defaultValue=""):
+ return self.z.noteTextbox(name, defaultValue)
def select(self, name, options, defaultValue=""):
- javaOptions = gateway.new_array(self.paramOption, len(options))
- i = 0
- for tuple in options:
- javaOptions[i] = self.paramOption(tuple[0], tuple[1])
- i += 1
- return self.z.getGui().select(name, defaultValue, javaOptions)
+ return self.z.select(name, defaultValue, self.getParamOptions(options))
+
+ def noteSelect(self, name, options, defaultValue=""):
+ return self.z.noteSelect(name, defaultValue, self.getParamOptions(options))
def checkbox(self, name, options, defaultChecked=[]):
+ return self.z.checkbox(name, self.getDefaultChecked(defaultChecked), self.getParamOptions(options))
+
+ def noteCheckbox(self, name, options, defaultChecked=[]):
+ return self.z.noteCheckbox(name, self.getDefaultChecked(defaultChecked), self.getParamOptions(options))
+
+ def getParamOptions(self, options):
javaOptions = gateway.new_array(self.paramOption, len(options))
i = 0
for tuple in options:
javaOptions[i] = self.paramOption(tuple[0], tuple[1])
i += 1
- javaDefaultCheck = self.javaList()
+ return javaOptions
+
+ def getDefaultChecked(self, defaultChecked):
+ javaDefaultChecked = self.javaList()
for check in defaultChecked:
- javaDefaultCheck.append(check)
- return self.z.getGui().checkbox(name, javaDefaultCheck, javaOptions)
+ javaDefaultChecked.append(check)
+ return javaDefaultChecked
def show(self, p, **kwargs):
if hasattr(p, '__name__') and p.__name__ == "matplotlib.pyplot":
@@ -206,7 +219,7 @@ intp = gateway.entry_point
intp.onPythonScriptInitialized(os.getpid())
java_import(gateway.jvm, "org.apache.zeppelin.display.Input")
-z = __zeppelin__ = PyZeppelinContext(intp)
+z = __zeppelin__ = PyZeppelinContext(intp.getZeppelinContext())
__zeppelin__._setup_matplotlib()
_zcUserQueryNameSpace["__zeppelin__"] = __zeppelin__
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java
----------------------------------------------------------------------
diff --git a/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java b/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java
index 104fe19..6451aa3 100644
--- a/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java
+++ b/python/src/test/java/org/apache/zeppelin/python/IPythonInterpreterTest.java
@@ -411,6 +411,7 @@ public class IPythonInterpreterTest {
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
null,
null,
null,
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/python/src/test/java/org/apache/zeppelin/python/PythonCondaInterpreterTest.java
----------------------------------------------------------------------
diff --git a/python/src/test/java/org/apache/zeppelin/python/PythonCondaInterpreterTest.java b/python/src/test/java/org/apache/zeppelin/python/PythonCondaInterpreterTest.java
index e6f5fca..c750352 100644
--- a/python/src/test/java/org/apache/zeppelin/python/PythonCondaInterpreterTest.java
+++ b/python/src/test/java/org/apache/zeppelin/python/PythonCondaInterpreterTest.java
@@ -131,6 +131,7 @@ public class PythonCondaInterpreterTest {
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
null,
null,
null,
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/python/src/test/java/org/apache/zeppelin/python/PythonDockerInterpreterTest.java
----------------------------------------------------------------------
diff --git a/python/src/test/java/org/apache/zeppelin/python/PythonDockerInterpreterTest.java b/python/src/test/java/org/apache/zeppelin/python/PythonDockerInterpreterTest.java
index e590394..5634630 100644
--- a/python/src/test/java/org/apache/zeppelin/python/PythonDockerInterpreterTest.java
+++ b/python/src/test/java/org/apache/zeppelin/python/PythonDockerInterpreterTest.java
@@ -86,6 +86,7 @@ public class PythonDockerInterpreterTest {
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
null,
null,
null,
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterMatplotlibTest.java
----------------------------------------------------------------------
diff --git a/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterMatplotlibTest.java b/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterMatplotlibTest.java
index 877e428..8c088dc 100644
--- a/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterMatplotlibTest.java
+++ b/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterMatplotlibTest.java
@@ -71,6 +71,7 @@ public class PythonInterpreterMatplotlibTest implements InterpreterOutputListene
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
new AngularObjectRegistry(intpGroup.getId(), null),
new LocalResourcePool("id"),
new LinkedList<InterpreterContextRunner>(),
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterPandasSqlTest.java
----------------------------------------------------------------------
diff --git a/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterPandasSqlTest.java b/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterPandasSqlTest.java
index 5d667bd..d8f41c4 100644
--- a/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterPandasSqlTest.java
+++ b/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterPandasSqlTest.java
@@ -83,6 +83,7 @@ public class PythonInterpreterPandasSqlTest implements InterpreterOutputListener
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
new AngularObjectRegistry(intpGroup.getId(), null),
new LocalResourcePool("id"),
new LinkedList<InterpreterContextRunner>(),
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterTest.java
----------------------------------------------------------------------
diff --git a/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterTest.java b/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterTest.java
index ef328f0..4f08d50 100644
--- a/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterTest.java
+++ b/python/src/test/java/org/apache/zeppelin/python/PythonInterpreterTest.java
@@ -83,6 +83,7 @@ public class PythonInterpreterTest implements InterpreterOutputListener {
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
new AngularObjectRegistry(group.getId(), null),
new LocalResourcePool("id"),
new LinkedList<InterpreterContextRunner>(),
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/scalding/src/test/java/org/apache/zeppelin/scalding/ScaldingInterpreterTest.java
----------------------------------------------------------------------
diff --git a/scalding/src/test/java/org/apache/zeppelin/scalding/ScaldingInterpreterTest.java b/scalding/src/test/java/org/apache/zeppelin/scalding/ScaldingInterpreterTest.java
index 8a23c42..e5b1e90 100644
--- a/scalding/src/test/java/org/apache/zeppelin/scalding/ScaldingInterpreterTest.java
+++ b/scalding/src/test/java/org/apache/zeppelin/scalding/ScaldingInterpreterTest.java
@@ -65,7 +65,7 @@ public class ScaldingInterpreterTest {
InterpreterGroup intpGroup = new InterpreterGroup();
context = new InterpreterContext("note", "id", null, "title", "text", new AuthenticationInfo(),
- new HashMap<String, Object>(), new GUI(), new AngularObjectRegistry(
+ new HashMap<String, Object>(), new GUI(), new GUI(), new AngularObjectRegistry(
intpGroup.getId(), null), null,
new LinkedList<InterpreterContextRunner>(), null);
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/scio/src/test/java/org/apache/zeppelin/scio/ScioInterpreterTest.java
----------------------------------------------------------------------
diff --git a/scio/src/test/java/org/apache/zeppelin/scio/ScioInterpreterTest.java b/scio/src/test/java/org/apache/zeppelin/scio/ScioInterpreterTest.java
index ec17879..91b5fa1 100644
--- a/scio/src/test/java/org/apache/zeppelin/scio/ScioInterpreterTest.java
+++ b/scio/src/test/java/org/apache/zeppelin/scio/ScioInterpreterTest.java
@@ -44,6 +44,7 @@ public class ScioInterpreterTest {
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
new AngularObjectRegistry(intpGroup.getId(), null),
new LocalResourcePool("id"),
new LinkedList<InterpreterContextRunner>(),
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/shell/src/test/java/org/apache/zeppelin/shell/ShellInterpreterTest.java
----------------------------------------------------------------------
diff --git a/shell/src/test/java/org/apache/zeppelin/shell/ShellInterpreterTest.java b/shell/src/test/java/org/apache/zeppelin/shell/ShellInterpreterTest.java
index b369f2d..b67170c 100644
--- a/shell/src/test/java/org/apache/zeppelin/shell/ShellInterpreterTest.java
+++ b/shell/src/test/java/org/apache/zeppelin/shell/ShellInterpreterTest.java
@@ -41,7 +41,8 @@ public class ShellInterpreterTest {
p.setProperty("shell.command.timeout.millisecs", "2000");
shell = new ShellInterpreter(p);
- context = new InterpreterContext("", "1", null, "", "", null, null, null, null, null, null, null);
+ context = new InterpreterContext("", "1", null, "", "", null, null, null, null, null, null,
+ null, null);
shell.open();
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/spark/src/main/java/org/apache/zeppelin/spark/PySparkInterpreter.java
----------------------------------------------------------------------
diff --git a/spark/src/main/java/org/apache/zeppelin/spark/PySparkInterpreter.java b/spark/src/main/java/org/apache/zeppelin/spark/PySparkInterpreter.java
index 5df4ec6..21a1649 100644
--- a/spark/src/main/java/org/apache/zeppelin/spark/PySparkInterpreter.java
+++ b/spark/src/main/java/org/apache/zeppelin/spark/PySparkInterpreter.java
@@ -464,6 +464,7 @@ public class PySparkInterpreter extends Interpreter implements ExecuteResultHand
SparkZeppelinContext __zeppelin__ = sparkInterpreter.getZeppelinContext();
__zeppelin__.setInterpreterContext(context);
__zeppelin__.setGui(context.getGui());
+ __zeppelin__.setNoteGui(context.getNoteGui());
pythonInterpretRequest = new PythonInterpretRequest(st, jobGroup, jobDesc);
statementOutput = null;
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/spark/src/main/java/org/apache/zeppelin/spark/SparkInterpreter.java
----------------------------------------------------------------------
diff --git a/spark/src/main/java/org/apache/zeppelin/spark/SparkInterpreter.java b/spark/src/main/java/org/apache/zeppelin/spark/SparkInterpreter.java
index 71a439f..3e4da19 100644
--- a/spark/src/main/java/org/apache/zeppelin/spark/SparkInterpreter.java
+++ b/spark/src/main/java/org/apache/zeppelin/spark/SparkInterpreter.java
@@ -1144,6 +1144,7 @@ public class SparkInterpreter extends Interpreter {
public InterpreterResult interpret(String[] lines, InterpreterContext context) {
synchronized (this) {
z.setGui(context.getGui());
+ z.setNoteGui(context.getNoteGui());
String jobDesc = "Started by: " + Utils.getUserName(context.getAuthenticationInfo());
sc.setJobGroup(Utils.buildJobGroupId(context), jobDesc, false);
InterpreterResult r = interpretInput(lines, context);
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/spark/src/main/java/org/apache/zeppelin/spark/SparkZeppelinContext.java
----------------------------------------------------------------------
diff --git a/spark/src/main/java/org/apache/zeppelin/spark/SparkZeppelinContext.java b/spark/src/main/java/org/apache/zeppelin/spark/SparkZeppelinContext.java
index 09b8d44..92dc0b1 100644
--- a/spark/src/main/java/org/apache/zeppelin/spark/SparkZeppelinContext.java
+++ b/spark/src/main/java/org/apache/zeppelin/spark/SparkZeppelinContext.java
@@ -33,7 +33,6 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;
-import static scala.collection.JavaConversions.asJavaCollection;
import static scala.collection.JavaConversions.asJavaIterable;
import static scala.collection.JavaConversions.collectionAsScalaIterable;
@@ -205,9 +204,44 @@ public class SparkZeppelinContext extends BaseZeppelinContext {
String name,
scala.collection.Iterable<Object> defaultChecked,
scala.collection.Iterable<Tuple2<Object, String>> options) {
- return scala.collection.JavaConversions.asScalaBuffer(
- gui.checkbox(name, asJavaCollection(defaultChecked),
- tuplesToParamOptions(options))).toSeq();
+ List<Object> defaultCheckedList = Lists.newArrayList(asJavaIterable(defaultChecked).iterator());
+ Collection<Object> checkbox = checkbox(name, defaultCheckedList, tuplesToParamOptions(options));
+ List<Object> checkboxList = Arrays.asList(checkbox.toArray());
+ return scala.collection.JavaConversions.asScalaBuffer(checkboxList).toSeq();
+ }
+
+ @ZeppelinApi
+ public Object noteSelect(String name, scala.collection.Iterable<Tuple2<Object, String>> options) {
+ return noteSelect(name, "", options);
+ }
+
+ @ZeppelinApi
+ public Object noteSelect(String name, Object defaultValue,
+ scala.collection.Iterable<Tuple2<Object, String>> options) {
+ return noteSelect(name, defaultValue, tuplesToParamOptions(options));
+ }
+
+ @ZeppelinApi
+ public scala.collection.Seq<Object> noteCheckbox(
+ String name,
+ scala.collection.Iterable<Tuple2<Object, String>> options) {
+ List<Object> allChecked = new LinkedList<>();
+ for (Tuple2<Object, String> option : asJavaIterable(options)) {
+ allChecked.add(option._1());
+ }
+ return noteCheckbox(name, collectionAsScalaIterable(allChecked), options);
+ }
+
+ @ZeppelinApi
+ public scala.collection.Seq<Object> noteCheckbox(
+ String name,
+ scala.collection.Iterable<Object> defaultChecked,
+ scala.collection.Iterable<Tuple2<Object, String>> options) {
+ List<Object> defaultCheckedList = Lists.newArrayList(asJavaIterable(defaultChecked).iterator());
+ Collection<Object> checkbox = noteCheckbox(name, defaultCheckedList,
+ tuplesToParamOptions(options));
+ List<Object> checkboxList = Arrays.asList(checkbox.toArray());
+ return scala.collection.JavaConversions.asScalaBuffer(checkboxList).toSeq();
}
private OptionInput.ParamOption[] tuplesToParamOptions(
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/spark/src/main/resources/python/zeppelin_pyspark.py
----------------------------------------------------------------------
diff --git a/spark/src/main/resources/python/zeppelin_pyspark.py b/spark/src/main/resources/python/zeppelin_pyspark.py
index 347b543..c10855a 100644
--- a/spark/src/main/resources/python/zeppelin_pyspark.py
+++ b/spark/src/main/resources/python/zeppelin_pyspark.py
@@ -81,24 +81,46 @@ class PyZeppelinContext(dict):
def input(self, name, defaultValue=""):
return self.z.input(name, defaultValue)
+ def textbox(self, name, defaultValue=""):
+ return self.z.textbox(name, defaultValue)
+
+ def noteTextbox(self, name, defaultValue=""):
+ return self.z.noteTextbox(name, defaultValue)
+
def select(self, name, options, defaultValue=""):
# auto_convert to ArrayList doesn't match the method signature on JVM side
- tuples = list(map(lambda items: self.__tupleToScalaTuple2(items), options))
- iterables = gateway.jvm.scala.collection.JavaConversions.collectionAsScalaIterable(tuples)
- return self.z.select(name, defaultValue, iterables)
+ return self.z.select(name, defaultValue, self.getParamOptions(options))
+
+ def noteSelect(self, name, options, defaultValue=""):
+ return self.z.noteSelect(name, defaultValue, self.getParamOptions(options))
def checkbox(self, name, options, defaultChecked=None):
- if defaultChecked is None:
- defaultChecked = []
- optionTuples = list(map(lambda items: self.__tupleToScalaTuple2(items), options))
- optionIterables = gateway.jvm.scala.collection.JavaConversions.collectionAsScalaIterable(optionTuples)
- defaultCheckedIterables = gateway.jvm.scala.collection.JavaConversions.collectionAsScalaIterable(defaultChecked)
- checkedItems = gateway.jvm.scala.collection.JavaConversions.seqAsJavaList(self.z.checkbox(name, defaultCheckedIterables, optionIterables))
+ optionsIterable = self.getParamOptions(options)
+ defaultCheckedIterables = self.getDefaultChecked(defaultChecked)
+ checkedItems = gateway.jvm.scala.collection.JavaConversions.seqAsJavaList(self.z.checkbox(name, defaultCheckedIterables, optionsIterable))
+ result = []
+ for checkedItem in checkedItems:
+ result.append(checkedItem)
+ return result;
+
+ def noteCheckbox(self, name, options, defaultChecked=None):
+ optionsIterable = self.getParamOptions(options)
+ defaultCheckedIterables = self.getDefaultChecked(defaultChecked)
+ checkedItems = gateway.jvm.scala.collection.JavaConversions.seqAsJavaList(self.z.noteCheckbox(name, defaultCheckedIterables, optionsIterable))
result = []
for checkedItem in checkedItems:
result.append(checkedItem)
return result;
+ def getParamOptions(self, options):
+ tuples = list(map(lambda items: self.__tupleToScalaTuple2(items), options))
+ return gateway.jvm.scala.collection.JavaConversions.collectionAsScalaIterable(tuples)
+
+ def getDefaultChecked(self, defaultChecked):
+ if defaultChecked is None:
+ defaultChecked = []
+ return gateway.jvm.scala.collection.JavaConversions.collectionAsScalaIterable(defaultChecked)
+
def registerHook(self, event, cmd, replName=None):
if replName is None:
self.z.registerHook(event, cmd)
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/spark/src/test/java/org/apache/zeppelin/spark/DepInterpreterTest.java
----------------------------------------------------------------------
diff --git a/spark/src/test/java/org/apache/zeppelin/spark/DepInterpreterTest.java b/spark/src/test/java/org/apache/zeppelin/spark/DepInterpreterTest.java
index 608807c..e177d49 100644
--- a/spark/src/test/java/org/apache/zeppelin/spark/DepInterpreterTest.java
+++ b/spark/src/test/java/org/apache/zeppelin/spark/DepInterpreterTest.java
@@ -64,7 +64,7 @@ public class DepInterpreterTest {
dep.setInterpreterGroup(intpGroup);
context = new InterpreterContext("note", "id", null, "title", "text", new AuthenticationInfo(),
- new HashMap<String, Object>(), new GUI(),
+ new HashMap<String, Object>(), new GUI(), new GUI(),
new AngularObjectRegistry(intpGroup.getId(), null),
null,
new LinkedList<InterpreterContextRunner>(), null);
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/spark/src/test/java/org/apache/zeppelin/spark/IPySparkInterpreterTest.java
----------------------------------------------------------------------
diff --git a/spark/src/test/java/org/apache/zeppelin/spark/IPySparkInterpreterTest.java b/spark/src/test/java/org/apache/zeppelin/spark/IPySparkInterpreterTest.java
index 5f6d42c..5492274 100644
--- a/spark/src/test/java/org/apache/zeppelin/spark/IPySparkInterpreterTest.java
+++ b/spark/src/test/java/org/apache/zeppelin/spark/IPySparkInterpreterTest.java
@@ -197,6 +197,7 @@ public class IPySparkInterpreterTest {
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
null,
null,
null,
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/spark/src/test/java/org/apache/zeppelin/spark/PySparkInterpreterMatplotlibTest.java
----------------------------------------------------------------------
diff --git a/spark/src/test/java/org/apache/zeppelin/spark/PySparkInterpreterMatplotlibTest.java b/spark/src/test/java/org/apache/zeppelin/spark/PySparkInterpreterMatplotlibTest.java
index 692447e..2f1077d 100644
--- a/spark/src/test/java/org/apache/zeppelin/spark/PySparkInterpreterMatplotlibTest.java
+++ b/spark/src/test/java/org/apache/zeppelin/spark/PySparkInterpreterMatplotlibTest.java
@@ -115,6 +115,7 @@ public class PySparkInterpreterMatplotlibTest {
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
new AngularObjectRegistry(intpGroup.getId(), null),
new LocalResourcePool("id"),
new LinkedList<InterpreterContextRunner>(),
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/spark/src/test/java/org/apache/zeppelin/spark/PySparkInterpreterTest.java
----------------------------------------------------------------------
diff --git a/spark/src/test/java/org/apache/zeppelin/spark/PySparkInterpreterTest.java b/spark/src/test/java/org/apache/zeppelin/spark/PySparkInterpreterTest.java
index a95c5ef..0db2bb1 100644
--- a/spark/src/test/java/org/apache/zeppelin/spark/PySparkInterpreterTest.java
+++ b/spark/src/test/java/org/apache/zeppelin/spark/PySparkInterpreterTest.java
@@ -86,6 +86,7 @@ public class PySparkInterpreterTest {
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
new AngularObjectRegistry(intpGroup.getId(), null),
new LocalResourcePool("id"),
new LinkedList<InterpreterContextRunner>(),
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/spark/src/test/java/org/apache/zeppelin/spark/SparkInterpreterTest.java
----------------------------------------------------------------------
diff --git a/spark/src/test/java/org/apache/zeppelin/spark/SparkInterpreterTest.java b/spark/src/test/java/org/apache/zeppelin/spark/SparkInterpreterTest.java
index 10141a1..e4f15f4 100644
--- a/spark/src/test/java/org/apache/zeppelin/spark/SparkInterpreterTest.java
+++ b/spark/src/test/java/org/apache/zeppelin/spark/SparkInterpreterTest.java
@@ -109,6 +109,7 @@ public class SparkInterpreterTest {
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
new AngularObjectRegistry(intpGroup.getId(), null),
new LocalResourcePool("id"),
new LinkedList<InterpreterContextRunner>(),
@@ -335,6 +336,7 @@ public class SparkInterpreterTest {
new AuthenticationInfo(),
new HashMap<String, Object>(),
new GUI(),
+ new GUI(),
new AngularObjectRegistry(intpGroup.getId(), null),
new LocalResourcePool("id"),
new LinkedList<InterpreterContextRunner>(),
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/spark/src/test/java/org/apache/zeppelin/spark/SparkSqlInterpreterTest.java
----------------------------------------------------------------------
diff --git a/spark/src/test/java/org/apache/zeppelin/spark/SparkSqlInterpreterTest.java b/spark/src/test/java/org/apache/zeppelin/spark/SparkSqlInterpreterTest.java
index 3e33f44..d97e57c 100644
--- a/spark/src/test/java/org/apache/zeppelin/spark/SparkSqlInterpreterTest.java
+++ b/spark/src/test/java/org/apache/zeppelin/spark/SparkSqlInterpreterTest.java
@@ -68,7 +68,7 @@ public class SparkSqlInterpreterTest {
sql.open();
context = new InterpreterContext("note", "id", null, "title", "text", new AuthenticationInfo(),
- new HashMap<String, Object>(), new GUI(),
+ new HashMap<String, Object>(), new GUI(), new GUI(),
new AngularObjectRegistry(intpGroup.getId(), null),
new LocalResourcePool("id"),
new LinkedList<InterpreterContextRunner>(), new InterpreterOutput(null));
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/zeppelin-display/src/test/scala/org/apache/zeppelin/display/angular/AbstractAngularElemTest.scala
----------------------------------------------------------------------
diff --git a/zeppelin-display/src/test/scala/org/apache/zeppelin/display/angular/AbstractAngularElemTest.scala b/zeppelin-display/src/test/scala/org/apache/zeppelin/display/angular/AbstractAngularElemTest.scala
index 43ad1bd..4ddae9a 100644
--- a/zeppelin-display/src/test/scala/org/apache/zeppelin/display/angular/AbstractAngularElemTest.scala
+++ b/zeppelin-display/src/test/scala/org/apache/zeppelin/display/angular/AbstractAngularElemTest.scala
@@ -35,7 +35,7 @@ trait AbstractAngularElemTest
override def beforeEach() {
val intpGroup = new InterpreterGroup()
val context = new InterpreterContext("note", "paragraph", null, "title", "text",
- new AuthenticationInfo(), new util.HashMap[String, Object](), new GUI(),
+ new AuthenticationInfo(), new util.HashMap[String, Object](), new GUI(), new GUI(),
new AngularObjectRegistry(intpGroup.getId(), null),
null,
new util.LinkedList[InterpreterContextRunner](),
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/zeppelin-display/src/test/scala/org/apache/zeppelin/display/angular/AbstractAngularModelTest.scala
----------------------------------------------------------------------
diff --git a/zeppelin-display/src/test/scala/org/apache/zeppelin/display/angular/AbstractAngularModelTest.scala b/zeppelin-display/src/test/scala/org/apache/zeppelin/display/angular/AbstractAngularModelTest.scala
index 0ab52ec..c9b0d8f 100644
--- a/zeppelin-display/src/test/scala/org/apache/zeppelin/display/angular/AbstractAngularModelTest.scala
+++ b/zeppelin-display/src/test/scala/org/apache/zeppelin/display/angular/AbstractAngularModelTest.scala
@@ -30,7 +30,7 @@ with BeforeAndAfter with BeforeAndAfterEach with Eventually with Matchers {
override def beforeEach() {
val intpGroup = new InterpreterGroup()
val context = new InterpreterContext("note", "id", null, "title", "text", new AuthenticationInfo(),
- new java.util.HashMap[String, Object](), new GUI(), new AngularObjectRegistry(
+ new java.util.HashMap[String, Object](), new GUI(), new GUI(), new AngularObjectRegistry(
intpGroup.getId(), null),
null,
new java.util.LinkedList[InterpreterContextRunner](),
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java
index 8a2cd93..a6860de 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/display/Input.java
@@ -155,6 +155,8 @@ public class Input<T> implements Serializable {
// checkbox form with " or " as delimiter: will be
// expanded to "US or JP"
private static final Pattern VAR_PTN = Pattern.compile("([_])?[$][{]([^=}]*([=][^}]*)?)[}]");
+ private static final Pattern VAR_NOTE_PTN =
+ Pattern.compile("([_])?[$]{2}[{]([^=}]*([=][^}]*)?)[}]");
private static String[] getNameAndDisplayName(String str) {
Pattern p = Pattern.compile("([^(]*)\\s*[(]([^)]*)[)]");
@@ -281,15 +283,21 @@ public class Input<T> implements Serializable {
return input;
}
- public static LinkedHashMap<String, Input> extractSimpleQueryForm(String script) {
+ public static LinkedHashMap<String, Input> extractSimpleQueryForm(String script,
+ boolean noteForm) {
LinkedHashMap<String, Input> forms = new LinkedHashMap<>();
if (script == null) {
return forms;
}
String replaced = script;
- Matcher match = VAR_PTN.matcher(replaced);
+ Pattern pattern = noteForm ? VAR_NOTE_PTN : VAR_PTN;
+ Matcher match = pattern.matcher(replaced);
while (match.find()) {
+ int first = match.start();
+ if (!noteForm && first > 0 && replaced.charAt(first - 1) == '$') {
+ continue;
+ }
Input form = getInputForm(match);
forms.put(form.name, form);
}
@@ -300,11 +308,18 @@ public class Input<T> implements Serializable {
private static final String DEFAULT_DELIMITER = ",";
- public static String getSimpleQuery(Map<String, Object> params, String script) {
+ public static String getSimpleQuery(Map<String, Object> params, String script, boolean noteForm) {
String replaced = script;
- Matcher match = VAR_PTN.matcher(replaced);
+ Pattern pattern = noteForm ? VAR_NOTE_PTN : VAR_PTN;
+
+ Matcher match = pattern.matcher(replaced);
while (match.find()) {
+ int first = match.start();
+
+ if (!noteForm && first > 0 && replaced.charAt(first - 1) == '$') {
+ continue;
+ }
Input input = getInputForm(match);
Object value;
if (params.containsKey(input.name)) {
@@ -337,7 +352,7 @@ public class Input<T> implements Serializable {
expanded = value.toString();
}
replaced = match.replaceFirst(expanded);
- match = VAR_PTN.matcher(replaced);
+ match = pattern.matcher(replaced);
}
return replaced;
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/BaseZeppelinContext.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/BaseZeppelinContext.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/BaseZeppelinContext.java
index 9503962..65bb06f 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/BaseZeppelinContext.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/BaseZeppelinContext.java
@@ -45,6 +45,7 @@ public abstract class BaseZeppelinContext {
protected int maxResult;
protected InterpreterHookRegistry hooks;
protected GUI gui;
+ protected GUI noteGui;
private static RemoteEventClientWrapper eventClient;
@@ -86,37 +87,99 @@ public abstract class BaseZeppelinContext {
@Deprecated
@ZeppelinApi
public Object input(String name, Object defaultValue) {
- return textbox(name, defaultValue.toString());
+ return textbox(name, defaultValue.toString(), false);
}
@ZeppelinApi
public Object textbox(String name) {
- return textbox(name, "");
+ return textbox(name, "", false);
}
@ZeppelinApi
public Object textbox(String name, String defaultValue) {
- return gui.textbox(name, defaultValue);
+ return textbox(name, defaultValue, false);
+ }
+
+ @ZeppelinApi
+ public Collection<Object> checkbox(String name, ParamOption[] options) {
+ return checkbox(name, options, false);
+ }
+
+ @ZeppelinApi
+ public Collection<Object> checkbox(String name, List<Object> defaultChecked,
+ ParamOption[] options) {
+ return checkbox(name, defaultChecked, options, false);
}
+ @ZeppelinApi
public Object select(String name, Object defaultValue, ParamOption[] paramOptions) {
- return gui.select(name, defaultValue, paramOptions);
+ return select(name, defaultValue, paramOptions, false);
}
@ZeppelinApi
- public Collection<Object> checkbox(String name, ParamOption[] options) {
+ public Object noteTextbox(String name) {
+ return textbox(name, "");
+ }
+
+ @ZeppelinApi
+ public Object noteTextbox(String name, String defaultValue) {
+ return textbox(name, defaultValue, true);
+ }
+
+ @ZeppelinApi
+ public Collection<Object> noteCheckbox(String name, ParamOption[] options) {
+ return checkbox(name, options, true);
+ }
+
+ @ZeppelinApi
+ public Collection<Object> noteCheckbox(String name, List<Object> defaultChecked,
+ ParamOption[] options) {
+ return checkbox(name, defaultChecked, options, true);
+ }
+
+ @ZeppelinApi
+ public Object noteSelect(String name, Object defaultValue, ParamOption[] paramOptions) {
+ return select(name, defaultValue, paramOptions, true);
+ }
+
+
+ private Object select(String name, Object defaultValue, ParamOption[] paramOptions,
+ boolean noteForm) {
+ if (noteForm) {
+ return noteGui.select(name, defaultValue, paramOptions);
+ } else {
+ return gui.select(name, defaultValue, paramOptions);
+ }
+ }
+
+ private Object textbox(String name, String defaultValue, boolean noteForm) {
+ if (noteForm) {
+ return noteGui.textbox(name, defaultValue);
+ } else {
+ return gui.textbox(name, defaultValue);
+ }
+ }
+
+ private Collection<Object> checkbox(String name, ParamOption[] options,
+ boolean noteForm) {
List<Object> defaultValues = new LinkedList<>();
for (ParamOption option : options) {
defaultValues.add(option.getValue());
}
- return checkbox(name, defaultValues, options);
+ if (noteForm) {
+ return noteGui.checkbox(name, defaultValues, options);
+ } else {
+ return gui.checkbox(name, defaultValues, options);
+ }
}
- @ZeppelinApi
- public Collection<Object> checkbox(String name,
- List<Object> defaultValues,
- ParamOption[] options) {
- return gui.checkbox(name, defaultValues, options);
+ private Collection<Object> checkbox(String name, List<Object> defaultChecked,
+ ParamOption[] options, boolean noteForm) {
+ if (noteForm) {
+ return noteGui.checkbox(name, defaultChecked, options);
+ } else {
+ return gui.checkbox(name, defaultChecked, options);
+ }
}
public void setGui(GUI o) {
@@ -127,6 +190,15 @@ public abstract class BaseZeppelinContext {
return gui;
}
+
+ public GUI getNoteGui() {
+ return noteGui;
+ }
+
+ public void setNoteGui(GUI noteGui) {
+ this.noteGui = noteGui;
+ }
+
private void restartInterpreter() {
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/InterpreterContext.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/InterpreterContext.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/InterpreterContext.java
index f5fc70b..293f9bf 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/InterpreterContext.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/InterpreterContext.java
@@ -58,6 +58,7 @@ public class InterpreterContext {
private AuthenticationInfo authenticationInfo;
private Map<String, Object> config = new HashMap<>();
private GUI gui = new GUI();
+ private GUI noteGui = new GUI();
private AngularObjectRegistry angularObjectRegistry;
private ResourcePool resourcePool;
private List<InterpreterContextRunner> runners = new ArrayList<>();
@@ -100,13 +101,14 @@ public class InterpreterContext {
AuthenticationInfo authenticationInfo,
Map<String, Object> config,
GUI gui,
+ GUI noteGui,
AngularObjectRegistry angularObjectRegistry,
ResourcePool resourcePool,
List<InterpreterContextRunner> runners,
InterpreterOutput out
) {
this(noteId, paragraphId, replName, paragraphTitle, paragraphText, authenticationInfo,
- config, gui, angularObjectRegistry, resourcePool, runners, out, null, null);
+ config, gui, noteGui, angularObjectRegistry, resourcePool, runners, out, null, null);
}
public InterpreterContext(String noteId,
@@ -117,6 +119,7 @@ public class InterpreterContext {
AuthenticationInfo authenticationInfo,
Map<String, Object> config,
GUI gui,
+ GUI noteGui,
AngularObjectRegistry angularObjectRegistry,
ResourcePool resourcePool,
List<InterpreterContextRunner> runners,
@@ -132,6 +135,7 @@ public class InterpreterContext {
this.authenticationInfo = authenticationInfo;
this.config = config;
this.gui = gui;
+ this.noteGui = noteGui;
this.angularObjectRegistry = angularObjectRegistry;
this.resourcePool = resourcePool;
this.runners = runners;
@@ -148,6 +152,7 @@ public class InterpreterContext {
AuthenticationInfo authenticationInfo,
Map<String, Object> config,
GUI gui,
+ GUI noteGui,
AngularObjectRegistry angularObjectRegistry,
ResourcePool resourcePool,
List<InterpreterContextRunner> contextRunners,
@@ -156,7 +161,7 @@ public class InterpreterContext {
RemoteInterpreterEventClient eventClient,
Map<String, Integer> progressMap) {
this(noteId, paragraphId, replName, paragraphTitle, paragraphText, authenticationInfo,
- config, gui, angularObjectRegistry, resourcePool, contextRunners, output,
+ config, gui, noteGui, angularObjectRegistry, resourcePool, contextRunners, output,
remoteWorksController, progressMap);
this.client = new RemoteEventClient(eventClient);
}
@@ -193,6 +198,10 @@ public class InterpreterContext {
return gui;
}
+ public GUI getNoteGui() {
+ return noteGui;
+ }
+
public AngularObjectRegistry getAngularObjectRegistry() {
return angularObjectRegistry;
}
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
index 86f35c6..c2a578c 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterServer.java
@@ -462,7 +462,8 @@ public class RemoteInterpreterServer
}
return convert(result,
context.getConfig(),
- context.getGui());
+ context.getGui(),
+ context.getNoteGui());
}
@Override
@@ -749,6 +750,7 @@ public class RemoteInterpreterServer
(Map<String, Object>) gson.fromJson(ric.getConfig(),
new TypeToken<Map<String, Object>>() {}.getType()),
GUI.fromJson(ric.getGui()),
+ GUI.fromJson(ric.getNoteGui()),
interpreterGroup.getAngularObjectRegistry(),
interpreterGroup.getResourcePool(),
contextRunners, output, remoteWorksController, eventClient, progressMap);
@@ -880,7 +882,7 @@ public class RemoteInterpreterServer
}
private RemoteInterpreterResult convert(InterpreterResult result,
- Map<String, Object> config, GUI gui) {
+ Map<String, Object> config, GUI gui, GUI noteGui) {
List<RemoteInterpreterResultMessage> msg = new LinkedList<>();
for (InterpreterResultMessage m : result.message()) {
@@ -893,7 +895,8 @@ public class RemoteInterpreterServer
result.code().name(),
msg,
gson.toJson(config),
- gui.toJson());
+ gui.toJson(),
+ noteGui.toJson());
}
@Override
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/CallbackInfo.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/CallbackInfo.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/CallbackInfo.java
index b0c7e9a..c36a7ac 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/CallbackInfo.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/CallbackInfo.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2017-6-17")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2017-10-22")
public class CallbackInfo implements org.apache.thrift.TBase<CallbackInfo, CallbackInfo._Fields>, java.io.Serializable, Cloneable, Comparable<CallbackInfo> {
private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("CallbackInfo");
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/InterpreterCompletion.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/InterpreterCompletion.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/InterpreterCompletion.java
index 43713e9..2ec653e 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/InterpreterCompletion.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/InterpreterCompletion.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2017-3-27")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2017-10-22")
public class InterpreterCompletion implements org.apache.thrift.TBase<InterpreterCompletion, InterpreterCompletion._Fields>, java.io.Serializable, Cloneable, Comparable<InterpreterCompletion> {
private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("InterpreterCompletion");
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/RemoteApplicationResult.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/RemoteApplicationResult.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/RemoteApplicationResult.java
index cf8e50a..0398bf9 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/RemoteApplicationResult.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/RemoteApplicationResult.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2017-3-27")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2017-10-22")
public class RemoteApplicationResult implements org.apache.thrift.TBase<RemoteApplicationResult, RemoteApplicationResult._Fields>, java.io.Serializable, Cloneable, Comparable<RemoteApplicationResult> {
private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("RemoteApplicationResult");
http://git-wip-us.apache.org/repos/asf/zeppelin/blob/50cfabdf/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/RemoteInterpreterCallbackService.java
----------------------------------------------------------------------
diff --git a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/RemoteInterpreterCallbackService.java b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/RemoteInterpreterCallbackService.java
index 6ef08f6..baa5a2d 100644
--- a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/RemoteInterpreterCallbackService.java
+++ b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/thrift/RemoteInterpreterCallbackService.java
@@ -51,7 +51,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
-@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2017-6-17")
+@Generated(value = "Autogenerated by Thrift Compiler (0.9.2)", date = "2017-10-22")
public class RemoteInterpreterCallbackService {
public interface Iface {