// 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[]; isDisplayOnly?: boolean; } const TrueFalseQuestionDisplay: React.FC = (props) => { const { question, showAnswer, handleOnSubmitAnswer, students, passedAnswer, isDisplayOnly } = props; const [answer, setAnswer] = useState(undefined); 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 [showCorrectAnswers, setShowCorrectAnswers] = useState(false); let disableButton = false; if(handleOnSubmitAnswer === undefined){ disableButton = true; } const handleOnClickAnswer = (choice: boolean) => { setAnswer(choice); }; useEffect(() => { if (passedAnswer === true || passedAnswer === false) { setAnswer(passedAnswer); } else { setAnswer(undefined); } if (!passedAnswer && passedAnswer !== false) { setAnswer(undefined); calculatePickRates(); } }, [passedAnswer, question, students]); const selectedTrue = answer ? 'selected' : ''; const selectedFalse = answer !== undefined && !answer ? 'selected' : ''; const toggleShowCorrectAnswers = () => { setShowCorrectAnswers(!showCorrectAnswers); }; // 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 === true )).length; const falseAnswers = students.filter(student => student.answers.some(ans => ans.idQuestion === Number(question.id) && ans.answer === false )).length; setPickRates({ trueRate: (trueAnswers / totalAnswers) * 100, falseRate: (falseAnswers / totalAnswers) * 100, trueCount: trueAnswers, falseCount: falseAnswers, totalCount: totalAnswers }); }; return (
{question.formattedGlobalFeedback && showAnswer && (
)} {!showAnswer && handleOnSubmitAnswer && ( )} {isDisplayOnly && (
)}
); }; export default TrueFalseQuestionDisplay;