Job detail page refactor

Re-enabling a count of the possible hosts that should report status on each task. As live events happen increment a count stored on the play. Only increment when hosts are reporting for the first task of the play, and only increment if the host status is in: successful, changed, skipped or failed. Added the total to the plays list as 'Reporting Hosts'.
This commit is contained in:
Chris Houseknecht 2014-06-25 16:24:30 -04:00
parent 8c502478a0
commit 3516ad4b98
4 changed files with 38 additions and 25 deletions

View File

@ -308,7 +308,7 @@ function JobDetailController ($rootScope, $scope, $compile, $routeParams, $log,
scope.activePlay = data.results[0].id;
}
data.results.forEach(function(event, idx) {
var status, start, end, elapsed;
var status, start, end, elapsed, ok, changed, failed, skipped;
status = (event.failed) ? 'failed' : (event.changed) ? 'changed' : 'successful';
start = event.started;
@ -344,12 +344,19 @@ function JobDetailController ($rootScope, $scope, $compile, $routeParams, $log,
tasks: {}
};
scope.host_summary.ok += (data.ok_count) ? data.ok_count : 0;
scope.host_summary.changed += (data.changed_count) ? data.changed_count : 0;
ok = (data.ok_count) ? data.ok_count : 0;
changed = (data.changed_count) ? data.changed_count : 0;
failed = (data.failed_count) ? data.failed_count : 0;
skipped = (data.skipped_count) ? data.skipped_count : 0;
scope.jobData.plays[event.id].hostCount = ok + changed + failed + skipped;
scope.host_summary.ok += ok;
scope.host_summary.changed += changed;
scope.host_summary.unreachable += (data.unreachable_count) ? data.unreachable_count : 0;
scope.host_summary.failed += (data.failed_count) ? data.failed_count : 0;
scope.host_summary.total = scope.host_summary.ok + scope.host_summary.changed +
scope.host_summary.unreachable + scope.host_summary.failed;
scope.host_summary.failed += failed;
scope.host_summary.total = scope.host_summary.ok + scope.host_summary.changed + scope.host_summary.unreachable +
scope.host_summary.failed;
});
if (scope.activePlay) {
scope.jobData.plays[scope.activePlay].playActiveClass = 'active';
@ -523,6 +530,9 @@ function JobDetailController ($rootScope, $scope, $compile, $routeParams, $log,
setTimeout(function() { $('#job-summary-container .job_well').height($('#job-detail-container').height() - 18); }, 500);
$('#job-summary-container').show();
}
scope.lessStatus = true; // close the view more status option
// Detail table height adjusting. First, put page height back to 'normal'.
$('#plays-table-detail').height(80);
$('#plays-table-detail').mCustomScrollbar("update");

View File

@ -239,7 +239,7 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge
hostResults: {}
};
if (!scope.jobData.plays[scope.activePlay].firstTask) {
if (scope.jobData.plays[scope.activePlay].firstTask === undefined || scope.jobData.plays[scope.activePlay].firstTask === null) {
scope.jobData.plays[scope.activePlay].firstTask = event.id;
}
@ -458,10 +458,10 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge
if (scope.jobData.plays[scope.activePlay].tasks[task_id] !== undefined) {
task = scope.jobData.plays[scope.activePlay].tasks[task_id];
//if (task_id === scope.jobData.plays[scope.activePlay].firstTask) {
// scope.jobData.plays[scope.activePlay].hostCount++;
// task.hostCount++;
//}
if (task_id === scope.jobData.plays[scope.activePlay].firstTask && status !== 'unreachable') {
scope.jobData.plays[scope.activePlay].hostCount++;
task.hostCount++;
}
task.reportedHosts += 1;
task.failedCount += (status === 'failed' || status === 'unreachable') ? 1 : 0;
@ -481,7 +481,7 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge
diff;
//task = scope.jobData.plays[scope.activePlay].tasks[task_id];
task.hostCount = task.failedCount + task.changedCount + task.skippedCount + task.successfulCount;
//task.hostCount = task.failedCount + task.changedCount + task.skippedCount + task.successfulCount;
task.failedPct = (task.hostCount > 0) ? Math.ceil((100 * (task.failedCount / task.hostCount))) : 0;
task.changedPct = (task.hostCount > 0) ? Math.ceil((100 * (task.changedCount / task.hostCount))) : 0;
task.skippedPct = (task.hostCount > 0) ? Math.ceil((100 * (task.skippedCount / task.hostCount))) : 0;

View File

@ -60,6 +60,7 @@ body {
#account-submenu {
margin-right: 5px;
}
@media (max-width: 1075px) {
#main-menu-container {

View File

@ -23,15 +23,15 @@
<div class="form-horizontal" role="form" id="job-status-form">
<div class="form-group">
<label class="col-md-2 col-sm-2 col-xs-3 control-label">Status</label>
<div class="col-md-10 col-sm-10 col-xs-9">
<label class="col-lg-1 col-md-2 col-sm-2 col-xs-3 control-label">Status</label>
<div class="col-lg-11 col-md-10 col-sm-10 col-xs-9">
<i class="fa icon-job-{{ job_status.status }}"></i> {{ job_status.status }} {{ job_status.explanation }}
</div>
</div>
<div class="form-group">
<label class="col-md-2 col-sm-2 col-xs-3 control-label">Started</label>
<div class="col-md-10 col-sm-10 col-xs-9">
<label class="col-lg-1 col-md-2 col-sm-2 col-xs-3 control-label">Started</label>
<div class="col-lg-11 col-md-10 col-sm-10 col-xs-9">
<div ng-show="job_status.started" id="started-time">{{ job_status.started | date:'MM/dd/yy HH:mm:ss' }}</div>
<div ng-show="job_status.finished" id="finished-time">Finished &nbsp;{{ job_status.finished | date:'MM/dd/yy HH:mm:ss' }}</div>
<div ng-show="job_status.finished" id="elapsed-time">Elapsed &nbsp;{{ job_status.elapsed }}</div>
@ -39,22 +39,22 @@
</div>
<div class="form-group" ng-show="!lessStatus">
<label class="col-md-2 col-sm-2 col-xs-3 control-label">Template</label>
<div class="col-md-10 col-sm-10 col-xs-9">
<label class="col-lg-1 col-md-2 col-sm-2 col-xs-3 control-label">Template</label>
<div class="col-lg-11 col-md-10 col-sm-10 col-xs-9">
<a href="{{ job_template_url }}" aw-tool-tip="Edit the job template" data-placement="top">{{ job_template_name }}</a>
</div>
</div>
<div class="form-group" ng-show="!lessStatus">
<label class="col-md-2 col-sm-2 col-xs-3 control-label">Project</label>
<div class="col-md-10 col-sm-10 col-xs-9">
<label class="col-lg-1 col-md-2 col-sm-2 col-xs-3 control-label">Project</label>
<div class="col-lg-11 col-md-10 col-sm-10 col-xs-9">
<a href="{{ project_url }}" aw-tool-tip="Edit the project" data-placement="top">{{ project_name }}</a>
</div>
</div>
<div class="form-group" ng-show="!lessStatus">
<label class="col-md-2 col-sm-2 col-xs-3 control-label">Inventory</label>
<div class="col-md-10 col-sm-10 col-xs-9">
<label class="col-lg-1 col-md-2 col-sm-2 col-xs-3 control-label">Inventory</label>
<div class="col-lg-11 col-md-10 col-sm-10 col-xs-9">
<a href="{{ inventory_url }}" aw-tool-tip="Edit the inventory" data-placement="top">{{ inventory_name }}</a>
</div>
</div>
@ -77,7 +77,8 @@
<div class="row">
<div class="col-lg-1 col-md-1 col-sm-2 hidden-xs">Started</div>
<div class="col-lg-1 col-md-1 hidden-sm hidden-xs">Elapsed</div>
<div class="col-lg-10 col-md-10 col-sm-10 col-xs-12">Name</div>
<div class="col-lg-8 col-md-8 col-sm-10 col-xs-12">Name</div>
<div class="col-lg-2 col-md-2 hidden-sm hidden-xs text-right">Reporting Hosts</div>
</div>
</div>
<div id="plays-table-detail" aw-custom-scroll class="table-detail">
@ -87,10 +88,11 @@
<div class="col-lg-1 col-md-1 hidden-sm hidden-xs" aw-tool-tip="Completed at {{ play.finished | date:'HH:mm:ss' }}"
data-placement="top">{{ play.elapsed }}
</div>
<div class="col-lg-10 col-md-10 col-sm-10 col-xs-12 status-column" aw-tool-tip="Event Id: {{ play.id }}<br />Status: {{ play.status_text }}"
data-placement="top">
<div class="col-lg-8 col-md-8 col-sm-10 col-xs-12 status-column"
aw-tool-tip="Event Id: {{ play.id }}<br />Status: {{ play.status }}" data-placement="top">
<i class="fa icon-job-{{ play.status }}"></i> {{ play.name }}</span>
</div>
<div class="col-lg-2 col-md-2 hidden-sm hidden-xs text-right">{{ play.hostCount }}</div>
</div>
<div class="row" ng-show="playList.length == 0">
<div class="col-lg-12">