From 23ae5327df1bdbdf2e4fd42f200a9cb4c8962318 Mon Sep 17 00:00:00 2001 From: Simon Cordt Date: Wed, 24 Sep 2025 01:45:40 +0200 Subject: [PATCH] Feat: Add checkbox to select items in pending queue for deletion --- web/pqueue.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/web/pqueue.js b/web/pqueue.js index 10b6e65..ecf55d7 100644 --- a/web/pqueue.js +++ b/web/pqueue.js @@ -93,9 +93,11 @@ const pendingList = el('ul', { id: 'pqueue-pending', class: 'pqueue-list' }); if (!state.queue_pending.length) pendingList.appendChild(el('li', { class: 'pqueue-empty', text: 'No pending items' })); state.queue_pending.forEach(item => { + const checked = state.selectedPending.has(item[1]); const li = el('li', { draggable: 'true', 'data-id': item[1], class: 'pqueue-item' }, [ el('div', { class: 'pqueue-meta' }, [ - el('i', { class: 'pi pi-clock' }), + el('i', { class: 'pi pi-bars', style: 'cursor:grab' }), + (() => { const cb = el('input', { type: 'checkbox', class: 'p-checkbox-input pqueue-select' }); if (checked) cb.checked = true; return cb; })(), el('span', { text: item[1] }) ]), el('div', { class: 'pqueue-actions' }, [ @@ -179,6 +181,14 @@ await refresh(); }); + list.querySelectorAll('.pqueue-select').forEach(cb => { + cb.onchange = (e) => { + const li = e.target.closest('li'); + const id = li.dataset.id; + if (e.target.checked) state.selectedPending.add(id); else state.selectedPending.delete(id); + }; + }); + list.querySelectorAll('.pqueue-priority-save').forEach(btn => { btn.onclick = async (e) => { const li = e.target.closest('li');