M15 -> "AT" (Auto Trader), Trail -> "TR", beide als runde Knoepfe neben CB (v=212)

User-Vorgabe. Balance-Feld jetzt: Wert - CB - AT - TR.

M15 heisst "AT" (Auto Trader), die ID wurde von `btn-m15` auf `btn-at`
mitgezogen; Endpoint (/api/autom15) und Backend-Zustand (`auto_m15`) bleiben
unveraendert - nur die Beschriftung und der Platz aendern sich.
Der Trail-Knopf heisst "TR".
⚠ Fuer TR war KEIN Name vorgegeben ("bennene den Trail Button" - der Satz
nennt kein Ziel). "TR" ist analog zu CB/AT gewaehlt, zwei Buchstaben,
Mono-Schrift. Umbenennen ist ein Einzeiler, falls etwas anderes gemeint war.

⚠ Beide VERSCHOBEN, nicht kopiert - zwei Elemente mit derselben ID waeren ein
stiller Fehler, weil getElementById nur das erste findet.

⚠⚠ ZWEI LESARTEN NEBENEINANDER, und das ist Absicht:
  CB  gruen = AUS   (inaktiv, nichts begrenzt)   <- ausdrueckliche User-Vorgabe
  AT  gruen = AN    (laeuft)
  TR  gruen = AN    (laeuft)
Drei Knoepfe nebeneinander mit zwei Farb-Bedeutungen sind eine Falle. Deshalb
steht die Begruendung im Markup, in der CSS UND im JS, und jeder Tooltip sagt
ausdruecklich, was SEIN Zustand bedeutet. Wer die CB-Logik spaeter "geradezieht",
soll vorher lesen, dass sie so gewollt ist.

Am ausgelieferten HTML geprueft: Reihenfolge balance -> btn-cb -> btn-at ->
btn-trail, Beschriftungen CB/AT/TR, 0 doppelte IDs, `btn-m15` nicht mehr
vorhanden.
Pipeline A-G gruen, 97 Tests, 14 render*-Funktionen, deployt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-21 10:54:54 +02:00
co-authored by Claude Opus 5
parent 75e783e882
commit df7163bf18
3 changed files with 32 additions and 12 deletions
+15 -6
View File
@@ -1511,9 +1511,15 @@ function render(d) {
// Auto-Squeeze-ZUSTAND bleibt in der Breakout-Karte sichtbar -- nur sein
// Schalter ist weg (jetzt POST-Endpunkt bzw. ini).
const cb = d.circuit_breaker || {};
const m15b = $streng("btn-m15");
const m15b = $streng("btn-at");
if (m15b) {
m15b.classList.toggle("on", !!d.auto_m15);
// ⚠ AT und TR nutzen `an`/`aus` (runde Knoepfe im Balance-Feld).
// Farb-Logik hier die UEBLICHE: gruen = an.
// ⚠⚠ Der Nachbar CB ist bewusst INVERS (gruen = AUS) — ausdrueckliche
// Vorgabe des Nutzers, kein Versehen. Die Tooltips sagen jeweils, was
// der Zustand bedeutet.
m15b.classList.toggle("an", !!d.auto_m15);
m15b.classList.toggle("aus", !d.auto_m15);
m15b.title = d.auto_m15
? "Auto-Entry auf die gruene M15-Karte AN (" + (d.m15_entry_count || 0)
+ " Entries). ACHTUNG: gemessen negativ -- reiner Test."
@@ -1536,7 +1542,10 @@ function render(d) {
// Ausführungs-Achsen gemessen negativ — Markt in allen 8 Feldern, ruhende
// Order mit Touch-Fill in allen 6 und dabei schlechter als Markt. Grund
// strukturell: das Bestätigungs-Level `_pend` WANDERT.
$("btn-trail").classList.toggle("on", !!(d.trail || {}).enabled);
{
const trb = $streng("btn-trail"), trAn = !!(d.trail || {}).enabled;
if (trb) { trb.classList.toggle("an", trAn); trb.classList.toggle("aus", !trAn); }
}
// Empfehlungs-Blinken: LONG/SHORT-Button blinkt, sobald die Welle eine
// Richtung empfiehlt (= wie in der Welle-Kachel sichtbar) und keine Position
@@ -2102,9 +2111,9 @@ _updateMuteBtn();
// Toggle-Buttons (AUTO/TRAIL/S-R-Close) — ohne Bestätigung
$("btn-cb").onclick = () => toggle("api/circuit", "Circuit Breaker");
$("btn-m15").onclick = () => toggle("api/autom15", "M15-Auto-Entry (gemessen negativ!)");
$streng("btn-at").onclick = () => toggle("api/autom15", "Auto Trader (gemessen negativ!)");
// (🎯 SIG entfernt 2026-08-12 — s. renderOrderButtons oben)
$("btn-trail").onclick = () => toggle("api/trail", "Trailing");
$streng("btn-trail").onclick = () => toggle("api/trail", "Trailing");
// ⚠ Der Mindestgewinn-Sender ist am 2026-08-21 mit dem S/R-Auto-Close
// entfallen — die Schwelle gab es nur fuer ihn (Endpoint, Feld und
@@ -2481,7 +2490,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 = "211";
const _JS_V = "212";
{
const htmlV = document.body && document.body.dataset
? document.body.dataset.htmlV : null;