From 238c7093ed3a6d2f5e683fae4b7b23580cf05a19 Mon Sep 17 00:00:00 2001 From: Chris Houseknecht Date: Mon, 14 Jul 2014 17:48:07 -0400 Subject: [PATCH] Job detail page refactoration Changed results list title to 'Host Events' and added Item column. Added table header row and applied ellipsis to all columns. --- awx/ui/static/js/controllers/JobDetail.js | 13 +++- awx/ui/static/js/helpers/JobDetail.js | 73 +++++++++++++++-------- awx/ui/static/less/job-details.less | 15 +++-- awx/ui/static/partials/job_detail.html | 27 +++++++-- 4 files changed, 92 insertions(+), 36 deletions(-) diff --git a/awx/ui/static/js/controllers/JobDetail.js b/awx/ui/static/js/controllers/JobDetail.js index 2709cd64bc..a5d0b70a90 100644 --- a/awx/ui/static/js/controllers/JobDetail.js +++ b/awx/ui/static/js/controllers/JobDetail.js @@ -187,7 +187,7 @@ function JobDetailController ($location, $rootScope, $scope, $compile, $routePar Rest.setUrl(url); Rest.get() .success(function(data) { - var idx, event, status, status_text; + var idx, event, status, status_text, item; if (data.results.length > 0) { lastEventId = data.results[0].id; } @@ -218,6 +218,14 @@ function JobDetailController ($location, $rootScope, $scope, $compile, $routePar case "skipped": status_text = "Skipped"; } + + if (event.event_data && event.event_data.res) { + item = event.event_data.res.item; + if (typeof item === "object") { + item = JSON.stringify(item); + } + } + if (event.event !== "runner_on_no_hosts") { task.hostResults[event.id] = { id: event.id, @@ -227,7 +235,8 @@ function JobDetailController ($location, $rootScope, $scope, $compile, $routePar task_id: event.parent, name: event.event_data.host, created: event.created, - msg: ( (event.event_data && event.event_data.res) ? event.event_data.res.msg : '' ) + msg: (event.event_data && event.event_data.res) ? event.event_data.res.msg : '' , + item: item }; } } diff --git a/awx/ui/static/js/helpers/JobDetail.js b/awx/ui/static/js/helpers/JobDetail.js index 0b4c325a9a..453c355a14 100644 --- a/awx/ui/static/js/helpers/JobDetail.js +++ b/awx/ui/static/js/helpers/JobDetail.js @@ -81,7 +81,8 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge id: event.id, created: event.created, modified: event.modified, - message: (event.event_data && event.event_data.res) ? event.event_data.res.msg : '' + message: (event.event_data && event.event_data.res) ? event.event_data.res.msg : '', + item: (event.event_data && event.event_data.res) ? event.event_data.res.item : '' }); break; @@ -106,7 +107,8 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge id: event.id, created: event.created, modified: event.modified, - message: ( (event.event_data && event.event_data.res) ? event.event_data.res.msg : '' ) + message: (event.event_data && event.event_data.res) ? event.event_data.res.msg : '', + item: (event.event_data && event.event_data.res) ? event.event_data.res.item : '' }); break; @@ -121,7 +123,8 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge id: event.id, created: event.created, modified: event.modified, - message: (event.event_data && event.event_data.res) ? event.event_data.res.msg : '' + message: (event.event_data && event.event_data.res) ? event.event_data.res.msg : '', + item: (event.event_data && event.event_data.res) ? event.event_data.res.item : '' }); break; @@ -146,7 +149,8 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge id: event.id, created: event.created, modified: event.modified, - message: (event.event_data && event.event_data.res) ? event.event_data.res.msg : '' + message: (event.event_data && event.event_data.res) ? event.event_data.res.msg : '', + item: (event.event_data && event.event_data.res) ? event.event_data.res.item : '' }); } }; @@ -458,7 +462,8 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge task_id = params.task_id, modified = params.modified, created = params.created, - msg = params.message; + msg = params.message, + item = params.item; scope.host_summary.ok += (status === 'successful') ? 1 : 0; scope.host_summary.changed += (status === 'changed') ? 1 : 0; @@ -504,7 +509,8 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge status: status, name: name, created: created, - message: msg + message: msg, + item: item }); }; }]) @@ -520,6 +526,7 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge created = params.created, name = params.name, msg = params.message, + item = params.item, status_text = '', task; @@ -540,24 +547,32 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge status_text = "Skipped"; } - scope.jobData.plays[scope.activePlay].tasks[task_id].hostResults[event_id] = { - id: event_id, - status: status, - status_text: status_text, - host_id: host_id, - task_id: task_id, - name: name, - created: created, - msg: msg - }; - - // increment the unreachable count on the play - if (status === 'unreachable' && scope.jobData.plays[scope.activePlay]) { - scope.jobData.plays[scope.activePlay].unreachableCount++; + if (typeof item === "object") { + item = JSON.stringify(item); } - // update the task status bar - if (scope.jobData.plays[scope.activePlay].tasks[task_id] !== undefined) { + if (scope.jobData.plays[scope.activePlay].tasks[task_id].hostResults[event_id]) { + // host already exists. do nothing. + } + else { + scope.jobData.plays[scope.activePlay].tasks[task_id].hostResults[event_id] = { + id: event_id, + status: status, + status_text: status_text, + host_id: host_id, + task_id: task_id, + name: name, + created: created, + msg: msg, + item: item + }; + + // increment the unreachable count on the play + if (status === 'unreachable' && scope.jobData.plays[scope.activePlay]) { + scope.jobData.plays[scope.activePlay].unreachableCount++; + } + + // update the task status bar task = scope.jobData.plays[scope.activePlay].tasks[task_id]; if (task_id === scope.jobData.plays[scope.activePlay].firstTask) { @@ -883,7 +898,7 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge Rest.get() .success(function(data) { data.results.forEach(function(event) { - var status, status_text; + var status, status_text, item; if (event.event === "runner_on_skipped") { status = 'skipped'; } @@ -909,6 +924,15 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge case "skipped": status_text = "Skipped"; } + + if (event.event_data && event.event_data.res) { + item = event.event_data.res.item; + if (typeof item === "object") { + item = JSON.stringify(item); + item = item.replace(/\"/g,'').replace(/:/g,': ').replace(/,/g,', '); + } + } + if (event.event !== "runner_on_no_hosts") { scope.hostResults.push({ id: event.id, @@ -918,7 +942,8 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge task_id: event.parent, name: event.event_data.host, created: event.created, - msg: ( (event.event_data && event.event_data.res) ? event.event_data.res.msg : '' ) + msg: (event.event_data && event.event_data.res) ? event.event_data.res.msg : '', + item: item }); } }); diff --git a/awx/ui/static/less/job-details.less b/awx/ui/static/less/job-details.less index a20e6afd6b..422602924a 100644 --- a/awx/ui/static/less/job-details.less +++ b/awx/ui/static/less/job-details.less @@ -411,13 +411,20 @@ position: relative; top: 0; left: 0; + #hosts-table-header table { + table-layout: fixed; + } #hosts-table-detail { - padding: 3px 0 3px 5px; height: 150px; background-color: @white; - .col-lg-1, .col-md-1, .col-sm-1, .col-xs-1 { - width: 3%; - } + } + #hosts-table-detail table { + table-layout: fixed; + } + #hosts-table-detail td { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } } diff --git a/awx/ui/static/partials/job_detail.html b/awx/ui/static/partials/job_detail.html index 73814c452f..05cd69c0b4 100644 --- a/awx/ui/static/partials/job_detail.html +++ b/awx/ui/static/partials/job_detail.html @@ -200,8 +200,8 @@
-
Hosts
-
+
Host Events
+
@@ -225,17 +225,32 @@
+
+ + + + + + + + + + +
StatusHostItemMessage
+
+
- - - + + + + - +
{{ result.name }}{{ result.msg }}{{ result.name }}{{ result.item }}{{ result.msg }}
No matching hostsNo matching hosts