From 8cb0e7bce7af236a495fd1a5bac39cd7ed3ac6bf Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Thu, 25 Jun 2020 09:00:55 -0400 Subject: [PATCH] =?UTF-8?q?chore:=20=F0=9F=A4=96=20add=20computed=20displa?= =?UTF-8?q?yName=20to=20fallback=20on=20id=20for=20models?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- addons/api/addon/models/base.js | 10 ++++++++++ addons/api/tests/unit/models/base-test.js | 17 +++++++++++++++++ .../controllers/orgs/org/projects/project.js | 2 +- .../project/host-catalogs/host-catalog.js | 2 +- ui/core/app/controllers/orgs/org/roles/role.js | 2 +- .../app/templates/orgs/org/projects/project.hbs | 2 +- .../project/host-catalogs/host-catalog.hbs | 2 +- ui/core/app/templates/orgs/org/roles/role.hbs | 2 +- 8 files changed, 33 insertions(+), 6 deletions(-) diff --git a/addons/api/addon/models/base.js b/addons/api/addon/models/base.js index 389327972..a680bce7a 100644 --- a/addons/api/addon/models/base.js +++ b/addons/api/addon/models/base.js @@ -4,6 +4,16 @@ import { computed } from '@ember/object'; export default class BaseModel extends Model { // =attributes + /** + * Names are optional on models in our API. Thus we need to fallback on ID + * for display purposes. + * @type {string} + */ + @computed('name', 'id') + get displayName() { + return this.name || this.id; + } + /** * @type {boolean} */ diff --git a/addons/api/tests/unit/models/base-test.js b/addons/api/tests/unit/models/base-test.js index 0fe0de40f..670168d48 100644 --- a/addons/api/tests/unit/models/base-test.js +++ b/addons/api/tests/unit/models/base-test.js @@ -11,6 +11,23 @@ module('Unit | Model | base', function (hooks) { assert.ok(model); }); + test('it has a displayName attribute', function (assert) { + assert.expect(3); + const store = this.owner.lookup('service:store'); + store.push({ + data: { + id: '123abc', + type: 'project', + attributes: {}, + }, + }); + const model = store.peekRecord('project', '123abc'); + assert.equal(model.name, null); + assert.equal(model.displayName, '123abc'); + model.name = 'Test'; + assert.equal(model.displayName, 'Test'); + }); + test('it has canSave and cannotSave attributes', function (assert) { assert.expect(8); const store = this.owner.lookup('service:store'); diff --git a/ui/core/app/controllers/orgs/org/projects/project.js b/ui/core/app/controllers/orgs/org/projects/project.js index 15f6255cf..d56cf15d9 100644 --- a/ui/core/app/controllers/orgs/org/projects/project.js +++ b/ui/core/app/controllers/orgs/org/projects/project.js @@ -8,6 +8,6 @@ export default class OrgsOrgProjectsProjectController extends Controller { /** * @type {string} */ - @alias('model.name') breadCrumb; + @alias('model.displayName') breadCrumb; } diff --git a/ui/core/app/controllers/orgs/org/projects/project/host-catalogs/host-catalog.js b/ui/core/app/controllers/orgs/org/projects/project/host-catalogs/host-catalog.js index 067facc1d..57d0c2724 100644 --- a/ui/core/app/controllers/orgs/org/projects/project/host-catalogs/host-catalog.js +++ b/ui/core/app/controllers/orgs/org/projects/project/host-catalogs/host-catalog.js @@ -8,6 +8,6 @@ export default class OrgsOrgProjectsProjectHostCatalogsHostCatalogController ext /** * @type {string} */ - @alias('model.name') breadCrumb; + @alias('model.displayName') breadCrumb; } diff --git a/ui/core/app/controllers/orgs/org/roles/role.js b/ui/core/app/controllers/orgs/org/roles/role.js index 85022f933..23fe25882 100644 --- a/ui/core/app/controllers/orgs/org/roles/role.js +++ b/ui/core/app/controllers/orgs/org/roles/role.js @@ -7,6 +7,6 @@ export default class OrgsOrgRolesRoleController extends Controller { /** * @type {string} */ - @alias('model.name') breadCrumb; + @alias('model.displayName') breadCrumb; } diff --git a/ui/core/app/templates/orgs/org/projects/project.hbs b/ui/core/app/templates/orgs/org/projects/project.hbs index 2b05f838d..d66e83390 100644 --- a/ui/core/app/templates/orgs/org/projects/project.hbs +++ b/ui/core/app/templates/orgs/org/projects/project.hbs @@ -1,3 +1,3 @@ -{{title @model.name}} +{{title @model.displayName}} {{outlet}} diff --git a/ui/core/app/templates/orgs/org/projects/project/host-catalogs/host-catalog.hbs b/ui/core/app/templates/orgs/org/projects/project/host-catalogs/host-catalog.hbs index 2b05f838d..d66e83390 100644 --- a/ui/core/app/templates/orgs/org/projects/project/host-catalogs/host-catalog.hbs +++ b/ui/core/app/templates/orgs/org/projects/project/host-catalogs/host-catalog.hbs @@ -1,3 +1,3 @@ -{{title @model.name}} +{{title @model.displayName}} {{outlet}} diff --git a/ui/core/app/templates/orgs/org/roles/role.hbs b/ui/core/app/templates/orgs/org/roles/role.hbs index 2b05f838d..d66e83390 100644 --- a/ui/core/app/templates/orgs/org/roles/role.hbs +++ b/ui/core/app/templates/orgs/org/roles/role.hbs @@ -1,3 +1,3 @@ -{{title @model.name}} +{{title @model.displayName}} {{outlet}}