This is an automated email from the ASF dual-hosted git repository. ababiichuk pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push: new f9707fd AMBARI-22985 Quick links should be grouped by namespace. (ababiichuk) f9707fd is described below commit f9707fde1b2547e367388088c8e62a97e29b3e5c Author: ababiichuk <ababiic...@hortonworks.com> AuthorDate: Wed Feb 14 13:47:52 2018 +0200 AMBARI-22985 Quick links should be grouped by namespace. (ababiichuk) --- .../main/dashboard/widgets/hbase_links.hbs | 20 ++++---- .../main/dashboard/widgets/hdfs_links.hbs | 20 ++++---- .../main/dashboard/widgets/yarn_links.hbs | 20 ++++---- .../app/templates/main/service/info/summary.hbs | 15 ++++-- .../app/views/common/quick_view_link_view.js | 60 ++++++++++++++++++---- ambari-web/app/views/main/service/info/summary.js | 2 +- .../test/views/common/quick_link_view_test.js | 11 ++++ 7 files changed, 104 insertions(+), 44 deletions(-) diff --git a/ambari-web/app/templates/main/dashboard/widgets/hbase_links.hbs b/ambari-web/app/templates/main/dashboard/widgets/hbase_links.hbs index 0ee9af2..fe7cad4 100644 --- a/ambari-web/app/templates/main/dashboard/widgets/hbase_links.hbs +++ b/ambari-web/app/templates/main/dashboard/widgets/hbase_links.hbs @@ -75,15 +75,17 @@ {{#if view.isLoaded}} {{#if view.quickLinksArray}} <!--there are multiple masters eg, HBase multiple masters or HDFS HA enabled--> - {{#each quickLinks in view.quickLinksArray}} - <li class="dropdown-submenu"> - <a href="javascript:void(null)">{{quickLinks.publicHostNameLabel}} </a> - <ul class="dropdown-menu"> - {{#each quickLinks}} - <li><a {{bindAttr href="url"}} target="_blank">{{label}}</a></li> - {{/each}} - </ul> - </li> + {{#each group in view.quickLinksArray}} + {{#each quickLinks in group.links}} + <li class="dropdown-submenu"> + <a href="javascript:void(null)">{{quickLinks.publicHostNameLabel}} </a> + <ul class="dropdown-menu"> + {{#each quickLinks}} + <li><a {{bindAttr href="url"}} target="_blank">{{label}}</a></li> + {{/each}} + </ul> + </li> + {{/each}} {{/each}} {{else}} {{#each view.quickLinks}} diff --git a/ambari-web/app/templates/main/dashboard/widgets/hdfs_links.hbs b/ambari-web/app/templates/main/dashboard/widgets/hdfs_links.hbs index 8790ac1..54f92f7 100644 --- a/ambari-web/app/templates/main/dashboard/widgets/hdfs_links.hbs +++ b/ambari-web/app/templates/main/dashboard/widgets/hdfs_links.hbs @@ -94,15 +94,17 @@ {{#if view.isLoaded}} {{#if view.quickLinksArray}} <!--there are multiple masters eg, HBase multiple masters or HDFS HA enabled--> - {{#each quickLinks in view.quickLinksArray}} - <li class="dropdown-submenu"> - <a href="javascript:void(null)">{{quickLinks.publicHostNameLabel}} </a> - <ul class="dropdown-menu"> - {{#each quickLinks}} - <li><a {{bindAttr href="url"}} target="_blank">{{label}}</a></li> - {{/each}} - </ul> - </li> + {{#each group in view.quickLinksArray}} + {{#each quickLinks in group.links}} + <li class="dropdown-submenu"> + <a href="javascript:void(null)">{{quickLinks.publicHostNameLabel}} </a> + <ul class="dropdown-menu"> + {{#each quickLinks}} + <li><a {{bindAttr href="url"}} target="_blank">{{label}}</a></li> + {{/each}} + </ul> + </li> + {{/each}} {{/each}} {{else}} {{#each view.quickLinks}} diff --git a/ambari-web/app/templates/main/dashboard/widgets/yarn_links.hbs b/ambari-web/app/templates/main/dashboard/widgets/yarn_links.hbs index 2700a19..68bb54b 100644 --- a/ambari-web/app/templates/main/dashboard/widgets/yarn_links.hbs +++ b/ambari-web/app/templates/main/dashboard/widgets/yarn_links.hbs @@ -60,15 +60,17 @@ {{#if view.isLoaded}} {{#if view.quickLinksArray}} <!--there are multiple masters eg, HBase multiple masters or HDFS HA enabled--> - {{#each quickLinks in view.quickLinksArray}} - <li class="dropdown-submenu"> - <a href="javascript:void(null)">{{quickLinks.publicHostNameLabel}} </a> - <ul class="dropdown-menu"> - {{#each quickLinks}} - <li><a {{bindAttr href="url"}} target="_blank">{{label}}</a></li> - {{/each}} - </ul> - </li> + {{#each group in view.quickLinksArray}} + {{#each quickLinks in group.links}} + <li class="dropdown-submenu"> + <a href="javascript:void(null)">{{quickLinks.publicHostNameLabel}} </a> + <ul class="dropdown-menu"> + {{#each quickLinks}} + <li><a {{bindAttr href="url"}} target="_blank">{{label}}</a></li> + {{/each}} + </ul> + </li> + {{/each}} {{/each}} {{else}} {{#each view.quickLinks}} diff --git a/ambari-web/app/templates/main/service/info/summary.hbs b/ambari-web/app/templates/main/service/info/summary.hbs index 1572a45..73ef14c 100644 --- a/ambari-web/app/templates/main/service/info/summary.hbs +++ b/ambari-web/app/templates/main/service/info/summary.hbs @@ -88,7 +88,7 @@ </div> <div class="panel panel-default quick-links-block"> - {{#view App.QuickLinksView contentBinding="view.svc"}} + {{#view App.QuickLinksView contentBinding="view.svc" masterGroupsBinding="view.mastersObj"}} <div class="panel-heading"> <div class="row col-md-8 col-lg-12"> <h4 class="panel-title">{{t common.quickLinks}}</h4> @@ -99,10 +99,15 @@ {{#if view.isLoaded}} {{#if view.quickLinksArray}} <!--there are multiple masters eg, HBase multiple masters or HDFS HA enabled--> - {{#each quickLinks in view.quickLinksArray}} - <a href="javascript:void(null)">{{quickLinks.publicHostNameLabel}} </a> - {{#each quickLinks}} - <a {{bindAttr href="url"}} target="_blank">{{label}}</a> + {{#each group in view.quickLinksArray}} + {{#if group.title}} + <h5>{{group.title}}</h5> + {{/if}} + {{#each quickLinks in group.links}} + <a href="javascript:void(null)">{{quickLinks.publicHostNameLabel}} </a> + {{#each quickLinks}} + <a {{bindAttr href="url"}} target="_blank">{{label}}</a> + {{/each}} {{/each}} {{/each}} {{else}} diff --git a/ambari-web/app/views/common/quick_view_link_view.js b/ambari-web/app/views/common/quick_view_link_view.js index 3ccc973..0a2f3cf 100644 --- a/ambari-web/app/views/common/quick_view_link_view.js +++ b/ambari-web/app/views/common/quick_view_link_view.js @@ -79,6 +79,8 @@ App.QuickLinksView = Em.View.extend({ */ servicesSupportsHttps: ["HDFS", "HBASE"], + masterGroups: [], + /** * @type {object} */ @@ -287,6 +289,8 @@ App.QuickLinksView = Em.View.extend({ this.setEmptyLinks(); } else if (hosts.length === 1 || isMultipleComponentsInLinks || this.hasOverriddenHost()) { this.setSingleHostLinks(hosts, response); + } else if (this.get('masterGroups.length') > 1) { + this.setMultipleGroupLinks(hosts); } else { this.setMultipleHostLinks(hosts); } @@ -480,17 +484,9 @@ App.QuickLinksView = Em.View.extend({ } }, - /** - * set links that contain multiple hosts - * - * @param {hostForQuickLink[]} hosts - * @method setMultipleHostLinks - */ - setMultipleHostLinks: function (hosts) { + getMultipleHostLinks: function (hosts) { var quickLinksConfig = this.getQuickLinksConfiguration(); if (Em.isNone(quickLinksConfig)) { - this.set('quickLinksArray', []); - this.set('isLoaded', false); return; } @@ -544,8 +540,50 @@ App.QuickLinksView = Em.View.extend({ } quickLinksArray.push(quickLinks); }, this); - this.set('quickLinksArray', quickLinksArray); - this.set('isLoaded', true); + return quickLinksArray; + }, + + /** + * set links that contain multiple hosts + * + * @param {hostForQuickLink[]} hosts + * @method setMultipleHostLinks + */ + setMultipleHostLinks: function (hosts) { + const quickLinks = this.getMultipleHostLinks(hosts); + this.setProperties({ + quickLinksArray: [ + { + links: quickLinks || [] + } + ], + isLoaded: !!quickLinks + }); + }, + + /** + * set links that contain for multiple grouped hosts + * + * @param {hostForQuickLink[]} hosts + * @method setMultipleGroupLinks + */ + setMultipleGroupLinks: function (hosts) { + let isLoaded = true; + const quickLinksArray = this.get('masterGroups').map(group => { + const groupHosts = hosts.filter(host => group.hosts.contains(host.hostName)), + links = this.getMultipleHostLinks(groupHosts); + if (!links) { + isLoaded = false; + } + return { + title: group.title, + links: links || [] + }; + }); + this.setProperties({ + quickLinksArray, + isLoaded + }); }, /** diff --git a/ambari-web/app/views/main/service/info/summary.js b/ambari-web/app/views/main/service/info/summary.js index 111c6b6..3260456 100644 --- a/ambari-web/app/views/main/service/info/summary.js +++ b/ambari-web/app/views/main/service/info/summary.js @@ -446,7 +446,7 @@ App.MainServiceInfoSummaryView = Em.View.extend({ title, isActive: title === this.get('activeMasterComponentGroup'), components: [], - hosts: [hostName] + hosts: [] }; if (!existingGroup) { groups.push(currentGroup); diff --git a/ambari-web/test/views/common/quick_link_view_test.js b/ambari-web/test/views/common/quick_link_view_test.js index 9adbbc8..3100b17 100644 --- a/ambari-web/test/views/common/quick_link_view_test.js +++ b/ambari-web/test/views/common/quick_link_view_test.js @@ -258,6 +258,7 @@ describe('App.QuickViewLinks', function () { sinon.stub(quickViewLinks, 'setEmptyLinks'); sinon.stub(quickViewLinks, 'setSingleHostLinks'); sinon.stub(quickViewLinks, 'setMultipleHostLinks'); + sinon.stub(quickViewLinks, 'setMultipleGroupLinks'); quickViewLinks.set('content.quickLinks', []); }); afterEach(function () { @@ -266,6 +267,8 @@ describe('App.QuickViewLinks', function () { quickViewLinks.setEmptyLinks.restore(); quickViewLinks.setSingleHostLinks.restore(); quickViewLinks.setMultipleHostLinks.restore(); + quickViewLinks.setMultipleGroupLinks.restore(); + quickViewLinks.get('masterGroups').clear(); }); it("no hosts", function () { this.mock.returns([]); @@ -295,6 +298,14 @@ describe('App.QuickViewLinks', function () { [{hostName: 'host1'}, {hostName: 'host2'}] )).to.be.true; }); + it("multiple grouped hosts", function () { + this.mock.returns([{hostName: 'host1'}, {hostName: 'host2'}]); + quickViewLinks.set('masterGroups', [{}, {}]); + quickViewLinks.setQuickLinksSuccessCallback(); + expect(quickViewLinks.setMultipleGroupLinks.calledWith( + [{hostName: 'host1'}, {hostName: 'host2'}] + )).to.be.true; + }); }); describe("#getPublicHostName()", function () { -- To stop receiving notification emails like this one, please contact ababiic...@apache.org.