Beanstandungen der Prüfung beheben (Scan-Ansicht, Overlay, Styles)

- .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) <noreply@anthropic.com>
This commit is contained in:
vchuser
2026-07-28 17:06:51 +02:00
co-authored by Claude Opus 5
parent 4aaff0b08d
commit b965f2c9ea
3 changed files with 16 additions and 5 deletions
+2 -2
View File
@@ -38,13 +38,13 @@ body {
padding: 10px 12px; padding: 10px 12px;
overflow-x: auto; overflow-x: auto;
border-top: 1px solid var(--line); border-top: 1px solid var(--line);
min-height: 56px; min-height: 76px;
align-items: center; align-items: center;
} }
.stacks button { .stacks button {
flex: none; flex: none;
min-height: 44px; min-height: 56px;
padding: 0 14px; padding: 0 14px;
border: 1px solid var(--line); border: 1px solid var(--line);
border-radius: 8px; border-radius: 8px;
+13 -1
View File
@@ -8,11 +8,21 @@ function beschreibung(spec) {
return teile.join(' ') || 'ohne Angaben'; 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. * Blendet die Treffer-Rueckmeldung ein und nach kurzer Zeit wieder aus.
* Gruen bei Barcode, gelb bei OCR. Keine Eingabe noetig. * Gruen bei Barcode, gelb bei OCR. Keine Eingabe noetig.
*/ */
export function showResult(root, { stackId, spec, confidence }, dauerMs = 1200) { 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'); const overlay = document.createElement('div');
overlay.className = `overlay ${confidence}`; overlay.className = `overlay ${confidence}`;
overlay.innerHTML = ` overlay.innerHTML = `
@@ -25,9 +35,11 @@ export function showResult(root, { stackId, spec, confidence }, dauerMs = 1200)
root.appendChild(overlay); root.appendChild(overlay);
return new Promise((resolve) => { return new Promise((resolve) => {
setTimeout(() => { const timer = setTimeout(() => {
overlay.remove(); overlay.remove();
aktuelleRueckmeldung.delete(root);
resolve(); resolve();
}, dauerMs); }, dauerMs);
aktuelleRueckmeldung.set(root, { overlay, timer });
}); });
} }
+1 -2
View File
@@ -13,7 +13,7 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
<div class="stacks" id="stacks"></div> <div class="stacks" id="stacks"></div>
<div class="last"> <div class="last">
<span id="last">Noch nichts erfasst</span> <span id="last">Noch nichts erfasst</span>
<button class="action secondary" id="undo" style="min-width:64px">&#8630;</button> <button class="action secondary" id="undo" style="min-width:64px" aria-label="Letzten Scan zurücknehmen">&#8630;</button>
</div> </div>
<input type="file" id="file" accept="image/*" hidden /> <input type="file" id="file" accept="image/*" hidden />
`; `;
@@ -59,7 +59,6 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
}, },
openFilePicker() { openFilePicker() {
fileEl.hidden = false;
fileEl.click(); fileEl.click();
}, },
}; };