You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by on...@apache.org on 2015/03/27 15:26:33 UTC
ambari git commit: AMBARI-10237. 'Reload Page' popup issues: multiple
instances, broken reload link,
displaying popup after connection is established (onechiporenko)
Repository: ambari
Updated Branches:
refs/heads/trunk 589faa74a -> 9b2291bfa
AMBARI-10237. 'Reload Page' popup issues: multiple instances, broken reload link, displaying popup after connection is established (onechiporenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9b2291bf
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9b2291bf
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9b2291bf
Branch: refs/heads/trunk
Commit: 9b2291bfa33017cf3ce64214b4da2a9eb7fa7259
Parents: 589faa7
Author: Oleg Nechiporenko <on...@apache.org>
Authored: Fri Mar 27 16:24:30 2015 +0200
Committer: Oleg Nechiporenko <on...@apache.org>
Committed: Fri Mar 27 16:24:30 2015 +0200
----------------------------------------------------------------------
ambari-web/app/assets/test/tests.js | 1 +
.../app/controllers/wizard/step3_controller.js | 32 +++++-----
.../app/controllers/wizard/step9_controller.js | 10 +++-
ambari-web/app/mixins.js | 1 +
ambari-web/app/mixins/common/reload_popup.js | 52 +++++++++++++++++
ambari-web/app/utils/polling.js | 16 +++--
ambari-web/app/views.js | 1 -
.../views/common/modal_popups/reload_popup.js | 30 ----------
.../test/mixins/common/reload_popup_test.js | 61 ++++++++++++++++++++
9 files changed, 152 insertions(+), 52 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/9b2291bf/ambari-web/app/assets/test/tests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js
index de14b7c..c668a9f 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -138,6 +138,7 @@ var files = ['test/init_model_test',
'test/mixins/common/configs/enhanced_configs_test',
'test/mixins/common/chart/storm_linear_time_test',
'test/mixins/common/localStorage_test',
+ 'test/mixins/common/reload_popup_test',
'test/mixins/common/serverValidator_test',
'test/mixins/common/table_server_view_mixin_test',
'test/mixins/main/host/details/host_components/decommissionable_test',
http://git-wip-us.apache.org/repos/asf/ambari/blob/9b2291bf/ambari-web/app/controllers/wizard/step3_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step3_controller.js b/ambari-web/app/controllers/wizard/step3_controller.js
index 61cf64f..aeff5ad 100644
--- a/ambari-web/app/controllers/wizard/step3_controller.js
+++ b/ambari-web/app/controllers/wizard/step3_controller.js
@@ -20,7 +20,7 @@ var App = require('app');
var lazyloading = require('utils/lazy_loading');
var numberUtils = require('utils/number_utils');
-App.WizardStep3Controller = Em.Controller.extend({
+App.WizardStep3Controller = Em.Controller.extend(App.ReloadPopupMixin, {
name: 'wizardStep3Controller',
@@ -477,6 +477,7 @@ App.WizardStep3Controller = Em.Controller.extend({
* @return {$.ajax|null}
*/
doBootstrap: function () {
+ var self = this;
if (this.get('stopBootstrap')) {
return null;
}
@@ -496,12 +497,14 @@ App.WizardStep3Controller = Em.Controller.extend({
timeout: App.timeout
}).
then(
- null,
- function () {
- App.showReloadPopup();
- console.log('Bootstrap failed');
- }
- );
+ function () {
+ self.closeReloadPopup();
+ },
+ function () {
+ self.showReloadPopup();
+ console.log('Bootstrap failed');
+ }
+ );
},
/**
@@ -578,6 +581,7 @@ App.WizardStep3Controller = Em.Controller.extend({
if (this.get('stopBootstrap')) {
return null;
}
+ var self = this;
return App.ajax.send({
name: 'wizard.step3.is_hosts_registered',
sender: this,
@@ -588,12 +592,14 @@ App.WizardStep3Controller = Em.Controller.extend({
timeout: App.timeout
}).
then(
- null,
- function () {
- App.showReloadPopup();
- console.log('Error: Getting registered host information from the server');
- }
- );
+ function () {
+ self.closeReloadPopup();
+ },
+ function () {
+ self.showReloadPopup();
+ console.log('Error: Getting registered host information from the server');
+ }
+ );
},
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/9b2291bf/ambari-web/app/controllers/wizard/step9_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/wizard/step9_controller.js b/ambari-web/app/controllers/wizard/step9_controller.js
index e1bb090..4422f3f 100644
--- a/ambari-web/app/controllers/wizard/step9_controller.js
+++ b/ambari-web/app/controllers/wizard/step9_controller.js
@@ -18,7 +18,7 @@
var App = require('app');
var stringUtils = require('utils/string_utils');
-App.WizardStep9Controller = Em.Controller.extend({
+App.WizardStep9Controller = Em.Controller.extend(App.ReloadPopupMixin, {
name: 'wizardStep9Controller',
@@ -1023,6 +1023,7 @@ App.WizardStep9Controller = Em.Controller.extend({
* @return {$.ajax|null}
*/
getLogsByRequest: function (polling, requestId) {
+ var self = this;
return App.ajax.send({
name: 'wizard.step9.load_log',
sender: this,
@@ -1034,9 +1035,12 @@ App.WizardStep9Controller = Em.Controller.extend({
},
success: 'getLogsByRequestSuccessCallback',
error: 'getLogsByRequestErrorCallback'
- }).retry({times: App.maxRetries, timeout: 3000}).then(null,
+ }).retry({times: App.maxRetries, timeout: 3000}).then(
+ function () {
+ self.closeReloadPopup();
+ },
function () {
- App.showReloadPopup();
+ self.showReloadPopup();
console.log('Install services all retries failed');
}
);
http://git-wip-us.apache.org/repos/asf/ambari/blob/9b2291bf/ambari-web/app/mixins.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins.js b/ambari-web/app/mixins.js
index 7517c0d..52091c1 100644
--- a/ambari-web/app/mixins.js
+++ b/ambari-web/app/mixins.js
@@ -22,6 +22,7 @@
require('mixins/common/blueprint');
require('mixins/common/localStorage');
require('mixins/common/userPref');
+require('mixins/common/reload_popup');
require('mixins/common/serverValidator');
require('mixins/common/table_server_view_mixin');
require('mixins/common/table_server_mixin');
http://git-wip-us.apache.org/repos/asf/ambari/blob/9b2291bf/ambari-web/app/mixins/common/reload_popup.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/mixins/common/reload_popup.js b/ambari-web/app/mixins/common/reload_popup.js
new file mode 100644
index 0000000..539d1d5
--- /dev/null
+++ b/ambari-web/app/mixins/common/reload_popup.js
@@ -0,0 +1,52 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+
+App.ReloadPopupMixin = Em.Mixin.create({
+
+ reloadPopup: null,
+
+ showReloadPopup: function () {
+ var self = this;
+ if (!this.get('reloadPopup')) {
+ this.set('reloadPopup', App.ModalPopup.show({
+ primary: null,
+ secondary: null,
+ showFooter: false,
+ header: this.t('app.reloadPopup.header'),
+ body: "<div id='reload_popup' class='alert alert-info'><div class='spinner'><span>" +
+ this.t('app.reloadPopup.text') + "</span></div></div><div><a href='javascript:void(null)' onclick='location.reload();'>" +
+ this.t('app.reloadPopup.link') + "</a></div>",
+ encodeBody: false,
+ onClose: function () {
+ self.set('reloadPopup', null);
+ this._super();
+ }
+ }));
+ }
+ },
+
+ closeReloadPopup: function () {
+ var reloadPopup = this.get('reloadPopup');
+ if (reloadPopup) {
+ reloadPopup.onClose();
+ }
+ }
+
+});
http://git-wip-us.apache.org/repos/asf/ambari/blob/9b2291bf/ambari-web/app/utils/polling.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/polling.js b/ambari-web/app/utils/polling.js
index aeff492..339efcf 100644
--- a/ambari-web/app/utils/polling.js
+++ b/ambari-web/app/utils/polling.js
@@ -17,7 +17,7 @@
*/
var App = require('app');
-App.Poll = Em.Object.extend({
+App.Poll = Em.Object.extend(App.ReloadPopupMixin, {
name: '',
stage: '',
label: '',
@@ -151,6 +151,7 @@ App.Poll = Em.Object.extend({
*/
startPolling: function () {
if (!this.get('requestId')) return false;
+ var self = this;
this.pollTaskLog();
App.ajax.send({
@@ -163,10 +164,15 @@ App.Poll = Em.Object.extend({
error: 'startPollingErrorCallback'
})
.retry({times: App.maxRetries, timeout: App.timeout})
- .then(null, function () {
- App.showReloadPopup();
- console.log('Install services all retries failed');
- });
+ .then(
+ function () {
+ self.closeReloadPopup();
+ },
+ function () {
+ self.showReloadPopup();
+ console.log('Install services all retries failed');
+ }
+ );
return true;
},
http://git-wip-us.apache.org/repos/asf/ambari/blob/9b2291bf/ambari-web/app/views.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views.js b/ambari-web/app/views.js
index f450182..a7719fc 100644
--- a/ambari-web/app/views.js
+++ b/ambari-web/app/views.js
@@ -30,7 +30,6 @@ require('views/common/modal_popups/alert_popup');
require('views/common/modal_popups/confirmation_feedback_popup');
require('views/common/modal_popups/confirmation_popup');
require('views/common/modal_popups/prompt_popup');
-require('views/common/modal_popups/reload_popup');
require('views/common/modal_popups/cluster_check_popup');
require('views/common/modal_popups/invalid_KDC_popup');
require('views/common/modal_popups/dependent_configs_list_popup');
http://git-wip-us.apache.org/repos/asf/ambari/blob/9b2291bf/ambari-web/app/views/common/modal_popups/reload_popup.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/views/common/modal_popups/reload_popup.js b/ambari-web/app/views/common/modal_popups/reload_popup.js
deleted file mode 100644
index 0c5eaf0..0000000
--- a/ambari-web/app/views/common/modal_popups/reload_popup.js
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var App = require('app');
-
-App.showReloadPopup = function () {
- return App.ModalPopup.show({
- primary: null,
- secondary: null,
- showFooter: false,
- header: this.t('app.reloadPopup.header'),
- body: "<div id='reload_popup' class='alert alert-info'><div class='spinner'><span>" + this.t('app.reloadPopup.text') + "</span></div></div><div><a href='#' onclick='location.reload();'>" + this.t('app.reloadPopup.link') + "</a></div>",
- encodeBody: false
- });
-};
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/9b2291bf/ambari-web/test/mixins/common/reload_popup_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/mixins/common/reload_popup_test.js b/ambari-web/test/mixins/common/reload_popup_test.js
new file mode 100644
index 0000000..28c865a
--- /dev/null
+++ b/ambari-web/test/mixins/common/reload_popup_test.js
@@ -0,0 +1,61 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var App = require('app');
+
+require('mixins/common/reload_popup');
+
+describe('App.ReloadPopupMixin', function () {
+
+ var obj;
+
+ beforeEach(function () {
+ obj = Em.Object.create(App.ReloadPopupMixin);
+ });
+
+ describe('#showReloadPopup', function () {
+
+ var mockObj = {
+ key: 'value'
+ };
+
+ beforeEach(function () {
+ sinon.stub(App.ModalPopup, 'show').returns(mockObj);
+ });
+
+ afterEach(function () {
+ App.ModalPopup.show.restore();
+ });
+
+ it('should show modal popup', function () {
+ obj.showReloadPopup();
+ expect(obj.get('reloadPopup')).to.eql(mockObj);
+ });
+ });
+
+ describe('#closeReloadPopup', function () {
+
+ it('should hide modal popup', function () {
+ obj.showReloadPopup();
+ obj.closeReloadPopup();
+ expect(obj.get('reloadPopup')).to.be.null;
+ });
+
+ });
+
+});