// TrueFalseQuestion.tsx import React, { useState, useEffect } from 'react'; import '../questionStyle.css'; import { Button } from '@mui/material'; import { TrueFalseQuestion } from 'gift-pegjs'; import { FormattedTextTemplate } from 'src/components/GiftTemplate/templates/TextTypeTemplate'; import { StudentType } from 'src/Types/StudentType'; import { AnswerType } from 'src/pages/Student/JoinRoom/JoinRoom'; interface Props { question: TrueFalseQuestion; handleOnSubmitAnswer?: (answer: AnswerType) => void; showAnswer?: boolean; passedAnswer?: AnswerType; students?: StudentType[]; showResults?: boolean; } const TrueFalseQuestionDisplay: React.FC = (props) => { const { question, showAnswer, handleOnSubmitAnswer, students, passedAnswer, showResults } = props; const [pickRates, setPickRates] = useState<{ trueRate: number, falseRate: number, trueCount: number, falseCount: number, totalCount: number }>({ trueRate: 0, falseRate: 0, trueCount: 0, falseCount: 0, totalCount: 0 }); const [answer, setAnswer] = useState(() => { if (passedAnswer && (passedAnswer[0] === true || passedAnswer[0] === false)) { return passedAnswer[0]; } return undefined; }); let disableButton = false; if (handleOnSubmitAnswer === undefined) { disableButton = true; } const handleOnClickAnswer = (choice: boolean) => { setAnswer(choice); }; useEffect(() => { if (passedAnswer && (passedAnswer[0] === true || passedAnswer[0] === false)) { setAnswer(passedAnswer[0]); } else { setAnswer(undefined); } if (!passedAnswer && passedAnswer !== false) { setAnswer(undefined); calculatePickRates(); } }, [passedAnswer, question.id, students]); const selectedTrue = answer ? 'selected' : ''; const selectedFalse = answer !== undefined && !answer ? 'selected' : ''; // Calcul le pick rate de chaque réponse const calculatePickRates = () => { if (!students) { setPickRates({ trueRate: 0, falseRate: 0, trueCount: 0, falseCount: 0, totalCount: 0 }); return; } const totalAnswers = students.length; const trueAnswers = students.filter(student => student.answers.some(ans => ans.idQuestion === Number(question.id) && ans.answer.some(a => a === true) ) ).length; const falseAnswers = students.filter(student => student.answers.some(ans => ans.idQuestion === Number(question.id) && ans.answer.some(a => a === false) ) ).length; setPickRates({ trueRate: (trueAnswers / totalAnswers) * 100, falseRate: (falseAnswers / totalAnswers) * 100, trueCount: trueAnswers, falseCount: falseAnswers, totalCount: totalAnswers }); }; return (
{question.formattedGlobalFeedback && showAnswer && (
)} {!showAnswer && handleOnSubmitAnswer && ( )}
); }; export default TrueFalseQuestionDisplay;