X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/17fb6bca5786bad5cff83a187e70adbca9c1d14a..0fab8a581c4a711408150ed64ce909d9afda7829:/apps/workbench/app/assets/javascripts/tab_panes.js diff --git a/apps/workbench/app/assets/javascripts/tab_panes.js b/apps/workbench/app/assets/javascripts/tab_panes.js index eb574791a5..b19a277ef7 100644 --- a/apps/workbench/app/assets/javascripts/tab_panes.js +++ b/apps/workbench/app/assets/javascripts/tab_panes.js @@ -1,3 +1,7 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + // Load tab panes on demand. See app/views/application/_content.html.erb // Fire when a tab is selected/clicked. @@ -134,7 +138,21 @@ $(document).on('arv:pane:reload', '[data-pane-content-url]', function(e) { var errhtml; var contentType = jqxhr.getResponseHeader('Content-Type'); if (jqxhr.readyState == 0 || jqxhr.status == 0) { - errhtml = "Cancelled."; + if ($pane.attr('data-loaded-at') > 0) { + // Stale content is already present. Leave it + // there while loading the next page. + $pane.removeClass('pane-loading'); + $pane.addClass('pane-loaded'); + // ...but schedule another refresh (after a + // throttle delay) in case the act of navigating + // away gets cancelled itself, leaving this page + // with content that we know is stale. + $pane.addClass('pane-stale'); + $pane.attr('data-loaded-at', (new Date()).getTime()); + $pane.trigger('arv:pane:reload'); + return; + } + errhtml = "Cancelled."; } else if (contentType && contentType.match(/\btext\/html\b/)) { var $response = $(jqxhr.responseText); var $wrapper = $('div#page-wrapper', $response);