Browse Source

HUE-3228 [dashboard] Unify progress button to wait for all facets to finish

Romain Rigaux 8 years ago
parent
commit
16d2c91672
1 changed files with 23 additions and 10 deletions
  1. 23 10
      apps/search/src/search/static/search/js/search.ko.js

+ 23 - 10
apps/search/src/search/static/search/js/search.ko.js

@@ -1433,7 +1433,7 @@ var QueryResult = function (vm, initial) {
   self.type = ko.mapping.fromJS(initial.type);
   self.status = ko.observable('running');
   self.progress = ko.mapping.fromJS(initial.progress || 0);
-  
+
   self.hasResultset = ko.observable(true);
 
   self.result = ko.mapping.fromJS(initial.result);
@@ -1441,7 +1441,7 @@ var QueryResult = function (vm, initial) {
     return self.hasResultset(); // && self.data().length > 0; // status() == 'available'
   });
   self.result.type = ko.observable('table');
-  
+
   self.getContext = function() {
 	return self;
   }
@@ -1526,6 +1526,14 @@ var SearchViewModel = function (collection_json, query_json, initial_json) {
   };
   self.isRetrievingResults = ko.observable(false);
   self.hasRetrievedResults = ko.observable(true);
+  self.asyncSearchesCounter = ko.observable(0);
+  self.asyncSearchesCounter.subscribe(function(newVal) {
+	if (newVal == 0) {
+	  self.isRetrievingResults(false);
+	  self.hasRetrievedResults(true);
+	  $('.btn-loading').button('reset');
+	}
+  });
 
   self.showCores = ko.observable(false);
   self.showCores.subscribe(function(newValue) {
@@ -1671,12 +1679,15 @@ var SearchViewModel = function (collection_json, query_json, initial_json) {
        } else {
          self._make_grid_result(data);
        }
+
+       self.asyncSearchesCounter(self.asyncSearchesCounter() - 1);
+
        //if (facet.queryResult().result['handle'].has_result_set()) {
        //  self.fetchResultSize(facet);
        //}
      });
    }
-   
+
    self.fetchResultSize = function(facet) {
 	  $.post("/notebook/api/fetch_result_size", {
         notebook: ko.mapping.toJSON({type: facet.queryResult().type()}),
@@ -1696,9 +1707,8 @@ var SearchViewModel = function (collection_json, query_json, initial_json) {
 	  });
 	};
 
-  // self.searchAsync
 
-  self.search = function (callback) {
+  self.search = function (callback) {   // self.searchAsync == self.collection.async()
     $(".jHueNotify").hide();
     logGA('search');
     self.isRetrievingResults(true);
@@ -1751,7 +1761,7 @@ var SearchViewModel = function (collection_json, query_json, initial_json) {
             collection: ko.mapping.toJSON(self.collection),
             query: ko.mapping.toJSON(self.query),
             facet: ko.mapping.toJSON(facet),
-        }, function (data) { 
+        }, function (data) {
             facet.queryResult(new QueryResult(self, {
                 type: self.collection.engine(),
                 result: data,
@@ -1761,7 +1771,8 @@ var SearchViewModel = function (collection_json, query_json, initial_json) {
 
           	self.checkStatus(facet);
         });
-      }); // Join save dashboard history
+      });
+      self.asyncSearchesCounter(multiQs.length + 1);
     }
 
     $.each(self.fieldAnalyses(), function (index, analyse) { // Invalidate stats analysis
@@ -1821,9 +1832,11 @@ var SearchViewModel = function (collection_json, query_json, initial_json) {
       $(document).trigger("error", xhr.responseText);
     })
     .always(function () {
-      self.isRetrievingResults(false);
-      self.hasRetrievedResults(true);
-      $('.btn-loading').button('reset');
+      if (! self.collection.async()) {
+        self.isRetrievingResults(false);
+        self.hasRetrievedResults(true);
+        $('.btn-loading').button('reset');
+      }
     });
   };