feat: reset all queue filters together

Add one contextual reset action that clears the upload sidebar, filename search, host filter, and status filter in a single render while restoring selection and scroll state consistently.
This commit is contained in:
Sucukdeluxe
2026-08-21 00:55:26 +02:00
parent d3c6475321
commit 503cb26615
7 changed files with 82 additions and 0 deletions
+38
View File
@@ -3917,6 +3917,7 @@ function setUploadSidebarFilter(value) {
_lastVisibleRange = { start: -1, end: -1 };
const container = document.getElementById('queueContainer');
if (container) container.scrollTop = 0;
syncQueueFilterResetAction();
renderQueueTable();
}
@@ -3927,6 +3928,40 @@ function applyQueueDetailFilters() {
_queueFilterCache = { filter: '', source: null, result: [] };
_normalizeQueueSelectionToVisible();
_lastVisibleRange = { start: -1, end: -1 };
syncQueueFilterResetAction();
renderQueueTable();
}
function _hasActiveQueueFilters() {
return uploadSidebarFilter !== 'all' || Boolean(queueSearchQuery || queueHosterFilter || queueStatusFilter);
}
function syncQueueFilterResetAction() {
const button = document.getElementById('queueFilterResetBtn');
if (!button) return;
const active = _hasActiveQueueFilters();
button.hidden = !active;
button.disabled = !active;
}
function resetQueueFilters() {
uploadSidebarFilter = 'all';
queueSearchQuery = '';
queueHosterFilter = '';
queueStatusFilter = '';
const search = document.getElementById('queueSearchInput');
const hoster = document.getElementById('queueHosterFilter');
const status = document.getElementById('queueStatusFilter');
if (search) search.value = '';
if (hoster) hoster.value = '';
if (status) status.value = '';
_syncSidebarFilterButtons('[data-upload-sidebar-target]', 'uploadSidebarTarget', 'all');
_queueFilterCache = { filter: '', source: null, result: [] };
_normalizeQueueSelectionToVisible();
_lastVisibleRange = { start: -1, end: -1 };
const container = document.getElementById('queueContainer');
if (container) container.scrollTop = 0;
syncQueueFilterResetAction();
renderQueueTable();
}
@@ -3938,6 +3973,7 @@ function syncQueueHosterFilterOptions() {
select.innerHTML = `<option value="">Alle Hoster</option>${names.map(name => `<option value="${escapeAttr(name)}">${escapeHtml(getHosterLabel(name))}</option>`).join('')}`;
select.value = names.includes(current) ? current : '';
queueHosterFilter = select.value;
syncQueueFilterResetAction();
}
function updateUploadSidebarSummary(stats = _computeQueueStats()) {
@@ -7237,6 +7273,8 @@ function setupListeners() {
document.getElementById('queueSearchInput').addEventListener('input', applyQueueDetailFilters);
document.getElementById('queueHosterFilter').addEventListener('change', applyQueueDetailFilters);
document.getElementById('queueStatusFilter').addEventListener('change', applyQueueDetailFilters);
document.getElementById('queueFilterResetBtn').addEventListener('click', resetQueueFilters);
syncQueueFilterResetAction();
const historyRetentionPicker = document.getElementById('historyRetentionPicker');
const historyRetentionTrigger = document.getElementById('historyRetentionTrigger');