diff --git a/src/webui/www/private/scripts/client.js b/src/webui/www/private/scripts/client.js index 4d37d387f..1ecbff5b9 100644 --- a/src/webui/www/private/scripts/client.js +++ b/src/webui/www/private/scripts/client.js @@ -298,9 +298,11 @@ window.addEvent('load', function () { onSuccess : function (response) { $('error_div').set('html', ''); if (response) { + var torrentsTableSelectedRows; var update_categories = false; var full_update = (response['full_update'] === true); if (full_update) { + torrentsTableSelectedRows = torrentsTable.selectedRowsIds(); torrentsTable.clear(); category_list = {}; } @@ -357,6 +359,10 @@ window.addEvent('load', function () { updateCategoryList(); torrentsTableContextMenu.updateCategoriesSubMenu(category_list); } + + if (full_update) + // re-select previously selected rows + torrentsTable.reselectRows(torrentsTableSelectedRows); } clearTimeout(syncMainDataTimer); syncMainDataTimer = syncMainData.delay(syncMainDataTimerPeriod); diff --git a/src/webui/www/private/scripts/dynamicTable.js b/src/webui/www/private/scripts/dynamicTable.js index b9589971e..7798c00b9 100644 --- a/src/webui/www/private/scripts/dynamicTable.js +++ b/src/webui/www/private/scripts/dynamicTable.js @@ -489,22 +489,26 @@ var DynamicTable = new Class({ }, selectRow : function (rowId) { - this.selectedRows.empty(); + this.deselectAll(); this.selectedRows.push(rowId); - var trs = this.tableBody.getElements('tr'); - for (var i = 0; i < trs.length; i++) { - var tr = trs[i]; - if (tr.rowId == rowId) { - if (!tr.hasClass('selected')) - tr.addClass('selected'); - } + this.tableBody.getElements('tr').each(function(tr) { + if (tr.rowId == rowId) + tr.addClass('selected'); else - if (tr.hasClass('selected')) tr.removeClass('selected'); - } + }); this.onSelectedRowChanged(); }, + reselectRows : function(rowIds) { + this.deselectAll(); + this.selectedRows = rowIds.slice(); + this.tableBody.getElements('tr').each(function(tr) { + if (rowIds.indexOf(tr.rowId) > -1) + tr.addClass('selected'); + }); + }, + onSelectedRowChanged : function () {}, updateRowData : function (data) {