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.
This commit is contained in:
Stiliyan Tonev (Bark) 2025-05-20 14:04:43 +03:00
commit e812b58a76
2 changed files with 21 additions and 1 deletions

View file

@ -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) => { setStatusFilter = (name) => {
const currentHash = torrentsTable.getCurrentTorrentID(); 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); 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; selectedStatus = name;
highlightSelectedStatus(); highlightSelectedStatus();
updateMainData(); updateMainData();

View file

@ -681,7 +681,7 @@ window.qBittorrent.DynamicTable ??= (() => {
const oldColumn = this.sortedColumn; const oldColumn = this.sortedColumn;
this.sortedColumn = column; this.sortedColumn = column;
this.reverseSort = reverse ?? "0"; this.reverseSort = reverse ?? "0";
this.setSortedColumnIcon(column, oldColumn, false); this.setSortedColumnIcon(column, oldColumn, reverse === "1");
} }
else { else {
// Toggle sort order // Toggle sort order