diff --git a/addons/core/addon/services/scope.js b/addons/core/addon/services/scope.js index fa17bee48..b6e089353 100644 --- a/addons/core/addon/services/scope.js +++ b/addons/core/addon/services/scope.js @@ -3,7 +3,7 @@ import { tracked } from '@glimmer/tracking'; /** * This simple non-functional service is used to retain references to - * the current active scope(s). + * lists of scopes (orgs and projects) and selected scopes (orgs and projects). */ export default class ScopeService extends Service { // =attributes @@ -13,8 +13,18 @@ export default class ScopeService extends Service { */ @tracked org; + /** + * @type {ScopeModel} + */ + @tracked orgsList; + /** * @type {ScopeModel} */ @tracked project; + + /** + * @type {ScopeModel} + */ + @tracked projectsList; } diff --git a/addons/core/tests/unit/services/scope-test.js b/addons/core/tests/unit/services/scope-test.js index 596ddbfcd..02cf1bc2a 100644 --- a/addons/core/tests/unit/services/scope-test.js +++ b/addons/core/tests/unit/services/scope-test.js @@ -10,9 +10,21 @@ module('Unit | Service | scope', function (hooks) { assert.ok(service.org, 'Service contains org scope'); }); + test('it can contain orgs list scope', function (assert) { + let service = this.owner.lookup('service:scope'); + service.orgsList = []; + assert.ok(service.orgsList, 'Service contains orgs list scope'); + }); + test('it can contain project scope', function (assert) { let service = this.owner.lookup('service:scope'); service.project = {}; assert.ok(service.project, 'Service contains project scope'); }); + + test('it can contain projects list scope', function (assert) { + let service = this.owner.lookup('service:scope'); + service.projectsList = []; + assert.ok(service.projectsList, 'Service contains projects list scope'); + }); }); diff --git a/ui/admin/app/templates/scopes/scope/-header-nav.hbs b/ui/admin/app/components/header-nav/index.hbs similarity index 53% rename from ui/admin/app/templates/scopes/scope/-header-nav.hbs rename to ui/admin/app/components/header-nav/index.hbs index e8f094d34..15115363e 100644 --- a/ui/admin/app/templates/scopes/scope/-header-nav.hbs +++ b/ui/admin/app/components/header-nav/index.hbs @@ -1,7 +1,7 @@ {{/if}} - {{#each this.scopes.orgs as |scope|}} - - {{scope.displayName}} + {{#each this.scope.orgsList as |org|}} + + {{org.displayName}} {{/each}} -{{#if this.scopes.selectedProject}} +{{#if this.scope.project}} - {{#each this.scopes.projects as |scope|}} - - {{scope.displayName}} + {{#each this.scope.projectsList as |project|}} + + {{project.displayName}} {{/each}} diff --git a/ui/admin/app/components/header-nav/index.js b/ui/admin/app/components/header-nav/index.js new file mode 100644 index 000000000..407fd3d96 --- /dev/null +++ b/ui/admin/app/components/header-nav/index.js @@ -0,0 +1,9 @@ +import Component from '@glimmer/component'; +import { inject as service } from '@ember/service'; + +export default class HeaderNavComponent extends Component { + // =services + + @service session; + @service scope; +} diff --git a/ui/admin/app/routes/scopes/scope.js b/ui/admin/app/routes/scopes/scope.js index 94b6afc71..c92df4829 100644 --- a/ui/admin/app/routes/scopes/scope.js +++ b/ui/admin/app/routes/scopes/scope.js @@ -68,6 +68,8 @@ export default class ScopesScopeRoute extends Route { // Update the scope service with the current scope(s); this.scope.org = selectedOrg; this.scope.project = selectedProject; + this.scope.orgsList = orgs; + this.scope.projectsList = projects; this.scopes = { orgs, projects, selectedOrg, selectedProject }; // Update the controller (if exists), since setupController is only // called once the first time the route is activated. It is not called @@ -94,20 +96,6 @@ export default class ScopesScopeRoute extends Route { this.controller.setProperties({ scopes }); } - /** - * Renders the scope-specific header template. - * @override - * @param {object} controller - * @param {object} model - */ - renderTemplate() { - super.renderTemplate(...arguments); - this.render('scopes/scope/-header-nav', { - into: 'application', - outlet: 'header-nav', - }); - } - // =actions /** diff --git a/ui/admin/app/templates/application.hbs b/ui/admin/app/templates/application.hbs index 08ebd88cd..cf84aab72 100644 --- a/ui/admin/app/templates/application.hbs +++ b/ui/admin/app/templates/application.hbs @@ -8,9 +8,7 @@ {{#if this.session.isAuthenticated}} - - {{outlet 'header-nav'}} - +