diff --git a/ui/app/routes/jobs.js b/ui/app/routes/jobs.js index 745e326e2..ed9178375 100644 --- a/ui/app/routes/jobs.js +++ b/ui/app/routes/jobs.js @@ -8,6 +8,13 @@ export default Route.extend(WithForbiddenState, { system: service(), store: service(), + breadcrumbs: [ + { + label: 'Jobs', + args: ['jobs.index'], + }, + ], + beforeModel() { return this.get('system.namespaces'); }, diff --git a/ui/app/routes/jobs/job.js b/ui/app/routes/jobs/job.js index 86b784508..3f2d804f7 100644 --- a/ui/app/routes/jobs/job.js +++ b/ui/app/routes/jobs/job.js @@ -2,11 +2,32 @@ import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; import RSVP from 'rsvp'; import notifyError from 'nomad-ui/utils/notify-error'; +import PromiseObject from 'nomad-ui/utils/classes/promise-object'; + +const jobCrumb = job => ({ + label: job.get('trimmedName'), + args: ['jobs.job.index', job], +}); export default Route.extend({ store: service(), token: service(), + breadcrumbs(model) { + if (!model) return []; + + if (model.get('parent.content')) { + return [ + PromiseObject.create({ + promise: model.get('parent').then(parent => jobCrumb(parent)), + }), + jobCrumb(model), + ]; + } else { + return [jobCrumb(model)]; + } + }, + serialize(model) { return { job_name: model.get('plainId') }; },