Job detail page refactor

Latest DOM update changes and fixes
This commit is contained in:
Chris Houseknecht
2014-06-19 18:16:54 -04:00
parent e29a158bec
commit 44da2f5cf8
2 changed files with 48 additions and 30 deletions

View File

@@ -82,6 +82,8 @@ function JobDetailController ($rootScope, $scope, $compile, $routeParams, $log,
data.status === 'error' || data.status === 'successful') { data.status === 'error' || data.status === 'successful') {
$log.debug('Job completed!'); $log.debug('Job completed!');
$log.debug(scope.jobData); $log.debug(scope.jobData);
window.clearInterval($rootScope.jobDetailInterval);
UpdateDOM({ scope: scope });
} }
} }
}); });
@@ -94,6 +96,7 @@ function JobDetailController ($rootScope, $scope, $compile, $routeParams, $log,
var url; var url;
Wait('stop'); Wait('stop');
if (JobIsFinished(scope)) { if (JobIsFinished(scope)) {
UpdateDOM({ scope: scope });
url = scope.job.related.job_events + '?event=playbook_on_stats'; url = scope.job.related.job_events + '?event=playbook_on_stats';
Rest.setUrl(url); Rest.setUrl(url);
Rest.get() Rest.get()
@@ -207,20 +210,19 @@ function JobDetailController ($rootScope, $scope, $compile, $routeParams, $log,
var play = scope.jobData.plays[scope.activePlay], url; var play = scope.jobData.plays[scope.activePlay], url;
url = scope.job.url + 'job_tasks/?event_id=' + play.id; url = scope.job.url + 'job_tasks/?event_id=' + play.id;
url += '&page_size=' + scope.tasksMaxRows + '&order_by=-id'; url += '&page_size=' + scope.tasksMaxRows + '&order_by=id';
Rest.setUrl(url); Rest.setUrl(url);
Rest.get() Rest.get()
.success(function(data) { .success(function(data) {
var idx, end, elapsed, event;
if (data.results.length > 0) { if (data.results.length > 0) {
lastEventId = data.results[0].id; lastEventId = data.results[data.results.length - 1].id;
scope.activeTask = data.results[0].id; scope.activeTask = data.results[data.results.length - 1].id;
} }
for (idx=data.results.length - 1; idx >= 0; idx--) { data.results.forEach(function(event, idx) {
event = data.results[idx]; var end, elapsed;
if (play.firstTask === null) { if (!play.firstTask) {
play.firstTask = event.id; play.firstTask = event.id;
play.hostCount = (event.host_count) ? event.host_count : 0; play.hostCount = (event.host_count) ? event.host_count : 0;
} }
@@ -266,7 +268,7 @@ function JobDetailController ($rootScope, $scope, $compile, $routeParams, $log,
scope: scope, scope: scope,
task_id: event.id task_id: event.id
}); });
} });
scope.jobData.plays[scope.activePlay].tasks[scope.activeTask].taskActiveClass = 'active'; scope.jobData.plays[scope.activePlay].tasks[scope.activeTask].taskActiveClass = 'active';
scope.$emit('LoadHosts'); scope.$emit('LoadHosts');
}) })
@@ -295,17 +297,18 @@ function JobDetailController ($rootScope, $scope, $compile, $routeParams, $log,
scope.jobData.plays = {}; scope.jobData.plays = {};
var url = scope.job.url + 'job_plays/?order_by=id'; var url = scope.job.url + 'job_plays/?order_by=id';
url += '&page_size=' + scope.playsMaxRows + '&order_by=-id'; url += '&page_size=' + scope.playsMaxRows + '&order_by=id';
Rest.setUrl(url); Rest.setUrl(url);
Rest.get() Rest.get()
.success( function(data) { .success( function(data) {
var idx, event, status, start, end, elapsed; if (data.results.length > 0) {
if (data.length > 0) { lastEventId = data.results[data.results.length - 1].id;
scope.activePlay = data[0].id; scope.activePlay = data.results[data.results.length - 1].id;
} }
for (idx=data.length - 1; idx >= 0; idx--) { data.results.forEach(function(event, idx) {
event = data[idx]; var status, start, end, elapsed;
status = (event.failed) ? 'failed' : (event.changed) ? 'changed' : 'successful'; status = (event.failed) ? 'failed' : (event.changed) ? 'changed' : 'successful';
start = event.started; start = event.started;
@@ -336,6 +339,7 @@ function JobDetailController ($rootScope, $scope, $compile, $routeParams, $log,
elapsed: elapsed, elapsed: elapsed,
hostCount: 0, hostCount: 0,
fistTask: null, fistTask: null,
playActiveClass: '',
tasks: {} tasks: {}
}; };
@@ -345,6 +349,9 @@ function JobDetailController ($rootScope, $scope, $compile, $routeParams, $log,
scope.host_summary.failed += (data.failed_count) ? data.failed_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.total = scope.host_summary.ok + scope.host_summary.changed +
scope.host_summary.unreachable + scope.host_summary.failed; scope.host_summary.unreachable + scope.host_summary.failed;
});
if (scope.activePlay) {
scope.jobData.plays[scope.activePlay].playActiveClass = 'active';
} }
scope.$emit('LoadTasks', events_url); scope.$emit('LoadTasks', events_url);
//scope.$emit('FixPlaysScroll'); //scope.$emit('FixPlaysScroll');

View File

@@ -95,8 +95,10 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge
}; };
if (scope.activePlay) { if (scope.activePlay) {
scope.jobData.plays[scope.activePlay].tasks = {}; scope.jobData.plays[scope.activePlay].tasks = {};
scope.jobData.plays[scope.activePlay].playActiveClass = '';
} }
scope.activePlay = event.id; scope.activePlay = event.id;
scope.jobData.plays[scope.activePlay].playActiveClass = 'active';
break; break;
case 'playbook_on_setup': case 'playbook_on_setup':
@@ -940,7 +942,7 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge
idx = 0, idx = 0,
result = [], result = [],
keys = Object.keys(scope.jobData.plays); keys = Object.keys(scope.jobData.plays);
keys.reverse(); keys.sort();
while (idx < keys.length && idx < scope.playsMaxRows) { while (idx < keys.length && idx < scope.playsMaxRows) {
result.push(scope.jobData.plays[keys[idx]]); result.push(scope.jobData.plays[keys[idx]]);
idx++; idx++;
@@ -954,11 +956,14 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge
var scope = params.scope, var scope = params.scope,
result = [], result = [],
idx = 0, idx = 0,
keys;
if (scope.activePlay) {
keys = Object.keys(scope.jobData.plays[scope.activePlay].tasks); keys = Object.keys(scope.jobData.plays[scope.activePlay].tasks);
keys.reverse(); keys.sort();
while (idx < keys.length && idx < scope.tasksMaxRows) { while (idx < keys.length && idx < scope.tasksMaxRows) {
result.push(scope.jobData.plays[scope.activePlay].tasks[keys[idx]]); result.push(scope.jobData.plays[scope.activePlay].tasks[keys[idx]]);
idx++; idx++;
}
} }
scope.tasks = result; scope.tasks = result;
}; };
@@ -969,20 +974,26 @@ function($rootScope, $log, UpdatePlayStatus, UpdateHostStatus, AddHostResult, Ge
var scope = params.scope, var scope = params.scope,
result = [], result = [],
idx = 0, idx = 0,
hostResults = scope.jobData.plays[scope.activePlay].tasks[scope.activeTask].hostResults, hostResults,
keys;
if (scope.activePlay && scope.activeTask) {
hostResults = scope.jobData.plays[scope.activePlay].tasks[scope.activeTask].hostResults;
keys = Object.keys(hostResults); keys = Object.keys(hostResults);
keys.sort(function(a,b) { keys.sort(function(a,b) {
if (hostResults[a].name < hostResults[b].name) if (hostResults[a].name > hostResults[b].name)
return 1; return 1;
if (hostResults[a].name > hostResults[b].name) if (hostResults[a].name < hostResults[b].name)
return -1; return -1;
// a must be equal to b // a must be equal to b
return 0; return 0;
}); });
while (idx < keys.length && idx < scope.hostResultsMaxRows) { while (idx < keys.length && idx < scope.hostResultsMaxRows) {
result.push(scope.jobData.plays[scope.activePlay].tasks[scope.activeTask].hostsResults[keys[idx]]); result.push(scope.jobData.plays[scope.activePlay].tasks[scope.activeTask].hostResults[keys[idx]]);
idx++;
}
} }
scope.hostResults = result; scope.hostResults = result;
}; };