From 645624eeb6ab1728d6096fd2aed9d5bc03854225 Mon Sep 17 00:00:00 2001 From: Eduard Wisch Date: Fri, 10 Apr 2026 15:33:32 +0200 Subject: [PATCH] =?UTF-8?q?Bericht=20l=C3=B6schen:=20Button=20+=20Dialog?= =?UTF-8?q?=20in=20Report-Detail,=20api.deleteReport()=20[deploy]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Lösch-Button (rot) unter Report-Detail - Eigener Bestätigungs-Dialog (kein browser-confirm()) - api.deleteReport(id) → DELETE /reports.php?id=X - CSS: .btn-danger Klasse Co-Authored-By: Claude Opus 4.6 (1M context) --- app.css | 6 ++++++ app.js | 33 +++++++++++++++++++++++++++++++++ lib/api.js | 6 +++++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/app.css b/app.css index 20fd0c6..0f8f5be 100644 --- a/app.css +++ b/app.css @@ -116,6 +116,12 @@ body { color: #f0f0f0; } .btn-large { padding: 22px; font-size: 18px; } +.btn-danger { + background: #d9534f; + color: #fff; + margin-top: 24px; +} +.btn-danger:active { background: #c9302c; } .hidden-input { display: none; } diff --git a/app.js b/app.js index 8b49265..7bd8b55 100644 --- a/app.js +++ b/app.js @@ -744,6 +744,7 @@ router.on('/reports/:id', async (args) => { ${hasPages ? '' : ''} + `; loadThumbs(); @@ -783,6 +784,38 @@ router.on('/reports/:id', async (args) => { document.getElementById('btn-open-editor').onclick = () => { window.open(window.location.origin + '/custom/bericht/bericht_card.php?berichtid=' + args.id, '_blank'); }; + + document.getElementById('btn-delete-report').onclick = () => { + const modal = document.createElement('div'); + modal.className = 'fullscreen-modal'; + modal.innerHTML = ` + + + `; + document.body.appendChild(modal); + modal.querySelector('#dr-cancel').onclick = () => modal.remove(); + modal.querySelector('#dr-no').onclick = () => modal.remove(); + modal.querySelector('#dr-yes').onclick = async () => { + try { + await api.deleteReport(args.id); + modal.remove(); + showToast('Bericht gelöscht'); + router.go('#/reports'); + } catch (e) { + showToast('Fehler: ' + e.message, 'error'); + } + }; + }; } catch (e) { main().innerHTML = '
⚠️
' + e.message + '
'; } diff --git a/lib/api.js b/lib/api.js index 6097391..660f474 100644 --- a/lib/api.js +++ b/lib/api.js @@ -118,6 +118,10 @@ return request('/reports.php?id=' + id + '&action=finalize', { method: 'POST' }); } + async function deleteReport(id) { + return request('/reports.php?id=' + id, { method: 'DELETE' }); + } + async function deletePhoto(relpath) { return request('/delete_photo.php', { method: 'POST', @@ -243,7 +247,7 @@ login, logout, listOrders, getOrder, listOrderPhotos, uploadOrderPhoto, listCustomers, getCustomer, - getReport, listReports, createReport, listTemplates, listOdtTemplates, finalizeReport, + getReport, listReports, createReport, listTemplates, listOdtTemplates, finalizeReport, deleteReport, deletePhoto, uploadVoiceNote, transcribeAudio, uploadAnnotatedPhoto, listMaterials, addMaterial, deleteMaterial, getPhotoBlobUrl, clearPhotoCache,