From 0555a2d245fb630408a23d010a3bd780b9fde285 Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 19 Aug 2026 18:14:56 +0200 Subject: [PATCH] =?UTF-8?q?Lehrer-Aktivit=C3=A4tsstreifen:=20Farbe=20je=20?= =?UTF-8?q?Sim,=20H=C3=B6he=3DErfolg,=20Rahmen=3DZustand?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tages-Balken neu kodiert (nach Thomas' Spec): - Eine Farbe pro Simulation (simColor, stabil per Hash). - Balkenhöhe = Maß für den Erfolg (mehr Sterne → höher) → Leistungen auf einen Blick vergleichbar. - Rahmen kodiert den Zustand: fertig gespielt = geschlossener dünner Rahmen · noch dran = rechts offener Rahmen · Abbruch = gestrichelt + ✖ am Ende. - Beschriftung: 3-Buchstaben-Kürzel (eng) → Wort → Wort+Lektion (Platz). - Legende entsprechend erneuert. Datenbasis vorhanden: live.php summary liefert success (inkl. 'aborted'), stars, completed pro Session. Offen für v2: „läuft noch"-Balken aus aktiven live_sessions einblenden (Tag-View ist bisher assessments-basiert = Abschlüsse). Co-Authored-By: Claude Opus 4.8 --- App/teacher.html | 62 +++++++++++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 25 deletions(-) diff --git a/App/teacher.html b/App/teacher.html index 3a1cc46..a0b053c 100644 --- a/App/teacher.html +++ b/App/teacher.html @@ -1487,6 +1487,13 @@ var SIM_LABELS = { }; function simWord(id){ return (SIM_LABELS[id] && SIM_LABELS[id].w) || id; } function simCode(id){ return (SIM_LABELS[id] && SIM_LABELS[id].c) || String(id||'').slice(0,3).toUpperCase(); } +// Stabile, unterscheidbare Farbe je Sim (eine Farbe pro Simulation) — Hash→Farbton. +function simColor(id){ + if (SIM_LABELS[id] && SIM_LABELS[id].col) return SIM_LABELS[id].col; + var s = String(id||''), h = 0; + for (var i=0;i' + + 'text-shadow:0 1px 1px rgba(0,0,0,.35);box-shadow:0 1px 2px rgba(0,0,0,.12)">' + esc(inner) + ''; - // Nach Abschluss immer die Sterne (gold) am Balkenende zeigen - if (sess.stars != null) { - var _sc = Math.max(0, Math.min(5, sess.stars)); - var _starTxt = '★'.repeat(_sc) + '' + '★'.repeat(5-_sc) + ''; - var _rightEdge = pctR > 82; - html += ''+_starTxt+''; + if (aborted) { + html += ''; } }); html += ''; }); html += ''; - html += '
'; - [['good','★ ≥ 4 — gut'],['mid','★ 2-3 — mittel'],['bad','★ ≤ 1 — schwach'],['aborted','abgebrochen'],['running','läuft noch']].forEach(function(p){ - html += ''+p[1]+''; - }); + html += '
'; + html += 'Farbe = Simulation · Höhe = Erfolg (höher = besser)'; + html += 'fertig'; + html += 'läuft noch'; + html += ' Abbruch'; html += '
'; html += '
';