import {MatchSentenceExerciseSentence, MatchSentencesExercise} from "@/interfaces/exam"; import clsx from "clsx"; import LineTo from "react-lineto"; import {CommonProps} from "."; import {errorButtonStyle, infoButtonStyle} from "@/constants/buttonStyles"; import {mdiArrowLeft, mdiArrowRight} from "@mdi/js"; import Icon from "@mdi/react"; import {Fragment} from "react"; import Button from "../Low/Button"; import Xarrow from "react-xarrows"; import useExamStore from "@/stores/examStore"; function QuestionSolutionArea({ question, userSolution, }: { question: MatchSentenceExerciseSentence; userSolution?: {question: string; option: string}; }) { return (
{question.sentence}
{userSolution && userSolution?.option.toString() !== question.solution.toString() && `Paragraph ${userSolution.option}`} Paragraph {question.solution}
); } export default function MatchSentencesSolutions({ id, type, options, prompt, sentences, userSolutions, onNext, onBack, }: MatchSentencesExercise & CommonProps) { const {questionIndex, setQuestionIndex, partIndex, exam} = useExamStore((state) => state); const calculateScore = () => { const total = sentences.length; const correct = userSolutions.filter( (x) => sentences.find((y) => y.id.toString() === x.question.toString())?.solution === x.option || false, ).length; const missing = total - userSolutions.filter((x) => sentences.find((y) => y.id.toString() === x.question.toString())).length; return {total, correct, missing}; }; return ( <>
{prompt.split("\\n").map((line, index) => ( {line}
))}
{sentences.map((question) => ( x.question.toString() === question.id.toString())} key={`question_${question.id}`} /> ))}
Correct
Unanswered
Wrong
); }