Die Schüler:innen sehen sie danach nicht mehr als Auftrag. Bereits erledigte Durchgänge und Ergebnisse bleiben erhalten — das Modul bleibt zum freien Üben verfügbar (sofern freigegeben).
+
+
+
+
+
+
+
@@ -2898,11 +2908,8 @@ async function loadModuleMatrix() {
var html = '';
if (activeAssign.length > 0) {
html += '
đź“‹ Aktive Klassen-Aufgabe
';
- var anyPrepared = false;
activeAssign.forEach(function(a) {
var mod = mods.find(function(m){return m.id===a.module_id;});
- var paused = mod ? !!mod.paused : false;
- if (paused) anyPrepared = true;
var img = (mod && mod.card_image) ? 'assets/img/'+mod.card_image : null;
var thumb = img
? ''
@@ -2910,25 +2917,14 @@ async function loadModuleMatrix() {
var end = a.ends_at ? 'fällig ' + new Date(a.ends_at.replace(' ','T')).toLocaleDateString('de-AT',{weekday:'short',day:'2-digit',month:'2-digit',hour:'2-digit',minute:'2-digit'}) : 'ohne Zeitlimit';
var startMs = a.starts_at ? new Date(a.starts_at.replace(' ','T')).getTime() : 0;
if (startMs && startMs > Date.now()) end = 'ab ' + new Date(startMs).toLocaleDateString('de-AT',{weekday:'short',day:'2-digit',month:'2-digit',hour:'2-digit',minute:'2-digit'}) + ' · ' + end;
- var stateBadge = paused
- ? '⏸ Vorbereitet'
- : '▶ Läuft';
+ var modName = mod ? mod.name : a.module_id;
html += '
';
- if (paused) {
- html += '';
- } else {
- html += '';
- }
- html += '';
- html += '
';
+ html += '
'+esc(modName)+' · Stufe '+a.level+'
';
+ html += '
▶ Läuft'+end+'
';
+ html += '';
+ html += '
';
});
- if (anyPrepared) {
- html += '
⏸ Vorbereitet: Die Klasse sieht den Auftrag bereits, kann aber erst loslegen, wenn du „▶ Start freigeben" drückst — so starten alle gemeinsam.
';
- }
html += '
';
}
@@ -3062,7 +3058,6 @@ async function showStartSim(preselectedModuleId) {
sel.innerHTML = '';
ALL_MODS.forEach(function(m) { var o=document.createElement('option'); o.value=m.id; o.textContent=(m.icon||'')+' '+m.name; sel.appendChild(o); });
if (preselectedModuleId) sel.value = preselectedModuleId;
- document.getElementById('ss-paused').checked = false;
document.getElementById('ss-level').value = '1';
var now = new Date();
document.getElementById('ss-start-date').value = _ssDate(now);
@@ -3109,34 +3104,35 @@ function ssUpdateSummary(){
var lvl = document.getElementById('ss-level').value;
var startsAt = ssStartValue();
var endsAt = ssEndValue();
- var paused = document.getElementById('ss-paused').checked;
- var future = startsAt && new Date(startsAt) > new Date();
- var startTxt = startsAt ? ('ab '+esc(_ssFmt(startsAt))+'') : (paused ? '⏸ auf dein Signal' : '▶ sofort');
+ var startTxt = startsAt ? ('ab '+esc(_ssFmt(startsAt))+'') : 'â–¶ sofort';
var endTxt = endsAt ? ('fällig '+esc(_ssFmt(endsAt))+'') : 'ohne Frist';
- var note = (paused || future) ? ' · Klasse wartet auf „Start freigeben"' : '';
- el.innerHTML = ''+esc(modTxt)+' · Stufe '+lvl+' · '+startTxt+' · '+endTxt+note;
+ el.innerHTML = ''+esc(modTxt)+' · Stufe '+lvl+' · '+startTxt+' · '+endTxt;
}
async function startSimulation() {
var moduleId = document.getElementById('ss-module').value;
var level = parseInt(document.getElementById('ss-level').value);
var startsAt = ssStartValue();
var endsAt = ssEndValue();
- var future = startsAt && new Date(startsAt) > new Date();
- // Zukünftiger Start ⇒ automatisch „vorbereitet" (Klasse wartet), sonst Checkbox.
- var paused = document.getElementById('ss-paused').checked || !!future;
- // Sowohl class_modules (Modus + Level + Pause) als auch class_assignments
- // (Auftragshistorie inkl. Zeitfenster) setzen.
- var rm = await api('modules', {action:'set_mode', classId:currentClassId, moduleId:moduleId, mode:'teacher_started', currentLevel:level, dueDate:endsAt, paused:paused});
+ // Aufgabe ist ab Vergabe sofort startbar (keine Tempo-/Freigabe-Sperre mehr).
+ var rm = await api('modules', {action:'set_mode', classId:currentClassId, moduleId:moduleId, mode:'teacher_started', currentLevel:level, dueDate:endsAt, paused:false});
if (rm && rm.error) { alert(rm.error); return; }
var r = await api('assignments', {action:'create', classId:currentClassId, moduleId:moduleId, level:level, startsAt:startsAt, endsAt:endsAt});
if (r.error) { alert(r.error); return; }
hideModal('modal-startsim');
loadModuleMatrix();
}
-async function stopAssignment(id) {
- if (!confirm('Simulation beenden?')) return;
- await api('assignments', {action:'stop', assignmentId:id});
+var _stopAssignId = null;
+function stopAssignment(id, name) {
+ _stopAssignId = id;
+ document.getElementById('stopassign-name').textContent = name || 'diese Aufgabe';
+ showModal('modal-stopassign');
+}
+async function doStopAssignment() {
+ if (!_stopAssignId) return;
+ await api('assignments', {action:'stop', assignmentId:_stopAssignId});
+ _stopAssignId = null;
+ hideModal('modal-stopassign');
loadModuleMatrix();
}