Эх сурвалжийг харах

[editor] Display number of statements when using multi queries

Romain Rigaux 9 жил өмнө
parent
commit
8560caf

+ 3 - 1
desktop/libs/notebook/src/notebook/connectors/hiveserver2.py

@@ -149,7 +149,8 @@ class HS2Api(Api):
         'modified_row_count': handle.modified_row_count,
         'log_context': handle.log_context,
         'statement_id': statement_id,
-        'has_more_statements': statement_id < len(statements) - 1
+        'has_more_statements': statement_id < len(statements) - 1,
+        'statements_count': len(statements),
     }
 
   def _get_statements(self, hql_query):
@@ -293,6 +294,7 @@ class HS2Api(Api):
     snippet['result']['handle']['secret'], snippet['result']['handle']['guid'] = HiveServerQueryHandle.get_decoded(snippet['result']['handle']['secret'], snippet['result']['handle']['guid'])
     snippet['result']['handle'].pop('statement_id')
     snippet['result']['handle'].pop('has_more_statements')
+    snippet['result']['handle'].pop('statements_count')
     return HiveServerQueryHandle(**snippet['result']['handle'])
 
 

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

@@ -36,6 +36,8 @@
     self.handle = ko.observable(typeof result.handle != "undefined" && result.handle != null ? result.handle : {});
     self.meta = ko.observableArray(typeof result.meta != "undefined" && result.meta != null ? result.meta : []);
     self.hasMore = ko.observable(typeof result.hasMore != "undefined" && result.hasMore != null ? result.hasMore : false);
+    self.statement_id = ko.observable(typeof result.statement_id != "undefined" && result.statement_id != null ? result.statement_id : 0);
+    self.statements_count = ko.observable(typeof result.statements_count != "undefined" && result.statements_count != null ? result.statements_count : 1);
     self.cleanedMeta = ko.computed(function () {
       return ko.utils.arrayFilter(self.meta(), function (item) {
         return item.name != ''
@@ -155,7 +157,7 @@
     self.name = ko.observable(typeof snippet.name != "undefined" && snippet.name != null ? snippet.name : '');
     self.type = ko.observable(typeof snippet.type != "undefined" && snippet.type != null ? snippet.type : 'hive');
 
-    //Ace stuff
+    // Ace stuff
     self.ace = ko.observable(null);
     self.errors = ko.observableArray([]);
 
@@ -531,6 +533,12 @@
           self.result.clear();
           self.result.handle(data.handle);
           self.result.hasResultset(data.handle.has_result_set);
+          if (data.handle.statements_count != null) {
+            self.result.statements_count(data.handle.statements_count);
+          }
+          if (data.handle.statement_id != null) {
+            self.result.statement_id(data.handle.statement_id);
+          }
           if (data.handle.sync) {
             self.loadData(data.handle, 100);
             self.status('success');

+ 3 - 0
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -950,6 +950,9 @@ ${ require.config() }
     <a class="snippet-side-btn" data-bind="click: reexecute, visible: $root.editorMode && result && result.handle().has_more, css: {'blue': $parent.history().length == 0 || $root.editorMode, 'disabled': statement() === '' }" title="${ _('Restart from the first statement') }">
       <i class="fa fa-fw fa-repeat"></i>
     </a>
+    <span data-bind="visible: $root.editorMode && result.statements_count() > 1">
+      <span data-bind="text: result.statement_id() + 1"></span> / <span data-bind="text: result.statements_count()"></span>
+    </span>
     <a class="snippet-side-btn" data-bind="click: execute, visible: status() != 'running' && status() != 'loading', css: {'blue': $parent.history().length == 0 || $root.editorMode, 'disabled': statement() === '' }" title="${ _('Execute or CTRL + ENTER') }">
       <i class="fa fa-fw fa-play"></i>
     </a>