diff --git a/awx/ui/static/js/controllers/Jobs.js b/awx/ui/static/js/controllers/Jobs.js
index 121f9a2b73..2bb3f28d21 100644
--- a/awx/ui/static/js/controllers/Jobs.js
+++ b/awx/ui/static/js/controllers/Jobs.js
@@ -20,19 +20,20 @@ function JobsListController ($log, $scope, $compile, $routeParams, ClearScope, B
listCount = 0,
api_complete = false,
event_socket,
+ schedule_socket,
+ job_socket,
event_queue = [],
expecting = 0,
max_rows;
-
- event_socket = Socket({
+ job_socket = Socket({
scope: $scope,
endpoint: "jobs"
});
- event_socket.init();
+ job_socket.init();
- event_socket.on("status_changed", function(data) {
+ job_socket.on("status_changed", function(data) {
if (api_complete) {
processEvent(data);
}
@@ -41,6 +42,18 @@ function JobsListController ($log, $scope, $compile, $routeParams, ClearScope, B
}
});
+ schedule_socket = Socket({
+ scope: $scope,
+ endpoint: "schedules"
+ });
+
+ schedule_socket.init();
+ schedule_socket.on("status_change", function(data) {
+ if (api_complete) {
+ schedule_scope.search('schedule');
+ }
+ });
+
function processEvent(event) {
expecting = 0;
switch(event.status) {
diff --git a/awx/ui/static/js/controllers/Sockets.js b/awx/ui/static/js/controllers/Sockets.js
index 558defae2c..545db44ae4 100644
--- a/awx/ui/static/js/controllers/Sockets.js
+++ b/awx/ui/static/js/controllers/Sockets.js
@@ -15,18 +15,23 @@ function SocketsController ($scope, $compile, ClearScope, Socket) {
var test_scope = $scope.$new(),
jobs_scope = $scope.$new(),
job_events_scope = $scope.$new(),
+ schedules_scope = $scope.$new(),
test_socket = Socket({ scope: test_scope, endpoint: "test" }),
jobs_socket = Socket({ scope: jobs_scope, endpoint: "jobs" }),
+ schedules_socket = Socket({ scope: schedules_scope, endpoint: "schedules" }),
job_events_socket = Socket({ scope: job_events_scope, endpoint: "job_events" }),
e, html;
test_scope.messages = [];
jobs_scope.messages = [];
+ schedules_scope.messages = [];
job_events_scope.messages = [];
- html = "
Socket url: {{ socket_url }} Status: {{ socket_status }} {{ socket_reason }}
\n" +
- "\n" +
+ html = "
Socket url: {{ socket_url }} Status: {{ socket_status }} {{ socket_reason }}
\n" +
+ "
\n" +
"
Received Messages:
\n" +
+ "\n" +
+ "
\n" +
"
\n" +
"- {{ message }}
\n" +
"
\n" +
@@ -35,11 +40,18 @@ function SocketsController ($scope, $compile, ClearScope, Socket) {
e = angular.element(document.getElementById('test-container'));
e.append(html);
$compile(e)(test_scope);
+ e = angular.element(document.getElementById('schedules-container'));
+ e.append(html);
+ $compile(e)(schedules_scope);
e = angular.element(document.getElementById('jobs-container'));
e.append(html);
$compile(e)(jobs_scope);
- html = "
Socket url: {{ socket_url }} Status: {{ socket_status }} {{ socket_reason }}
\n" +
+ html = "
\n" +
+ "
\n" +
+ "
Socket url: {{ socket_url }} Status: {{ socket_status }} {{ socket_reason }}
\n" +
+ "
\n" +
+ "
\n" +
"
\n" +
- "
\n" +
- "
Subscribed to events for job: {{ jobs_list }}
\n" +
- "
Received Messages:
\n" +
+ "
\n" +
+ "
\n" +
+ "
" +
+ "
Subscribed to events for job: {{ jobs_list }}
\n" +
+ "
Received Messages:
\n" +
+ "
\n" +
+ "
\n" +
"
\n" +
"- {{ message }}
\n" +
"
\n" +
@@ -59,16 +75,26 @@ function SocketsController ($scope, $compile, ClearScope, Socket) {
e.append(html);
$compile(e)(job_events_scope);
+ schedules_socket.init();
test_socket.init();
jobs_socket.init();
job_events_socket.init();
+ schedules_scope.url = schedules_socket.getUrl();
+ test_scope.url = test_socket.getUrl();
+ jobs_scope.url = jobs_socket.getUrl();
+ job_events_scope.url = job_events_socket.getUrl();
+
test_scope.messages.push('Message Displayed Before Connection');
test_socket.on('test', function(data) {
test_scope.messages.push(data);
});
+ schedules_socket.on("status_changed", function(data) {
+ schedules_scope.messages.push(data);
+ });
+
jobs_socket.on("status_changed", function(data) {
jobs_scope.messages.push(data);
});
@@ -79,6 +105,10 @@ function SocketsController ($scope, $compile, ClearScope, Socket) {
job_events_scope.jobs_list.push(job_events_scope.job_id);
job_events_socket.on("job_events-" + job_events_scope.job_id, function(data) {
job_events_scope.messages.push(data);
+ setTimeout(function() {
+ $(document).scrollTop($(document).prop("scrollHeight"));
+ $('#event-message-container').scrollTop($('#event-message-container').prop("scrollHeight"));
+ }, 300);
});
};
}
diff --git a/awx/ui/static/js/forms/EventsViewer.js b/awx/ui/static/js/forms/EventsViewer.js
index c97eaf2362..f68fbf9eb5 100644
--- a/awx/ui/static/js/forms/EventsViewer.js
+++ b/awx/ui/static/js/forms/EventsViewer.js
@@ -8,6 +8,10 @@ angular.module('EventsViewerFormDefinition', [])
.value('EventsViewerForm', {
fields: {
+ host_name: {
+ label: 'Host',
+ section: 'Event'
+ },
status: {
label: 'Status',
section: 'Event'
@@ -20,10 +24,6 @@ angular.module('EventsViewerFormDefinition', [])
label: 'Created On',
section: 'Event'
},
- host_name: {
- label: 'Host',
- section: 'Event'
- },
role: {
label: 'Role',
section: 'Event'
diff --git a/awx/ui/static/js/helpers/EventViewer.js b/awx/ui/static/js/helpers/EventViewer.js
index a6487e427d..e05688af0d 100644
--- a/awx/ui/static/js/helpers/EventViewer.js
+++ b/awx/ui/static/js/helpers/EventViewer.js
@@ -226,10 +226,12 @@ angular.module('EventViewerHelper', ['ModalDialog', 'Utilities', 'EventsViewerFo
onOpen: function() {
$('#eventview-tabs a:first').tab('show');
$('#dialog-ok-button').focus();
- if (scope.events.length > 1 && current_event === 0) {
+ if (scope.events.length > 1 && current_event === 0 && !scope.prev_event_set) {
$('#events-prev-button').prop('disabled', true);
}
-
+ if ((current_event === scope.events.length - 1) && !scope.next_event_set) {
+ $('#events-next-button').prop('disabled', true);
+ }
if (scope.events.length > 1) {
setButtonMargin();
addSpinner();
diff --git a/awx/ui/static/less/ansible-ui.less b/awx/ui/static/less/ansible-ui.less
index 0a383f8ada..4c13754229 100644
--- a/awx/ui/static/less/ansible-ui.less
+++ b/awx/ui/static/less/ansible-ui.less
@@ -1636,6 +1636,34 @@ tr td button i {
}
+/* Socket testing page */
+#sockets {
+ .section-title {
+ font-weight: bold;
+ color: @blue;
+ margin-top: 30px;
+ }
+ #test-container .section-title {
+ margin-top: 20px;
+ }
+ .well {
+ padding: 9px;
+ }
+ .message-section {
+ height: 150px;
+ overflow: auto;
+ }
+ .events-section {
+ margin-top: 40px;
+ .section-title {
+ margin-top: 0;
+ }
+ }
+ #event-message-container {
+ height: 200px;
+ }
+}
+
/* Large desktop */
@media (min-width: 1200px) {
diff --git a/awx/ui/static/lib/ansible/Socket.js b/awx/ui/static/lib/ansible/Socket.js
index 40305a5599..02c6fc2393 100644
--- a/awx/ui/static/lib/ansible/Socket.js
+++ b/awx/ui/static/lib/ansible/Socket.js
@@ -160,6 +160,9 @@ angular.module('SocketIO', ['AuthService', 'Utilities'])
}
});
});
+ },
+ getUrl: function() {
+ return url;
}
};
};
diff --git a/awx/ui/static/partials/sockets.html b/awx/ui/static/partials/sockets.html
index 9be3d3425e..7a5de3bca1 100644
--- a/awx/ui/static/partials/sockets.html
+++ b/awx/ui/static/partials/sockets.html
@@ -2,6 +2,7 @@