From cb83069c67df96066aa6552aa1d694495211d98e Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Wed, 14 Dec 2016 15:03:20 -0500 Subject: [PATCH 1/6] fixed on reload job status' --- awx/ui/client/src/job-results/job-results.controller.js | 8 ++++++-- awx/ui/client/src/job-results/job-results.partial.html | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/awx/ui/client/src/job-results/job-results.controller.js b/awx/ui/client/src/job-results/job-results.controller.js index b2f83ede02..42f8d61425 100644 --- a/awx/ui/client/src/job-results/job-results.controller.js +++ b/awx/ui/client/src/job-results/job-results.controller.js @@ -1,4 +1,9 @@ export default ['jobData', 'jobDataOptions', 'jobLabels', 'jobFinished', 'count', '$scope', 'ParseTypeChange', 'ParseVariableString', 'jobResultsService', 'eventQueue', '$compile', '$log', 'Dataset', '$q', 'Rest', '$state', 'QuerySet', function(jobData, jobDataOptions, jobLabels, jobFinished, count, $scope, ParseTypeChange, ParseVariableString, jobResultsService, eventQueue, $compile, $log, Dataset, $q, Rest, $state, QuerySet) { + // if the job_status hasn't been set by the websocket, set it now + if (!$scope.job_status) { + $scope.job_status = jobData.status; + } + // used for tag search $scope.job_event_dataset = Dataset.data; @@ -111,7 +116,6 @@ export default ['jobData', 'jobDataOptions', 'jobLabels', 'jobFinished', 'count' $scope.relaunchJob = function() { jobResultsService.relaunchJob($scope); - $state.reload(); }; $scope.lessLabels = false; @@ -417,7 +421,7 @@ export default ['jobData', 'jobDataOptions', 'jobLabels', 'jobFinished', 'count' $scope.$on(`ws-jobs`, function(e, data) { if (parseInt(data.unified_job_id, 10) === parseInt($scope.job.id,10)) { - $scope.job.status = data.status; + $scope.job_status = data.status; } if (parseInt(data.project_id, 10) === parseInt($scope.job.project,10)) { diff --git a/awx/ui/client/src/job-results/job-results.partial.html b/awx/ui/client/src/job-results/job-results.partial.html index b12c7af487..77204b8d73 100644 --- a/awx/ui/client/src/job-results/job-results.partial.html +++ b/awx/ui/client/src/job-results/job-results.partial.html @@ -490,7 +490,7 @@
+ fa icon-job-{{ job_status }}"> {{ job.name }}
From 1a9f304b7731d4a8967ba132a86a1144c8d83976 Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Wed, 14 Dec 2016 15:05:14 -0500 Subject: [PATCH 2/6] fix extra vars labels --- awx/ui/client/src/partials/logviewer.html | 2 +- .../management-jobs/standard-out-management-jobs.partial.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/awx/ui/client/src/partials/logviewer.html b/awx/ui/client/src/partials/logviewer.html index ff6288d2db..59fe6ca045 100644 --- a/awx/ui/client/src/partials/logviewer.html +++ b/awx/ui/client/src/partials/logviewer.html @@ -5,7 +5,7 @@
  • Standard Out
  • Traceback
  • Options
  • -
  • Extra Vars
  • +
  • Extra Variables
  • Source Vars
  • diff --git a/awx/ui/client/src/standard-out/management-jobs/standard-out-management-jobs.partial.html b/awx/ui/client/src/standard-out/management-jobs/standard-out-management-jobs.partial.html index efb18d1b48..680c004f4d 100644 --- a/awx/ui/client/src/standard-out/management-jobs/standard-out-management-jobs.partial.html +++ b/awx/ui/client/src/standard-out/management-jobs/standard-out-management-jobs.partial.html @@ -56,7 +56,7 @@
    -
    EXTRA VARS
    +
    EXTRA VARIABLES
    From 0c7421460c126b2e7893e09bd9d36e054b1125a8 Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Wed, 14 Dec 2016 15:05:26 -0500 Subject: [PATCH 3/6] fix padding after search tags --- awx/ui/client/src/shared/smart-search/smart-search.block.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/awx/ui/client/src/shared/smart-search/smart-search.block.less b/awx/ui/client/src/shared/smart-search/smart-search.block.less index 23afbc7791..0b22331d5a 100644 --- a/awx/ui/client/src/shared/smart-search/smart-search.block.less +++ b/awx/ui/client/src/shared/smart-search/smart-search.block.less @@ -100,7 +100,7 @@ font-size: 12px; color: @default-interface-txt; background-color: @default-bg; - margin-right: 5px; + margin-right: 10px; max-width: 100%; white-space: nowrap; text-overflow: ellipsis; @@ -115,7 +115,7 @@ max-width: ~"calc(100% - 23px)"; background-color: @default-link; color: @default-bg; - margin-right: 5px; + margin-right: 10px; } .SmartSearch-deleteContainer { From 85264cb01adefc87c61866c1b89af8d8ef7911b5 Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Wed, 14 Dec 2016 15:25:34 -0500 Subject: [PATCH 4/6] fix line anchoring of expand and collapse all --- .../job-results-stdout.directive.js | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.directive.js b/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.directive.js index 0d1674b267..77c87c74da 100644 --- a/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.directive.js +++ b/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.directive.js @@ -90,23 +90,14 @@ export default [ 'templateUrl', '$timeout', '$location', '$anchorScroll', var visItem, parentItem; - var containerHeight = $container.height(); - var containerTop = $container.position().top; - var containerNetHeight = containerHeight + containerTop; - // iterate through each line of standard out - $container.find('.JobResultsStdOut-aLineOfStdOut') + $container.find('.JobResultsStdOut-aLineOfStdOut:visible') .each( function () { var $this = $(this); - var lineHeight = $this.height(); - var lineTop = $this.position().top; - var lineNetHeight = lineHeight + lineTop; - // check to see if the line is the first visible // line in the viewport... - if (lineNetHeight > containerTop && - lineTop < containerNetHeight) { + if ($this.position().top >= 0) { // ...if it is, return the line number // for this line From a700364c8d81b5d5d1e82df69f86227302c8fb12 Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Wed, 14 Dec 2016 16:06:30 -0500 Subject: [PATCH 5/6] fix job status ui unit test --- awx/ui/tests/spec/job-results/job-results.controller-test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/awx/ui/tests/spec/job-results/job-results.controller-test.js b/awx/ui/tests/spec/job-results/job-results.controller-test.js index 1def7d4e94..e978e12449 100644 --- a/awx/ui/tests/spec/job-results/job-results.controller-test.js +++ b/awx/ui/tests/spec/job-results/job-results.controller-test.js @@ -391,7 +391,7 @@ describe('Controller: jobResultsController', () => { status: 'finished' }; $rScope.$broadcast('ws-jobs', eventPayload); - expect($scope.job.status).toBe(eventPayload.status); + expect($scope.job_status).toBe(eventPayload.status); }); }); From bd5885ec6bbe6532c67e13b69fd72c6cb82b7baa Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Fri, 16 Dec 2016 12:39:49 -0500 Subject: [PATCH 6/6] actually fix relaunch status value issue --- .../src/job-results/job-results.controller.js | 38 +++++++++++++++---- .../src/job-results/job-results.partial.html | 3 +- .../src/job-results/job-results.route.js | 4 +- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/awx/ui/client/src/job-results/job-results.controller.js b/awx/ui/client/src/job-results/job-results.controller.js index e7a6529d69..a11e7cf7be 100644 --- a/awx/ui/client/src/job-results/job-results.controller.js +++ b/awx/ui/client/src/job-results/job-results.controller.js @@ -1,8 +1,4 @@ -export default ['jobData', 'jobDataOptions', 'jobLabels', 'jobFinished', 'count', '$scope', 'ParseTypeChange', 'ParseVariableString', 'jobResultsService', 'eventQueue', '$compile', '$log', 'Dataset', '$q', 'Rest', '$state', 'QuerySet', function(jobData, jobDataOptions, jobLabels, jobFinished, count, $scope, ParseTypeChange, ParseVariableString, jobResultsService, eventQueue, $compile, $log, Dataset, $q, Rest, $state, QuerySet) { - // if the job_status hasn't been set by the websocket, set it now - if (!$scope.job_status) { - $scope.job_status = jobData.status; - } +export default ['jobData', 'jobDataOptions', 'jobLabels', 'jobFinished', 'count', '$scope', 'ParseTypeChange', 'ParseVariableString', 'jobResultsService', 'eventQueue', '$compile', '$log', 'Dataset', '$q', 'Rest', '$state', 'QuerySet', '$rootScope', function(jobData, jobDataOptions, jobLabels, jobFinished, count, $scope, ParseTypeChange, ParseVariableString, jobResultsService, eventQueue, $compile, $log, Dataset, $q, Rest, $state, QuerySet, $rootScope) { // used for tag search $scope.job_event_dataset = Dataset.data; @@ -52,7 +48,6 @@ export default ['jobData', 'jobDataOptions', 'jobLabels', 'jobFinished', 'count' } }; - $scope.status_label = getTowerLabel('status'); $scope.type_label = getTowerLabel('job_type'); $scope.verbosity_label = getTowerLabel('verbosity'); }; @@ -68,6 +63,27 @@ export default ['jobData', 'jobDataOptions', 'jobLabels', 'jobFinished', 'count' $scope.labels = jobLabels; $scope.jobFinished = jobFinished; + // update label in left pane and tooltip in right pane when the job_status + // changes + $scope.$watch('job_status', function(status) { + if (status) { + $scope.status_label = $scope.jobOptions.status.choices + .filter(val => val[0] === status) + .map(val => val[1])[0]; + $scope.status_tooltip = "Job " + $scope.status_label; + } + }); + + // update the job_status value. Use the cached rootScope value if there + // is one. This is a workaround when the rest call for the jobData is + // made before some socket events come in for the job status + if ($rootScope['lastSocketStatus' + jobData.id]) { + $scope.job_status = $rootScope['lastSocketStatus' + jobData.id]; + delete $rootScope['lastSocketStatus' + jobData.id]; + } else { + $scope.job_status = jobData.status; + } + // turn related api browser routes into tower routes getTowerLinks(); @@ -424,13 +440,19 @@ export default ['jobData', 'jobDataOptions', 'jobLabels', 'jobFinished', 'count' $scope.$on(`ws-jobs`, function(e, data) { if (parseInt(data.unified_job_id, 10) === parseInt($scope.job.id,10)) { + // controller is defined, so set the job_status $scope.job_status = data.status; - } - if (parseInt(data.project_id, 10) === + } else if (parseInt(data.project_id, 10) === parseInt($scope.job.project,10)) { + // this is a project status update message, so set the + // project status in the left pane $scope.project_status = data.status; $scope.project_update_link = `/#/scm_update/${data .unified_job_id}`; + } else { + // controller was previously defined, but is not yet defined + // for this job. cache the socket status on root scope + $rootScope['lastSocketStatus' + data.unified_job_id] = data.status; } }); }]; diff --git a/awx/ui/client/src/job-results/job-results.partial.html b/awx/ui/client/src/job-results/job-results.partial.html index b5dc7734b2..331e3f85b9 100644 --- a/awx/ui/client/src/job-results/job-results.partial.html +++ b/awx/ui/client/src/job-results/job-results.partial.html @@ -70,7 +70,7 @@
    + icon-job-{{ job_status }}"> {{ status_label }}
    @@ -415,6 +415,7 @@ diff --git a/awx/ui/client/src/job-results/job-results.route.js b/awx/ui/client/src/job-results/job-results.route.js index 4545071816..161f8db587 100644 --- a/awx/ui/client/src/job-results/job-results.route.js +++ b/awx/ui/client/src/job-results/job-results.route.js @@ -35,8 +35,9 @@ export default { resolve: { // the GET for the particular job jobData: ['Rest', 'GetBasePath', '$stateParams', '$q', '$state', 'Alert', function(Rest, GetBasePath, $stateParams, $q, $state, Alert) { - Rest.setUrl(GetBasePath('jobs') + $stateParams.id); var val = $q.defer(); + + Rest.setUrl(GetBasePath('jobs') + $stateParams.id); Rest.get() .then(function(data) { val.resolve(data.data); @@ -51,6 +52,7 @@ export default { $state.go('jobs'); }); + return val.promise; }], Dataset: ['QuerySet', '$stateParams', 'jobData',