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:
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user