diff --git a/src/webui/www/private/scripts/client.js b/src/webui/www/private/scripts/client.js index 9f211db83..8f2feb37b 100644 --- a/src/webui/www/private/scripts/client.js +++ b/src/webui/www/private/scripts/client.js @@ -41,6 +41,7 @@ var queueing_enabled = true; var serverSyncMainDataInterval = 1500; var customSyncMainDataInterval = null; +let syncRequestInProgress = false; var clipboardEvent; var CATEGORIES_ALL = 1; @@ -334,7 +335,7 @@ window.addEvent('load', function() { var syncMainData = function() { var url = new URI('api/v2/sync/maindata'); url.setData('rid', syncMainDataLastResponseId); - new Request.JSON({ + const request = new Request.JSON({ url: url, noCache: true, method: 'get', @@ -342,8 +343,8 @@ window.addEvent('load', function() { var errorDiv = $('error_div'); if (errorDiv) errorDiv.set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]'); - clearTimeout(syncMainDataTimer); - syncMainDataTimer = syncMainData.delay(2000); + syncRequestInProgress = false; + syncData(2000); }, onSuccess: function(response) { $('error_div').set('html', ''); @@ -426,18 +427,26 @@ window.addEvent('load', function() { // re-select previously selected rows torrentsTable.reselectRows(torrentsTableSelectedRows); } - clearTimeout(syncMainDataTimer); - syncMainDataTimer = syncMainData.delay(getSyncMainDataInterval()); + syncRequestInProgress = false; + syncData(getSyncMainDataInterval()) } - }).send(); + }); + syncRequestInProgress = true; + request.send(); }; updateMainData = function() { torrentsTable.updateTable(); - clearTimeout(syncMainDataTimer); - syncMainDataTimer = syncMainData.delay(100); + syncData(100); }; + const syncData = function(delay) { + if (!syncRequestInProgress){ + clearTimeout(syncMainDataTimer); + syncMainDataTimer = syncMainData.delay(delay); + } + } + var processServerState = function() { var transfer_info = friendlyUnit(serverState.dl_info_speed, true); if (serverState.dl_rate_limit > 0) @@ -459,7 +468,7 @@ window.addEvent('load', function() { $('DHTNodes').set('html', 'QBT_TR(DHT: %1 nodes)QBT_TR[CONTEXT=StatusBar]'.replace("%1", serverState.dht_nodes)); // Statistics dialog - if (document.getElementById("statisticspage")) { + if (document.getElementById("statisticsContent")) { $('AlltimeDL').set('html', friendlyUnit(serverState.alltime_dl, false)); $('AlltimeUL').set('html', friendlyUnit(serverState.alltime_ul, false)); $('TotalWastedSession').set('html', friendlyUnit(serverState.total_wasted_session, false)); @@ -607,8 +616,7 @@ window.addEvent('load', function() { $("mainColumn").removeClass("invisible"); customSyncMainDataInterval = null; - clearTimeout(syncMainDataTimer); - syncMainDataTimer = syncMainData.delay(100); + syncData(100); hideSearchTab(); }; diff --git a/src/webui/www/private/statistics.html b/src/webui/www/private/statistics.html index 580ef495e..dffd3ecc9 100644 --- a/src/webui/www/private/statistics.html +++ b/src/webui/www/private/statistics.html @@ -1,59 +1,59 @@ -

QBT_TR(User statistics)QBT_TR[CONTEXT=StatsDialog]

- - - - - - - - - - - - - - - - - - - - - -
QBT_TR(All-time upload:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(All-time download:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(All-time share ratio:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Session waste:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Connected peers:)QBT_TR[CONTEXT=StatsDialog]
- -

QBT_TR(Cache statistics)QBT_TR[CONTEXT=StatsDialog]

- - - - - - - - - -
QBT_TR(Read cache hits:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Total buffer size:)QBT_TR[CONTEXT=StatsDialog]
- -

QBT_TR(Performance statistics)QBT_TR[CONTEXT=StatsDialog]

- - - - - - - - - - - - - - - - - - - - - -
QBT_TR(Write cache overload:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Read cache overload:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Queued I/O jobs:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Average time in queue:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Total queued size:)QBT_TR[CONTEXT=StatsDialog]
+
+

QBT_TR(User statistics)QBT_TR[CONTEXT=StatsDialog]

+ + + + + + + + + + + + + + + + + + + + + +
QBT_TR(All-time upload:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(All-time download:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(All-time share ratio:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Session waste:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Connected peers:)QBT_TR[CONTEXT=StatsDialog]
+

QBT_TR(Cache statistics)QBT_TR[CONTEXT=StatsDialog]

+ + + + + + + + + +
QBT_TR(Read cache hits:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Total buffer size:)QBT_TR[CONTEXT=StatsDialog]
+

QBT_TR(Performance statistics)QBT_TR[CONTEXT=StatsDialog]

+ + + + + + + + + + + + + + + + + + + + + +
QBT_TR(Write cache overload:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Read cache overload:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Queued I/O jobs:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Average time in queue:)QBT_TR[CONTEXT=StatsDialog]
QBT_TR(Total queued size:)QBT_TR[CONTEXT=StatsDialog]
+