diff --git a/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.block.less b/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.block.less
index 408e4cbb32..0f01da5b2e 100644
--- a/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.block.less
+++ b/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.block.less
@@ -162,6 +162,7 @@
.JobResultsStdOut-stdoutColumn {
padding-left: 20px;
+ padding-right: 20px;
padding-top: 2px;
padding-bottom: 2px;
color: @default-interface-txt;
@@ -171,6 +172,11 @@
width:100%;
}
+.JobResultsStdOut-stdoutColumn--tooMany {
+ font-weight: bold;
+ text-transform: uppercase;
+}
+
.JobResultsStdOut-stdoutColumn {
cursor: pointer;
}
diff --git a/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.partial.html b/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.partial.html
index 0ba992b146..87e65f54b4 100644
--- a/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.partial.html
+++ b/awx/ui/client/src/job-results/job-results-stdout/job-results-stdout.partial.html
@@ -31,6 +31,13 @@
+
+
+
+
+
The standard out based on the current filter is too large to display. Please use additional filters to view results.
+
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 aef8b2ae86..81ce5894bf 100644
--- a/awx/ui/client/src/job-results/job-results.controller.js
+++ b/awx/ui/client/src/job-results/job-results.controller.js
@@ -383,7 +383,11 @@ function(jobData, jobDataOptions, jobLabels, jobFinished, count, $scope, ParseTy
// making rest calls for next pages/etc. (you can see context is
// also passed into getEvents and processEvent and similar checks
// exist in these functions)
- if (context !== currentContext) {
+ //
+ // also, if the page doesn't contain results (i.e.: the response
+ // returns an error), don't process the page
+ if (context !== currentContext || events === undefined ||
+ events.results === undefined) {
return;
}
@@ -441,7 +445,16 @@ function(jobData, jobDataOptions, jobLabels, jobFinished, count, $scope, ParseTy
$( ".JobResultsStdOut-aLineOfStdOut.not_skeleton" ).remove();
$scope.hasSkeleton.promise.then(() => {
- processPage(val, context);
+ if (val.count > parseInt(val.maxEvents)) {
+ $(".header_task").hide();
+ $(".header_play").hide();
+ $scope.tooManyEvents = true;
+ } else {
+ $(".header_task").show();
+ $(".header_play").show();
+ $scope.tooManyEvents = false;
+ processPage(val, context);
+ }
});
}));
diff --git a/awx/ui/client/src/shared/smart-search/queryset.service.js b/awx/ui/client/src/shared/smart-search/queryset.service.js
index 359245bed4..0ffeb521ce 100644
--- a/awx/ui/client/src/shared/smart-search/queryset.service.js
+++ b/awx/ui/client/src/shared/smart-search/queryset.service.js
@@ -147,20 +147,33 @@ export default ['$q', 'Rest', 'ProcessErrors', '$rootScope', 'Wait', 'DjangoSear
Wait('start');
this.url = `${endpoint}${this.encodeQueryset(params)}`;
Rest.setUrl(this.url);
+
return Rest.get()
- .success(this.success.bind(this))
- .error(this.error.bind(this))
- .finally(Wait('stop'));
+ .then(function(response) {
+ Wait('stop');
+
+ if (response
+ .headers('X-UI-Max-Events') !== null) {
+ response.data.maxEvents = response.
+ headers('X-UI-Max-Events');
+ }
+
+ return response;
+ })
+ .catch(function(response) {
+ Wait('stop');
+
+ this.error(response.data, response.status);
+
+ return response;
+ }.bind(this));
},
error(data, status) {
ProcessErrors($rootScope, data, status, null, {
hdr: 'Error!',
msg: 'Call to ' + this.url + '. GET returned: ' + status
});
- },
- success(data) {
- return data;
- },
+ }
};
}
];