frontPanel/src/pages/createQuize/MyQuizzesFull.tsx

110 lines
2.9 KiB
TypeScript
Raw Normal View History

2023-12-31 02:53:25 +00:00
import {
Box,
Button,
SxProps,
Theme,
Typography,
useMediaQuery,
useTheme,
} from "@mui/material";
import { createQuiz, updateQuiz } from "@root/quizes/actions";
2023-12-13 17:16:03 +00:00
import { useQuizes } from "@root/quizes/hooks";
import SectionWrapper from "@ui_kit/SectionWrapper";
import React from "react";
2023-10-18 12:46:59 +00:00
import { useNavigate } from "react-router-dom";
import { resetEditConfig } from "@root/quizes/actions";
2023-11-13 18:04:51 +00:00
import FirstQuiz from "./FirstQuiz";
import QuizCard from "./QuizCard";
import HeaderFull from "@ui_kit/Header/HeaderFull";
import QuizgenegationName from "@utils/quizgenegationName";
2023-11-13 18:04:51 +00:00
interface Props {
outerContainerSx?: SxProps<Theme>;
children?: React.ReactNode;
}
2022-12-09 11:48:15 +00:00
2023-12-31 02:53:25 +00:00
export default function MyQuizzesFull({
outerContainerSx: sx,
children,
}: Props) {
const { quizes } = useQuizes();
const navigate = useNavigate();
const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down(500));
return (
<>
<HeaderFull />
{quizes.length === 0 ? (
<FirstQuiz />
) : (
<SectionWrapper
maxWidth="lg"
sx={{ padding: isMobile ? "0 16px" : "20px" }}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
mt: "20px",
mb: "30px",
}}
>
<Typography variant="h4">Мои quiz</Typography>
<Button
variant="contained"
sx={{
padding: isMobile ? "10px" : "10px 47px",
minWidth: "44px",
}}
onClick={() => {
resetEditConfig();
2023-12-31 02:53:25 +00:00
createQuiz(navigate);
}}
data-cy="create-quiz"
>
{isMobile ? "+" : "Создать +"}
</Button>
</Box>
<Box
sx={{
py: "10px",
display: "flex",
flexWrap: "wrap",
gap: "40px",
mb: "60px",
}}
>
2024-01-06 20:06:31 +00:00
{quizes.map((quiz) => {
if (quiz.name.length === 0 || quiz.name === " ") {
updateQuiz(quiz.id, (quiz) => {
quiz.name = QuizgenegationName({ quiz });
});
}
return (
<QuizCard
key={quiz.id}
quiz={quiz}
2024-01-23 13:14:42 +00:00
openCount={quiz.session_count}
applicationCount={quiz.passed_count}
conversionPercent={
2024-01-23 13:14:42 +00:00
quiz.session_count
? (
2024-01-23 13:14:42 +00:00
(quiz.passed_count / quiz.session_count) *
100
).toFixed(1)
: 0
}
/>
);
2024-01-06 20:06:31 +00:00
})}
</Box>
{children}
</SectionWrapper>
)}
</>
);
}