diff --git a/ui/app/controllers/allocations/allocation/index.js b/ui/app/controllers/allocations/allocation/index.js index 4e156c69f..1131d6b7f 100644 --- a/ui/app/controllers/allocations/allocation/index.js +++ b/ui/app/controllers/allocations/allocation/index.js @@ -1,6 +1,7 @@ import { alias } from '@ember/object/computed'; import Controller, { inject as controller } from '@ember/controller'; import Sortable from 'nomad-ui/mixins/sortable'; +import { lazyClick } from 'nomad-ui/helpers/lazy-click'; export default Controller.extend(Sortable, { allocationController: controller('allocations.allocation'), @@ -17,4 +18,14 @@ export default Controller.extend(Sortable, { listToSort: alias('model.states'), sortedStates: alias('listSorted'), + + actions: { + gotoTask(allocation, task) { + this.transitionToRoute('allocations.allocation.task', task); + }, + + taskClick(allocation, task, event) { + lazyClick([() => this.send('gotoTask', allocation, task), event]); + }, + }, }); diff --git a/ui/app/templates/allocations/allocation/index.hbs b/ui/app/templates/allocations/allocation/index.hbs index d1c0375ed..9de41da3a 100644 --- a/ui/app/templates/allocations/allocation/index.hbs +++ b/ui/app/templates/allocations/allocation/index.hbs @@ -48,7 +48,10 @@ Addresses {{/t.head}} {{#t.body as |row|}} - + {{#if (not row.model.driverStatus.healthy)}} diff --git a/ui/tests/acceptance/allocation-detail-test.js b/ui/tests/acceptance/allocation-detail-test.js index d612eb688..0720fffa9 100644 --- a/ui/tests/acceptance/allocation-detail-test.js +++ b/ui/tests/acceptance/allocation-detail-test.js @@ -137,6 +137,36 @@ test('each task row should list high-level information for the task', function(a }); }); +test('each task row should link to the task detail page', function(assert) { + const task = server.db.taskStates.where({ allocationId: allocation.id }).sortBy('name')[0]; + + click('[data-test-task-row] [data-test-name] a'); + + andThen(() => { + assert.equal( + currentURL(), + `/allocations/${allocation.id}/${task.name}`, + 'Task name in task row links to task detail' + ); + }); + + andThen(() => { + visit(`/allocations/${allocation.id}`); + }); + + andThen(() => { + click('[data-test-task-row]'); + }); + + andThen(() => { + assert.equal( + currentURL(), + `/allocations/${allocation.id}/${task.name}`, + 'Task row links to task detail' + ); + }); +}); + test('tasks with an unhealthy driver have a warning icon', function(assert) { assert.ok(find('[data-test-task-row] [data-test-icon="unhealthy-driver"]'), 'Warning is shown'); });