Einsatz-je-Pfad-Feld war nicht bedienbar - auf das bewaehrte Muster umgebaut
User: "Einsatz je Pfad kann ich nichts eingeben".
URSACHE - mein erster Entwurf hat ein EIGENES Markup erfunden, statt das zu
nehmen, das im Projekt nachweislich funktioniert. Zwei Fehler darin:
(1) KEIN `inputmode`. Alle funktionierenden Felder des Projekts (SL, TP,
Gewinn-Close, Notfall-Close) tragen `inputmode="decimal"` - am Handy
erscheint sonst keine brauchbare Zahlentastatur. Das allein macht ein Feld
praktisch unbedienbar, obwohl es sichtbar und technisch "aktiv" ist.
(2) Die Inputs steckten in einem <b> innerhalb einer `.kv`-Zeile. `.kv` ist
`display:flex; align-items:baseline` und fuer das Muster
<span>Label</span><b>Wert</b> gebaut - also fuer TEXT, nicht fuer
Formularelemente.
BEHOBEN: identisches Markup wie die Trade-Leiste (`.tb-row` > `.tb-field` mit
<label> ueber <input>), plus `inputmode="decimal"` und `placeholder="global"`
statt "BRK"/"M15" - das macht zugleich sichtbar, was LEER bedeutet.
Zusaetzlich den Render gehaertet, damit der 1-s-Snapshot die Eingabe nicht
fressen kann: Feld mit Fokus wird gar nicht angefasst, und geschrieben wird nur
bei tatsaechlicher Aenderung (eine Zuweisung setzt sonst auch bei identischem
Text die Cursorposition zurueck).
⚠ LEHRE, die ueber diesen Fall hinausgeht: es gab in derselben Datei vier
funktionierende Vorbilder, und ich habe keines davon angesehen, bevor ich ein
neues Muster erfunden habe. Beim Hinzufuegen eines Bedienelements gehoert das
vorhandene Muster kopiert - dieselbe Klasse wie die dokumentierte Regel, beim
Wiederverwenden eines Backtest-Kerns die Live-KONFIGURATION mitzukopieren.
Reine Frontend-Aenderung (HTML/CSS/JS + v=184) - kein Neustart noetig, statische
Dateien werden je Request frisch von der Platte gelesen. Verifiziert: Tags
ausgeglichen (div 84/84, span 49/49), keine doppelten IDs, node --check gruen,
beide Felder mit inputmode im ausgelieferten HTML, v=184 wird ausgeliefert.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
8bbc58f336
commit
027267063d
+9
-1
@@ -174,7 +174,15 @@ function renderBrk(d) {
|
||||
// wie beim Mindestgewinn-Feld).
|
||||
[["am-brk", d.margin_brk], ["am-m15", d.margin_m15]].forEach(([id, v]) => {
|
||||
const el = $streng(id);
|
||||
if (el && document.activeElement !== el) el.value = (v > 0) ? v : "";
|
||||
if (!el) return;
|
||||
// ⚠ NICHT anfassen, solange das Feld den Fokus hat -- sonst frisst der
|
||||
// 1-s-Snapshot die laufende Eingabe (der Grund, warum das Feld sich
|
||||
// zuerst nicht bedienen liess).
|
||||
if (document.activeElement === el) return;
|
||||
const soll = (v > 0) ? String(v) : "";
|
||||
// ⚠ Nur schreiben, wenn sich WIRKLICH etwas aendert: eine Zuweisung setzt
|
||||
// auch bei gleichem Text die Cursorposition zurueck.
|
||||
if (el.value !== soll) el.value = soll;
|
||||
});
|
||||
const b5 = d.squeeze_b5;
|
||||
if (!b5) { box.classList.add("hidden"); return; }
|
||||
|
||||
+7
-12
@@ -12,7 +12,7 @@
|
||||
⚠ LOKAL eingebunden, kein CDN: die PWA laeuft ueber WireGuard
|
||||
und muss offline funktionieren. -->
|
||||
<link rel="stylesheet" href="pico.min.css?v=1">
|
||||
<link rel="stylesheet" href="style.css?v=183">
|
||||
<link rel="stylesheet" href="style.css?v=184">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Modul-Menü (ganz oben) -->
|
||||
@@ -171,16 +171,11 @@
|
||||
<div class="kv"><span>Squeeze jetzt</span><b id="brk-squeeze">—</b></div>
|
||||
<div class="kv"><span>Liegende Orders</span><b id="brk-pending">—</b></div>
|
||||
<div class="kv" title="B5 = die VORAB fixierte Abbruchregel: nach 20 Trades ab 01.08. muss Verhaeltnis (OeGewinn/OeVerlust) >= 1,0 UND PF >= 1 sein."><span>B5-Regel</span><b id="brk-b5">—</b></div>
|
||||
<div class="kv" title="Einsatz JE PFAD in Prozent der freien Margin. 0 = der globale Wert gilt (Feld unten bzw. margin_buffer_pct). WICHTIG: das ist KEINE gleichzeitige Reservierung - der Bot haelt EINE Position, es kann nie BRK und M15 nebeneinander geben. Das Feld steuert die GROESSE der jeweiligen Position. Manuelle Trades bleiben beim globalen Wert.">
|
||||
<span>Einsatz je Pfad</span>
|
||||
<b>
|
||||
<input id="am-brk" type="number" min="0" max="99" step="1" placeholder="BRK"
|
||||
style="width:56px" title="Einsatz % fuer Breakout-Trades (0 = global)">
|
||||
<span style="opacity:.6">/</span>
|
||||
<input id="am-m15" type="number" min="0" max="99" step="1" placeholder="M15"
|
||||
style="width:56px" title="Einsatz % fuer M15-Auto-Trades (0 = global)">
|
||||
<span style="opacity:.6">%</span>
|
||||
</b>
|
||||
<div class="tb-row mg-row" title="Einsatz JE PFAD in Prozent der freien Margin. Leer oder 0 = der globale Wert gilt. WICHTIG: das ist KEINE gleichzeitige Reservierung - der Bot haelt EINE Position, es kann nie BRK und M15 nebeneinander geben. Das Feld steuert die GROESSE der jeweiligen Position. Manuelle Trades bleiben beim globalen Wert.">
|
||||
<span class="tb-field"><label title="Einsatz % fuer autonome Breakout-Trades. Leer = globaler Wert.">Einsatz BRK %</label>
|
||||
<input id="am-brk" type="number" inputmode="decimal" step="1" min="0" max="99" placeholder="global"></span>
|
||||
<span class="tb-field"><label title="Einsatz % fuer autonome M15-Trades. Leer = globaler Wert.">Einsatz M15 %</label>
|
||||
<input id="am-m15" type="number" inputmode="decimal" step="1" min="0" max="99" placeholder="global"></span>
|
||||
</div>
|
||||
<div id="brk-note" class="hint"></div>
|
||||
</section>
|
||||
@@ -393,6 +388,6 @@
|
||||
</div>
|
||||
<div id="toast" class="toast hidden"></div>
|
||||
|
||||
<script src="app.js?v=183"></script>
|
||||
<script src="app.js?v=184"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -623,3 +623,10 @@ main{padding-bottom:4.1111rem} /* Platz für die fixe Leiste */
|
||||
/* Lange Knopf-Beschriftung ("CIRCUIT BREAKER", 2026-08-19) sauber umbrechen
|
||||
statt ueberlaufen -- 6 Knoepfe teilen sich die Leistenbreite. */
|
||||
.btn.tog{ line-height:1.1; word-break:break-word; hyphens:auto; }
|
||||
/* Einsatz je Pfad (2026-08-19): nutzt bewusst das bewaehrte `.tb-field`-Muster
|
||||
der Trade-Leiste statt eines eigenen. Der erste Entwurf steckte die Inputs in
|
||||
ein `<b>` innerhalb `.kv` (display:flex; align-items:baseline) und OHNE
|
||||
`inputmode` — am Handy kam dort keine Zahlentastatur, das Feld war praktisch
|
||||
nicht bedienbar (User: „Einsatz je Pfad kann ich nichts eingeben"). */
|
||||
.mg-row{margin-top:0.4444rem;padding-top:0.4444rem;border-top:1px solid var(--line)}
|
||||
.mg-row .tb-field input{width:7ch}
|
||||
|
||||
Reference in New Issue
Block a user