Compare commits
4 Commits
21a7359057
...
f611bdcd7e
| Author | SHA1 | Date | |
|---|---|---|---|
| f611bdcd7e | |||
| f7c846c85c | |||
| a74df51201 | |||
| 42650ca351 |
@@ -17,7 +17,7 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 2rem;
|
padding: 2rem;
|
||||||
padding-top: calc(70px + 2rem);
|
padding-top: calc(70px + 2rem);
|
||||||
padding-bottom: calc(52px + 2rem);
|
padding-bottom: calc(84px + 2rem);
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: opacity 0.4s ease;
|
transition: opacity 0.4s ease;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
@@ -38,56 +38,58 @@
|
|||||||
transition: width 0.4s ease;
|
transition: width 0.4s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PHASE INDICATOR */
|
|
||||||
.phase-badge {
|
|
||||||
position: fixed;
|
|
||||||
top: 80px; right: 16px;
|
|
||||||
font-family: 'Syne', sans-serif;
|
|
||||||
font-size: 11px;
|
|
||||||
font-weight: 700;
|
|
||||||
letter-spacing: 0.08em;
|
|
||||||
text-transform: uppercase;
|
|
||||||
padding: 4px 12px;
|
|
||||||
border-radius: 20px;
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* BOTTOM BAR */
|
/* BOTTOM BAR */
|
||||||
.bottom-bar {
|
.bottom-bar {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 0; left: 0; right: 0;
|
bottom: 0; left: 0; right: 0;
|
||||||
height: 52px;
|
height: 84px;
|
||||||
background: rgba(250, 238, 218, 0.98);
|
background: rgba(250, 238, 218, 0.98);
|
||||||
border-top: 2px solid var(--amber);
|
border-top: 2px solid var(--amber);
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: center;
|
||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
z-index: 100;
|
z-index: 100;
|
||||||
backdrop-filter: blur(10px);
|
backdrop-filter: blur(10px);
|
||||||
}
|
}
|
||||||
|
.bottom-actions {
|
||||||
/* SLIDE NAV */
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 12px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.footer-btn {
|
||||||
|
font-family: 'Syne', sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 600;
|
||||||
|
padding: 11px 24px;
|
||||||
|
border-radius: 40px;
|
||||||
|
border: 1.5px solid var(--amber);
|
||||||
|
cursor: pointer;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
line-height: 1;
|
||||||
|
transition: all 0.2s;
|
||||||
|
}
|
||||||
|
.footer-btn:hover { transform: translateY(-1px); }
|
||||||
|
.footer-btn:active { transform: scale(0.98); }
|
||||||
|
.footer-btn.is-primary { background: var(--amber); color: #fff; }
|
||||||
|
.footer-btn.is-primary:hover { background: var(--amber-dark); }
|
||||||
|
.footer-btn.is-secondary { background: transparent; color: var(--amber-dark); }
|
||||||
|
.footer-btn.is-secondary:hover { background: rgba(186,117,23,0.08); }
|
||||||
.slide-counter {
|
.slide-counter {
|
||||||
|
position: absolute;
|
||||||
|
left: 20px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-family: 'Syne', sans-serif;
|
font-family: 'Syne', sans-serif;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: var(--amber-dark);
|
color: var(--amber-dark);
|
||||||
}
|
}
|
||||||
|
@media (max-width: 560px) {
|
||||||
/* BACK BUTTON */
|
.slide-counter { display: none; }
|
||||||
.back-btn {
|
|
||||||
background: none;
|
|
||||||
border: 0.5px solid var(--amber);
|
|
||||||
border-radius: 20px;
|
|
||||||
padding: 6px 16px;
|
|
||||||
font-size: 12px;
|
|
||||||
color: var(--amber-dark);
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.2s;
|
|
||||||
font-family: 'DM Sans', sans-serif;
|
|
||||||
}
|
}
|
||||||
.back-btn:hover { background: rgba(186,117,23,0.08); }
|
|
||||||
|
|
||||||
/* FORMATEUR SELECTOR */
|
/* FORMATEUR SELECTOR */
|
||||||
.formateur-btn {
|
.formateur-btn {
|
||||||
@@ -581,7 +583,7 @@
|
|||||||
gap: 12px;
|
gap: 12px;
|
||||||
max-width: 640px;
|
max-width: 640px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 1.5rem 0;
|
margin: 1.5rem auto;
|
||||||
}
|
}
|
||||||
.final-card {
|
.final-card {
|
||||||
background: white;
|
background: white;
|
||||||
@@ -613,7 +615,7 @@
|
|||||||
/* SCROLLABLE AREA */
|
/* SCROLLABLE AREA */
|
||||||
.scroll-area {
|
.scroll-area {
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
max-height: calc(100vh - 232px);
|
max-height: calc(100vh - 200px);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -654,13 +656,14 @@
|
|||||||
<!-- Progress bar -->
|
<!-- Progress bar -->
|
||||||
<div class="progress-bar"><div class="progress-fill" id="progressFill"></div></div>
|
<div class="progress-bar"><div class="progress-fill" id="progressFill"></div></div>
|
||||||
|
|
||||||
<!-- Phase badge -->
|
|
||||||
<div class="phase-badge" id="phaseBadge" style="display:none"></div>
|
|
||||||
|
|
||||||
<!-- Bottom bar -->
|
<!-- Bottom bar -->
|
||||||
<div class="bottom-bar" id="bottomBar" style="display:none;">
|
<div class="bottom-bar" id="bottomBar" style="display:none;">
|
||||||
<button class="back-btn" id="backBtn" onclick="goBack()" style="display:none;">← Retour</button>
|
|
||||||
<div class="slide-counter" id="slideCounter"></div>
|
<div class="slide-counter" id="slideCounter"></div>
|
||||||
|
<div class="bottom-actions">
|
||||||
|
<button class="footer-btn is-secondary" id="backBtn" onclick="goBack()" style="display:none;">← Retour</button>
|
||||||
|
<button class="footer-btn is-secondary" id="footerHintBtn" onclick="showHintCurrent()" style="display:none;">💡 Besoin d'aide ?</button>
|
||||||
|
<button class="footer-btn is-primary" id="footerNextBtn" onclick="goNext()" style="display:none;">Étape suivante →</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Modal overlay -->
|
<!-- Modal overlay -->
|
||||||
@@ -673,45 +676,41 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ======================== SLIDE 0 — IDENTIFICATION ======================== -->
|
<!-- ======================== SLIDE 0 — ACCUEIL ======================== -->
|
||||||
<div class="slide active fade-in" id="slide-0">
|
<div class="slide active fade-in" id="slide-0">
|
||||||
<div class="deco-circle" style="width:320px;height:320px;background:var(--amber-light);top:-80px;left:-80px;opacity:0.5;"></div>
|
<div class="deco-circle" style="width:400px;height:400px;background:var(--amber-light);top:-100px;right:-80px;opacity:0.6;"></div>
|
||||||
<div style="text-align:center; z-index:1; width:100%;">
|
<div class="deco-circle" style="width:200px;height:200px;background:var(--amber-light);bottom:60px;left:-60px;opacity:0.5;"></div>
|
||||||
<div class="section-tag" style="background:var(--amber-light);color:var(--amber-dark);">Avant de commencer</div>
|
<div style="text-align:center;">
|
||||||
<div class="slide-title">Identification du groupe</div>
|
<div class="hero-label">Certibiocide — Travaux pratiques</div>
|
||||||
<p class="slide-intro" style="margin:0.5rem auto 0;max-width:420px;">Ces informations permettront au formateur de retrouver vos réponses.</p>
|
<div class="hero-title">Étude de cas<br>Nuisibles</div>
|
||||||
<div class="identity-card">
|
<p class="hero-sub">Votre mission, si vous l'acceptez : maîtriser l'identification, le traitement et la sécurité face aux nuisibles.</p>
|
||||||
<div class="identity-title">👥 Identification du groupe</div>
|
<button class="btn btn-amber" onclick="goTo(1)">Démarrer la mission →</button>
|
||||||
<div class="identity-fields">
|
|
||||||
<input type="text" id="inputNom" placeholder="Nom du groupe / stagiaires (ex : Groupe 3 — Dupont / Martin)" autocomplete="off">
|
|
||||||
<input type="date" id="inputDate">
|
|
||||||
<div class="formateur-label">Formateur de la session</div>
|
|
||||||
<div class="formateur-row">
|
|
||||||
<button type="button" class="formateur-btn" id="btnNathan" onclick="selectFormateur('Nathan')">Nathan</button>
|
|
||||||
<button type="button" class="formateur-btn" id="btnGauthier" onclick="selectFormateur('Gauthier')">Gauthier</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="idError" style="color:var(--coral);font-size:13px;margin-bottom:0.5rem;display:none;">Merci de renseigner au moins le nom du groupe.</div>
|
|
||||||
<div style="display:flex;gap:12px;justify-content:center;flex-wrap:wrap;">
|
|
||||||
<button class="btn btn-teal" onclick="confirmIdentite()">Continuer →</button>
|
|
||||||
<a href="corriger-exercice.html?exo=tp" class="btn btn-outline btn-teal">Corriger</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ======================== SLIDE 1 — ACCUEIL ======================== -->
|
<!-- ======================== SLIDE 1 — CONTEXTE & IDENTIFICATION ======================== -->
|
||||||
<div class="slide" id="slide-1">
|
<div class="slide" id="slide-1">
|
||||||
<div class="deco-circle" style="width:400px;height:400px;background:var(--amber-light);top:-100px;right:-80px;opacity:0.6;"></div>
|
<div class="deco-circle" style="width:300px;height:300px;background:var(--amber-light);top:-60px;left:-60px;opacity:0.4;"></div>
|
||||||
<div class="deco-circle" style="width:200px;height:200px;background:var(--amber-light);bottom:60px;left:-60px;opacity:0.5;"></div>
|
|
||||||
<div class="section-tag" style="background:var(--amber-light);color:var(--amber-dark);">Avant de commencer</div>
|
<div class="section-tag" style="background:var(--amber-light);color:var(--amber-dark);">Avant de commencer</div>
|
||||||
<div class="slide-title">Certibiocide — Travaux pratiques</div>
|
<div class="slide-title">Contexte & accès</div>
|
||||||
<p class="slide-intro">Votre mission, si vous l'acceptez : maîtriser l'identification, le traitement et la sécurité face aux nuisibles.</p>
|
<p class="slide-intro">3 travaux pratiques vous attendent : protocole d'intervention, recherche produit sur BioCID, puis analyse de risques. Ces informations permettront au formateur de retrouver vos réponses.</p>
|
||||||
<div class="info-card">
|
<div class="info-card" style="max-width:620px;">
|
||||||
<span>🎯</span>
|
<span>🎯</span>
|
||||||
<div>3 travaux pratiques vous attendent : définir un <strong>protocole d'intervention</strong>, trouver votre <strong>produit sur BioCID</strong>, puis réaliser l'<strong>analyse de risques</strong>.</div>
|
<div>Vous allez définir un <strong>protocole d'intervention</strong>, trouver votre <strong>produit sur BioCID</strong>, puis réaliser l'<strong>analyse de risques</strong>.</div>
|
||||||
|
</div>
|
||||||
|
<div class="identity-card" style="max-width:620px;margin-top:0.5rem;">
|
||||||
|
<div class="identity-title">👥 Identification du groupe</div>
|
||||||
|
<div class="identity-fields">
|
||||||
|
<input type="text" id="inputNom" placeholder="Nom du groupe / stagiaires (ex : Groupe 3 — Dupont / Martin)" autocomplete="off">
|
||||||
|
<input type="date" id="inputDate">
|
||||||
|
<div class="formateur-label">Formateur de la session</div>
|
||||||
|
<div class="formateur-row">
|
||||||
|
<button type="button" class="formateur-btn" id="btnNathan" onclick="selectFormateur('Nathan')">Nathan</button>
|
||||||
|
<button type="button" class="formateur-btn" id="btnGauthier" onclick="selectFormateur('Gauthier')">Gauthier</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="idError" style="color:var(--coral);font-size:13px;margin-top:8px;display:none;">Merci de renseigner au moins le nom du groupe.</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-teal" style="margin-top:1.5rem;" onclick="goTo(2)">Démarrer la mission →</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ======================== SLIDE 2 — CHOIX DU CAS ======================== -->
|
<!-- ======================== SLIDE 2 — CHOIX DU CAS ======================== -->
|
||||||
@@ -751,9 +750,6 @@
|
|||||||
<div class="case-sub">Camping</div>
|
<div class="case-sub">Camping</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="actions-row">
|
|
||||||
<button class="btn btn-teal" id="btnConfirmCase" onclick="goTo(3)" style="display:none">Confirmer le choix →</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ======================== SLIDE 3 — CONSIGNES ======================== -->
|
<!-- ======================== SLIDE 3 — CONSIGNES ======================== -->
|
||||||
@@ -781,7 +777,6 @@
|
|||||||
<span>💡</span>
|
<span>💡</span>
|
||||||
<div>À tout moment, cliquez sur <strong>« Besoin d'aide ? »</strong> pour accéder à un indice. Le formateur corrigera à l'oral en fin de séance.</div>
|
<div>À tout moment, cliquez sur <strong>« Besoin d'aide ? »</strong> pour accéder à un indice. Le formateur corrigera à l'oral en fin de séance.</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-teal" onclick="goTo(4)">Commencer le TP 1 →</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ======================== SLIDE 4 — TP1 INTRO ======================== -->
|
<!-- ======================== SLIDE 4 — TP1 INTRO ======================== -->
|
||||||
@@ -799,7 +794,6 @@
|
|||||||
<div class="step-pill">2. Intervention</div>
|
<div class="step-pill">2. Intervention</div>
|
||||||
<div class="step-pill">3. Évaluation</div>
|
<div class="step-pill">3. Évaluation</div>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-amber" onclick="goTo(5)">Commencer →</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ======================== SLIDE 5 — TP1 PREVENTION ======================== -->
|
<!-- ======================== SLIDE 5 — TP1 PREVENTION ======================== -->
|
||||||
@@ -840,10 +834,6 @@
|
|||||||
<textarea class="answer-field" id="ans_prevention_4" placeholder="Votre réponse…" data-question="Éléments observés / preuve de présence du nuisible"></textarea>
|
<textarea class="answer-field" id="ans_prevention_4" placeholder="Votre réponse…" data-question="Éléments observés / preuve de présence du nuisible"></textarea>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="actions-row">
|
|
||||||
<button class="hint-btn" onclick="showHint('prevention')">💡 Besoin d'aide ?</button>
|
|
||||||
<button class="btn btn-amber" onclick="goTo(6)">Étape suivante →</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -878,10 +868,6 @@
|
|||||||
<textarea class="answer-field" id="ans_intervention_3" placeholder="Votre réponse…" data-question="Type de produit (TP) et mode de traitement"></textarea>
|
<textarea class="answer-field" id="ans_intervention_3" placeholder="Votre réponse…" data-question="Type de produit (TP) et mode de traitement"></textarea>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="actions-row">
|
|
||||||
<button class="hint-btn" onclick="showHint('intervention')">💡 Besoin d'aide ?</button>
|
|
||||||
<button class="btn btn-amber" onclick="goTo(7)">Étape suivante →</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -912,10 +898,6 @@
|
|||||||
<div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:680px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.75rem 0;">
|
<div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:680px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.75rem 0;">
|
||||||
✅ <strong>TP 1 terminé !</strong> Préparez-vous à identifier le produit adapté à votre cas sur biocid-anses.fr.
|
✅ <strong>TP 1 terminé !</strong> Préparez-vous à identifier le produit adapté à votre cas sur biocid-anses.fr.
|
||||||
</div>
|
</div>
|
||||||
<div class="actions-row">
|
|
||||||
<button class="hint-btn" onclick="showHint('evaluation')">💡 Besoin d'aide ?</button>
|
|
||||||
<button class="btn btn-coral" onclick="goTo(8)">Passer au TP 2 →</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -937,7 +919,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<a href="https://biocid-anses.fr" target="_blank" class="resource-link">Ouvrir le site ↗</a>
|
<a href="https://biocid-anses.fr" target="_blank" class="resource-link">Ouvrir le site ↗</a>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-coral" onclick="goTo(9)">Commencer →</button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ======================== SLIDE 9 — TP2 FDS & AMM ======================== -->
|
<!-- ======================== SLIDE 9 — TP2 FDS & AMM ======================== -->
|
||||||
@@ -978,10 +959,6 @@
|
|||||||
<textarea class="answer-field" id="ans_fds_4" placeholder="Votre réponse…" data-question="Risques pour la santé"></textarea>
|
<textarea class="answer-field" id="ans_fds_4" placeholder="Votre réponse…" data-question="Risques pour la santé"></textarea>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="actions-row">
|
|
||||||
<button class="hint-btn" onclick="showHint('fds')">💡 Besoin d'aide ?</button>
|
|
||||||
<button class="btn btn-coral" onclick="goTo(10)">Partie suivante →</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -1026,10 +1003,6 @@
|
|||||||
<div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:680px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.75rem 0;">
|
<div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:680px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.75rem 0;">
|
||||||
✅ <strong>TP 2 terminé !</strong> Passez maintenant à l'analyse de risques complète.
|
✅ <strong>TP 2 terminé !</strong> Passez maintenant à l'analyse de risques complète.
|
||||||
</div>
|
</div>
|
||||||
<div class="actions-row">
|
|
||||||
<button class="hint-btn" onclick="showHint('epi')">💡 Besoin d'aide ?</button>
|
|
||||||
<button class="btn btn-purple" onclick="goTo(11)">Passer au TP 3 →</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -1046,9 +1019,6 @@
|
|||||||
<div class="pyr-level" style="width:320px;background:#D85A30;">Communication</div>
|
<div class="pyr-level" style="width:320px;background:#D85A30;">Communication</div>
|
||||||
<div class="pyr-level" style="width:360px;background:#BA7517;">EPI (dernier recours)</div>
|
<div class="pyr-level" style="width:360px;background:#BA7517;">EPI (dernier recours)</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="actions-row" style="margin-top:1rem;">
|
|
||||||
<button class="btn btn-purple" onclick="goTo(12)">Remplir le tableau →</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- ======================== SLIDE 12 — TP3 TABLEAU ======================== -->
|
<!-- ======================== SLIDE 12 — TP3 TABLEAU ======================== -->
|
||||||
@@ -1117,10 +1087,6 @@
|
|||||||
<div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:780px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.25rem 0;">
|
<div style="background:var(--amber-light);border-radius:12px;padding:14px 18px;max-width:780px;width:100%;font-size:13px;color:var(--amber-dark);margin:0.25rem 0;">
|
||||||
✅ <strong>TP 3 terminé !</strong> Présentez vos réponses au formateur pour la correction.
|
✅ <strong>TP 3 terminé !</strong> Présentez vos réponses au formateur pour la correction.
|
||||||
</div>
|
</div>
|
||||||
<div class="actions-row">
|
|
||||||
<button class="hint-btn" onclick="showHint('analyse')">💡 Aide générale</button>
|
|
||||||
<button class="btn btn-blue" onclick="goTo(13)">Terminer la mission →</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -1150,15 +1116,10 @@
|
|||||||
<div class="final-card-sub">Analyse de risques</div>
|
<div class="final-card-sub">Analyse de risques</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="submit-zone">
|
<div class="actions-row">
|
||||||
<div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap;">
|
<button class="btn btn-amber" onclick="exporterPDF()">⬇ Télécharger mes réponses (PDF)</button>
|
||||||
<button class="btn btn-teal" onclick="exporterPDF()">⬇ Télécharger en PDF</button>
|
<a href="corriger-exercice.html?exo=tp" class="btn btn-outline btn-teal">✔ Corriger un rendu</a>
|
||||||
<a href="corriger-exercice.html?exo=tp" class="btn btn-outline btn-teal">Corriger</a>
|
<button class="btn btn-outline btn-teal" onclick="restartAll()">↺ Recommencer</button>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:0.75rem;">
|
|
||||||
<a href="https://biocid-anses.fr" target="_blank" class="btn btn-outline btn-teal" style="font-size:13px;padding:10px 20px;">biocid-anses.fr ↗</a>
|
|
||||||
<button class="btn btn-teal" onclick="restartAll()">↺ Recommencer depuis le début</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1171,6 +1132,22 @@ const totalSlides = 13;
|
|||||||
const selectedCase = { key: '', icon: '', title: '', desc: '' };
|
const selectedCase = { key: '', icon: '', title: '', desc: '' };
|
||||||
const stagiaire = { nom: '', date: '', formateur: '' };
|
const stagiaire = { nom: '', date: '', formateur: '' };
|
||||||
|
|
||||||
|
// Configuration des boutons du footer par slide (modèle BioCID)
|
||||||
|
const slideConfig = {
|
||||||
|
1: { next: 2, nextLabel: 'Continuer →' },
|
||||||
|
2: { next: 3, nextLabel: 'Confirmer le choix →' },
|
||||||
|
3: { next: 4, nextLabel: 'Commencer le TP 1 →' },
|
||||||
|
4: { next: 5, nextLabel: 'Commencer →' },
|
||||||
|
5: { next: 6, nextLabel: 'Étape suivante →', hint: 'prevention' },
|
||||||
|
6: { next: 7, nextLabel: 'Étape suivante →', hint: 'intervention' },
|
||||||
|
7: { next: 8, nextLabel: 'Passer au TP 2 →', hint: 'evaluation' },
|
||||||
|
8: { next: 9, nextLabel: 'Commencer →' },
|
||||||
|
9: { next: 10, nextLabel: 'Partie suivante →', hint: 'fds' },
|
||||||
|
10: { next: 11, nextLabel: 'Passer au TP 3 →', hint: 'epi' },
|
||||||
|
11: { next: 12, nextLabel: 'Remplir le tableau →' },
|
||||||
|
12: { next: 13, nextLabel: 'Terminer la mission →', hint: 'analyse' }
|
||||||
|
};
|
||||||
|
|
||||||
const hints = {
|
const hints = {
|
||||||
prevention: {
|
prevention: {
|
||||||
icon: '💡',
|
icon: '💡',
|
||||||
@@ -1257,11 +1234,28 @@ function goTo(n) {
|
|||||||
currentSlide = n;
|
currentSlide = n;
|
||||||
next.style.display = 'flex';
|
next.style.display = 'flex';
|
||||||
setTimeout(() => { next.classList.add('active', 'fade-in'); }, 10);
|
setTimeout(() => { next.classList.add('active', 'fade-in'); }, 10);
|
||||||
|
const sa = next.querySelector('.scroll-area');
|
||||||
|
if (sa) sa.scrollTop = 0;
|
||||||
if (n === 13) setTimeout(launchConfetti, 200);
|
if (n === 13) setTimeout(launchConfetti, 200);
|
||||||
updateUI();
|
updateUI();
|
||||||
updateCaseBanners();
|
updateCaseBanners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function goNext() {
|
||||||
|
const cfg = slideConfig[currentSlide];
|
||||||
|
if (!cfg || cfg.next == null) return;
|
||||||
|
// Slide 1 : validation du nom du groupe avant de continuer
|
||||||
|
if (currentSlide === 1) { confirmIdentite(); return; }
|
||||||
|
// Slide 2 : un cas doit être sélectionné
|
||||||
|
if (currentSlide === 2 && !selectedCase.key) return;
|
||||||
|
goTo(cfg.next);
|
||||||
|
}
|
||||||
|
|
||||||
|
function showHintCurrent() {
|
||||||
|
const cfg = slideConfig[currentSlide];
|
||||||
|
if (cfg && cfg.hint) showHint(cfg.hint);
|
||||||
|
}
|
||||||
|
|
||||||
function goBack() {
|
function goBack() {
|
||||||
if (history.length === 0) return;
|
if (history.length === 0) return;
|
||||||
const prev = history.pop();
|
const prev = history.pop();
|
||||||
@@ -1286,26 +1280,19 @@ function updateUI() {
|
|||||||
if (bottomBar) bottomBar.style.display = currentSlide === 0 ? 'none' : 'flex';
|
if (bottomBar) bottomBar.style.display = currentSlide === 0 ? 'none' : 'flex';
|
||||||
|
|
||||||
const backBtn = document.getElementById('backBtn');
|
const backBtn = document.getElementById('backBtn');
|
||||||
backBtn.style.display = history.length > 0 ? 'block' : 'none';
|
backBtn.style.display = history.length > 0 ? 'inline-flex' : 'none';
|
||||||
|
|
||||||
const badge = document.getElementById('phaseBadge');
|
const cfg = slideConfig[currentSlide] || {};
|
||||||
if (currentSlide === 0 || currentSlide === 1 || currentSlide === 2 || currentSlide === 3 || currentSlide === 13) {
|
const hintBtn = document.getElementById('footerHintBtn');
|
||||||
badge.style.display = 'none';
|
const nextBtn = document.getElementById('footerNextBtn');
|
||||||
} else if (currentSlide >= 4 && currentSlide <= 7) {
|
hintBtn.style.display = cfg.hint ? 'inline-flex' : 'none';
|
||||||
badge.style.display = 'block';
|
if (cfg.next != null) {
|
||||||
badge.style.background = 'var(--amber-light)';
|
// Slide 2 : le bouton n'apparaît qu'une fois le cas choisi
|
||||||
badge.style.color = 'var(--amber-dark)';
|
const gated = currentSlide === 2 && !selectedCase.key;
|
||||||
badge.textContent = 'TP 1 — Protocole';
|
nextBtn.style.display = gated ? 'none' : 'inline-flex';
|
||||||
} else if (currentSlide >= 8 && currentSlide <= 10) {
|
nextBtn.textContent = cfg.nextLabel;
|
||||||
badge.style.display = 'block';
|
} else {
|
||||||
badge.style.background = 'var(--coral-light)';
|
nextBtn.style.display = 'none';
|
||||||
badge.style.color = 'var(--coral)';
|
|
||||||
badge.textContent = 'TP 2 — Produit';
|
|
||||||
} else if (currentSlide >= 11 && currentSlide <= 12) {
|
|
||||||
badge.style.display = 'block';
|
|
||||||
badge.style.background = 'var(--amber-light)';
|
|
||||||
badge.style.color = 'var(--amber-dark)';
|
|
||||||
badge.textContent = 'TP 3 — Risques';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1317,7 +1304,7 @@ function selectCase(key, icon, title, desc) {
|
|||||||
selectedCase.desc = desc;
|
selectedCase.desc = desc;
|
||||||
document.querySelectorAll('.case-card').forEach(c => c.classList.remove('selected'));
|
document.querySelectorAll('.case-card').forEach(c => c.classList.remove('selected'));
|
||||||
event.currentTarget.classList.add('selected');
|
event.currentTarget.classList.add('selected');
|
||||||
document.getElementById('btnConfirmCase').style.display = 'inline-flex';
|
updateUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateCaseBanners() {
|
function updateCaseBanners() {
|
||||||
@@ -1387,7 +1374,7 @@ function confirmIdentite() {
|
|||||||
document.getElementById('idError').style.display = 'none';
|
document.getElementById('idError').style.display = 'none';
|
||||||
stagiaire.nom = nom;
|
stagiaire.nom = nom;
|
||||||
stagiaire.date = date || new Date().toISOString().slice(0, 10);
|
stagiaire.date = date || new Date().toISOString().slice(0, 10);
|
||||||
goTo(1);
|
goTo(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ======================== TABLEAU TP3 — LIGNES DYNAMIQUES ======================== */
|
/* ======================== TABLEAU TP3 — LIGNES DYNAMIQUES ======================== */
|
||||||
|
|||||||
Reference in New Issue
Block a user