Repository: ambari Updated Branches: refs/heads/trunk c4ca3b890 -> 53e77ef5e
AMBARI-20287 - Filter in Customize Services Page doesn't bring up all properties that matches (rzang) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/53e77ef5 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/53e77ef5 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/53e77ef5 Branch: refs/heads/trunk Commit: 53e77ef5e19ddfd11630323d7e94edf448c27f50 Parents: c4ca3b8 Author: Richard Zang <rz...@apache.org> Authored: Thu Mar 9 11:51:45 2017 -0800 Committer: Richard Zang <rz...@apache.org> Committed: Thu Mar 9 11:51:45 2017 -0800 ---------------------------------------------------------------------- .../app/models/configs/theme/sub_section.js | 2 +- .../app/models/configs/theme/sub_section_tab.js | 9 ++++- .../configs/service_config_layout_tab_view.js | 4 +- .../configs/theme/sub_section_tab_test.js | 41 +++++++++++++++++--- 4 files changed, 46 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/53e77ef5/ambari-web/app/models/configs/theme/sub_section.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/configs/theme/sub_section.js b/ambari-web/app/models/configs/theme/sub_section.js index 7274569..591a3e9 100644 --- a/ambari-web/app/models/configs/theme/sub_section.js +++ b/ambari-web/app/models/configs/theme/sub_section.js @@ -181,7 +181,7 @@ App.SubSection = DS.Model.extend({ var configs = this.get('configs').filter(function(c) { return !c.get('hiddenBySection') && c.get('isVisible'); }); - return configs.length ? configs.everyProperty('isHiddenByFilter', true) : false; + return configs.length ? configs.everyProperty('isHiddenByFilter', true) && !this.get('someSubSectionTabIsVisible'): false; }.property('configs.@each.isHiddenByFilter'), /** http://git-wip-us.apache.org/repos/asf/ambari/blob/53e77ef5/ambari-web/app/models/configs/theme/sub_section_tab.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/models/configs/theme/sub_section_tab.js b/ambari-web/app/models/configs/theme/sub_section_tab.js index 2262882..9062457 100644 --- a/ambari-web/app/models/configs/theme/sub_section_tab.js +++ b/ambari-web/app/models/configs/theme/sub_section_tab.js @@ -81,7 +81,10 @@ App.SubSectionTab = DS.Model.extend({ * If there is no configs, subsection can't be hidden * @type {boolean} */ - isHiddenByFilter: Em.computed.everyBy('visibleProperties', 'isHiddenByFilter', true), + isHiddenByFilter: function () { + var configs = this.get('visibleProperties'); + return configs.length ? configs.everyProperty('isHiddenByFilter', true) : false; + }.property('configs.@each.isHiddenByFilter').volatile(), /** * @type {boolean} @@ -92,7 +95,9 @@ App.SubSectionTab = DS.Model.extend({ * Determines if subsection is visible * @type {boolean} */ - isVisible: Em.computed.and('!isHiddenByFilter', '!isHiddenByConfig', 'someConfigIsVisible') + isVisible: function() { + return !this.get('isHiddenByFilter') && !this.get('isHiddenByConfig') && this.get('someConfigIsVisible'); + }.property('isHiddenByFilter', 'isHiddenByConfig', 'someConfigIsVisible').volatile() }); http://git-wip-us.apache.org/repos/asf/ambari/blob/53e77ef5/ambari-web/app/views/common/configs/service_config_layout_tab_view.js ---------------------------------------------------------------------- diff --git a/ambari-web/app/views/common/configs/service_config_layout_tab_view.js b/ambari-web/app/views/common/configs/service_config_layout_tab_view.js index 466a88d..ccbb148 100644 --- a/ambari-web/app/views/common/configs/service_config_layout_tab_view.js +++ b/ambari-web/app/views/common/configs/service_config_layout_tab_view.js @@ -182,7 +182,9 @@ App.ServiceConfigLayoutTabView = Em.View.extend(App.ConfigOverridable, { * @param event */ setActiveSubTab: function(event) { - if (!event.context) return; + if (!event.context || !event.context.get('isVisible')) { + return false; + } try { event.context.get('subSection.subSectionTabs').setEach('isActive', false); event.context.set('isActive', true); http://git-wip-us.apache.org/repos/asf/ambari/blob/53e77ef5/ambari-web/test/models/configs/theme/sub_section_tab_test.js ---------------------------------------------------------------------- diff --git a/ambari-web/test/models/configs/theme/sub_section_tab_test.js b/ambari-web/test/models/configs/theme/sub_section_tab_test.js index 0c3b98c..d65cd76 100644 --- a/ambari-web/test/models/configs/theme/sub_section_tab_test.js +++ b/ambari-web/test/models/configs/theme/sub_section_tab_test.js @@ -160,10 +160,39 @@ describe('App.SubSectionTab', function () { }); - App.TestAliases.testAsComputedEveryBy(getModel(), 'isHiddenByFilter', 'visibleProperties', 'isHiddenByFilter', true); - - App.TestAliases.testAsComputedGt(getModel(), 'someConfigIsVisible', 'visibleProperties.length', 0); - - App.TestAliases.testAsComputedAnd(getModel(), 'isVisible', ['!isHiddenByFilter', '!isHiddenByConfig', 'someConfigIsVisible']); + describe('#isHiddenByFilter', function () { + + Em.A([ + { + configs: [], + e: false, + m: 'Can\'t be hidden if there is no configs' + }, + { + configs: [Em.Object.create({isHiddenByFilter: true, isVisible: true}), Em.Object.create({isHiddenByFilter: true, isVisible: true})], + e: true, + m: 'All configs are hidden' + }, + { + configs: [Em.Object.create({isHiddenByFilter: false, isVisible: true}), Em.Object.create({isHiddenByFilter: true, isVisible: true})], + e: false, + m: 'Some configs are hidden' + }, + { + configs: [Em.Object.create({isHiddenByFilter: false, isVisible: true}), Em.Object.create({isHiddenByFilter: true, isVisible: true})], + e: false, + m: 'Some configs are hidden' + }, + { + configs: [Em.Object.create({isHiddenByFilter: false, isVisible: true}), Em.Object.create({isHiddenByFilter: false, isVisible: true})], + e: false, + m: 'No configs are hidden' + } + ]).forEach(function (test) { + it(test.m, function () { + subSectionTab.set('configs', test.configs); + expect(subSectionTab.get('isHiddenByFilter')).to.equal(test.e); + }) + }); -}); \ No newline at end of file + });}); \ No newline at end of file