ソースを参照

AMBARI-10279. Perf-cluster: Disable controls while call in pending (alexantonenko)

Alex Antonenko 10 年 前
コミット
1beb7d1afc

+ 5 - 0
ambari-web/app/controllers/installer.js

@@ -23,6 +23,8 @@ App.InstallerController = App.WizardController.extend({
 
   name: 'installerController',
 
+  isCheckInProgress: false,
+
   totalSteps: 11,
 
   content: Em.Object.create({
@@ -513,6 +515,7 @@ App.InstallerController = App.WizardController.extend({
             repo.set('errorTitle', '');
             repo.set('errorContent', '');
             repo.set('validation', App.Repository.validation['INPROGRESS']);
+            this.set('content.isCheckInProgress', true);
             App.ajax.send({
               name: 'wizard.advanced_repositories.valid_url',
               sender: this,
@@ -554,6 +557,7 @@ App.InstallerController = App.WizardController.extend({
     }
     this.set('validationCnt', this.get('validationCnt') - 1);
     if (!this.get('validationCnt')) {
+      this.set('content.isCheckInProgress', false);
       data.dfd.resolve();
     }
   },
@@ -573,6 +577,7 @@ App.InstallerController = App.WizardController.extend({
         repo.set('errorContent', $.parseJSON(request.responseText) ? $.parseJSON(request.responseText).message : "");
       }
     }
+    this.set('content.isCheckInProgress', false);
     params.dfd.reject();
   },
 

+ 4 - 3
ambari-web/app/controllers/login_controller.js

@@ -27,11 +27,11 @@ App.LoginController = Em.Object.extend({
 
   errorMessage: '',
 
+  isSubmitDisabled: false,
+
   submit: function (e) {
     this.set('errorMessage', '');
-
-    var self = this;
-
+    this.set('isSubmitDisabled', true);
     App.get('router').login();
   },
 
@@ -49,6 +49,7 @@ App.LoginController = Em.Object.extend({
       }
       this.set('errorMessage', errorMessage);
     }
+    this.set('isSubmitDisabled', false);
   }
 
 });

+ 5 - 0
ambari-web/app/controllers/wizard.js

@@ -345,6 +345,11 @@ App.WizardController = Em.Controller.extend(App.LocalStorage, {
       }
     }
 
+    var clusterStatus = {
+      status: 'PENDING'
+    };
+    this.saveClusterStatus(clusterStatus);
+
     App.ajax.send({
       name: isRetry ? 'common.host_components.update' : 'common.services.update',
       sender: this,

+ 3 - 3
ambari-web/app/templates/login.hbs

@@ -25,9 +25,9 @@
   </div>
   {{/if}}
   <label>{{t login.username}}</label>
-  {{view view.loginTextField valueBinding="loginName" class="span4"}}
+  {{view view.loginTextField valueBinding="loginName" class="span4" disabledBinding="isSubmitDisabled"}}
   <label>{{t common.password}}</label>
-  {{view view.passTextField type="password" valueBinding="password" class="span4"}}
-    <button class="btn btn-success login-btn" {{action "submit" target="controller"}}>{{t login.loginButton}}</button>
+  {{view view.passTextField type="password" valueBinding="password" class="span4" disabledBinding="isSubmitDisabled"}}
+    <button class="btn btn-success login-btn" {{bindAttr disabled="isSubmitDisabled"}} {{action "submit" target="controller"}}>{{t login.loginButton}}</button>
 </div>
 {{/unless}}

+ 2 - 2
ambari-web/app/views/wizard/step1_view.js

@@ -84,8 +84,8 @@ App.WizardStep1View = Em.View.extend({
    * @type {bool}
    */
   isSubmitDisabled: function () {
-    return this.get('invalidFormatUrlExist') || this.get('isNoOsChecked') || this.get('invalidUrlExist');
-  }.property('invalidFormatUrlExist', 'isNoOsChecked', 'invalidUrlExist'),
+    return this.get('invalidFormatUrlExist') || this.get('isNoOsChecked') || this.get('invalidUrlExist') || this.get('controller.content.isCheckInProgress');
+  }.property('invalidFormatUrlExist', 'isNoOsChecked', 'invalidUrlExist', 'controller.content.isCheckInProgress'),
 
   /**
    * Verify if some invalid repo-urls exist

+ 19 - 1
ambari-web/test/views/wizard/step1_view_test.js

@@ -283,60 +283,78 @@ describe('App.WizardStep1View', function () {
         invalidFormatUrlExist: false,
         isNoOsChecked: false,
         invalidUrlExist: false,
+        checkInProgress: false,
         e: false
       },
       {
         invalidFormatUrlExist: true,
         isNoOsChecked: false,
         invalidUrlExist: false,
+        checkInProgress: false,
         e: true
       },
       {
         invalidFormatUrlExist: false,
         isNoOsChecked: true,
         invalidUrlExist: false,
+        checkInProgress: false,
         e: true
       },
       {
         invalidFormatUrlExist: false,
         isNoOsChecked: false,
         invalidUrlExist: true,
+        checkInProgress: false,
         e: true
       },
       {
         invalidFormatUrlExist: true,
         isNoOsChecked: false,
         invalidUrlExist: true,
+        checkInProgress: false,
         e: true
       },
       {
         invalidFormatUrlExist: true,
         isNoOsChecked: true,
         invalidUrlExist: false,
+        checkInProgress: false,
         e: true
       },
       {
         invalidFormatUrlExist: false,
         isNoOsChecked: true,
         invalidUrlExist: true,
+        checkInProgress: false,
         e: true
       },
       {
         invalidFormatUrlExist: true,
         isNoOsChecked: true,
         invalidUrlExist: true,
+        checkInProgress: false,
+        e: true
+      },
+      {
+        invalidFormatUrlExist: true,
+        isNoOsChecked: false,
+        invalidUrlExist: false,
+        checkInProgress: true,
         e: true
       }
     ]);
 
     tests.forEach(function (test) {
-      it(test.invalidFormatUrlExist.toString() + ' ' + test.isNoOsChecked.toString() + ' ' + test.invalidUrlExist.toString(), function () {
+      it(test.invalidFormatUrlExist.toString() + ' ' + test.isNoOsChecked.toString() + ' ' + test.invalidUrlExist.toString()+ ' ' + test.checkInProgress.toString(), function () {
         view = App.WizardStep1View.create();
         view.reopen({
           invalidFormatUrlExist: test.invalidFormatUrlExist,
           isNoOsChecked: test.isNoOsChecked,
           invalidUrlExist: test.invalidUrlExist
         });
+        view.set('controller', {});
+        view.set('controller.content', {});
+        view.set('controller.content.isCheckInProgress', test.checkInProgress);
         expect(view.get('isSubmitDisabled')).to.equal(test.e);
       });
     });