X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/eaa312ea7c35e35c64dbef9624be1d9c7df034ef..acb392d097b6dc72ce0953d22d245b039b62fccc:/apps/workbench/app/assets/javascripts/event_log.js diff --git a/apps/workbench/app/assets/javascripts/event_log.js b/apps/workbench/app/assets/javascripts/event_log.js index 8bfa1b0672..e576ba97a3 100644 --- a/apps/workbench/app/assets/javascripts/event_log.js +++ b/apps/workbench/app/assets/javascripts/event_log.js @@ -1,54 +1,62 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + /* * This js establishes a websockets connection with the API Server. */ /* Subscribe to websockets event log. Do nothing if already connected. */ function subscribeToEventLog () { - // if websockets are not supported by browser, do not subscribe for events - websocketsSupported = ('WebSocket' in window); - if (websocketsSupported == false) { - return; - } - - // check if websocket connection is already stored on the window - event_log_disp = $(window).data("arv-websocket"); - if (event_log_disp == null) { - // need to create new websocket and event log dispatcher - websocket_url = $('meta[name=arv-websocket-url]').attr("content"); - if (websocket_url == null) - return; - - event_log_disp = new WebSocket(websocket_url); - - event_log_disp.onopen = onEventLogDispatcherOpen; - event_log_disp.onmessage = onEventLogDispatcherMessage; - - // store websocket in window to allow reuse when multiple divs subscribe for events - $(window).data("arv-websocket", event_log_disp); - } + // if websockets are not supported by browser, do not subscribe for events + websocketsSupported = ('WebSocket' in window); + if (websocketsSupported == false) { + return; + } + + // check if websocket connection is already stored on the window + event_log_disp = $(window).data("arv-websocket"); + if (event_log_disp == null) { + // need to create new websocket and event log dispatcher + websocket_url = $('meta[name=arv-websocket-url]').attr("content"); + if (websocket_url == null) + return; + + event_log_disp = new WebSocket(websocket_url); + + event_log_disp.onopen = onEventLogDispatcherOpen; + event_log_disp.onmessage = onEventLogDispatcherMessage; + + // store websocket in window to allow reuse when multiple divs subscribe for events + $(window).data("arv-websocket", event_log_disp); + } } /* Send subscribe message to the websockets server. Without any filters arguments, this subscribes to all events */ function onEventLogDispatcherOpen(event) { - this.send('{"method":"subscribe"}'); + this.send('{"method":"subscribe"}'); } /* Trigger event for all applicable elements waiting for this event */ function onEventLogDispatcherMessage(event) { - parsedData = JSON.parse(event.data); - object_uuid = parsedData.object_uuid; + parsedData = JSON.parse(event.data); + object_uuid = parsedData.object_uuid; + + if (!object_uuid) { + return; + } - // if there are any listeners for this object uuid or "all", trigger the event - matches = ".arv-log-event-listener[data-object-uuid=\"" + object_uuid + "\"],.arv-log-event-listener[data-object-uuids~=\"" + object_uuid + "\"],.arv-log-event-listener[data-object-uuid=\"all\"],.arv-log-event-listener[data-object-kind=\"" + parsedData.object_kind + "\"]"; - $(matches).trigger('arv-log-event', event.data); + // if there are any listeners for this object uuid or "all", trigger the event + matches = ".arv-log-event-listener[data-object-uuid=\"" + object_uuid + "\"],.arv-log-event-listener[data-object-uuids~=\"" + object_uuid + "\"],.arv-log-event-listener[data-object-uuid=\"all\"],.arv-log-event-listener[data-object-kind=\"" + parsedData.object_kind + "\"]"; + $(matches).trigger('arv-log-event', parsedData); } /* Automatically connect if there are any elements on the page that want to - received event log events. */ + receive event log events. */ $(document).on('ajax:complete ready', function() { - var a = $('.arv-log-event-listener'); - if (a.length > 0) { - subscribeToEventLog(); - } + var a = $('.arv-log-event-listener'); + if (a.length > 0) { + subscribeToEventLog(); + } });