ENCOA-253, ENCOA-248, ENCOA-246

This commit is contained in:
Carlos-Mesquita
2024-12-02 17:16:12 +00:00
parent cd14ac537d
commit 490c5ad7d3
8 changed files with 90 additions and 51 deletions

View File

@@ -2,8 +2,9 @@ import Button from "@/components/Low/Button";
import Modal from "@/components/Modal";
import { Exam, LevelExam, MultipleChoiceExercise, ShuffleMap } from "@/interfaces/exam";
import useExamStore, { usePersistentExamStore } from "@/stores/exam";
import { defaultExamUserSolutions } from "@/utils/exams";
import clsx from "clsx";
import { useMemo, useState } from "react";
import { useEffect, useMemo, useState } from "react";
import { BsFillGrid3X3GapFill } from "react-icons/bs";
interface Props {
@@ -18,7 +19,7 @@ const MCQuestionGrid: React.FC<Props> = ({ exam, showSolutions, runOnClick, prev
const examState = useExamStore((state) => state);
const persistentExamState = usePersistentExamStore((state) => state);
const {
userSolutions,
partIndex: sectionIndex,
@@ -27,7 +28,10 @@ const MCQuestionGrid: React.FC<Props> = ({ exam, showSolutions, runOnClick, prev
const currentExercise = useMemo(() => (exam as LevelExam).parts[sectionIndex!].exercises[exerciseIndex] as MultipleChoiceExercise, [exam, exerciseIndex, sectionIndex])
const userSolution = useMemo(() => userSolutions!.find((x) => x.exercise.toString() == currentExercise.id.toString())!, [currentExercise.id, userSolutions])
const answeredQuestions = useMemo(() => new Set(userSolution.solutions.map(sol => sol.question.toString())), [userSolution.solutions])
const answeredQuestions = useMemo(() =>
userSolution ? new Set(userSolution.solutions.map(sol => sol.question.toString())) : new Set(),
[userSolution]
);
const exerciseOffset = useMemo(() => Number(currentExercise.questions[0].id), [currentExercise.questions])
const lastExercise = useMemo(() => exerciseOffset + (currentExercise.questions.length - 1),
[currentExercise.questions.length, exerciseOffset]);