diff --git a/addons/core/addon/helpers/indexed-display-name.js b/addons/core/addon/helpers/reverse-indexed-display-name.js similarity index 53% rename from addons/core/addon/helpers/indexed-display-name.js rename to addons/core/addon/helpers/reverse-indexed-display-name.js index 973d15947..76980ab2a 100644 --- a/addons/core/addon/helpers/indexed-display-name.js +++ b/addons/core/addon/helpers/reverse-indexed-display-name.js @@ -1,16 +1,21 @@ import Helper from '@ember/component/helper'; import { inject as service } from '@ember/service'; -export function indexedDisplayName(intl, translation, array, item) { +export function reverseIndexedDisplayName(intl, translation, array, item) { const length = array.length; + const position = array.indexOf(item); + let index = length - position; - let index = length - array.indexOf(item); - if (index > length) index = null; + // indexOf will return -1 if item not in array; if item not found + // in array index set to null to avoid displaying incorrect index + if (position === -1) { + index = null; + } return intl.t(translation, { index }); } -export default class IndexedDisplayName extends Helper { +export default class ReverseIndexedDisplayName extends Helper { // =services @service intl; @@ -21,9 +26,9 @@ export default class IndexedDisplayName extends Helper { * @param {Array} array parent array of item * @param {object} item object that you want to find the index of * indexOf will not do a deep equality check with item, just if the object exist in the array - * @returns localized name for resource with indexed position. For example, "Channel 1" for first item in a list. + * @returns localized name for resource with indexed position. For example, "Channel 1" for last item in a list. */ compute([translation, array, item]) { - return indexedDisplayName(this.intl, translation, array, item); + return reverseIndexedDisplayName(this.intl, translation, array, item); } } diff --git a/addons/core/app/helpers/indexed-display-name.js b/addons/core/app/helpers/indexed-display-name.js deleted file mode 100644 index f64b9508e..000000000 --- a/addons/core/app/helpers/indexed-display-name.js +++ /dev/null @@ -1 +0,0 @@ -export { default } from 'core/helpers/indexed-display-name'; diff --git a/addons/core/app/helpers/reverse-indexed-display-name.js b/addons/core/app/helpers/reverse-indexed-display-name.js new file mode 100644 index 000000000..6de3b2387 --- /dev/null +++ b/addons/core/app/helpers/reverse-indexed-display-name.js @@ -0,0 +1 @@ +export { default } from 'core/helpers/reverse-indexed-display-name'; diff --git a/addons/core/tests/integration/helpers/indexed-display-name-test.js b/addons/core/tests/integration/helpers/reverse-indexed-display-name-test.js similarity index 81% rename from addons/core/tests/integration/helpers/indexed-display-name-test.js rename to addons/core/tests/integration/helpers/reverse-indexed-display-name-test.js index 3c9dccffb..09fb0d571 100644 --- a/addons/core/tests/integration/helpers/indexed-display-name-test.js +++ b/addons/core/tests/integration/helpers/reverse-indexed-display-name-test.js @@ -4,14 +4,14 @@ import { render } from '@ember/test-helpers'; import { hbs } from 'ember-cli-htmlbars'; import { setupIntl } from 'ember-intl/test-support'; -module('Integration | Helper | indexed-display-name', function (hooks) { +module('Integration | Helper | reverse-indexed-display-name', function (hooks) { setupRenderingTest(hooks); setupIntl(hooks); test('it renders the resource name with its position in parent array reversed', async function (assert) { this.set('array', ['Boundary', 'is', 'cool!']); - await render(hbs`{{indexed-display-name + await render(hbs`{{reverse-indexed-display-name 'resources.session-recording.connection.title_index' this.array 'Boundary' @@ -19,7 +19,7 @@ module('Integration | Helper | indexed-display-name', function (hooks) { assert.dom(this.element).hasText('Connection 3'); - await render(hbs`{{indexed-display-name + await render(hbs`{{reverse-indexed-display-name 'resources.session-recording.connection.title_index' this.array 'is' @@ -27,7 +27,7 @@ module('Integration | Helper | indexed-display-name', function (hooks) { assert.dom(this.element).hasText('Connection 2'); - await render(hbs`{{indexed-display-name + await render(hbs`{{reverse-indexed-display-name 'resources.session-recording.connection.title_index' this.array 'cool!' @@ -39,7 +39,7 @@ module('Integration | Helper | indexed-display-name', function (hooks) { test('it does not render the position if the index cannot be found', async function (assert) { this.set('array', ['Boundary', 'is', 'cool!']); - await render(hbs`{{indexed-display-name + await render(hbs`{{reverse-indexed-display-name 'resources.session-recording.connection.title_index' this.array 'Watchtower' diff --git a/ui/admin/app/controllers/scopes/scope/session-recordings/session-recording/channels-by-connection/channel.js b/ui/admin/app/controllers/scopes/scope/session-recordings/session-recording/channels-by-connection/channel.js index 755d26751..ad8db437a 100644 --- a/ui/admin/app/controllers/scopes/scope/session-recordings/session-recording/channels-by-connection/channel.js +++ b/ui/admin/app/controllers/scopes/scope/session-recordings/session-recording/channels-by-connection/channel.js @@ -1,6 +1,6 @@ import Controller from '@ember/controller'; import { inject as service } from '@ember/service'; -import { indexedDisplayName } from 'core/helpers/indexed-display-name'; +import { reverseIndexedDisplayName } from 'core/helpers/reverse-indexed-display-name'; export default class ScopesScopeSessionRecordingsSessionRecordingChannelsByConnectionChannelController extends Controller { // =services @@ -11,7 +11,7 @@ export default class ScopesScopeSessionRecordingsSessionRecordingChannelsByConne * Session recording channel breadcrumb */ get breadCrumb() { - return indexedDisplayName( + return reverseIndexedDisplayName( this.intl, 'resources.session-recording.channel.title_index', this.model.channelRecording.connection_recording.channel_recordings, diff --git a/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/channel.hbs b/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/channel.hbs index a59f0a61d..83496eb76 100644 --- a/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/channel.hbs +++ b/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/channel.hbs @@ -7,7 +7,7 @@

- {{indexed-display-name + {{reverse-indexed-display-name 'resources.session-recording.channel.title_index' @model.channelRecording.connection_recording.channel_recordings @model.channelRecording diff --git a/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/index.hbs b/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/index.hbs index 448be0997..c6196ddc4 100644 --- a/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/index.hbs +++ b/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/index.hbs @@ -46,7 +46,7 @@ }}

- {{indexed-display-name + {{reverse-indexed-display-name 'resources.session-recording.connection.title_index' @model.sessionRecording.connection_recordings connection @@ -83,7 +83,7 @@ - {{indexed-display-name + {{reverse-indexed-display-name 'resources.session-recording.channel.title_index' connection.channel_recordings B.data