From d50a7778fe6367296b738cb91ce3555bbb829c84 Mon Sep 17 00:00:00 2001 From: buinsky Date: Sun, 18 Dec 2016 07:40:46 +0300 Subject: [PATCH] Implement resizable progress bar in "Done" column --- src/webui/www/public/scripts/dynamicTable.js | 15 ++++++++++++++- src/webui/www/public/scripts/progressbar.js | 11 +++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/webui/www/public/scripts/dynamicTable.js b/src/webui/www/public/scripts/dynamicTable.js index 9d711ea41..5fb4e732b 100644 --- a/src/webui/www/public/scripts/dynamicTable.js +++ b/src/webui/www/public/scripts/dynamicTable.js @@ -344,6 +344,7 @@ var DynamicTable = new Class({ column['updateTd'] = function (td, row) { td.innerHTML = this.getRowValue(row); }; + column['onResize'] = null; this.columns.push(column); this.columns[name] = column; @@ -430,6 +431,10 @@ var DynamicTable = new Class({ for (var i = 0; i < trs.length; i++) trs[i].getElements('td')[pos].addClass('invisible'); } + if (this.columns[pos].onResize !== null) + { + this.columns[pos].onResize(columnName); + } }, setSortedColumn : function (column) { @@ -846,15 +851,23 @@ var TorrentsTable = new Class({ if (td.getChildren('div').length) { var div = td.getChildren('div')[0]; + div.setWidth(td.offsetWidth - 5); if (div.getValue() != progressFormated) div.setValue(progressFormated); } else td.adopt(new ProgressBar(progressFormated.toFloat(), { - 'width' : 80 + 'width' : td.offsetWidth - 5 })); }; + 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)); + }.bind(this); + // num_seeds this.columns['num_seeds'].updateTd = function (td, row) { diff --git a/src/webui/www/public/scripts/progressbar.js b/src/webui/www/public/scripts/progressbar.js index cf84c4c65..880670ae8 100644 --- a/src/webui/www/public/scripts/progressbar.js +++ b/src/webui/www/public/scripts/progressbar.js @@ -59,6 +59,7 @@ var ProgressBar = new Class({ obj.appendChild(obj.vals.light); obj.getValue = ProgressBar_getValue; obj.setValue = ProgressBar_setValue; + obj.setWidth = ProgressBar_setWidth; if (vals.width) obj.setValue(vals.value); else setTimeout('ProgressBar_checkForParent("' + obj.id + '")', 1); return obj; @@ -84,6 +85,16 @@ function ProgressBar_setValue(value) { this.vals.light.setStyle('clip', 'rect(0,' + this.vals.width + 'px,' + this.vals.height + 'px,' + r + 'px)'); } +function ProgressBar_setWidth(value) { + if (this.vals.width !== value) { + this.vals.width = value; + this.setStyle('width', value); + this.vals.dark.setStyle('width', value); + this.vals.light.setStyle('width', value); + this.setValue(this.vals.value); + } +} + function ProgressBar_checkForParent(id) { var obj = $(id); if (!obj) return;