From b965f2c9ea506d417944556303f8d8beb96cfe27 Mon Sep 17 00:00:00 2001 From: vchuser Date: Tue, 28 Jul 2026 17:06:51 +0200 Subject: [PATCH] =?UTF-8?q?Beanstandungen=20der=20Pr=C3=BCfung=20beheben?= =?UTF-8?q?=20(Scan-Ansicht,=20Overlay,=20Styles)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - .stacks-Buttons auf min-height 56px angehoben, Leiste auf 76px vergrößert, damit die Buttons vollständig hineinpassen - Datei-Input bleibt dauerhaft hidden statt nach dem ersten Öffnen sichtbar zu bleiben und den Kamerabereich zu verkleinern - Rückgängig-Knopf erhält aria-label für Screenreader - showResult entfernt eine noch sichtbare vorherige Rückmeldung und deren Zeitgeber, bevor die neue eingeblendet wird Co-Authored-By: Claude Opus 5 (1M context) --- src/styles.css | 4 ++-- src/ui/result-overlay.js | 14 +++++++++++++- src/ui/scan-view.js | 3 +-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/styles.css b/src/styles.css index 5807a9d..65ff1e3 100644 --- a/src/styles.css +++ b/src/styles.css @@ -38,13 +38,13 @@ body { padding: 10px 12px; overflow-x: auto; border-top: 1px solid var(--line); - min-height: 56px; + min-height: 76px; align-items: center; } .stacks button { flex: none; - min-height: 44px; + min-height: 56px; padding: 0 14px; border: 1px solid var(--line); border-radius: 8px; diff --git a/src/ui/result-overlay.js b/src/ui/result-overlay.js index a58d167..c1b5bb0 100644 --- a/src/ui/result-overlay.js +++ b/src/ui/result-overlay.js @@ -8,11 +8,21 @@ function beschreibung(spec) { return teile.join(' ') || 'ohne Angaben'; } +/** Haelt pro Root die aktuell sichtbare Rueckmeldung samt Zeitgeber fest. */ +const aktuelleRueckmeldung = new WeakMap(); + /** * Blendet die Treffer-Rueckmeldung ein und nach kurzer Zeit wieder aus. * Gruen bei Barcode, gelb bei OCR. Keine Eingabe noetig. */ export function showResult(root, { stackId, spec, confidence }, dauerMs = 1200) { + const vorherige = aktuelleRueckmeldung.get(root); + if (vorherige) { + clearTimeout(vorherige.timer); + vorherige.overlay.remove(); + aktuelleRueckmeldung.delete(root); + } + const overlay = document.createElement('div'); overlay.className = `overlay ${confidence}`; overlay.innerHTML = ` @@ -25,9 +35,11 @@ export function showResult(root, { stackId, spec, confidence }, dauerMs = 1200) root.appendChild(overlay); return new Promise((resolve) => { - setTimeout(() => { + const timer = setTimeout(() => { overlay.remove(); + aktuelleRueckmeldung.delete(root); resolve(); }, dauerMs); + aktuelleRueckmeldung.set(root, { overlay, timer }); }); } diff --git a/src/ui/scan-view.js b/src/ui/scan-view.js index 5cb229f..b92599d 100644 --- a/src/ui/scan-view.js +++ b/src/ui/scan-view.js @@ -13,7 +13,7 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
Noch nichts erfasst - +
`; @@ -59,7 +59,6 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile }, openFilePicker() { - fileEl.hidden = false; fileEl.click(); }, };