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" + @@ -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" + "\n" + @@ -47,9 +59,13 @@ function SocketsController ($scope, $compile, ClearScope, Socket) { "
\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 @@
+