Teacher-Fixes (Heli-Flugplan, Modul-Label) + Kopfzeilen-Entwuerfe

- teacher.html: Modul-Detail-Spalte 'Sterne' -> 'Leistung' (zeigt %-Balken).
  Heli 'Aktuell': neue Spalte 'Flugplan' (kumuliert Wegpunkt/Treffer/Fehlkl.),
  die drei Detailspalten bleiben, 'Gesamt' entfaellt (Leistung deckt es ab).
- admin-styleguide.html: neue Sektion 'Kopfzeile' mit 3 Entwuerfen
  (A durchgehend / B schwebend / C schwebend+halbtransparent), je als
  iPad- und Full-HD-Mockup ueber simuliertem Sim-Inhalt. Glossar target=_blank,
  Neustart drin, Lehrplan raus.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-08-25 11:28:03 +02:00
parent a4e57d7aa6
commit 89d4d8587e
2 changed files with 89 additions and 4 deletions
+7 -4
View File
@@ -953,15 +953,18 @@ var LIVE_PRIMARY_FIELDS = {
return n === 0 ? '<span style="color:#5a8a5e;font-weight:700">0</span>'
: '<span style="color:'+c+';font-weight:700">'+n+'</span>';
}},
// Flugplan = Routenplanungs-Phase kumuliert (Wegpunkt-Genauigkeit Fehlklick-Abzug).
{k:'__flugplan', label:'🗺️ Flugplan', fmt:function(v, row){
var s = row.state||{}; if (!s.planTotal) return '<span style="color:#9a9a9a"></span>';
var p = Math.max(0, Math.min(100, Math.round((s.planCorrect||0)/s.planTotal*100) - Math.min(40, (s.planAttempts||0)*4)));
return _pctBar(p);
}},
{k:'startScore', label:'🛫 Start', fmt:function(v){
return v==null ? '<span style="color:#9a9a9a"></span>' : _pctBar(Math.round(Math.max(0,Math.min(5,v))/5*100));
}},
{k:'landingScore', label:'🛬 Landung', fmt:function(v){
return v==null ? '<span style="color:#9a9a9a"></span>' : _pctBar(Math.round(Math.max(0,Math.min(5,v))/5*100));
}},
{k:'totalStars', label:'⭐ Gesamt', fmt:function(v){
return v==null ? '<span style="color:#9a9a9a"></span>' : _pctBar(Math.round(Math.max(0,Math.min(5,v))/5*100));
}},
{k:'failed', label:'Status', align:'center', fmt:function(v, row){
var s = row.state||{};
if (v === true) return '<span style="color:#c07a6b;font-weight:700">⚠ Chefpilot</span>';
@@ -4697,7 +4700,7 @@ function renderModDetail() {
html += '<table class="result-matrix" style="font-size:.72rem">';
html += '<thead><tr>'
+ '<th onclick="sortModDetail(\'name\')">Schüler*in '+arr('name')+'</th>'
+ '<th onclick="sortModDetail(\'best_stars\')">Sterne '+arr('best_stars')+'</th>'
+ '<th onclick="sortModDetail(\'best_stars\')">Leistung '+arr('best_stars')+'</th>'
+ '<th onclick="sortModDetail(\'plays\')">Durchg. '+arr('plays')+'</th>';
hl.forEach(function(h) {
html += '<th onclick="sortModDetail(\'hl:'+h.key+'\')" title="'+esc(h.label)+(h.agg==='min'?' (weniger ist besser)':' (mehr ist besser)')+'">'+esc(h.label)+' '+arr('hl:'+h.key)+'</th>';