feat: 'Alle entfernen' button for recent files panel

Adds a red 'Alle entfernen' button next to the 'Zuletzt erzeugte
Upload-Links' label that clears all entries from the recent files
panel after confirmation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Administrator 2026-04-06 23:25:42 +02:00
parent 6af0463425
commit 849b1e340b
3 changed files with 14 additions and 0 deletions

View File

@ -1112,6 +1112,14 @@ function deleteSelectedRecentFiles() {
renderRecentUploadsPanel(); renderRecentUploadsPanel();
} }
function clearAllRecentFiles() {
if (sessionFilesData.length === 0) return;
if (!confirm(`Wirklich alle ${sessionFilesData.length} Links aus diesem Panel entfernen?`)) return;
sessionFilesData = [];
selectedRecentIds.clear();
renderRecentUploadsPanel();
}
function copySelectedRecentLinks() { function copySelectedRecentLinks() {
const links = sessionFilesData const links = sessionFilesData
.filter(r => selectedRecentIds.has(r.order) && !r.isError) .filter(r => selectedRecentIds.has(r.order) && !r.isError)
@ -3206,6 +3214,7 @@ function setupListeners() {
document.getElementById('moveBottomBtn').addEventListener('click', () => moveSelectedJobs('bottom')); document.getElementById('moveBottomBtn').addEventListener('click', () => moveSelectedJobs('bottom'));
document.getElementById('accountsRunHealthCheckBtn').addEventListener('click', () => runHealthCheck('manual')); document.getElementById('accountsRunHealthCheckBtn').addEventListener('click', () => runHealthCheck('manual'));
document.getElementById('copyAllLinksBtn').addEventListener('click', copyAllLinks); document.getElementById('copyAllLinksBtn').addEventListener('click', copyAllLinks);
document.getElementById('clearRecentFilesBtn').addEventListener('click', clearAllRecentFiles);
document.getElementById('retryFailedBtn').addEventListener('click', () => { document.getElementById('retryFailedBtn').addEventListener('click', () => {
queueJobs.forEach(j => { if (j.status === 'error') selectedJobIds.add(j.id); }); queueJobs.forEach(j => { if (j.status === 'error') selectedJobIds.add(j.id); });
retrySelectedJobs(); retrySelectedJobs();

View File

@ -105,6 +105,7 @@
<button class="recent-tab" data-panel="statsTab">Stats</button> <button class="recent-tab" data-panel="statsTab">Stats</button>
</div> </div>
<span class="recent-files-hint" id="recentFilesHint">Zuletzt erzeugte Upload-Links</span> <span class="recent-files-hint" id="recentFilesHint">Zuletzt erzeugte Upload-Links</span>
<button class="btn btn-xs btn-danger" id="clearRecentFilesBtn" title="Alle Links aus diesem Panel entfernen">Alle entfernen</button>
</div> </div>
<div class="recent-tab-body active" id="filesTab"> <div class="recent-tab-body active" id="filesTab">
<div class="recent-files-table-wrap"> <div class="recent-files-table-wrap">

View File

@ -426,6 +426,10 @@ body.col-resizing, body.col-resizing * { cursor: col-resize !important; user-sel
.recent-files-hint { .recent-files-hint {
font-size: 11px; font-size: 11px;
color: var(--text-dim); color: var(--text-dim);
margin-left: auto;
}
.recent-files-header #clearRecentFilesBtn {
margin-left: 8px;
} }
.stats-grid { .stats-grid {
display: flex; display: flex;