import { Box, Button, Container, Typography } from '@mui/material';
import { quiz } from "../quizData";
import { useSelector } from 'react-redux';
import { useState } from 'react';
import Matching from './Matching';
import Sorting from './Sorting';
import Choosing from './Choosing';
import type { RootState } from '../../store';
import store from '../../store';
import { useDispatch } from 'react-redux';
import { mixUp, startTesting, stopTesting } from './quizSlice';
function QuizStats() {
let correctAnswers = useSelector((state: RootState) => state.quiz.correctAnswers);
const userAnswers = useSelector((state: RootState) => state.quiz.userAnswers);
const correctCount = (index: number): number => {
let state = store.getState();
if (state.quiz.correctAnswers.length <= index) {
return 0;
}
return userAnswers[index].reduce((prev, answ, i) => prev + Number(correctAnswers[index][i] === answ), 0);
}
const counts = userAnswers.map((_,index)=>correctCount(index));
const questionCounts = userAnswers.map((answers)=>answers.length);
const total= counts.reduce((x,c)=>c+x,0);
const totalQuestionCount= questionCounts.reduce((x,c)=>c+x,0);
const donePercentage = Math.round(total/totalQuestionCount*100*100)/100;
const quizPartText = (counter: number, len: number, taskIndex:number) => {
if (counter == len) {
return Задание {taskIndex+1}: все ответы верные
}
return Задание {taskIndex+1}: верно {counter}/{len}
}
return (
Результаты теста
{
counts.map((count,idx)=>quizPartText(count,questionCounts[idx],idx))
}
Итого {donePercentage}% Верно
)
}
function Quiz() {
const dispatch = useDispatch();
const [displayingResults, setDisplayingResults] = useState(false);
const resetQuiz = () => {
setDisplayingResults(false);
dispatch(mixUp());
dispatch(startTesting());
}
const checkQuiz = () => {
setDisplayingResults(true);
dispatch(stopTesting());
}
return (
{quiz.map((item, index) => (
{index + 1}. {item.title}
{[
,
,
][(["M", "S", "C"].indexOf(item.type))]}
))}
{displayingResults && }
);
}
export default Quiz