Przeglądaj źródła

AMBARI-8180 Broken Config banner. (atkach)

Andrii Tkach 10 lat temu
rodzic
commit
4d9685f4f6

+ 34 - 8
ambari-web/app/controllers/main/service/info/configs.js

@@ -35,6 +35,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
     items: [],
     supportsFinal: []
   },
+  requestInProgress: null,
   selectedServiceConfigTypes: [],
   selectedServiceSupportsFinal: [],
   configGroups: [],
@@ -191,10 +192,22 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
     return (App.ServiceConfigVersion.find(this.get('content.serviceName') + "_" + version).get('groupId') == -1);
   },
 
+  /**
+   * register request to view to track his progress
+   * @param request
+   */
+  trackRequest: function (request) {
+    this.set('requestInProgress', request);
+  },
+
   /**
    * clear and set properties to default value
    */
   clearStep: function () {
+    if (this.get('requestInProgress') && this.get('requestInProgress').readyState !== 4) {
+      this.get('requestInProgress').abort();
+      this.set('requestInProgress', null);
+    }
     this.set("isApplyingChanges", false);
     this.set('modifiedFileNames', []);
     this.set('isInit', true);
@@ -275,11 +288,12 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
       self.set('configTypesInfo', App.config.getConfigTypesInfoFromService(stackService));
     }
 
-    App.config.loadAdvancedConfig(serviceName, function (properties) {
+    this.trackRequest(App.config.loadAdvancedConfig(serviceName, function (properties, xhr) {
+      if (xhr.statusText === 'abort') return;
       advancedConfigs.pushObjects(properties);
       self.set('advancedConfigs', advancedConfigs);
-      self.loadServiceConfigVersions();
-    });
+      self.trackRequest(self.loadServiceConfigVersions());
+    }));
   },
 
   /**
@@ -314,6 +328,17 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
     }
   },
 
+  /**
+   * error callback of loadServiceConfigVersions()
+   * override defaultCallback
+   * @param request
+   * @param ajaxOptions
+   * @param error
+   * @param opt
+   * @param params
+   */
+  loadServiceConfigVersionsError: Em.K,
+
   /**
    * get selected service config version
    * In case selected version is undefined then take currentDefaultVersion
@@ -332,7 +357,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
       this.set('selectedConfigGroup', switchToGroup);
     }
 
-    App.ajax.send({
+    this.trackRequest(App.ajax.send({
       name: 'service.serviceConfigVersions.get.multiple',
       sender: this,
       data: {
@@ -340,13 +365,14 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
         serviceConfigVersions: versions
       },
       success: 'loadSelectedVersionSuccess'
-    }).complete(function () {
+    }).complete(function (xhr) {
+        if (xhr.statusText === 'abort') return;
         if (self.get('dataIsLoaded')) {
           self.onConfigGroupChange();
         } else {
           self.loadServiceTagsAndGroups();
         }
-      });
+      }));
   },
 
   /**
@@ -395,7 +421,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
    * load config groups of service
    */
   loadServiceTagsAndGroups: function () {
-    App.ajax.send({
+    this.trackRequest(App.ajax.send({
       name: 'config.tags_and_groups',
       sender: this,
       data: {
@@ -403,7 +429,7 @@ App.MainServiceInfoConfigsController = Em.Controller.extend(App.ServerValidatorM
         urlParams: "&config_groups/ConfigGroup/tag=" + this.get('content.serviceName')
       },
       success: 'loadServiceConfigsSuccess'
-    });
+    }));
   },
 
   loadServiceConfigsSuccess: function (data, opt, params) {

+ 2 - 2
ambari-web/app/utils/ajax/ajax.js

@@ -2079,10 +2079,10 @@ var ajax = Em.Object.extend({
         config.sender[config.beforeSend](opt, xhr, params);
       }
     };
-    opt.success = function (data) {
+    opt.success = function (data, textStatus, request) {
       console.log("TRACE: The url is: " + opt.url);
       if (config.success) {
-        config.sender[config.success](data, opt, params);
+        config.sender[config.success](data, opt, params, request);
       }
     };
     opt.error = function (request, ajaxOptions, error) {

+ 3 - 3
ambari-web/app/utils/config.js

@@ -872,7 +872,7 @@ App.config = Em.Object.create({
     });
   },
 
-  loadAdvancedConfigSuccess: function (data, opt, params) {
+  loadAdvancedConfigSuccess: function (data, opt, params, request) {
     console.log("TRACE: In success function for the loadAdvancedConfig; url is ", opt.url);
     var properties = [];
     if (data.items.length) {
@@ -906,12 +906,12 @@ App.config = Em.Object.create({
         }
       }, this);
     }
-    params.callback(properties);
+    params.callback(properties, request);
   },
 
   loadAdvancedConfigError: function (request, ajaxOptions, error, opt, params) {
     console.log('ERROR: failed to load stack configs for', params.serviceName);
-    params.callback([]);
+    params.callback([], request);
   },
 
   /**

+ 10 - 0
ambari-web/test/controllers/main/service/info/config_test.js

@@ -1282,6 +1282,16 @@ describe("App.MainServiceInfoConfigsController", function () {
     });
   });
 
+  describe("#trackRequest()", function () {
+    after(function(){
+      mainServiceInfoConfigsController.set('requestInProgress', null);
+    });
+    it("should set requestInProgress", function () {
+      mainServiceInfoConfigsController.trackRequest({'request': {}});
+      expect(mainServiceInfoConfigsController.get('requestInProgress')).to.eql({'request': {}});
+    });
+  });
+
   describe("#setValuesForOverrides", function() {
     var tests = [
       {