Prechádzať zdrojové kódy

HUE-9291 [editor] Reverse the result table rows for streaming results

Johan Ahlen 5 rokov pred
rodič
commit
e9250141f3

+ 4 - 0
desktop/core/src/desktop/js/apps/notebook2/components/ko.snippetResults.js

@@ -76,6 +76,7 @@ const TEMPLATE = `
           params: {
             activeExecutable: activeExecutable,
             data: data,
+            streaming: streaming,
             lastFetchedRows: lastFetchedRows,
             fetchResult: fetchResult.bind($data),
             hasMore: hasMore,
@@ -138,6 +139,7 @@ class SnippetResults extends DisposableComponent {
     this.status = ko.observable();
     this.type = ko.observable(RESULT_TYPE.TABLE);
     this.meta = ko.observableArray();
+    this.streaming = ko.observable();
     this.data = ko.observableArray();
     this.lastFetchedRows = ko.observableArray();
     this.images = ko.observableArray();
@@ -226,6 +228,7 @@ class SnippetResults extends DisposableComponent {
     this.lastFetchedRows([]);
     this.data([]);
     this.meta([]);
+    this.streaming(false);
     this.cleanedMeta([]);
     this.cleanedDateTimeMeta([]);
     this.cleanedNumericMeta([]);
@@ -245,6 +248,7 @@ class SnippetResults extends DisposableComponent {
       this.fetchedOnce(executionResult.fetchedOnce);
       this.hasMore(executionResult.hasMore);
       this.type(executionResult.type);
+      this.streaming(executionResult.streaming);
 
       if (!this.meta().length && executionResult.meta.length) {
         this.meta(executionResult.koEnrichedMeta);

+ 6 - 1
desktop/core/src/desktop/js/apps/notebook2/components/resultGrid/ko.resultGrid.js

@@ -190,6 +190,7 @@ class ResultGrid extends DisposableComponent {
     this.notebookMode = params.notebookMode;
     this.hasMore = params.hasMore;
     this.fetchResult = params.fetchResult;
+    this.streaming = params.streaming;
 
     const trackedObservables = {
       columnsVisible: false,
@@ -577,7 +578,11 @@ class ResultGrid extends DisposableComponent {
         dataTable = $resultTable.hueDataTable();
       }
       try {
-        dataTable.fnAddData(initial && this.data().length ? this.data() : this.lastFetchedRows());
+        dataTable.fnAddData(
+          initial && this.data().length ? this.data() : this.lastFetchedRows(),
+          undefined,
+          this.streaming
+        );
       } catch (e) {}
       const $dataTablesWrapper = $snippet.find('.dataTables_wrapper');
       this.showNormalResult();

+ 5 - 2
desktop/core/src/desktop/js/jquery/plugins/jquery.huedatatable.js

@@ -640,12 +640,15 @@ $.fn.hueDataTable = function(oInit) {
     }
   };
 
-  self.fnAddData = function(mData, bRedraw) {
+  self.fnAddData = function(mData, bRedraw, reverse) {
     const $t = self.$table;
 
     if ($t) {
       const aoColumns = $t.data('aoColumns') || [];
-      $t.data('data', $t.data('data').concat(mData));
+      $t.data(
+        'data',
+        reverse ? mData.reverse().concat($t.data('data')) : $t.data('data').concat(mData)
+      );
 
       if (mData.length === 0) {
         return;