From bde7c21ead1ea3f58a6a325fd1d97fd07d5ae2b5 Mon Sep 17 00:00:00 2001 From: Maximilian Grundke Date: Thu, 5 Nov 2015 14:52:49 +0100 Subject: [PATCH] Fix leaking interval creating potentially unlimited unwanted requests --- app/assets/javascripts/dashboard.js | 31 ++++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/app/assets/javascripts/dashboard.js b/app/assets/javascripts/dashboard.js index e528e5de..5f570d9e 100644 --- a/app/assets/javascripts/dashboard.js +++ b/app/assets/javascripts/dashboard.js @@ -2,6 +2,8 @@ $(function() { var CHART_START = window.vis ? vis.moment().add(-1, 'minute') : undefined; var DEFAULT_REFRESH_INTERVAL = 5000; + var refreshInterval; + var dataset; var graph; var groups; @@ -46,17 +48,21 @@ $(function() { }; var refreshData = function(callback) { - var jqxhr = $.ajax({ - dataType: 'json', - method: 'GET' - }); - jqxhr.done(function(response) { - (callback || _.noop)(response); - setGroupVisibility(response); - updateChartData(response); - updateTable(response); - requestAnimationFrame(refreshChart); - }); + if (! $.isController('dashboard')) { + clearInterval(refreshInterval); + } else { + var jqxhr = $.ajax({ + dataType: 'json', + method: 'GET' + }); + jqxhr.done(function(response) { + (callback || _.noop)(response); + setGroupVisibility(response); + updateChartData(response); + updateTable(response); + requestAnimationFrame(refreshChart); + }); + } }; var setGroupVisibility = function(response) { @@ -101,6 +107,7 @@ $(function() { initializeChart(); refreshData(); var refresh_interval = location.search.match(/interval=(\d+)/) ? parseInt(RegExp.$1) : DEFAULT_REFRESH_INTERVAL; - setInterval(refreshData, refresh_interval); + refreshInterval = setInterval(refreshData, refresh_interval); } + });