Repository: ambari Updated Branches: refs/heads/trunk 30cb201dd -> 34bffa8a5
AMBARI-11432. Incorrect placing of ZooKeeper Servers' comboboxes (onechiporenko) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/34bffa8a Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/34bffa8a Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/34bffa8a Branch: refs/heads/trunk Commit: 34bffa8a538360c3fa0bb53d1e50888e09b607e2 Parents: 30cb201 Author: Oleg Nechiporenko <onechipore...@apache.org> Authored: Wed May 27 18:44:19 2015 +0300 Committer: Oleg Nechiporenko <onechipore...@apache.org> Committed: Wed May 27 18:44:19 2015 +0300 ---------------------------------------------------------------------- .../mixins/wizard/assign_master_components.js | 22 +++++++++++----- .../test/controllers/wizard/step5_test.js | 27 ++++++++++++++++++++ 2 files changed, 43 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/34bffa8a/ambari-web/app/mixins/wizard/assign_master_components.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/mixins/wizard/assign_master_components.js b/ambari-web/app/mixins/wizard/assign_master_components.js index 69a21d5..d3d674a 100644 --- a/ambari-web/app/mixins/wizard/assign_master_components.js +++ b/ambari-web/app/mixins/wizard/assign_master_components.js @@ -475,9 +475,11 @@ App.AssignMasterComponents = Em.Mixin.create({ * @method clearStep */ clearStep: function () { - this.set('hosts', []); - this.set('selectedServicesMasters', []); - this.set('servicesMasters', []); + this.setProperties({ + hosts: [], + selectedServicesMasters: [], + servicesMasters: [] + }); App.StackServiceComponent.find().forEach(function (stackComponent) { stackComponent.set('serviceComponentId', 1); }, this); @@ -836,11 +838,19 @@ App.AssignMasterComponents = Em.Mixin.create({ return App.StackServiceComponent.find().findProperty('componentName', master).get('serviceName'); }, + /** + * Sort components by their service (using <code>App.StackService.displayOrder</code>) + * Services not in App.StackService.displayOrder are moved to the end of the list + * + * @param components + * @returns {*} + */ sortComponentsByServiceName: function(components) { var displayOrder = App.StackService.displayOrder; + var indexForUnordered = Math.max(displayOrder.length, components.length); return components.sort(function (a, b) { - var aValue = displayOrder.indexOf(a.serviceId) != -1 ? displayOrder.indexOf(a.serviceId) : components.length; - var bValue = displayOrder.indexOf(b.serviceId) != -1 ? displayOrder.indexOf(b.serviceId) : components.length; + var aValue = displayOrder.indexOf(a.serviceId) != -1 ? displayOrder.indexOf(a.serviceId) : indexForUnordered; + var bValue = displayOrder.indexOf(b.serviceId) != -1 ? displayOrder.indexOf(b.serviceId) : indexForUnordered; return aValue - bValue; }); }, @@ -852,7 +862,7 @@ App.AssignMasterComponents = Em.Mixin.create({ var components = App.StackServiceComponent.find().filterProperty('isOtherComponentCoHosted'); var selectedServicesMasters = this.get('selectedServicesMasters'); components.forEach(function (component) { - var componentName = component.get('componentName') + var componentName = component.get('componentName'); var hostComponent = selectedServicesMasters.findProperty('component_name', componentName); var dependentCoHosts = component.get('coHostedComponents'); dependentCoHosts.forEach(function (coHostedComponent) { http://git-wip-us.apache.org/repos/asf/ambari/blob/34bffa8a/ambari-web/test/controllers/wizard/step5_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/controllers/wizard/step5_test.js b/ambari-web/test/controllers/wizard/step5_test.js index 1f25fe7..b5e0ddb 100644 --- a/ambari-web/test/controllers/wizard/step5_test.js +++ b/ambari-web/test/controllers/wizard/step5_test.js @@ -1165,4 +1165,31 @@ describe('App.WizardStep5Controller', function () { }); + describe('#sortComponentsByServiceName', function () { + + var components = [{ + "component_name": "METRICS_COLLECTOR", + "serviceId": "AMBARI_METRICS" + }, {"component_name": "ZOOKEEPER_SERVER", "serviceId": "ZOOKEEPER"}, { + "component_name": "NAMENODE", + "serviceId": "HDFS" + }, {"component_name": "DRPC_SERVER", "serviceId": "STORM"}, { + "component_name": "APP_TIMELINE_SERVER", + "serviceId": "YARN" + }, {"component_name": "RESOURCEMANAGER", "serviceId": "YARN"}, { + "component_name": "SECONDARY_NAMENODE", + "serviceId": "HDFS" + }, {"component_name": "ZOOKEEPER_SERVER", "serviceId": "ZOOKEEPER"}, { + "component_name": "HISTORYSERVER", + "serviceId": "MAPREDUCE2" + }, {"component_name": "NIMBUS", "serviceId": "STORM"}, {"component_name": "STORM_UI_SERVER", "serviceId": "STORM"}]; + + it('ZKS should be one after anothert', function () { + var sorted = c.sortComponentsByServiceName(components); + expect(sorted.mapProperty('component_name').join('|').contains('ZOOKEEPER_SERVER|ZOOKEEPER_SERVER')).to.be.true; + }); + + + }); + });