This commit is contained in:
breitenbach76 2026-06-09 00:20:33 +02:00
parent 32c2556ec9
commit 0c25d42532
2 changed files with 38 additions and 9 deletions

View file

@ -1199,6 +1199,7 @@ function draw(){
if(S.view!=="run"){ document.body.classList.remove("navOpen","akteOpen","rollenOpen"); }
renderCardBadge();
if(S.view==="deck") return renderDeck();
if(S.view==="mainIntro") return renderMainIntro();
if(S.view==="classify") return renderClassify();
if(S.view==="freigabe") return renderFreigabe();
if(S.view==="entry") return renderEntry();
@ -1234,13 +1235,41 @@ function renderDeck(){
<div class="deck"><div class="deckRow mainRow">${cards}</div></div>`;
$("#panel").querySelectorAll(".deckCard").forEach(el=>{
el.onclick=()=>{ S.service=+el.dataset.s; S.change=0; S.mode="main";
S.classifyDone=false; S.classifyWrong=null;
S.freigabeDone=false; S.freigabeWrong=null;
S.entryDone=false; S.entryWrong=null; S.bonusDone={};
S.view="classify"; save(); draw(); };
S.classifyDone=true; S.classifyWrong=null;
S.freigabeDone=true; S.freigabeWrong=null;
S.entryDone=true; S.entryWrong=null; S.bonusDone={};
S.view="mainIntro"; save(); draw(); };
});
}
/* ---------- Main-Intro: Major Change — Service wird neu eingeführt ------- */
function renderMainIntro(){
const u = USE_CASES[S.service];
const card = acard(S.service, 0);
const rec = START_EMPFEHLUNG[0];
const recIndex = STATIONEN.findIndex(s=>s.id===rec.id);
const cardBig = `<img class="classifyCard" src="cards/s${S.service}-c0.png" alt="${card.titel}">`;
$("#panel").innerHTML = `
<div class="setupHead">Main · ${u.service}</div>
<div class="classifyTop">
${cardBig}
<div class="classifyMain">
<div class="hint ok">Major Change</div>
<h2 class="setupTitle" style="margin-top:8px">${card.titel}</h2>
<div class="recBox"><h4>Worum geht's</h4>
<p style="margin:0 0 8px">${card.text}</p>
<p style="margin:0;color:var(--muted)">Als <b>Major Change</b> wird der Service <b>neu eingeführt</b> und durchläuft den <b>kompletten Lifecycle ab Design</b>. Die Freigaben fallen unterwegs an den <b>Gates</b> (SOR bzw. Service Owner) an — hier müsst ihr nichts einordnen. Das Einordnen (Change-Art · Freigabe · Einstieg) kommt danach bei den <b>Bonus-Varianten</b>.</p></div>
</div>
</div>
<div class="actions">
<button class="ghost" id="mainBackDeck">← Service-Deck</button>
<div class="spacer"></div>
<button class="primary" id="startRun">Los geht's → voller Durchlauf</button>
</div>`;
$("#mainBackDeck").onclick=()=>{ S.view="deck"; save(); draw(); };
$("#startRun").onclick=()=>{ seedAkte(recIndex); enterStation(recIndex); S.view="run"; save(); draw(); };
}
/* ---------- Schritt 2+3: Change-Art bestimmen (retry bis richtig) -------- */
function renderClassify(){
const correct = S.change;
@ -1265,13 +1294,13 @@ function renderClassify(){
<div class="choiceGrid grid2">${choices}</div>
</div>
</div>
<div class="actions"><button class="ghost" id="backDeck">Andere Karte</button></div>`;
<div class="actions"><button class="ghost" id="backDeck">Varianten</button></div>`;
$("#panel").querySelectorAll(".choice").forEach(el=>{
el.onclick=()=>{ const i=+el.dataset.i;
if(i===correct){ S.classifyWrong=null; S.classifyDone=true; } else { S.classifyWrong=i; }
save(); renderClassify(); };
});
$("#backDeck").onclick=()=>{ S.view="deck"; save(); draw(); };
$("#backDeck").onclick=()=>{ S.view="bonusPick"; save(); draw(); };
} else {
$("#panel").innerHTML = `
<div class="setupHead">Aufgabe 1 · Change-Art ✓</div>
@ -1286,11 +1315,11 @@ function renderClassify(){
</div>
</div>
<div class="actions">
<button class="ghost" id="backDeck">Andere Karte</button>
<button class="ghost" id="backDeck">Varianten</button>
<div class="spacer"></div>
<button class="primary" id="toFreigabe">Weiter → Freigabe bestimmen</button>
</div>`;
$("#backDeck").onclick=()=>{ S.view="deck"; save(); draw(); };
$("#backDeck").onclick=()=>{ S.view="bonusPick"; save(); draw(); };
$("#toFreigabe").onclick=()=>{ S.view="freigabe"; S.freigabeDone=false; S.freigabeWrong=null; save(); draw(); };
}
}

View file

@ -1,5 +1,5 @@
/* Service Worker — SLC-Workshop Companion (App-Shell, offline-first) */
const CACHE = "slc-companion-v19";
const CACHE = "slc-companion-v20";
const SHELL = ["./", "index.html", "manifest.webmanifest", "icon.svg"];
// Action-Card-Grafiken (cards/s<service>-c<change>.png) fuer Offline vorab cachen (alle 30).
const CARDS = [];