Modified: incubator/ambari/trunk/ambari-web/app/models/service_config.js URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/models/service_config.js?rev=1478215&r1=1478214&r2=1478215&view=diff ============================================================================== --- incubator/ambari/trunk/ambari-web/app/models/service_config.js (original) +++ incubator/ambari/trunk/ambari-web/app/models/service_config.js Wed May 1 22:08:55 2013 @@ -162,6 +162,7 @@ App.ServiceConfigProperty = Ember.Object overrideErrorTrigger: 0, //Trigger for overrridable property error isRestartRequired: false, restartRequiredMessage: 'Restart required', + index: null, //sequence number in category /** * On Overridable property error message, change overrideErrorTrigger value to recount number of errors service have
Modified: incubator/ambari/trunk/ambari-web/app/utils/config.js URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/utils/config.js?rev=1478215&r1=1478214&r2=1478215&view=diff ============================================================================== --- incubator/ambari/trunk/ambari-web/app/utils/config.js (original) +++ incubator/ambari/trunk/ambari-web/app/utils/config.js Wed May 1 22:08:55 2013 @@ -130,7 +130,7 @@ App.config = Em.Object.create({ return _tag.tagName === serviceConfigProperties.tag && _tag.siteName === serviceConfigProperties.type; }); - properties = (properties.length) ? properties = properties.objectAt(0).properties : {}; + properties = (properties.length) ? properties.objectAt(0).properties : {}; for (var index in properties) { var configsPropertyDef = preDefinedConfigs.findProperty('name', index) || null; var serviceConfigObj = { @@ -152,6 +152,7 @@ App.config = Em.Object.create({ serviceConfigObj.description = (configsPropertyDef.description !== undefined) ? configsPropertyDef.description : undefined; serviceConfigObj.isOverridable = configsPropertyDef.isOverridable === undefined ? true : configsPropertyDef.isOverridable; serviceConfigObj.serviceName = configsPropertyDef ? configsPropertyDef.serviceName : null; + serviceConfigObj.index = configsPropertyDef.index; } // MAPREDUCE contains core-site properties but doesn't show them if(serviceConfigObj.serviceName === 'MAPREDUCE' && serviceConfigObj.filename === 'core-site.xml'){ Modified: incubator/ambari/trunk/ambari-web/app/views/common/configs/services_config.js URL: http://svn.apache.org/viewvc/incubator/ambari/trunk/ambari-web/app/views/common/configs/services_config.js?rev=1478215&r1=1478214&r2=1478215&view=diff ============================================================================== --- incubator/ambari/trunk/ambari-web/app/views/common/configs/services_config.js (original) +++ incubator/ambari/trunk/ambari-web/app/views/common/configs/services_config.js Wed May 1 22:08:55 2013 @@ -115,10 +115,36 @@ App.ServiceConfigsByCategoryView = Ember return searchString.toLowerCase().indexOf(filter) > -1; }); + filteredResult = this.sortByIndex(filteredResult); return filteredResult; }.property('categoryConfigs','parentView.filter', '[email protected]'), /** + * sort configs in current category by index + * @param configs + * @return {*} + */ + sortByIndex: function(configs){ + var sortedConfigs = []; + var unSorted = []; + if (!configs.someProperty('index')) { + return configs; + } + configs.forEach(function (config) { + var index = config.get('index'); + if ((index !== null) && isFinite(index)) { + sortedConfigs[index] ? sortedConfigs.splice(index, 0 ,config) : sortedConfigs[index] = config; + } else { + unSorted.push(config); + } + }); + // remove undefined elements from array + sortedConfigs = sortedConfigs.filter(function(config){ + if(config !== undefined) return true; + }); + return sortedConfigs.concat(unSorted); + }, + /** * Onclick handler for Config Group Header. Used to show/hide block */ onToggleBlock: function () { @@ -926,7 +952,7 @@ App.ServiceConfigCapacityScheduler = App configs: configs }; content = this.insertExtraConfigs(content); - content.configs = this.sortQueueProperties(content.configs); + content.configs = self.sortByIndex(content.configs); return content; }.property(), footerClass: Ember.View.extend({ @@ -1109,23 +1135,6 @@ App.ServiceConfigCapacityScheduler = App return content; }, /** - * sort properties of queue by index - * @param configs - * @return {Array} - */ - sortQueueProperties: function(configs){ - var sortedConfigs = []; - var skippedConfigs = []; - configs.forEach(function(_config){ - if(isFinite(_config.index)){ - sortedConfigs[_config.index] = _config; - } else { - skippedConfigs.push(_config); - } - }); - return sortedConfigs.concat(skippedConfigs); - }, - /** * Validate by follow rules: * Users can be blank. If this is blank, Groups must not be blank. * Groups can be blank. If this is blank, Users must not be blank.
