From b6c6b709154cb138e2a1a3913626ad5746ef3ca5 Mon Sep 17 00:00:00 2001 From: buinsky Date: Sat, 4 Mar 2017 00:43:13 +0300 Subject: [PATCH] Improve performance of updating 'progress' column --- src/webui/www/public/scripts/dynamicTable.js | 26 ++++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/webui/www/public/scripts/dynamicTable.js b/src/webui/www/public/scripts/dynamicTable.js index 09235f09a..2483ce577 100644 --- a/src/webui/www/public/scripts/dynamicTable.js +++ b/src/webui/www/public/scripts/dynamicTable.js @@ -32,6 +32,7 @@ **************************************************************/ var DynamicTableHeaderContextMenuClass = null; +var ProgressColumnWidth = -1; var DynamicTable = new Class({ @@ -851,25 +852,34 @@ var TorrentsTable = new Class({ if (td.getChildren('div').length) { var div = td.getChildren('div')[0]; - var newWidth = td.offsetWidth - 5; - if (div.lastWidth !== newWidth) { - div.setWidth(newWidth); - div.lastWidth = newWidth; + if (td.resized) { + td.resized = false; + div.setWidth(ProgressColumnWidth - 5); } if (div.getValue() != progressFormated) div.setValue(progressFormated); } - else + else { + if (ProgressColumnWidth < 0) + ProgressColumnWidth = td.offsetWidth; td.adopt(new ProgressBar(progressFormated.toFloat(), { - 'width' : td.offsetWidth - 5 + 'width' : ProgressColumnWidth - 5 })); + td.resized = false; + } }; this.columns['progress'].onResize = function (columnName) { var pos = this.getColumnPos(columnName); var trs = this.tableBody.getElements('tr'); - for (var i = 0; i < trs.length; i++) - this.columns[columnName].updateTd(trs[i].getElements('td')[pos], this.rows.get(trs[i].rowId)); + ProgressColumnWidth = -1; + for (var i = 0; i < trs.length; i++) { + var td = trs[i].getElements('td')[pos]; + if (ProgressColumnWidth < 0) + ProgressColumnWidth = td.offsetWidth; + td.resized = true; + this.columns[columnName].updateTd(td, this.rows.get(trs[i].rowId)); + } }.bind(this); // num_seeds