From e35566eddb0c1e383e437e95b228f7898e7a1c16 Mon Sep 17 00:00:00 2001 From: radhika Date: Thu, 15 May 2014 22:09:45 -0400 Subject: [PATCH] 2756: subscribe for event log messages on ajax:complete or ready. --- .../app/assets/javascripts/event_log.js | 34 ++++--------------- .../assets/javascripts/pipeline_instances.js | 9 +++++ .../_show_components.html.erb | 12 ++++++- .../_show_event_log.html.erb | 8 ----- 4 files changed, 26 insertions(+), 37 deletions(-) delete mode 100644 apps/workbench/app/views/pipeline_instances/_show_event_log.html.erb diff --git a/apps/workbench/app/assets/javascripts/event_log.js b/apps/workbench/app/assets/javascripts/event_log.js index 243f733619..61b4fdcda1 100644 --- a/apps/workbench/app/assets/javascripts/event_log.js +++ b/apps/workbench/app/assets/javascripts/event_log.js @@ -7,7 +7,7 @@ var event_log_disp; -function subscribeToEventLog (url, uuid, elementId) { +function subscribeToEventLog (elementId) { // if websockets are not supported by browser, do not attempt to subscribe for events websocketsSupported = ('WebSocket' in window); if (websocketsSupported == false) { @@ -18,27 +18,21 @@ function subscribeToEventLog (url, uuid, elementId) { event_log_disp = $(window).data("arv-websocket"); if (event_log_disp == null) { // create the event log dispatcher - event_log_disp = new WebSocket(url); + event_log_disp = new WebSocket($(window).data("websocket-url")); event_log_disp.onopen = function(event) { onEventLogDispatcherOpen(event) }; event_log_disp.onmessage = function(event) { onEventLogDispatcherMessage(event) }; // store websocket in window to allow reuse when multiple divs subscribe for events $(window).data("arv-websocket", event_log_disp); - - // detach elementId when user leaves this window - window.onbeforeunload = function (event) {detachElement(event, elementId);} } // Add the elementId to listener map - event_log_listener_map = JSON.parse(sessionStorage.getItem("event_log_listener_map")); + event_log_listener_map = $(window).data("event_log_listener_map"); if (event_log_listener_map == null) event_log_listener_map = {}; - delete event_log_listener_map[elementId]; - event_log_listener_map[elementId] = uuid; - - sessionStorage.removeItem("event_log_listener_map"); - sessionStorage.setItem("event_log_listener_map", JSON.stringify(event_log_listener_map)); + event_log_listener_map[elementId] = $(window).data("listening-uuid"); + $(window).data("event_log_listener_map", event_log_listener_map); } function onEventLogDispatcherOpen(event) { @@ -48,7 +42,7 @@ function onEventLogDispatcherOpen(event) { // Check each of the entries in the listener map. If any are waiting for // an event of this event's object, append to their registered element function onEventLogDispatcherMessage(event) { - event_log_listener_map = JSON.parse(sessionStorage.getItem("event_log_listener_map")); + event_log_listener_map = $(window).data("event_log_listener_map"); for (var key in event_log_listener_map) { value = event_log_listener_map[key]; @@ -69,19 +63,3 @@ function onEventLogDispatcherMessage(event) { } } } - -/** - * When leaving this window, remove elementId from map - */ -function detachElement(event, elementId) { - event_log_listener_map = JSON.parse(sessionStorage.getItem("event_log_listener_map")); - if (event_log_listener_map !== null) { - delete event_log_listener_map[elementId]; - } - - // According to documenation, browser will close the connection when page is left. - // However, there are suggestions of inconsistency; so to be safe, close explicitly. - if (event_log_disp !== null) { - event_log_disp.close(); - } -} diff --git a/apps/workbench/app/assets/javascripts/pipeline_instances.js b/apps/workbench/app/assets/javascripts/pipeline_instances.js index a9ca4df2a5..40b2762db8 100644 --- a/apps/workbench/app/assets/javascripts/pipeline_instances.js +++ b/apps/workbench/app/assets/javascripts/pipeline_instances.js @@ -42,4 +42,13 @@ run_pipeline_button_state(); } ); + $(document).on('ajax:complete ready', function() { + var a = $('.event-listener'); + if (a.length > 0) { + $('.event-listener').each(function() { + subscribeToEventLog(this.id); + }); + } + }); + })(); diff --git a/apps/workbench/app/views/pipeline_instances/_show_components.html.erb b/apps/workbench/app/views/pipeline_instances/_show_components.html.erb index b3b5402741..38be3f53f6 100644 --- a/apps/workbench/app/views/pipeline_instances/_show_components.html.erb +++ b/apps/workbench/app/views/pipeline_instances/_show_components.html.erb @@ -110,4 +110,14 @@ setInterval(function(){$('a.refresh').click()}, 15000); <% end %> <% end %> -<%= render partial: 'show_event_log', locals: {object: @object} %> +<% if !@object.state.in? ['Complete', 'Failed'] %> + + + +

Log for pipeline

+ +
+<% end %> diff --git a/apps/workbench/app/views/pipeline_instances/_show_event_log.html.erb b/apps/workbench/app/views/pipeline_instances/_show_event_log.html.erb deleted file mode 100644 index c35562befd..0000000000 --- a/apps/workbench/app/views/pipeline_instances/_show_event_log.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -<% if !@object.state.in? ['Complete', 'Failed'] %> - -

Log for pipeline

- - - -
-<% end %> -- 2.39.5