frontPanel/src/pages/Questions/BranchingMap/FirstNodeField.tsx

88 lines
2.9 KiB
TypeScript
Raw Normal View History

2023-11-29 15:45:15 +00:00
import { Box } from "@mui/material"
import { useEffect, useRef, useLayoutEffect } from "react";
import { deleteQuestion, clearRuleForAll, updateQuestion, createResult } from "@root/questions/actions"
import { updateOpenedModalSettingsId } from "@root/uiTools/actions"
import { updateRootContentId } from "@root/quizes/actions"
2023-12-04 13:33:43 +00:00
import { useCurrentQuiz } from "@root/quizes/hooks"
2023-11-29 15:45:15 +00:00
import { useQuestionsStore } from "@root/questions/store"
import { enqueueSnackbar } from "notistack";
import { useUiTools } from "@root/uiTools/store";
2023-11-29 15:45:15 +00:00
2023-12-01 08:12:59 +00:00
interface Props {
setOpenedModalQuestions: (open: boolean) => void;
modalQuestionTargetContentId: string;
2023-12-01 08:12:59 +00:00
}
export const FirstNodeField = ({ setOpenedModalQuestions, modalQuestionTargetContentId }: Props) => {
2023-11-29 15:45:15 +00:00
const quiz = useCurrentQuiz();
useLayoutEffect(() => {
console.log("компонент с плюсом")
updateOpenedModalSettingsId()
updateRootContentId(quiz.id, "")
clearRuleForAll()
}, [])
const { questions } = useQuestionsStore()
const { dragQuestionContentId } = useUiTools()
2023-12-04 13:33:43 +00:00
const Container = useRef<HTMLDivElement | null>(null);
2023-11-29 15:45:15 +00:00
const modalOpen = () => setOpenedModalQuestions(true)
2023-11-29 15:45:15 +00:00
const newRootNode = () => {
if (quiz) {
if (dragQuestionContentId) {
updateRootContentId(quiz?.id, dragQuestionContentId)
updateQuestion(dragQuestionContentId, (question) => question.content.rule.parentId = "root")
createResult(quiz?.backendId, dragQuestionContentId)
2023-11-29 15:45:15 +00:00
}
} else {
enqueueSnackbar("Нет информации о взятом опроснике")
}
2023-12-04 13:33:43 +00:00
2023-11-29 15:45:15 +00:00
}
useEffect(() => {
Container.current?.addEventListener("mouseup", newRootNode)
Container.current?.addEventListener("click", modalOpen)
return () => {
Container.current?.removeEventListener("mouseup", newRootNode)
Container.current?.removeEventListener("click", modalOpen)
}
2023-12-02 13:51:37 +00:00
}, [dragQuestionContentId])
2023-11-29 15:45:15 +00:00
useEffect(() => {
if (quiz) {
2023-12-02 13:51:37 +00:00
if (modalQuestionTargetContentId) {
updateRootContentId(quiz?.id, modalQuestionTargetContentId)
updateQuestion(modalQuestionTargetContentId, (question) => question.content.rule.parentId = "root")
createResult(quiz?.backendId, modalQuestionTargetContentId)
}
} else {
enqueueSnackbar("Нет информации о взятом опроснике")
}
}, [modalQuestionTargetContentId])
2023-12-04 13:33:43 +00:00
2023-11-29 15:45:15 +00:00
return (
<Box
ref={Container}
sx={{
height: "100%",
width: "100%",
backgroundColor: "#f2f3f7",
display: "flex",
alignItems: "center",
justifyContent: "center",
color: "#4d4d4d",
fontSize: "50px"
}}
>
+
</Box>
)
}