diff --git a/public/app/core/components/sidemenu/sidemenu.html b/public/app/core/components/sidemenu/sidemenu.html index 25aa38c45b8..fbcc8034f94 100644 --- a/public/app/core/components/sidemenu/sidemenu.html +++ b/public/app/core/components/sidemenu/sidemenu.html @@ -22,6 +22,13 @@ {{::menuItem.text}} +
  • +
  • + + + {{::orgItem.text}} + +
  • diff --git a/public/app/core/components/sidemenu/sidemenu.ts b/public/app/core/components/sidemenu/sidemenu.ts index 30230586e78..686f7a8478e 100644 --- a/public/app/core/components/sidemenu/sidemenu.ts +++ b/public/app/core/components/sidemenu/sidemenu.ts @@ -12,6 +12,9 @@ export class SideMenuCtrl { mainLinks: any; orgMenu: any; appSubUrl: string; + orgFilter: string; + orgItems: any; + orgs: any; /** @ngInject */ constructor(private $scope, private $location, private contextSrv, private backendSrv, private $element) { @@ -20,6 +23,7 @@ export class SideMenuCtrl { this.appSubUrl = config.appSubUrl; this.showSignout = this.contextSrv.isSignedIn && !config['authProxyEnabled']; + this.mainLinks = config.bootData.mainNavLinks; this.openUserDropdown(); @@ -28,7 +32,7 @@ export class SideMenuCtrl { this.contextSrv.sidemenu = false; } }); - + this.orgFilter = ''; } getUrl(url) { @@ -49,38 +53,44 @@ export class SideMenuCtrl { this.orgMenu.push({section: this.user.orgName, cssClass: 'dropdown-menu-title'}); this.orgMenu.push({ text: "Preferences", - url: this.getUrl("/org"), + url: this.getUrl("/org") }); this.orgMenu.push({ text: "Users", - url: this.getUrl("/org/users"), + url: this.getUrl("/org/users") }); this.orgMenu.push({ text: "API Keys", - url: this.getUrl("/org/apikeys"), + url: this.getUrl("/org/apikeys") }); } this.orgMenu.push({cssClass: "divider"}); - this.backendSrv.get('/api/user/orgs').then(orgs => { - orgs.forEach(org => { - if (org.orgId === this.contextSrv.user.orgId) { - return; - } + this.orgs = orgs; + this.loadOrgsItems(); + }); + } - this.orgMenu.push({ + loadOrgsItems(){ + this.orgItems = []; + this.orgs.forEach(org => { + if (org.orgId === this.contextSrv.user.orgId) { + return; + } + + if (this.orgFilter === '' || org.name.indexOf(this.orgFilter) !== -1){ + this.orgItems.push({ text: "Switch to " + org.name, icon: "fa fa-fw fa-random", url: this.getUrl('/profile/switch-org/' + org.orgId), target: '_self' }); - }); - - if (config.allowOrgCreate) { - this.orgMenu.push({text: "New organization", icon: "fa fa-fw fa-plus", url: this.getUrl('/org/new')}); } }); + if (config.allowOrgCreate) { + this.orgItems.push({text: "New organization", icon: "fa fa-fw fa-plus", url: this.getUrl('/org/new')}); + } } }