### What is this PR for?
Currently a paragraph can display only a single type of result.
For example
```
print("""
%text textout
%html htmlout
""")
```
will display only last display system detected, "htmlout".
This pr implements multiple results supports, so not only the last, but also all the display systems in a paragraph outputs can be displayed.
To do that, Note.json format need to be changed. from
```
paragraph : [
{
result : {
code: "",
type: "",
msg: ""
},
config : {
graph : {},
...
},
...
},
...
],
...
```
to
```
paragraph : [
{
results : {
{
code: "",
msg: [
{
type: "",
data: ""
},
{
type: "",
data: ""
},
...
]
},
config : {
results : [
{
graph : {},
},
{
graph : {},
},
...
]
},
...
},
...
],
...
```
### What type of PR is it?
Improvement
### Todos
* [x] - Make InterpreterResult and InterpreterOutput support multiple display system
* [x] - Automatic migration old format to new format
* [x] - Render multiple results in front-end
* [x] - Take care Importing old notebook format
* [x] - Make helium framework support multiple results
### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-212
### How should this be tested?
run following code in a single spark paragraph.
```
%spark
// default output is text
(1 to 3).foreach{i=>
println(new java.util.Date())
Thread.sleep(1000)
}
// print something in html
println(s"""%html <h3><font style="color:blue">Some HTML</font></h3>""")
// create table
println(s"""%table key\tvalue
sun\t100
moon\t200
""")
// display text again
println("""%text""")
(1 to 3).foreach{i=>
println(new java.util.Date())
Thread.sleep(1000)
}
// another table
Thread.sleep(1000)
println(s"""%table key\tvalue
apple\t100
banana\t200
""")
```
### Screenshots (if appropriate)

### Questions:
* Does the licenses files need update? no
* Is there breaking changes for older versions? yes
* Does this needs documentation? yes
Author: Lee moon soo <moon@apache.org>
Closes #1658 from Leemoonsoo/ZEPPELIN-212 and squashes the following commits:
|
||
|---|---|---|
| .. | ||
| src | ||
| test | ||
| .bowerrc | ||
| .editorconfig | ||
| .eslintrc | ||
| .jscsrc | ||
| bower.json | ||
| Gruntfile.js | ||
| package.json | ||
| pom.xml | ||
| README.md | ||
Zeppelin Web Application
This is Zeppelin's frontend project.
Development Guide
Packaging
If you want to package the zeppelin-web only, simply run this command in this folder.
This will download all the dependencies including node (the binaries in the folder zeppelin-web/node)
$ mvn package
Local Development
It is recommended to install node 6.0.0+ since Zeppelin uses 6.9.1+ (see creationix/nvm)
All build commands are described in package.json
# install required depepdencies and bower packages (only once)
$ npm install
# build zeppelin-web for production
$ npm run build
# run frontend application only in dev mode (localhost:9000)
# you need to run zeppelin backend instance also
$ npm run start
# execute tests
$ npm run test
Troubleshooting
Git error
In case of the error ECMDERR Failed to execute "git ls-remote --tags --heads git://xxxxx", exit code of #128
change your git config with git config --global url."https://".insteadOf git://
Proxy issues
Try to add to the .bowerrc file the following content:
"proxy" : "http://<host>:<port>",
"https-proxy" : "http://<host>:<port>"
also try to add proxy info to npm install command:
<execution>
<id>npm install</id>
<goals>
<goal>npm</goal>
</goals>
<configuration>
<arguments>--proxy=http://<host>:<port> --https-proxy=http://<host>:<port></arguments>
</configuration>
</execution>
and retry to build again.
Contribute on Zeppelin Web
If you wish to help us and contribute to Zeppelin WebApplication, please look at the overall project contribution guidelines and the more focused Zeppelin WebApplication's documentation.