Explorar el Código

AMBARI-12829. Filtering in the "Select Alert Group Definitions"-popup is too slow, when there are more than 1000 definitions (onechiporenko)

Oleg Nechiporenko hace 10 años
padre
commit
0562c9c7d6

+ 1 - 0
ambari-web/app/utils/hosts.js

@@ -132,6 +132,7 @@ module.exports = {
           initialHosts.setEach('filtered', true);
           this.set('parentView.availableHosts', initialHosts);
           this.set('parentView.isLoaded', true);
+          this.filteredContentObsOnce();
         },
 
         filterHosts: function () {

+ 11 - 3
ambari-web/app/views/main/alerts/manage_alert_groups/select_definitions_popup_body_view.js

@@ -26,9 +26,16 @@ App.SelectDefinitionsPopupBodyView = App.TableView.extend({
 
   isPaginate: true,
 
-  filteredContent: function () {
-    return this.get('parentView.availableDefs').filterProperty('filtered') || [];
-  }.property('parentView.availableDefs.@each.filtered'),
+  filteredContent: [],
+
+  filteredContentObs: function () {
+    Em.run.once(this, this.filteredContentObsOnce);
+  }.observes('parentView.availableDefs.@each.filtered'),
+
+  filteredContentObsOnce: function () {
+    var filtered = this.get('parentView.availableDefs').filterProperty('filtered') || [];
+    this.set('filteredContent', filtered);
+  },
 
   showOnlySelectedDefs: false,
 
@@ -45,6 +52,7 @@ App.SelectDefinitionsPopupBodyView = App.TableView.extend({
     initialDefs.setEach('filtered', true);
     this.set('parentView.availableDefs', initialDefs);
     this.set('parentView.isLoaded', true);
+    this.filteredContentObsOnce();
   },
 
   filterDefs: function () {