Diagnoseanzeige fuer die Funktion "Zählen" ergaenzt
Der Nutzer meldet eine stark schwankende Zaehlanzeige im Livebetrieb (3-60), obwohl dasselbe Verfahren an einem Standfoto stabil 18 liefert - er kann aber keine Bilder hochladen und muss Messwerte daher vom Bildschirm ablesen und durchgeben koennen. - count-objects.js liefert additiv Zwischenwerte (Bildgroesse nach Normierung, Flaechen vor/nach Filterung, groesste Flaeche, typische Groesse, gewinnende Polaritaet) - auch bei count 0 sinnvoll belegt. Die eigentliche Zaehllogik bleibt unveraendert. - count-history.js (neu): gleitender Median der letzten 9 Messungen, unterdrueckt einzelne Ausreisser ohne die Anzeige traege zu machen. - main.js zeigt den Median als grosse Zahl, misst den Zeitbedarf des Zaehldurchlaufs und baut daraus die Diagnosezeile; der Verlauf wird bei jedem Funktionswechsel zurueckgesetzt. - scan-view.js/styles.css: die grosse Zahl ist antippbar und blendet eine anfangs verborgene Diagnosezeile ein/aus, ohne selbst zu verrutschen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+51
-7
@@ -10,7 +10,11 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
|
||||
<div class="camera">
|
||||
<video id="preview" playsinline muted></video>
|
||||
<div class="frame"></div>
|
||||
<div class="count-display" id="count-display" hidden aria-live="polite"></div>
|
||||
<div class="count-display" id="count-display" hidden>
|
||||
<button class="count-number" id="count-number" type="button" aria-live="polite"
|
||||
aria-label="Messwerte zur Zaehlung ein- oder ausblenden"></button>
|
||||
<div class="count-diagnostics" id="count-diagnostics" hidden aria-live="polite"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="status" id="status"></div>
|
||||
<button class="action capture" id="capture" hidden>Modul scannen</button>
|
||||
@@ -32,6 +36,14 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
|
||||
const captureEl = root.querySelector('#capture');
|
||||
const modeButtonEl = root.querySelector('#mode-button');
|
||||
const countDisplayEl = root.querySelector('#count-display');
|
||||
const countNumberEl = root.querySelector('#count-number');
|
||||
const countDiagnosticsEl = root.querySelector('#count-diagnostics');
|
||||
|
||||
// Ob die Diagnosezeile unter der grossen Zahl gerade eingeblendet ist -
|
||||
// rein lokaler Anzeigezustand dieser Ansicht, siehe setCountVisible()
|
||||
// (Zuruecksetzen beim Verlassen der Funktion "Zählen") und den Klick-
|
||||
// Handler auf die grosse Zahl unten (Umschalten).
|
||||
let countDiagnosticsVisible = false;
|
||||
|
||||
// FRAME_INSET (camera.js) ist die einzige Quelle der Rahmenmasse - sowohl
|
||||
// fuer diesen sichtbaren Rahmen als auch fuer den nativen Ausschnitt
|
||||
@@ -52,6 +64,16 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
|
||||
if (fileEl.files[0]) onPickFile(fileEl.files[0]);
|
||||
fileEl.value = '';
|
||||
});
|
||||
// Antippen der grossen Zahl blendet die Diagnosezeile ein, nochmaliges
|
||||
// Antippen wieder aus (siehe Moduldoku zu setCount()/setCountDiagnostics()
|
||||
// unten) - reiner Anzeigezustand dieser Ansicht, main.js muss davon
|
||||
// nichts wissen. Die grosse Zahl selbst bleibt dabei an derselben Stelle
|
||||
// stehen: die Diagnosezeile ist eigenstaendig positioniert (siehe
|
||||
// styles.css), ihr Ein-/Ausblenden nimmt der Zahl nicht den Platz weg.
|
||||
countNumberEl.addEventListener('click', () => {
|
||||
countDiagnosticsVisible = !countDiagnosticsVisible;
|
||||
countDiagnosticsEl.hidden = !countDiagnosticsVisible;
|
||||
});
|
||||
|
||||
return {
|
||||
video: root.querySelector('#preview'),
|
||||
@@ -136,22 +158,44 @@ export function renderScanView(root, { onCapture, onUndo, onOpenList, onPickFile
|
||||
* Blendet die grosse Zaehlanzeige ein oder aus (nur in Funktion
|
||||
* "Zählen" sichtbar, siehe applyMode() in main.js). Beim Ausblenden wird
|
||||
* die zuletzt angezeigte Zahl geloescht, damit beim naechsten Wechsel in
|
||||
* diese Funktion nicht kurz eine veraltete Zahl aufblitzt.
|
||||
* diese Funktion nicht kurz eine veraltete Zahl aufblitzt - ebenso die
|
||||
* 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.
|
||||
* @param {boolean} visible
|
||||
*/
|
||||
setCountVisible(visible) {
|
||||
countDisplayEl.hidden = !visible;
|
||||
if (!visible) countDisplayEl.textContent = '';
|
||||
if (!visible) {
|
||||
countNumberEl.textContent = '';
|
||||
countDiagnosticsEl.textContent = '';
|
||||
countDiagnosticsVisible = false;
|
||||
countDiagnosticsEl.hidden = true;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Zeigt die zuletzt ermittelte Anzahl gefundener Fundstuecke (siehe
|
||||
* count-objects.js) - gross und aus Armlaenge lesbar, aktualisiert sich
|
||||
* mit jedem Durchlauf der Dauerzaehlung.
|
||||
* 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).
|
||||
* @param {number} count
|
||||
*/
|
||||
setCount(count) {
|
||||
countDisplayEl.textContent = String(count);
|
||||
countNumberEl.textContent = String(count);
|
||||
},
|
||||
|
||||
/**
|
||||
* Setzt den Text der kleinen Diagnosezeile unter der grossen Zahl (siehe
|
||||
* main.js fuer den genauen Wortlaut) - unabhaengig davon, ob sie gerade
|
||||
* eingeblendet ist. Reine Textaktualisierung, die Sichtbarkeit steuert
|
||||
* ausschliesslich der Klick auf die grosse Zahl (siehe oben).
|
||||
* @param {string} text
|
||||
*/
|
||||
setCountDiagnostics(text) {
|
||||
countDiagnosticsEl.textContent = text;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user