diff --git a/04_Tablet-Quiz/app/index.html b/04_Tablet-Quiz/app/index.html index 0a7c4fb..e36a58d 100644 --- a/04_Tablet-Quiz/app/index.html +++ b/04_Tablet-Quiz/app/index.html @@ -93,6 +93,21 @@ .gateReq.ok { background:#f1faf4; color:#177a44; border:1px solid #cde6d6; } .gateReq.bad { background:#fdf3f3; color:#b5202a; border:1px solid #f0c9c9; } .choice[disabled] { opacity:.45; cursor:default; } + /* Rollen-Glossar als Overlay von links (Header-Button đ„ Rollen) */ + #rollenList { + position: fixed; top:0; left:0; bottom:0; width: 330px; max-width: 88vw; + background: var(--panel); border-right:1px solid var(--line); padding: 14px; + overflow:auto; z-index: 30; + transform: translateX(-100%); transition: transform .22s ease; + box-shadow: 0 0 40px rgba(20,30,50,.18); + } + body.rollenOpen #rollenList { transform: translateX(0); } + body.rollenOpen .navBackdrop { opacity:1; pointer-events:auto; } + body:not(.runMode) #rollenList { display:none; } + body:not(.runMode) #rollenBtn { display:none; } + #rollenList h3 { font-size:11px; text-transform:uppercase; letter-spacing:.8px; color:var(--muted); margin:14px 0 4px; } + .rolleItem { display:flex; align-items:center; gap:10px; padding:6px 4px; font-size:13px; } + .rolleItem .rDot { width:12px; height:12px; border-radius:50%; flex:none; border:1px solid rgba(0,0,0,.18); } .navTop { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; } .navTop b { font-size:13px; text-transform:uppercase; letter-spacing:.6px; color:var(--muted); } .navTop button { border:none; background:none; font-size:20px; line-height:1; color:var(--muted); cursor:pointer; padding:4px 8px; } @@ -270,6 +285,7 @@
+ @@ -279,6 +295,7 @@Hinweis: Die SOR ist ein Gremium (SPM · Betrieb · Support-Manager · Service Owner âŠ), das am Gate-Puck zusammenkommt â keine Einzelfigur.
`; + $("#rollenList").innerHTML = html; + const c = $("#rollenClose"); if(c) c.onclick = ()=> document.body.classList.remove("rollenOpen"); +} + /* ====================== VIEW DISPATCH ====================== */ function draw(){ document.body.classList.toggle("runMode", S.view==="run"); - if(S.view!=="run"){ document.body.classList.remove("navOpen"); document.body.classList.remove("akteOpen"); } + if(S.view!=="run"){ document.body.classList.remove("navOpen","akteOpen","rollenOpen"); } renderCardBadge(); if(S.view==="deck") return renderDeck(); if(S.view==="classify") return renderClassify(); @@ -1286,6 +1329,7 @@ function raciLegendHtml(){ function renderRun(){ renderList(); renderAkte(); + renderRollen(); const st = cur(); const ph = PHASEN[st.phase]; const chip = st.typ==="gate" @@ -1319,13 +1363,13 @@ function activitySteps(st){ { label:"Diskussion", frage:`Diskutiert gemeinsam: Was fĂ€llt alles unter â${st.name}"? Was stellt ihr euch darunter vor? Nennt Beispiele.`, auf:`${st.beschreibung}
Das sind die âMacher" der AktivitĂ€t. Wer dafĂŒr geradesteht (A) sowie beratend (C) bzw. informiert (I) ist, klĂ€rt Schritt 3.
` }, { label:"RACI", - frage:`KlĂ€rt die RACI: Wer ist R, A, C, I? Sortiert die Figuren ins Aktiv-Feld (R·A·C·I).`, + frage:`ErgĂ€nzt nun die vollstĂ€ndige RACI: Wer ist Accountable (trĂ€gt die Verantwortung), wer Consulted, wer Informed â zusĂ€tzlich zu den Responsible aus Schritt 2? Sortiert die Figuren ins Aktiv-Feld (R·A·C·I).`, legend: raciLegendHtml(), - auf:`${st.artefakt}
` } @@ -1544,9 +1588,11 @@ function renderEnd(){ /* ====================== INIT ====================== */ (function init(){ $("#resetBtn").onclick = ()=>{ if(confirm("Neue Action Card ziehen und Durchlauf zurĂŒcksetzen?")){ S=defaultState(); save(); draw(); } }; - $("#stationsBtn").onclick = ()=>{ document.body.classList.remove("akteOpen"); document.body.classList.toggle("navOpen"); }; - $("#akteBtn").onclick = ()=>{ document.body.classList.remove("navOpen"); document.body.classList.toggle("akteOpen"); }; - $("#navBackdrop").onclick = ()=>{ document.body.classList.remove("navOpen"); document.body.classList.remove("akteOpen"); }; + const closeOverlays = ()=> document.body.classList.remove("navOpen","akteOpen","rollenOpen"); + $("#stationsBtn").onclick = ()=>{ const o=document.body.classList.contains("navOpen"); closeOverlays(); if(!o) document.body.classList.add("navOpen"); }; + $("#akteBtn").onclick = ()=>{ const o=document.body.classList.contains("akteOpen"); closeOverlays(); if(!o) document.body.classList.add("akteOpen"); }; + $("#rollenBtn").onclick = ()=>{ const o=document.body.classList.contains("rollenOpen"); closeOverlays(); if(!o) document.body.classList.add("rollenOpen"); }; + $("#navBackdrop").onclick = closeOverlays; draw(); })(); diff --git a/04_Tablet-Quiz/app/sw.js b/04_Tablet-Quiz/app/sw.js index 8368c3b..868fee2 100644 --- a/04_Tablet-Quiz/app/sw.js +++ b/04_Tablet-Quiz/app/sw.js @@ -1,5 +1,5 @@ /* Service Worker â SLC-Workshop Companion (App-Shell, offline-first) */ -const CACHE = "slc-companion-v12"; +const CACHE = "slc-companion-v14"; const SHELL = ["./", "index.html", "manifest.webmanifest", "icon.svg"]; // Action-Card-Grafiken (cards/s