From f134de0be368f6e8a80347b7dc7c564c284a0063 Mon Sep 17 00:00:00 2001 From: Chris Houseknecht Date: Thu, 14 Aug 2014 13:10:45 -0400 Subject: [PATCH] Job detail page Fixed https://trello.com/c/lRz0fKuM/293-play-missing-from-job-detail-page Now a play with no tasks and no matching hosts appears during live events and after the job finishes and page is reloaded from the API. --- awx/ui/static/js/controllers/JobDetail.js | 12 +++++++++++- awx/ui/static/js/helpers/JobDetail.js | 11 +++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/awx/ui/static/js/controllers/JobDetail.js b/awx/ui/static/js/controllers/JobDetail.js index d86883cd5b..5ca051fd3d 100644 --- a/awx/ui/static/js/controllers/JobDetail.js +++ b/awx/ui/static/js/controllers/JobDetail.js @@ -386,6 +386,10 @@ function JobDetailController ($location, $rootScope, $scope, $compile, $routePar // this is not the first task play.tasks[event.id].hostCount = play.tasks[play.firstTask].hostCount; } + if (play.tasks[event.id].hostCount === 0) { + play.tasks[event.id].status_text = 'No matching hosts'; + play.tasks[event.id].status_tip = "Event ID: " + event.id + "
Status: No matching hosts"; + } play.taskCount++; SetTaskStyles({ task: play.tasks[event.id] @@ -491,11 +495,17 @@ function JobDetailController ($location, $rootScope, $scope, $compile, $routePar scope.jobData.plays[event.id].hostCount = ok + changed + failed + skipped; - if (scope.jobData.plays[event.id].hostCount > 0 || event.unreachable_count > 0) { + if (scope.jobData.plays[event.id].hostCount > 0 || event.unreachable_count > 0 || scope.job_status.status === 'successful' || + scope.job_status.status === 'failed' || scope.job_status.status === 'error' || scope.job_status.status === 'canceled') { // force the play to be on the 'active' list scope.jobData.plays[event.id].taskCount = 1; } + if (scope.jobData.plays[event.id].hostCount === 0 && event.unreachable_count === 0) { + scope.jobData.plays[event.id].status_text = 'No matching hosts'; + scope.jobData.plays[event.id].status_tip = "Event ID: " + event.id + "
Status: No matching hosts"; + } + scope.host_summary.ok += ok; scope.host_summary.changed += changed; scope.host_summary.unreachable += (event.unreachable_count) ? event.unreachable_count : 0; diff --git a/awx/ui/static/js/helpers/JobDetail.js b/awx/ui/static/js/helpers/JobDetail.js index f995abfbf0..3c117dcf1d 100644 --- a/awx/ui/static/js/helpers/JobDetail.js +++ b/awx/ui/static/js/helpers/JobDetail.js @@ -104,7 +104,7 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge UpdatePlayStatus({ scope: scope, play_id: event.parent, - failed: true, + failed: false, changed: false, modified: event.modified, no_hosts: true @@ -384,22 +384,21 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge play; if (scope.jobData.plays[id] !== undefined) { - play = scope.jobData.plays[scope.activePlay]; + play = scope.jobData.plays[id]; if (failed) { play.status = 'failed'; play.status_text = 'Failed'; } else if (play.status !== 'changed' && play.status !== 'failed') { // once the status becomes 'changed' or 'failed' don't modify it + play.status = (changed) ? 'changed' : (failed) ? 'failed' : 'successful'; if (no_hosts) { - play.status = 'no-matching-hosts'; play.status_text = 'No matching hosts'; - } - else { - play.status = (changed) ? 'changed' : (failed) ? 'failed' : 'successful'; + } else { play.status_text = (changed) ? 'Changed' : (failed) ? 'Failed' : 'OK'; } } + play.taskCount = (play.taskCount > 0) ? play.taskCount : 1; // set to a minimum of 1 to force drawing play.status_tip = "Event ID: " + play.id + "
Status: " + play.status_text; play.finished = modified; play.elapsed = GetElapsed({