Update templates/index.html
Browse files- templates/index.html +121 -195
templates/index.html
CHANGED
@@ -236,70 +236,69 @@
|
|
236 |
.results-container {
|
237 |
margin-top: 24px;
|
238 |
}
|
239 |
-
|
240 |
-
/* Styles pour
|
241 |
-
.flashcard {
|
242 |
-
background: var(--white);
|
243 |
-
border-radius: 20px;
|
244 |
-
padding: 24px;
|
245 |
-
margin-bottom: 16px;
|
246 |
-
box-shadow: var(--shadow);
|
247 |
-
border-left: 4px solid var(--primary-blue);
|
248 |
-
cursor: pointer;
|
249 |
-
transition: all 0.3s ease;
|
250 |
-
position: relative;
|
251 |
-
min-height: 120px;
|
252 |
perspective: 1000px;
|
|
|
253 |
}
|
254 |
|
255 |
-
.flashcard
|
256 |
-
transform: translateY(-2px);
|
257 |
-
box-shadow: var(--shadow-lg);
|
258 |
-
}
|
259 |
-
|
260 |
-
.flashcard-content {
|
261 |
position: relative;
|
262 |
-
|
263 |
-
height: 100%;
|
264 |
-
transition: transform 0.6s;
|
265 |
transform-style: preserve-3d;
|
|
|
|
|
266 |
}
|
267 |
|
268 |
-
.flashcard.flipped
|
269 |
transform: rotateY(180deg);
|
270 |
}
|
271 |
|
272 |
.flashcard-front, .flashcard-back {
|
273 |
position: absolute;
|
274 |
width: 100%;
|
|
|
|
|
275 |
backface-visibility: hidden;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
276 |
}
|
277 |
|
278 |
.flashcard-back {
|
279 |
transform: rotateY(180deg);
|
280 |
-
|
281 |
-
border-radius: 12px;
|
282 |
-
padding: 16px;
|
283 |
-
border: 1px solid var(--gray-100);
|
284 |
}
|
285 |
-
|
286 |
.flashcard h3 {
|
287 |
color: var(--primary-blue);
|
288 |
margin-bottom: 12px;
|
289 |
font-size: 1.1rem;
|
290 |
font-weight: 600;
|
|
|
|
|
|
|
|
|
|
|
|
|
291 |
}
|
292 |
|
293 |
-
.
|
|
|
294 |
position: absolute;
|
295 |
-
bottom:
|
296 |
-
right: 12px;
|
297 |
font-size: 0.8rem;
|
298 |
-
color: var(--gray-
|
299 |
-
|
300 |
}
|
301 |
|
302 |
-
/* Styles pour les quiz */
|
303 |
.quiz-question {
|
304 |
background: var(--white);
|
305 |
border-radius: 20px;
|
@@ -313,12 +312,12 @@
|
|
313 |
.quiz-question:hover {
|
314 |
transform: translateX(4px);
|
315 |
}
|
316 |
-
|
317 |
.quiz-question h3 {
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
}
|
323 |
|
324 |
.quiz-options {
|
@@ -333,43 +332,33 @@
|
|
333 |
cursor: pointer;
|
334 |
transition: all 0.3s ease;
|
335 |
background: var(--white);
|
336 |
-
position: relative;
|
337 |
}
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
}
|
344 |
|
345 |
-
.quiz-option
|
346 |
-
border-color: var(--
|
347 |
background: var(--extra-light-blue);
|
348 |
}
|
349 |
|
350 |
.quiz-option.correct {
|
351 |
border-color: var(--success);
|
352 |
background: #f0fdf4;
|
|
|
|
|
353 |
}
|
354 |
|
355 |
.quiz-option.incorrect {
|
356 |
border-color: var(--error);
|
357 |
background: #fef2f2;
|
|
|
358 |
}
|
359 |
-
|
360 |
-
.quiz-option.
|
361 |
-
cursor: not-allowed;
|
362 |
-
opacity: 0.7;
|
363 |
-
}
|
364 |
-
|
365 |
-
.quiz-option i {
|
366 |
-
margin-right: 8px;
|
367 |
-
opacity: 0;
|
368 |
-
transition: opacity 0.3s ease;
|
369 |
-
}
|
370 |
-
|
371 |
-
.quiz-option.correct i.fa-check,
|
372 |
-
.quiz-option.incorrect i.fa-times {
|
373 |
opacity: 1;
|
374 |
}
|
375 |
|
@@ -379,23 +368,6 @@
|
|
379 |
background: var(--extra-light-blue);
|
380 |
border-radius: 12px;
|
381 |
border-left: 4px solid var(--primary-blue);
|
382 |
-
display: none;
|
383 |
-
}
|
384 |
-
|
385 |
-
.quiz-explanation.show {
|
386 |
-
display: block;
|
387 |
-
animation: slideDown 0.3s ease-out;
|
388 |
-
}
|
389 |
-
|
390 |
-
@keyframes slideDown {
|
391 |
-
from {
|
392 |
-
opacity: 0;
|
393 |
-
transform: translateY(-10px);
|
394 |
-
}
|
395 |
-
to {
|
396 |
-
opacity: 1;
|
397 |
-
transform: translateY(0);
|
398 |
-
}
|
399 |
}
|
400 |
|
401 |
.error-message {
|
@@ -468,7 +440,7 @@
|
|
468 |
|
469 |
/* Animations d'entrée */
|
470 |
.fade-in {
|
471 |
-
animation: fadeIn 0.5s ease-out;
|
472 |
}
|
473 |
|
474 |
@keyframes fadeIn {
|
@@ -578,44 +550,6 @@
|
|
578 |
const generateBtn = document.getElementById('generateBtn');
|
579 |
const resultsContainer = document.getElementById('results');
|
580 |
|
581 |
-
// Données d'exemple pour la démonstration
|
582 |
-
const sampleData = {
|
583 |
-
flashcards: [
|
584 |
-
{
|
585 |
-
question: "Qu'est-ce que la photosynthèse ?",
|
586 |
-
answer: "La photosynthèse est le processus par lequel les plantes vertes utilisent la lumière du soleil pour convertir le dioxyde de carbone et l'eau en glucose et en oxygène."
|
587 |
-
},
|
588 |
-
{
|
589 |
-
question: "Quelle est la formule chimique de l'eau ?",
|
590 |
-
answer: "H2O - deux atomes d'hydrogène liés à un atome d'oxygène."
|
591 |
-
},
|
592 |
-
{
|
593 |
-
question: "Qui a développé la théorie de la relativité ?",
|
594 |
-
answer: "Albert Einstein a développé la théorie de la relativité restreinte (1905) et générale (1915)."
|
595 |
-
}
|
596 |
-
],
|
597 |
-
quiz: [
|
598 |
-
{
|
599 |
-
question: "Quelle est la capitale de la France ?",
|
600 |
-
options: ["Lyon", "Paris", "Marseille", "Bordeaux"],
|
601 |
-
correctAnswer: "Paris",
|
602 |
-
explanation: "Paris est la capitale et la plus grande ville de France, située sur la Seine au cœur de la région Île-de-France."
|
603 |
-
},
|
604 |
-
{
|
605 |
-
question: "Combien de chromosomes possède l'être humain ?",
|
606 |
-
options: ["44", "46", "48", "50"],
|
607 |
-
correctAnswer: "46",
|
608 |
-
explanation: "L'être humain possède 46 chromosomes organisés en 23 paires dans chaque cellule somatique."
|
609 |
-
},
|
610 |
-
{
|
611 |
-
question: "Quel est l'élément chimique le plus abondant dans l'univers ?",
|
612 |
-
options: ["Oxygène", "Carbone", "Hydrogène", "Hélium"],
|
613 |
-
correctAnswer: "Hydrogène",
|
614 |
-
explanation: "L'hydrogène représente environ 75% de la masse normale de l'univers et constitue le carburant principal des étoiles."
|
615 |
-
}
|
616 |
-
]
|
617 |
-
};
|
618 |
-
|
619 |
form.addEventListener('submit', async function(e) {
|
620 |
e.preventDefault();
|
621 |
|
@@ -627,66 +561,73 @@
|
|
627 |
return;
|
628 |
}
|
629 |
|
630 |
-
// Animation du bouton
|
631 |
generateBtn.classList.add('loading');
|
632 |
generateBtn.disabled = true;
|
633 |
resultsContainer.innerHTML = '';
|
634 |
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
639 |
showMessage(`${type === 'flashcards' ? 'Flashcards' : 'Quiz'} généré avec succès !`, 'success');
|
640 |
-
}
|
641 |
-
|
642 |
-
showMessage('Une erreur est survenue lors de la génération.', 'error');
|
643 |
-
} finally {
|
644 |
-
// Restaurer le bouton
|
645 |
-
generateBtn.classList.remove('loading');
|
646 |
-
generateBtn.disabled = false;
|
647 |
}
|
648 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
649 |
});
|
650 |
|
651 |
function displayResults(data, type) {
|
652 |
resultsContainer.innerHTML = '';
|
653 |
|
654 |
if (type === 'flashcards') {
|
|
|
655 |
data.forEach((item, index) => {
|
656 |
-
const
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
|
|
661 |
<div class="flashcard-front">
|
662 |
<h3><i class="fas fa-question"></i> ${item.question}</h3>
|
663 |
-
<div class="flip-hint">
|
664 |
-
<i class="fas fa-sync-alt"></i> Cliquez pour retourner
|
665 |
-
</div>
|
666 |
</div>
|
667 |
<div class="flashcard-back">
|
668 |
-
<
|
|
|
|
|
669 |
</div>
|
670 |
</div>
|
671 |
`;
|
672 |
-
|
673 |
-
// Ajouter l'événement de retournement
|
674 |
-
flashcardEl.addEventListener('click', function() {
|
675 |
-
this.classList.toggle('flipped');
|
676 |
-
});
|
677 |
-
|
678 |
-
resultsContainer.appendChild(flashcardEl);
|
679 |
});
|
680 |
-
} else {
|
|
|
681 |
data.forEach((item, index) => {
|
682 |
const quizEl = document.createElement('div');
|
683 |
quizEl.className = 'quiz-question fade-in';
|
684 |
quizEl.style.animationDelay = `${index * 0.1}s`;
|
|
|
|
|
685 |
|
686 |
const optionsHtml = item.options.map(option => `
|
687 |
-
<div class="quiz-option"
|
688 |
-
<i class="fas fa-check"></i>
|
689 |
-
<i class="fas fa-times"></i>
|
690 |
${option}
|
691 |
</div>
|
692 |
`).join('');
|
@@ -694,42 +635,10 @@
|
|
694 |
quizEl.innerHTML = `
|
695 |
<h3><i class="fas fa-question-circle"></i> ${item.question}</h3>
|
696 |
<div class="quiz-options">${optionsHtml}</div>
|
697 |
-
<div class="quiz-explanation">
|
698 |
<i class="fas fa-info-circle"></i> <strong>Explication :</strong> ${item.explanation}
|
699 |
</div>
|
700 |
`;
|
701 |
-
|
702 |
-
// Ajouter les événements de clic pour les options
|
703 |
-
const options = quizEl.querySelectorAll('.quiz-option');
|
704 |
-
const explanation = quizEl.querySelector('.quiz-explanation');
|
705 |
-
|
706 |
-
options.forEach(option => {
|
707 |
-
option.addEventListener('click', function() {
|
708 |
-
if (this.classList.contains('disabled')) return;
|
709 |
-
|
710 |
-
const selectedAnswer = this.dataset.option;
|
711 |
-
|
712 |
-
// Désactiver toutes les options
|
713 |
-
options.forEach(opt => opt.classList.add('disabled'));
|
714 |
-
|
715 |
-
// Marquer la réponse sélectionnée
|
716 |
-
this.classList.add('selected');
|
717 |
-
|
718 |
-
// Révéler les bonnes et mauvaises réponses
|
719 |
-
options.forEach(opt => {
|
720 |
-
if (opt.dataset.option === item.correctAnswer) {
|
721 |
-
opt.classList.add('correct');
|
722 |
-
} else {
|
723 |
-
opt.classList.add('incorrect');
|
724 |
-
}
|
725 |
-
});
|
726 |
-
|
727 |
-
// Afficher l'explication
|
728 |
-
explanation.classList.add('show');
|
729 |
-
explanation.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
730 |
-
});
|
731 |
-
});
|
732 |
-
|
733 |
resultsContainer.appendChild(quizEl);
|
734 |
});
|
735 |
}
|
@@ -743,29 +652,46 @@
|
|
743 |
${message}
|
744 |
`;
|
745 |
|
746 |
-
// Supprimer les anciens messages
|
747 |
const oldMessages = document.querySelectorAll('.error-message, .success-message');
|
748 |
oldMessages.forEach(msg => msg.remove());
|
749 |
|
750 |
resultsContainer.insertBefore(messageEl, resultsContainer.firstChild);
|
751 |
|
752 |
-
// Supprimer le message après 5 secondes
|
753 |
setTimeout(() => {
|
754 |
messageEl.remove();
|
755 |
}, 5000);
|
756 |
}
|
757 |
|
758 |
-
//
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
767 |
});
|
768 |
-
|
|
|
|
|
|
|
769 |
});
|
770 |
</script>
|
771 |
</body>
|
|
|
236 |
.results-container {
|
237 |
margin-top: 24px;
|
238 |
}
|
239 |
+
|
240 |
+
/* Styles pour le retournement des flashcards */
|
241 |
+
.flashcard-container {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
perspective: 1000px;
|
243 |
+
margin-bottom: 16px;
|
244 |
}
|
245 |
|
246 |
+
.flashcard {
|
|
|
|
|
|
|
|
|
|
|
247 |
position: relative;
|
248 |
+
min-height: 150px;
|
|
|
|
|
249 |
transform-style: preserve-3d;
|
250 |
+
transition: transform 0.6s;
|
251 |
+
cursor: pointer;
|
252 |
}
|
253 |
|
254 |
+
.flashcard.is-flipped {
|
255 |
transform: rotateY(180deg);
|
256 |
}
|
257 |
|
258 |
.flashcard-front, .flashcard-back {
|
259 |
position: absolute;
|
260 |
width: 100%;
|
261 |
+
height: 100%;
|
262 |
+
-webkit-backface-visibility: hidden;
|
263 |
backface-visibility: hidden;
|
264 |
+
display: flex;
|
265 |
+
flex-direction: column;
|
266 |
+
justify-content: center;
|
267 |
+
align-items: center;
|
268 |
+
padding: 24px;
|
269 |
+
border-radius: 20px;
|
270 |
+
background: var(--white);
|
271 |
+
box-shadow: var(--shadow);
|
272 |
+
border-left: 4px solid var(--primary-blue);
|
273 |
}
|
274 |
|
275 |
.flashcard-back {
|
276 |
transform: rotateY(180deg);
|
277 |
+
border-left-color: var(--success);
|
|
|
|
|
|
|
278 |
}
|
279 |
+
|
280 |
.flashcard h3 {
|
281 |
color: var(--primary-blue);
|
282 |
margin-bottom: 12px;
|
283 |
font-size: 1.1rem;
|
284 |
font-weight: 600;
|
285 |
+
text-align: center;
|
286 |
+
}
|
287 |
+
|
288 |
+
.flashcard .answer {
|
289 |
+
color: var(--gray-600);
|
290 |
+
text-align: center;
|
291 |
}
|
292 |
|
293 |
+
.flashcard-front::after {
|
294 |
+
content: 'Cliquez pour révéler';
|
295 |
position: absolute;
|
296 |
+
bottom: 15px;
|
|
|
297 |
font-size: 0.8rem;
|
298 |
+
color: var(--gray-300);
|
299 |
+
font-style: italic;
|
300 |
}
|
301 |
|
|
|
302 |
.quiz-question {
|
303 |
background: var(--white);
|
304 |
border-radius: 20px;
|
|
|
312 |
.quiz-question:hover {
|
313 |
transform: translateX(4px);
|
314 |
}
|
315 |
+
|
316 |
.quiz-question h3 {
|
317 |
+
color: var(--primary-blue);
|
318 |
+
margin-bottom: 12px;
|
319 |
+
font-size: 1.1rem;
|
320 |
+
font-weight: 600;
|
321 |
}
|
322 |
|
323 |
.quiz-options {
|
|
|
332 |
cursor: pointer;
|
333 |
transition: all 0.3s ease;
|
334 |
background: var(--white);
|
|
|
335 |
}
|
336 |
+
|
337 |
+
/* Désactive le clic une fois la réponse donnée */
|
338 |
+
.quiz-question.answered .quiz-option {
|
339 |
+
pointer-events: none;
|
340 |
+
opacity: 0.8;
|
341 |
}
|
342 |
|
343 |
+
.quiz-option:hover {
|
344 |
+
border-color: var(--light-blue);
|
345 |
background: var(--extra-light-blue);
|
346 |
}
|
347 |
|
348 |
.quiz-option.correct {
|
349 |
border-color: var(--success);
|
350 |
background: #f0fdf4;
|
351 |
+
color: #059669;
|
352 |
+
font-weight: bold;
|
353 |
}
|
354 |
|
355 |
.quiz-option.incorrect {
|
356 |
border-color: var(--error);
|
357 |
background: #fef2f2;
|
358 |
+
color: #dc2626;
|
359 |
}
|
360 |
+
|
361 |
+
.quiz-question.answered .quiz-option.correct {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
362 |
opacity: 1;
|
363 |
}
|
364 |
|
|
|
368 |
background: var(--extra-light-blue);
|
369 |
border-radius: 12px;
|
370 |
border-left: 4px solid var(--primary-blue);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
371 |
}
|
372 |
|
373 |
.error-message {
|
|
|
440 |
|
441 |
/* Animations d'entrée */
|
442 |
.fade-in {
|
443 |
+
animation: fadeIn 0.5s ease-out forwards;
|
444 |
}
|
445 |
|
446 |
@keyframes fadeIn {
|
|
|
550 |
const generateBtn = document.getElementById('generateBtn');
|
551 |
const resultsContainer = document.getElementById('results');
|
552 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
553 |
form.addEventListener('submit', async function(e) {
|
554 |
e.preventDefault();
|
555 |
|
|
|
561 |
return;
|
562 |
}
|
563 |
|
|
|
564 |
generateBtn.classList.add('loading');
|
565 |
generateBtn.disabled = true;
|
566 |
resultsContainer.innerHTML = '';
|
567 |
|
568 |
+
try {
|
569 |
+
// MODIFICATION : L'appel au backend a été restauré.
|
570 |
+
// La fonction de simulation a été supprimée.
|
571 |
+
const response = await fetch('/generate', {
|
572 |
+
method: 'POST',
|
573 |
+
headers: {
|
574 |
+
'Content-Type': 'application/json',
|
575 |
+
},
|
576 |
+
body: JSON.stringify({ topic, type })
|
577 |
+
});
|
578 |
+
|
579 |
+
const data = await response.json();
|
580 |
+
|
581 |
+
if (data.success) {
|
582 |
+
displayResults(data[type], type);
|
583 |
showMessage(`${type === 'flashcards' ? 'Flashcards' : 'Quiz'} généré avec succès !`, 'success');
|
584 |
+
} else {
|
585 |
+
showMessage(data.error || 'Une erreur est survenue lors de la génération.', 'error');
|
|
|
|
|
|
|
|
|
|
|
586 |
}
|
587 |
+
} catch (error) {
|
588 |
+
console.error('Erreur:', error);
|
589 |
+
showMessage('Erreur de connexion. Veuillez réessayer.', 'error');
|
590 |
+
} finally {
|
591 |
+
generateBtn.classList.remove('loading');
|
592 |
+
generateBtn.disabled = false;
|
593 |
+
}
|
594 |
});
|
595 |
|
596 |
function displayResults(data, type) {
|
597 |
resultsContainer.innerHTML = '';
|
598 |
|
599 |
if (type === 'flashcards') {
|
600 |
+
// Logique d'affichage pour les flashcards retournables
|
601 |
data.forEach((item, index) => {
|
602 |
+
const flashcardContainer = document.createElement('div');
|
603 |
+
flashcardContainer.className = 'flashcard-container fade-in';
|
604 |
+
flashcardContainer.style.animationDelay = `${index * 0.1}s`;
|
605 |
+
|
606 |
+
flashcardContainer.innerHTML = `
|
607 |
+
<div class="flashcard" onclick="this.classList.toggle('is-flipped')">
|
608 |
<div class="flashcard-front">
|
609 |
<h3><i class="fas fa-question"></i> ${item.question}</h3>
|
|
|
|
|
|
|
610 |
</div>
|
611 |
<div class="flashcard-back">
|
612 |
+
<div class="answer">
|
613 |
+
<i class="fas fa-lightbulb"></i> ${item.answer}
|
614 |
+
</div>
|
615 |
</div>
|
616 |
</div>
|
617 |
`;
|
618 |
+
resultsContainer.appendChild(flashcardContainer);
|
|
|
|
|
|
|
|
|
|
|
|
|
619 |
});
|
620 |
+
} else { // Quiz
|
621 |
+
// Logique d'affichage pour le quiz interactif
|
622 |
data.forEach((item, index) => {
|
623 |
const quizEl = document.createElement('div');
|
624 |
quizEl.className = 'quiz-question fade-in';
|
625 |
quizEl.style.animationDelay = `${index * 0.1}s`;
|
626 |
+
// On stocke la bonne réponse dans un attribut data-*
|
627 |
+
quizEl.dataset.correctAnswer = item.correctAnswer;
|
628 |
|
629 |
const optionsHtml = item.options.map(option => `
|
630 |
+
<div class="quiz-option" onclick="checkAnswer(this)">
|
|
|
|
|
631 |
${option}
|
632 |
</div>
|
633 |
`).join('');
|
|
|
635 |
quizEl.innerHTML = `
|
636 |
<h3><i class="fas fa-question-circle"></i> ${item.question}</h3>
|
637 |
<div class="quiz-options">${optionsHtml}</div>
|
638 |
+
<div class="quiz-explanation" style="display: none;">
|
639 |
<i class="fas fa-info-circle"></i> <strong>Explication :</strong> ${item.explanation}
|
640 |
</div>
|
641 |
`;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
642 |
resultsContainer.appendChild(quizEl);
|
643 |
});
|
644 |
}
|
|
|
652 |
${message}
|
653 |
`;
|
654 |
|
|
|
655 |
const oldMessages = document.querySelectorAll('.error-message, .success-message');
|
656 |
oldMessages.forEach(msg => msg.remove());
|
657 |
|
658 |
resultsContainer.insertBefore(messageEl, resultsContainer.firstChild);
|
659 |
|
|
|
660 |
setTimeout(() => {
|
661 |
messageEl.remove();
|
662 |
}, 5000);
|
663 |
}
|
664 |
|
665 |
+
// Nouvelle fonction pour vérifier la réponse du quiz
|
666 |
+
window.checkAnswer = function(optionEl) {
|
667 |
+
const quizQuestion = optionEl.closest('.quiz-question');
|
668 |
+
if (quizQuestion.classList.contains('answered')) return; // Empêche de répondre à nouveau
|
669 |
+
|
670 |
+
quizQuestion.classList.add('answered');
|
671 |
+
const correctAnswer = quizQuestion.dataset.correctAnswer;
|
672 |
+
const selectedAnswer = optionEl.textContent.trim();
|
673 |
+
const explanation = quizQuestion.querySelector('.quiz-explanation');
|
674 |
+
const allOptions = quizQuestion.querySelectorAll('.quiz-option');
|
675 |
+
|
676 |
+
if (selectedAnswer === correctAnswer) {
|
677 |
+
optionEl.classList.add('correct');
|
678 |
+
} else {
|
679 |
+
optionEl.classList.add('incorrect');
|
680 |
+
}
|
681 |
+
|
682 |
+
allOptions.forEach(opt => {
|
683 |
+
const optText = opt.textContent.trim();
|
684 |
+
if (optText === correctAnswer) {
|
685 |
+
opt.classList.add('correct');
|
686 |
+
opt.innerHTML = `<i class="fas fa-check"></i> ${optText}`;
|
687 |
+
} else if (opt.classList.contains('incorrect')) {
|
688 |
+
opt.innerHTML = `<i class="fas fa-times"></i> ${optText}`;
|
689 |
+
}
|
690 |
});
|
691 |
+
|
692 |
+
explanation.style.display = 'block';
|
693 |
+
explanation.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
|
694 |
+
};
|
695 |
});
|
696 |
</script>
|
697 |
</body>
|