From 3e275e75159e158dfc4103bbfd6a12826a05a1d6 Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Thu, 20 Aug 2026 12:04:07 +0200 Subject: [PATCH] Slot-Close-Knoepfe groesser und in CLOSE-Farbe; grosser CLOSE-Knopf entfernt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User-Wunsch, drei Teile. (1) GROESSER: font-size 0.72 -> 1rem, Polster 0.17/0.33 -> 0.39/0.61rem, fett. (2) FARBE wie der bisherige CLOSE-Knopf: background #2d2000, color var(--accent), Rahmen #4a3600 - derselbe Bernstein-Ton, damit "schliessen" ueberall gleich aussieht. (3) Grosser CLOSE-Knopf aus der Aktionsleiste ENTFERNT. ⚠⚠ DER HAKEN AN (3), geprueft bevor entfernt: der Knopf hatte ZWEI Aufgaben im Render, nicht nur das Klicken - `disabled`, wenn keine Position offen ist, und BLINKEN beim Close-Alarm (`closeBtn.classList.toggle("blink", closeAlert)`). Haette ich ihn nur aus der HTML geloescht, waere der Alarm still geworden: nur noch Ton, keine Sichtbarkeit. Beides ist mitgezogen: - `close-main` ist disabled, wenn Slot 1 leer ist; `close-brk`, wenn BRK leer ist (vorher gab es diese Unterscheidung gar nicht) - `.px-close.blink` nutzt dieselbe `blkClose`-Keyframe wie vorher, und weil die Farben identisch sind, sieht das Blinken exakt aus wie zuvor ⚠ Es blinkt NUR der Slot-1-Knopf: dort entstehen `sr_close_hint` und der Flip-Alarm. Ein blinkender BRK-Knopf ohne Anlass waere ein Fehlsignal. FUNKTIONAL GEPRUEFT (drei Zustaende gegen ein Minimal-DOM): hasPos=1 hasBrk=0 alarm=0 -> main aktiv, brk gesperrt, kein Blinken hasPos=0 hasBrk=1 alarm=1 -> main gesperrt, brk aktiv, Blinken hasPos=1 hasBrk=1 alarm=1 -> beide aktiv, Blinken 0 verbliebene `data-side="close"`-Referenzen in JS und HTML. ⚠ `.btn.close` und `.btn.close.blink` bleiben in der CSS stehen - ungenutzt, aber harmlos, und sie machen ein Zurueckholen des grossen Knopfs zu einer Ein-Zeilen-Sache. v=200 (HTML, JS, style.css und der Cache-Waechter `data-html-v` alle gleichgezogen und am ausgelieferten Stand verifiziert). Co-Authored-By: Claude Opus 5 --- web/app.js | 17 +++++++++++++---- web/index.html | 11 +++++++---- web/style.css | 16 ++++++++++++---- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/web/app.js b/web/app.js index 11d5330..0b0282a 100644 --- a/web/app.js +++ b/web/app.js @@ -1350,10 +1350,16 @@ function render(d) { const hasPos = !!p.ticket; const longBtn = document.querySelector('.btn[data-side="long"]'); const shortBtn = document.querySelector('.btn[data-side="short"]'); - const closeBtn = document.querySelector('.btn[data-side="close"]'); + // ⚠ Der grosse CLOSE-Knopf ist am 2026-08-20 entfernt (User-Wunsch) — es gibt + // jetzt je Slot einen. Seine beiden Aufgaben wandern mit: `disabled`, wenn + // der Slot leer ist, und BLINKEN beim Close-Alarm. Ohne das haette der + // Alarm seine Sichtbarkeit verloren und nur noch gepiept. + const closeMain = $streng("close-main"), closeBrk = $streng("close-brk"); + const hasBrk = !!((d.position_brk || {}).ticket); longBtn.disabled = hasPos; shortBtn.disabled = hasPos; - closeBtn.disabled = !hasPos; + if (closeMain) closeMain.disabled = !hasPos; + if (closeBrk) closeBrk.disabled = !hasBrk; // BRK-Schalter ENTFERNT (User 2026-08-19), dafuer der Circuit-Breaker. Der // Auto-Squeeze-ZUSTAND bleibt in der Breakout-Karte sichtbar -- nur sein // Schalter ist weg (jetzt POST-Endpunkt bzw. ini). @@ -1417,7 +1423,10 @@ function render(d) { const srAuto = !!d.auto_sr_close; const srClose = !!(srHint && srHint.close); // P(break) < Schwelle → schließen const closeAlert = flipClose || (gainOK && srClose); - closeBtn.classList.toggle("blink", closeAlert); + // ⚠ Der Alarm gilt der Position in Slot 1 (dort entsteht `sr_close_hint` und + // der Flip). Deshalb blinkt nur dieser Knopf — ein blinkender BRK-Knopf + // ohne Anlass waere ein Fehlsignal. + if (closeMain) closeMain.classList.toggle("blink", closeAlert); if (closeAlert) beepCloseAlert(); // Blinken + Ton (gedrosselt, alle 4 s) const hintEl = $("pos-srhint"); if (hintEl) { @@ -2358,7 +2367,7 @@ async function closeSlot(slot, label, pnl) { // und der Browser zeigte Altes. Statt das jedes Mal von Hand zu diagnostizieren, // sagt die Seite es jetzt selbst. // ⚠ Bewusst SICHTBAR statt nur Konsole: die Konsole sieht am Handy niemand. -const _JS_V = "199"; +const _JS_V = "200"; { const htmlV = document.body && document.body.dataset ? document.body.dataset.htmlV : null; diff --git a/web/index.html b/web/index.html index a25a843..20b0fea 100644 --- a/web/index.html +++ b/web/index.html @@ -12,9 +12,9 @@ ⚠ LOKAL eingebunden, kein CDN: die PWA laeuft ueber WireGuard und muss offline funktionieren. --> - + - +