diff --git a/App/teacher.html b/App/teacher.html index 3e6f9e0..dbc9d02 100644 --- a/App/teacher.html +++ b/App/teacher.html @@ -2627,6 +2627,23 @@ function ivZuletzt(days){ return ''+t+''; } +// Kurzer Klartext-Grund für „braucht Hilfe" in der Heute-Zeile (spiegelt _liveNeedsHelp). +function _todayHelpReason(simId, st){ + st = st || {}; + switch(simId){ + case 'farmer': + if (st.hit_rate!=null && st.hit_rate < 30) return 'Trefferquote '+st.hit_rate+' %'; + if (st.cash!=null && st.cash < 0) return 'Konto im Minus'; + return 'stockt'; + case 'weltkueche': return (st.mistakesInDish||0)+' Fehler im Gericht'; + case 'klima': case 'klima-3d': return 'Budget im Minus'; + case 'heli': return 'viele Fehlversuche'; + case 'logistik': return 'Konto im Minus'; + case 'eu-werkstatt': return 'viele Fehlversuche'; + case 'tourismustal': case 'tourismusregion': return 'Budget/Umwelt kritisch'; + } + return 'stockt · braucht evtl. Hilfe'; +} function ivBuildOverview(cockpit, weeks, studentsCount, matrix){ ivInjectCss(); var cs = (cockpit && cockpit.students) || []; @@ -2668,6 +2685,24 @@ function ivBuildOverview(cockpit, weeks, studentsCount, matrix){ var h='
'; h+='
Klassenübersicht
'; + // „Heute in der Klasse" — Live-Zeile ganz oben: wer ist gerade dran, wer braucht JETZT Hilfe. + var tActive = cs.filter(function(s){ return s.status==='aktiv' || s.status==='idle'; }); + var tHelp = tActive.filter(function(s){ return s.needsHelp; }); + var tSims={}; tActive.forEach(function(s){ if(s.activeSimName) tSims[s.activeSimName]=((s.activeSimIcon?s.activeSimIcon+' ':'')+s.activeSimName); }); + var tSimsStr = Object.keys(tSims).map(function(k){return tSims[k];}).join(' · '); + h+='
'; + h+='
Heute: '+tActive.length+' aktiv
'; + if(tSimsStr) h+='
'+esc(tSimsStr)+'
'; + if(tHelp.length){ + h+='
'; + tHelp.forEach(function(s){ + h+=''; + }); + h+='
'; + } else { + h+='
✓ Niemand braucht gerade akut Hilfe
'; + } + h+='
'; // Stat-Karten h+='
'; h+='
Erfolg Klassenschnitt
'+(erfAvg!=null?erfAvg:'–')+'
0 – 100, aus den letzten Läufen
';