From e812b58a76e06533b6a0816af43e1124799b7753 Mon Sep 17 00:00:00 2001 From: "Stiliyan Tonev (Bark)" Date: Tue, 20 May 2025 14:04:43 +0300 Subject: [PATCH] feat: Add Per-Status group sort persistence. Save data to local storage in the format `selected_filter_sort_${status group}` and `selected_filter_sort_reverse_${status group}`. When opening/switching to a given status-group apply its sorting to the table. --- src/webui/www/private/scripts/client.js | 20 +++++++++++++++++++ src/webui/www/private/scripts/dynamicTable.js | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/webui/www/private/scripts/client.js b/src/webui/www/private/scripts/client.js index bbac67db7..aa2e8ab3d 100644 --- a/src/webui/www/private/scripts/client.js +++ b/src/webui/www/private/scripts/client.js @@ -265,10 +265,30 @@ window.addEventListener("DOMContentLoaded", (event) => { } }; + const getFilterSortColumn = (filterName) => { + return LocalPreferences.get(`selected_filter_sort_${filterName}`); + }; + + const saveFilterSort = (filterName, sort, isReverse) => { + LocalPreferences.set(`selected_filter_sort_${filterName}`, sort); + LocalPreferences.set(`selected_filter_sort_reverse_${filterName}`, isReverse); + }; + setStatusFilter = (name) => { const currentHash = torrentsTable.getCurrentTorrentID(); + // Save current sorting for this filter. + if (torrentsTable.getSortedColumn()) + saveFilterSort(selectedStatus, torrentsTable.getSortedColumn(), torrentsTable.reverseSort ?? "0"); LocalPreferences.set("selected_filter", name); + // If there is a saved sorting column, load it. + const sortColumn = getFilterSortColumn(name); + if (sortColumn) { + torrentsTable.setSortedColumn( + sortColumn, + LocalPreferences.get(`selected_filter_sort_reverse_${name}`, "0") + ); + } selectedStatus = name; highlightSelectedStatus(); updateMainData(); diff --git a/src/webui/www/private/scripts/dynamicTable.js b/src/webui/www/private/scripts/dynamicTable.js index ac38ee42a..e78f72ade 100644 --- a/src/webui/www/private/scripts/dynamicTable.js +++ b/src/webui/www/private/scripts/dynamicTable.js @@ -681,7 +681,7 @@ window.qBittorrent.DynamicTable ??= (() => { const oldColumn = this.sortedColumn; this.sortedColumn = column; this.reverseSort = reverse ?? "0"; - this.setSortedColumnIcon(column, oldColumn, false); + this.setSortedColumnIcon(column, oldColumn, reverse === "1"); } else { // Toggle sort order