Prechádzať zdrojové kódy

HUE-3379 [editor] Wire explain button

Romain Rigaux 9 rokov pred
rodič
commit
6b63e5be0f

+ 17 - 1
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -82,6 +82,7 @@
 
     self.data = ko.observableArray(typeof result.data != "undefined" && result.data != null ? result.data : []);
     self.data.extend({ rateLimit: 50 });
+    self.explanation = ko.observable(typeof result.explanation != "undefined" && result.explanation != null ? result.explanation : '');
     self.images = ko.observableArray(typeof result.images != "undefined" && result.images != null ? result.images : []);
     self.images.extend({ rateLimit: 50 });
     self.logs = ko.observable('');
@@ -107,6 +108,7 @@
       self.logs('');
       self.startTime(new Date());
       self.endTime(new Date());
+      self.explanation('');
     };
   };
 
@@ -600,8 +602,22 @@
     };
 
     self.explain = function () {
-      console.log('Explain call here.');
       logGA('explain');
+      self.result.clear();
+      self.status('ready');
+
+      $.post("/notebook/api/explain", {
+        notebook: ko.mapping.toJSON(notebook.getContext()),
+        snippet: ko.mapping.toJSON(self.getContext())
+      }, function(data) {
+        if (data.status == 0) {
+          notebook.showHistory(false);
+          self.result.fetchedOnce(true);
+          self.result.explanation(data.explanation);
+        } else {
+          $(document).trigger("error", data.message);
+        }
+      });
     }
 
     self.fetchResult = function (rows, startOver) {

+ 11 - 1
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -420,7 +420,7 @@ ${ require.config() }
       <pre class="margin-top-10 no-margin-bottom"><i class="fa fa-check muted"></i> ${ _('Success.') }</pre>
     </div>
 
-    <div data-bind="visible: result.hasResultset() && status() == 'available' && result.data().length == 0 && result.fetchedOnce(), css: resultsKlass" style="display:none;">
+    <div data-bind="visible: result.hasResultset() && status() == 'available' && result.data().length == 0 && result.fetchedOnce() && result.explanation().length <= 0, css: resultsKlass" style="display:none;">
       <pre class="margin-top-10 no-margin-bottom"><i class="fa fa-check muted"></i> ${ _("Done. 0 results.") }</pre>
     </div>
 
@@ -792,6 +792,14 @@ ${ require.config() }
 </script>
 
 <script type="text/html" id="snippet-results">
+  <!-- ko if: result.explanation().length > 0 -->
+    <div class="snippet-row">
+      <div class="result-body">
+        <pre class="no-margin-bottom" data-bind="text: result.explanation"></pre>
+      </div>
+    </div>
+  <!-- /ko -->
+
   <div class="snippet-row" data-bind="slideVisible: result.hasSomeResults">
     <div class="snippet-left-bar">
       <!-- ko template: { if: result.type() == 'table' && result.hasSomeResults(), name: 'snippet-result-controls' }--><!-- /ko -->
@@ -863,10 +871,12 @@ ${ require.config() }
   </div>
 </script>
 
+
 <script type="text/html" id="text-snippet-body">
   <div data-bind="attr:{'id': 'editor_' + id()}, html: statement_raw, value: statement_raw, medium: {}" data-placeHolder="${ _('Type your text here, select some text to format it') }" class="text-snippet"></div>
 </script>
 
+
 <script type="text/html" id="markdown-snippet-body">
   <!-- ko if: $root.isEditing() -->
   <div class="row-fluid">