Zählen: Aufnahme statt Dauerbetrieb
Die Zaehlanzeige sprang beim Nutzer im Dauerbetrieb wild zwischen etwa 3 und 60, obwohl dasselbe Verfahren an einem Standfoto stabil 18 lieferte - eine Schaetzung wird durch staendiges Neuanzeigen nicht praeziser, nur unruhig. "Zählen" laeuft jetzt wie "Text erkennen" auf Knopfdruck: eine Aufnahme nimmt binnen rund einer Sekunde fuenf Bilder aus dem Zielrahmen auf, zaehlt jedes einzeln (count-objects.js unveraendert) und zeigt deren Median (neues Modul count-capture.js). Das Ergebnis bleibt stehen, bis erneut angetippt wird; die Diagnosezeile zeigt zusaetzlich die fuenf Einzelmessungen. Der gleitende Median ueber neun Durchlaeufe der Dauerzaehlung (count-history.js) entfaellt, da die Aufnahme dieselbe Robustheit bereits selbst leistet. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+32
-11
@@ -17,7 +17,7 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
|
||||
</div>
|
||||
</div>
|
||||
<div class="status" id="status"></div>
|
||||
<button class="action capture" id="capture" hidden>Modul scannen</button>
|
||||
<button class="action capture" id="capture" hidden></button>
|
||||
<button class="action secondary" id="pick-file-button" hidden>Bild auswählen</button>
|
||||
<div class="stacks" id="stacks"></div>
|
||||
<div class="last">
|
||||
@@ -115,15 +115,30 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
|
||||
},
|
||||
|
||||
/**
|
||||
* "Modul scannen" hat nur in Funktionen mit Texterkennung auf Knopfdruck
|
||||
* etwas zu tun (Funktion 3) - in Funktionen mit laufender Codesuche sucht
|
||||
* die App ohnehin durchgehend, ein Knopf dafuer waere wirkungslos.
|
||||
* Diese eine Schaltflaeche bedient beide Knopfdruck-Funktionen ("Modul
|
||||
* scannen" in Funktion 3 "Text erkennen", "Zählen"/"Nochmal zählen" in
|
||||
* Funktion 4 "Zählen") - nur ihr Wortlaut und ihr Rueckruf unterscheiden
|
||||
* sich, siehe setCaptureLabel() unten und main.js/applyMode(). In
|
||||
* Funktionen mit laufender Codesuche sucht die App ohnehin durchgehend,
|
||||
* ein Knopf dafuer waere wirkungslos.
|
||||
* @param {boolean} visible
|
||||
*/
|
||||
setCaptureVisible(visible) {
|
||||
captureEl.hidden = !visible;
|
||||
},
|
||||
|
||||
/**
|
||||
* Setzt den Wortlaut der Aufnahme-Schaltflaeche - siehe setCaptureVisible()
|
||||
* oben fuer den Grund, warum es dafuer nur eine gemeinsame Flaeche statt
|
||||
* einer zweiten daneben gibt. main.js setzt hier "Modul scannen" (Funktion
|
||||
* "Text erkennen"), "Zählen" (Funktion "Zählen", vor der ersten Aufnahme
|
||||
* seit Betreten der Funktion) bzw. "Nochmal zählen" (danach).
|
||||
* @param {string} text
|
||||
*/
|
||||
setCaptureLabel(text) {
|
||||
captureEl.textContent = text;
|
||||
},
|
||||
|
||||
/** @param {string} text @param {boolean} warn */
|
||||
setStatus(text, warn = false) {
|
||||
statusEl.textContent = text;
|
||||
@@ -162,7 +177,10 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
|
||||
* Diagnosezeile: sie faellt dabei wieder in ihren Ausgangszustand
|
||||
* (verborgen, leer) zurueck, damit sie nach einem Funktionswechsel nicht
|
||||
* ungefragt (weil sie beim letzten Mal offen war) oder mit veralteten
|
||||
* Werten wieder auftaucht.
|
||||
* Werten wieder auftaucht. Das gilt sowohl beim Verlassen der Funktion
|
||||
* "Zählen" als auch beim erneuten Betreten - ein stehendes Ergebnis
|
||||
* einer frueheren Aufnahme (andere Teile, andere Stelle) darf nicht
|
||||
* hinueberwirken (siehe main.js/applyMode()).
|
||||
* @param {boolean} visible
|
||||
*/
|
||||
setCountVisible(visible) {
|
||||
@@ -176,11 +194,13 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
|
||||
},
|
||||
|
||||
/**
|
||||
* Zeigt die (bereits ueber die letzten Messungen geglaettete) Anzahl
|
||||
* gefundener Fundstuecke (siehe count-history.js) - gross und aus
|
||||
* Armlaenge lesbar, aktualisiert sich mit jedem Durchlauf der
|
||||
* Dauerzaehlung. Ein Antippen blendet die Diagnosezeile darunter ein
|
||||
* oder aus (siehe Klick-Handler oben).
|
||||
* Zeigt das Ergebnis der zuletzt angetippten Zaehl-Aufnahme (Median der
|
||||
* fuenf Einzelmessungen dieser Aufnahme, siehe count-capture.js und
|
||||
* runCountCapture() in main.js) - gross und aus Armlaenge lesbar. Bleibt
|
||||
* unveraendert stehen, bis der Nutzer erneut auf die Schaltflaeche
|
||||
* "Nochmal zählen" tippt (keine fortlaufende Aktualisierung mehr). Ein
|
||||
* Antippen der Zahl selbst blendet die Diagnosezeile darunter ein oder
|
||||
* aus (siehe Klick-Handler oben).
|
||||
* @param {number} count
|
||||
*/
|
||||
setCount(count) {
|
||||
@@ -189,7 +209,8 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
|
||||
|
||||
/**
|
||||
* Setzt den Text der kleinen Diagnosezeile unter der grossen Zahl (siehe
|
||||
* main.js fuer den genauen Wortlaut) - unabhaengig davon, ob sie gerade
|
||||
* main.js fuer den genauen Wortlaut, u. a. die fuenf Einzelmessungen der
|
||||
* zuletzt angetippten Aufnahme) - unabhaengig davon, ob sie gerade
|
||||
* eingeblendet ist. Reine Textaktualisierung, die Sichtbarkeit steuert
|
||||
* ausschliesslich der Klick auf die grosse Zahl (siehe oben).
|
||||
* @param {string} text
|
||||
|
||||
Reference in New Issue
Block a user