Repository: ambari Updated Branches: refs/heads/trunk 35b5a57f9 -> b6b56cfeb
AMBARI-5161 Customize Services step load: change calls to asynchronous. (atkach) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b6b56cfe Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b6b56cfe Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b6b56cfe Branch: refs/heads/trunk Commit: b6b56cfeb600cd1be788245843f57ed2c6306072 Parents: 35b5a57 Author: atkach <[email protected]> Authored: Thu Mar 20 17:44:34 2014 +0200 Committer: atkach <[email protected]> Committed: Thu Mar 20 17:44:34 2014 +0200 ---------------------------------------------------------------------- ambari-web/app/controllers/wizard.js | 25 +++++++++++++------- .../app/controllers/wizard/step7_controller.js | 8 ++++++- ambari-web/app/routes/add_service_routes.js | 4 ++-- ambari-web/app/routes/installer.js | 3 ++- ambari-web/app/templates/wizard/step7.hbs | 7 +++++- ambari-web/app/utils/ajax.js | 7 +----- ambari-web/app/utils/config.js | 18 ++++++++------ 7 files changed, 45 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/b6b56cfe/ambari-web/app/controllers/wizard.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/wizard.js b/ambari-web/app/controllers/wizard.js index f69ff3e..eabb904 100644 --- a/ambari-web/app/controllers/wizard.js +++ b/ambari-web/app/controllers/wizard.js @@ -691,16 +691,23 @@ App.WizardController = Em.Controller.extend({ /** * load advanced configs from server */ - loadAdvancedConfigs: function () { - var configs = (this.getDBProperty('advancedServiceConfig')) ? this.getDBProperty('advancedServiceConfig') : []; - this.get('content.services').filterProperty('isSelected', true).mapProperty('serviceName').forEach(function (_serviceName) { - var serviceComponents = App.config.loadAdvancedConfig(_serviceName); - if (serviceComponents) { - configs = configs.concat(serviceComponents); - } + loadAdvancedConfigs: function (dependentController) { + var self = this; + var counter = this.get('content.services').filterProperty('isSelected').length; + var loadAdvancedConfigResult = []; + dependentController.set('isAdvancedConfigLoaded', false); + this.get('content.services').filterProperty('isSelected').mapProperty('serviceName').forEach(function (_serviceName) { + App.config.loadAdvancedConfig(_serviceName, function(properties){ + loadAdvancedConfigResult.pushObjects(properties); + counter--; + //pass configs to controller after last call is completed + if (counter === 0) { + self.set('content.advancedServiceConfig', loadAdvancedConfigResult); + self.setDBProperty('advancedServiceConfig', loadAdvancedConfigResult); + dependentController.set('isAdvancedConfigLoaded', true); + } + }); }, this); - this.set('content.advancedServiceConfig', configs); - this.setDBProperty('advancedServiceConfig', configs); }, /** * Load serviceConfigProperties to model http://git-wip-us.apache.org/repos/asf/ambari/blob/b6b56cfe/ambari-web/app/controllers/wizard/step7_controller.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/controllers/wizard/step7_controller.js b/ambari-web/app/controllers/wizard/step7_controller.js index 0adbd7f..48310c7 100644 --- a/ambari-web/app/controllers/wizard/step7_controller.js +++ b/ambari-web/app/controllers/wizard/step7_controller.js @@ -62,6 +62,8 @@ App.WizardStep7Controller = Em.Controller.extend({ serviceConfigsData: require('data/service_configs'), + isAdvancedConfigLoaded: true, + isSubmitDisabled: function () { return (!this.stepConfigs.filterProperty('showConfig', true).everyProperty('errorCount', 0) || this.get("miscModalVisible")); }.property('[email protected]', 'miscModalVisible'), @@ -342,6 +344,9 @@ App.WizardStep7Controller = Em.Controller.extend({ */ loadStep: function () { console.log("TRACE: Loading step7: Configure Services"); + if (!this.get('isAdvancedConfigLoaded')) { + return; + } this.clearStep(); //STEP 1: Load advanced configs var advancedConfigs = this.get('content.advancedServiceConfig'); @@ -403,7 +408,8 @@ App.WizardStep7Controller = Em.Controller.extend({ if (this.get('content.skipConfigStep')) { App.router.send('next'); } - }, + }.observes('isAdvancedConfigLoaded'), + getConfigTags: function() { App.ajax.send({ name: 'config.tags.sync', http://git-wip-us.apache.org/repos/asf/ambari/blob/b6b56cfe/ambari-web/app/routes/add_service_routes.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/routes/add_service_routes.js b/ambari-web/app/routes/add_service_routes.js index 5b38e3b..d2ac777 100644 --- a/ambari-web/app/routes/add_service_routes.js +++ b/ambari-web/app/routes/add_service_routes.js @@ -185,9 +185,9 @@ module.exports = App.WizardRoute.extend({ var controller = router.get('addServiceController'); controller.setCurrentStep('4'); controller.dataLoading().done(function () { - controller.loadAllPriorSteps(); - controller.loadAdvancedConfigs(); var wizardStep7Controller = router.get('wizardStep7Controller'); + controller.loadAllPriorSteps(); + controller.loadAdvancedConfigs(wizardStep7Controller); wizardStep7Controller.set('wizardController', controller); controller.connectOutlet('wizardStep7', controller.get('content')); }) http://git-wip-us.apache.org/repos/asf/ambari/blob/b6b56cfe/ambari-web/app/routes/installer.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/routes/installer.js b/ambari-web/app/routes/installer.js index 9408adb..0c9080d 100644 --- a/ambari-web/app/routes/installer.js +++ b/ambari-web/app/routes/installer.js @@ -280,6 +280,7 @@ module.exports = Em.Route.extend({ next: function (router) { var controller = router.get('installerController'); var wizardStep6Controller = router.get('wizardStep6Controller'); + var wizardStep7Controller = router.get('wizardStep7Controller'); if (wizardStep6Controller.validate()) { controller.saveSlaveComponentHosts(wizardStep6Controller); @@ -287,7 +288,7 @@ module.exports = Em.Route.extend({ controller.setDBProperty('serviceConfigProperties', null); controller.setDBProperty('advancedServiceConfig', null); controller.setDBProperty('serviceConfigGroups', null); - controller.loadAdvancedConfigs(); + controller.loadAdvancedConfigs(wizardStep7Controller); router.transitionTo('step7'); } } http://git-wip-us.apache.org/repos/asf/ambari/blob/b6b56cfe/ambari-web/app/templates/wizard/step7.hbs ---------------------------------------------------------------------- diff --git a/ambari-web/app/templates/wizard/step7.hbs b/ambari-web/app/templates/wizard/step7.hbs index d5a60cc..b18d294 100644 --- a/ambari-web/app/templates/wizard/step7.hbs +++ b/ambari-web/app/templates/wizard/step7.hbs @@ -23,7 +23,12 @@ {{t installer.step7.body}} </div> - {{view App.ServicesConfigView}} + {{#if isAdvancedConfigLoaded}} + {{view App.ServicesConfigView}} + {{else}} + <div class="spinner"></div> + {{/if}} + <div class="btn-area"> <a class="btn" {{action back}}>← {{t common.back}}</a> http://git-wip-us.apache.org/repos/asf/ambari/blob/b6b56cfe/ambari-web/app/utils/ajax.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/ajax.js b/ambari-web/app/utils/ajax.js index 6cd7d79..85695b8 100644 --- a/ambari-web/app/utils/ajax.js +++ b/ambari-web/app/utils/ajax.js @@ -299,12 +299,7 @@ var urls = { 'config.advanced': { 'real': '{stack2VersionUrl}/stackServices/{serviceName}/configurations?fields=*', - 'mock': '/data/wizard/stack/hdp/version{stackVersion}/{serviceName}.json', - 'format': function() { - return { - async: false - }; - } + 'mock': '/data/wizard/stack/hdp/version{stackVersion}/{serviceName}.json' }, 'config.advanced.global': { 'real': '{stack2VersionUrl}/stackServices?fields=configurations/StackConfigurations/type', http://git-wip-us.apache.org/repos/asf/ambari/blob/b6b56cfe/ambari-web/app/utils/config.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/utils/config.js b/ambari-web/app/utils/config.js index aeb57f8..3911bf4 100644 --- a/ambari-web/app/utils/config.js +++ b/ambari-web/app/utils/config.js @@ -20,7 +20,6 @@ var App = require('app'); var stringUtils = require('utils/string_utils'); var categotyConfigs = require('data/service_configs'); -var serviceComponents = {}; var configGroupsByTag = []; App.config = Em.Object.create({ @@ -747,19 +746,19 @@ App.config = Em.Object.create({ * @param serviceName * @return {*} */ - loadAdvancedConfig: function (serviceName) { + loadAdvancedConfig: function (serviceName, callback) { App.ajax.send({ name: 'config.advanced', sender: this, data: { serviceName: serviceName, stack2VersionUrl: App.get('stack2VersionURL'), - stackVersion: App.get('currentStackVersionNumber') + stackVersion: App.get('currentStackVersionNumber'), + callback: callback }, - success: 'loadAdvancedConfigSuccess' + success: 'loadAdvancedConfigSuccess', + error: 'loadAdvancedConfigError' }); - return serviceComponents[serviceName]; - //TODO clean serviceComponents }, loadAdvancedConfigSuccess: function (data, opt, params) { @@ -789,8 +788,13 @@ App.config = Em.Object.create({ }); } }, this); - serviceComponents[data.items[0].StackConfigurations.service_name] = properties; } + params.callback(properties); + }, + + loadAdvancedConfigError: function (request, ajaxOptions, error, opt, params) { + console.log('ERROR: failed to load stack configs for', params.serviceName); + params.callback([]); }, /**
