From a1e34f0258a98f729b163a6a02325be2ea98de03 Mon Sep 17 00:00:00 2001 From: Michael Lange Date: Thu, 8 Mar 2018 14:14:55 -0800 Subject: [PATCH] Only show the placement failures section if there is a blocked eval --- ui/app/models/evaluation.js | 3 ++- ui/app/models/job.js | 10 ++++++++-- ui/mirage/factories/evaluation.js | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ui/app/models/evaluation.js b/ui/app/models/evaluation.js index 5fcb3550a95d..f7755315cfb2 100644 --- a/ui/app/models/evaluation.js +++ b/ui/app/models/evaluation.js @@ -1,4 +1,4 @@ -import { bool } from '@ember/object/computed'; +import { bool, equal } from '@ember/object/computed'; import Model from 'ember-data/model'; import attr from 'ember-data/attr'; import { belongsTo } from 'ember-data/relationships'; @@ -15,6 +15,7 @@ export default Model.extend({ failedTGAllocs: fragmentArray('placement-failure', { defaultValue: () => [] }), hasPlacementFailures: bool('failedTGAllocs.length'), + isBlocked: equal('status', 'blocked'), // TEMPORARY: https://github.com/emberjs/data/issues/5209 originalJobId: attr('string'), diff --git a/ui/app/models/job.js b/ui/app/models/job.js index ac536db04141..0ab6345ae8d4 100644 --- a/ui/app/models/job.js +++ b/ui/app/models/job.js @@ -1,4 +1,4 @@ -import { alias, bool, equal, or } from '@ember/object/computed'; +import { alias, equal, or, and } from '@ember/object/computed'; import { computed } from '@ember/object'; import Model from 'ember-data/model'; import attr from 'ember-data/attr'; @@ -106,7 +106,13 @@ export default Model.extend({ evaluations: hasMany('evaluations'), namespace: belongsTo('namespace'), - hasPlacementFailures: bool('latestFailureEvaluation'), + hasBlockedEvaluation: computed('evaluations.@each.isBlocked', function() { + return this.get('evaluations') + .toArray() + .some(evaluation => evaluation.get('isBlocked')); + }), + + hasPlacementFailures: and('latestFailureEvaluation', 'hasBlockedEvaluation'), latestEvaluation: computed('evaluations.@each.modifyIndex', 'evaluations.isPending', function() { const evaluations = this.get('evaluations'); diff --git a/ui/mirage/factories/evaluation.js b/ui/mirage/factories/evaluation.js index 00ebff30ffa6..8c3ffca09ad3 100644 --- a/ui/mirage/factories/evaluation.js +++ b/ui/mirage/factories/evaluation.js @@ -4,7 +4,7 @@ import { provide, pickOne } from '../utils'; import { DATACENTERS } from '../common'; const EVAL_TYPES = ['system', 'service', 'batch']; -const EVAL_STATUSES = ['blocked', 'pending', 'complete', 'failed', 'canceled']; +const EVAL_STATUSES = ['pending', 'complete', 'failed', 'canceled']; const EVAL_TRIGGERED_BY = [ 'job-register', 'job-deregister', @@ -55,7 +55,7 @@ export default Factory.extend({ modifyIndex: () => faker.random.number({ min: 10, max: 2000 }), withPlacementFailures: trait({ - status: faker.list.random(...EVAL_STATUSES.without('blocked')), + status: 'blocked', afterCreate(evaluation, server) { assignJob(evaluation, server); const taskGroups = server.db.taskGroups.where({ jobId: evaluation.jobId });