소스 검색

HUE-2892 [notebook] Disable $ variables for R

Added ${var} support to all the snippets
Restyled variables input
Fixed regex to detect variables and replace them
Added variable showing at page load
Enrico Berti 10 년 전
부모
커밋
c5346fa
3개의 변경된 파일19개의 추가작업 그리고 14개의 파일을 삭제
  1. BIN
      apps/spark/java/-version
  2. 8 7
      apps/spark/src/spark/static/spark/js/spark.ko.js
  3. 11 7
      apps/spark/src/spark/templates/editor_components.mako

BIN
apps/spark/java/-version


+ 8 - 7
apps/spark/src/spark/static/spark/js/spark.ko.js

@@ -111,7 +111,7 @@ var TYPE_ACE_EDITOR_MAP = {
   'pyspark': 'ace/mode/python',
   'spark': 'ace/mode/scala',
   'pig': 'ace/mode/pig',
-  'r': 'ace/mode/r',
+  'r': 'ace/mode/r'
 };
 
 var getDefaultSnippetProperties = function (snippetType) {
@@ -186,13 +186,11 @@ var Snippet = function (vm, notebook, snippet) {
 
   self.variables = ko.observableArray([]);
   self.variableNames = ko.computed(function () {
-    var matches = [];
-    var myRegexp = /(?:[^\\]\$)([^\d'" ]\w*)/g;
-    var match = myRegexp.exec(self.statement_raw());
+    var re = /(?:^|\W)\${(\w+)(?!\w)}/g;
 
-    while (match != null) {
+    var match, matches = [];
+    while (match = re.exec(self.statement_raw())) {
       matches.push(match[1]);
-      match = myRegexp.exec(self.statement());
     }
     return matches;
   });
@@ -234,7 +232,7 @@ var Snippet = function (vm, notebook, snippet) {
   self.statement = ko.computed(function () {
     var statement = self.statement_raw();
     $.each(self.variables(), function (index, variable) {
-      statement = statement.replace(RegExp("([^\\\\])\\$" + variable.name(), "g"), "$1" + variable.value());
+      statement = statement.replace(RegExp("([^\\\\])?\\${" + variable.name() + "}", "g"), "$1" + variable.value());
     });
     return statement;
   });
@@ -905,6 +903,9 @@ function EditorViewModel(notebooks, options) {
     self.notebooks.push(_n);
     if (_n.snippets().length > 0) {
       _n.selectedSnippet(_n.snippets()[_n.snippets().length - 1].type());
+      _n.snippets().forEach(function(snippet){
+        snippet.statement_raw.valueHasMutated();
+      });
     }
   };
 

+ 11 - 7
apps/spark/src/spark/templates/editor_components.mako

@@ -448,14 +448,8 @@ from django.utils.translation import ugettext as _
 </script>
 
 <script type="text/html" id="code-editor-snippet-body">
-  <div class="row-fluid">
+  <div class="row-fluid" style="margin-bottom: 5px">
     <div class="editor span12" data-bind="verticalSlide: codeVisible">
-      <div data-bind="foreach: variables">
-        <div>
-          <span data-bind="text: name"></span>
-          <input type="text" data-bind="value: value" />
-        </div>
-      </div>
       <div class="ace-editor" data-bind="attr: { id: id() }, aceEditor: {
           value: statement_raw,
           onExecute: execute,
@@ -467,7 +461,17 @@ from django.utils.translation import ugettext as _
           openIt: '${ _("Double click to open it") }',
           placeholder: $root.snippetPlaceholders[type()] }"></div>
       </div>
+    <div class="clearfix"></div>
+    <ul data-bind="foreach: variables" class="unstyled inline">
+        <li>
+          <div class="input-prepend margin-top-10">
+            <span class="muted add-on" data-bind="text: name"></span>
+            <input class="input-medium" type="text" placeholder="${ _("Variable value") }" data-bind="value: value">
+          </div>
+        </li>
+      </ul>
   </div>
+  <div class="clearfix"></div>
 
   <!-- ko template: 'snippet-footer-actions' --><!-- /ko -->
   <!-- ko template: 'snippet-results' --><!-- /ko -->