Repository: zeppelin Updated Branches: refs/heads/branch-0.7 abd02502b -> 8f25137fd
[HOTFOX][Branch-0.7] Fix multi dynamic select forms behaviour ### What is this PR for? This PR is same with #2154 with base branch `branch-0.7`. Please refer to #2154's description for the details about what the problem is now. ### What type of PR is it? Bug Fix & Hot Fix ### What is the Jira issue? N/A ### How should this be tested? 1. Create multiple select forms ``` %md My first selection is ${my selection1=1,1|2|3} My second selection is ${my selection2=4,4|5|6} ``` 2. Create different types of dynamic form (e.g. 1 select form + 1 checkbox) ``` %md My selection is ${my selection=1,1|2|3} My check list is ${checkbox:checkboxTest=list1|list2, list1|list2|list3|list4} ``` There should be `Run on selection change` menu under the paragraph control menu in the above cases. And the select form should appear! ### Screenshots (if appropriate) - When multiple select forms are created  - When different dynamic forms are created (e.g. 1 checkbox + 1 select form)  ### Questions: * Does the licenses files need update? no * Is there breaking changes for older versions? no * Does this needs documentation? no Author: RyuAhyoung <ahyoungryu@MacBook-Pro-5.local> Closes #2156 from AhyoungRyu/branch-0.7-fix/multiDynamicFormBehaviour and squashes the following commits: ca3d82e [RyuAhyoung] Update docs since the option is applicable for the checkbox 850d4b5 [RyuAhyoung] Give 'runOnSelectionChange' option to 'Checkbox' as well c7f8a09 [RyuAhyoung] [branch-0.7] Fix multi dynamicforms behaviour Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/8f25137f Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/8f25137f Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/8f25137f Branch: refs/heads/branch-0.7 Commit: 8f25137fd5bcf6e9bb40e2e39b98231f5567c5f7 Parents: abd0250 Author: RyuAhyoung <ahyoungryu@MacBook-Pro-5.local> Authored: Sun Mar 19 08:30:06 2017 +0900 Committer: ahyoungryu <ahyoung...@apache.org> Committed: Sun Mar 19 20:39:25 2017 +0900 ---------------------------------------------------------------------- docs/manual/dynamicform.md | 12 ++++++++++-- .../src/app/notebook/paragraph/paragraph-control.html | 3 +-- .../paragraph/paragraph-parameterizedQueryForm.html | 14 +++++++++++++- .../app/notebook/paragraph/paragraph.controller.js | 12 +++++++----- 4 files changed, 31 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zeppelin/blob/8f25137f/docs/manual/dynamicform.md ---------------------------------------------------------------------- diff --git a/docs/manual/dynamicform.md b/docs/manual/dynamicform.md index b3ef4ed..33ed97e 100644 --- a/docs/manual/dynamicform.md +++ b/docs/manual/dynamicform.md @@ -57,8 +57,9 @@ Also you can separate option's display name and value, using `${formName=default <img src="../assets/themes/zeppelin/img/screenshots/form_select_displayname.png" /> The paragraph will be automatically run after you change your selection by default. -But in case you have multiple select forms in one paragraph, you might want to run the paragraph after changing all the selections. -You can control this by unchecking the below **Run on selection change** option in the setting menu. Even if you uncheck this option, still you can run it by pressing `Enter`. +But in case you have multiple types dynamic form in one paragraph, you might want to run the paragraph after changing all the selections. +You can control this by unchecking the below **Run on selection change** option in the setting menu. +Even if you uncheck this option, still you can run it by pressing `Enter`. <img src="../assets/themes/zeppelin/img/screenshots/selectForm-checkbox.png" /> @@ -72,6 +73,13 @@ Besides, you can specify the delimiter using `${checkbox(delimiter):formName=... <img src="../assets/themes/zeppelin/img/screenshots/form_checkbox_delimiter.png"> +Like [select form](#select-form), the paragraph will be automatically run after you change your selection by default. +But in case you have multiple types of dynamic form in one paragraph, you might want to run the paragraph after changing all the selections. +You can control this by unchecking the below **Run on selection change** option in the setting menu. +Even if you uncheck this option, still you can run it by pressing `Enter`. + +<img src="../assets/themes/zeppelin/img/screenshots/selectForm-checkbox.png" /> + ## Creates Programmatically Some language backend uses programmatic way to create form. For example [ZeppelinContext](../interpreter/spark.html#zeppelincontext) provides form creation API http://git-wip-us.apache.org/repos/asf/zeppelin/blob/8f25137f/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html b/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html index 9833f48..d1d7359 100644 --- a/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html +++ b/zeppelin-web/src/app/notebook/paragraph/paragraph-control.html @@ -56,8 +56,7 @@ limitations under the License. </li> <li role="separator" class="divider"></li> <li style="padding-top:8px" - ng-if="paragraph.settings.forms[$root.keys(paragraph.settings.forms)].options && - paragraph.settings.forms[$root.keys(paragraph.settings.forms)].type != 'checkbox'"> + ng-if="paragraph.config.runOnSelectionChange == true || paragraph.config.runOnSelectionChange == false"> <span ng-if="paragraph.config.runOnSelectionChange == true" class="fa fa-toggle-on shortcut-icon" style="padding:3px 8px 8px 20px"></span> <span ng-if="paragraph.config.runOnSelectionChange == false" class="fa fa-toggle-off shortcut-icon" style="padding:3px 8px 8px 20px"></span>Run on selection change <form style="display:inline; float:right"> http://git-wip-us.apache.org/repos/asf/zeppelin/blob/8f25137f/zeppelin-web/src/app/notebook/paragraph/paragraph-parameterizedQueryForm.html ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph-parameterizedQueryForm.html b/zeppelin-web/src/app/notebook/paragraph/paragraph-parameterizedQueryForm.html index 7ead979..2d0d170 100644 --- a/zeppelin-web/src/app/notebook/paragraph/paragraph-parameterizedQueryForm.html +++ b/zeppelin-web/src/app/notebook/paragraph/paragraph-parameterizedQueryForm.html @@ -46,12 +46,24 @@ limitations under the License. ng-options="option.value as (option.displayName||option.value) for option in paragraph.settings.forms[formulaire.name].options"> </select> </div> - <div ng-if="paragraph.settings.forms[formulaire.name].type == 'checkbox'"> + <div ng-if="paragraph.config.runOnSelectionChange == true && + paragraph.settings.forms[formulaire.name].type == 'checkbox'"> <label ng-repeat="option in paragraph.settings.forms[formulaire.name].options" class="checkbox-item input-sm"> <input type="checkbox" ng-class="{'disable': paragraph.status == 'RUNNING' || paragraph.status == 'PENDING' }" ng-checked="paragraph.settings.params[formulaire.name].indexOf(option.value) > -1" + ng-click="toggleCheckbox(formulaire, option, false); runParagraph(getEditorValue())"/> {{option.displayName||option.value}} + </label> + </div> + <div ng-if="paragraph.config.runOnSelectionChange == false && + paragraph.settings.forms[formulaire.name].type == 'checkbox'"> + <label ng-repeat="option in paragraph.settings.forms[formulaire.name].options" + class="checkbox-item input-sm"> + <input type="checkbox" + ng-class="{'disable': paragraph.status == 'RUNNING' || paragraph.status == 'PENDING' }" + ng-checked="paragraph.settings.params[formulaire.name].indexOf(option.value) > -1" + ng-enter="runParagraph(getEditorValue())" ng-click="toggleCheckbox(formulaire, option, false)"/> {{option.displayName||option.value}} </label> </div> http://git-wip-us.apache.org/repos/asf/zeppelin/blob/8f25137f/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js ---------------------------------------------------------------------- diff --git a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js index b039a47..c40a56d 100644 --- a/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js +++ b/zeppelin-web/src/app/notebook/paragraph/paragraph.controller.js @@ -133,11 +133,13 @@ function ParagraphCtrl($scope, $rootScope, $route, $window, $routeParams, $locat if (config.enabled === undefined) { config.enabled = true; } - - if (forms[Object.keys(forms)]) { - if (forms[Object.keys(forms)].options && forms[Object.keys(forms)].type !== 'checkbox') { - if (config.runOnSelectionChange === undefined) { - config.runOnSelectionChange = true; + + for (var idx in forms) { + if (forms[idx]) { + if (forms[idx].options) { + if (config.runOnSelectionChange === undefined) { + config.runOnSelectionChange = true; + } } } }