страница результатов не отображается если не заполнена

This commit is contained in:
Nastya 2023-12-23 20:24:32 +03:00
parent 1ca17853e9
commit 74d22956a8
2 changed files with 53 additions and 12 deletions

@ -11,6 +11,7 @@ import CustomCheckbox from "@ui_kit/CustomCheckbox";
import { useState } from "react"; import { useState } from "react";
import { useQuestionsStore } from "@root/questions/store"; import { useQuestionsStore } from "@root/questions/store";
import { checkEmptyData } from "../ResultPage/cards/ResultCard";
import type { AnyTypedQuizQuestion } from "../../model/questionTypes/shared"; import type { AnyTypedQuizQuestion } from "../../model/questionTypes/shared";
import { enqueueSnackbar } from "notistack"; import { enqueueSnackbar } from "notistack";
@ -44,11 +45,23 @@ export const ContactForm = ({
setShowResultForm(true); setShowResultForm(true);
}; };
const resultQuestion = questions.find(
(question) => const resultQuestion = questions.find((question) => {
if (quiz?.config.haveRoot) { //ветвимся
return (
question.type === "result" && question.type === "result" &&
question.content.rule.parentId === currentQuestion.content.id question.content.rule.parentId === currentQuestion.content.id
)
} else {// не ветвимся
return (
question.type === "result" &&
question.content.rule.parentId === "line"
)
}
}
); );
return ( return (
<Box <Box
sx={{ sx={{
@ -117,7 +130,10 @@ export const ContactForm = ({
<Button <Button
disabled={!ready} disabled={!ready}
variant="contained" onClick={() => { variant="contained" onClick={() => {
if (quiz?.config.resultInfo.when === "after") followNextForm() if (quiz?.config.resultInfo.when === "after" && !checkEmptyData({ resultData: resultQuestion })) {
setShowContactForm(false)
setShowResultForm(true)
}
}}> }}>
Получить результаты Получить результаты
</Button> </Button>

@ -9,6 +9,7 @@ import type { AnyTypedQuizQuestion, QuizQuestionBase } from "../../model/questio
import { getQuestionByContentId } from "@root/questions/actions"; import { getQuestionByContentId } from "@root/questions/actions";
import { enqueueSnackbar } from "notistack"; import { enqueueSnackbar } from "notistack";
import { NameplateLogoFQ } from "@icons/NameplateLogoFQ"; import { NameplateLogoFQ } from "@icons/NameplateLogoFQ";
import { checkEmptyData } from "../ResultPage/cards/ResultCard";
type FooterProps = { type FooterProps = {
setCurrentQuestion: (step: AnyTypedQuizQuestion) => void; setCurrentQuestion: (step: AnyTypedQuizQuestion) => void;
@ -80,11 +81,35 @@ export const Footer = ({ setCurrentQuestion, question, setShowContactForm, setSh
const showResult = (nextQuestion) => { const showResult = (nextQuestion) => {
if (nextQuestion && quiz?.config.resultInfo.when === "before") {
setShowResultForm(true); if (nextQuestion && quiz?.config.resultInfo.when === "email") {
} else {
setShowContactForm(true); setShowContactForm(true);
return;
} }
const isEmpty = checkEmptyData({ resultData: nextQuestion })
console.log("пустой результат? ", isEmpty)
if (nextQuestion) {
if (nextQuestion && quiz?.config.resultInfo.when === "before") {
if (isEmpty) {
setShowContactForm(true); //до+пустая = кидать на ФК
console.log("до+пустая = кидать на ФК")
} else {
setShowResultForm(true); //до+заполнена = показать
console.log("до+заполнена = показать")
}
}
if (nextQuestion && quiz?.config.resultInfo.when === "after") {
if (isEmpty) {
setShowContactForm(true); //после+пустая
console.log("после+пустая")
} else {
setShowContactForm(true); //после+заполнена = показать ФК
console.log("после+заполнена = показать")
}
}
}
}; };
const getNextQuestionId = () => { const getNextQuestionId = () => {
@ -161,10 +186,10 @@ export const Footer = ({ setCurrentQuestion, question, setShowContactForm, setSh
} else { } else {
showResult(nextQuestion); showResult(nextQuestion);
} }
return; return;
} }
const nextQuestionId = getNextQuestionId(); const nextQuestionId = getNextQuestionId();
if (nextQuestionId) { if (nextQuestionId) {