diff --git a/src/pages/ViewPublicationPage/Footer.tsx b/src/pages/ViewPublicationPage/Footer.tsx index 1720dadc..054a3d9f 100644 --- a/src/pages/ViewPublicationPage/Footer.tsx +++ b/src/pages/ViewPublicationPage/Footer.tsx @@ -9,8 +9,8 @@ import type { AnyTypedQuizQuestion, QuizQuestionBase } from "../../model/questio import { getQuestionByContentId } from "@root/questions/actions"; import { enqueueSnackbar } from "notistack"; import { NameplateLogoFQ } from "@icons/NameplateLogoFQ"; -import {NameplateLogoFQDark} from "@icons/NameplateLogoFQDark"; -import {modes} from "../../utils/themes/Publication/themePublication"; +import { NameplateLogoFQDark } from "@icons/NameplateLogoFQDark"; +import { modes } from "../../utils/themes/Publication/themePublication"; import { checkEmptyData } from "../ResultPage/cards/ResultCard"; type FooterProps = { @@ -116,10 +116,14 @@ export const Footer = ({ setCurrentQuestion, question, setShowContactForm, setSh }; const getNextQuestionId = () => { + console.log("net") + console.log(question) + let readyBeNextQuestion = ""; + + //вопрос обязателен, анализируем ответ и условия ветвления if (answers.length) { const answer = answers.find(({ questionId }) => questionId === question.content.id); - let readyBeNextQuestion = ""; (question as QuizQuestionBase).content.rule.main.forEach(({ next, rules }) => { let longerArray = Math.max( @@ -146,8 +150,23 @@ export const Footer = ({ setCurrentQuestion, question, setShowContactForm, setSh } }); - return readyBeNextQuestion; + if (readyBeNextQuestion) return readyBeNextQuestion; } + + if (!question.required) {//вопрос не обязателен и не нашли совпадений между ответами и условиями ветвления + console.log("вопрос не обязателен ищем дальше") + const defaultQ = question.content.rule.default + if (defaultQ) return defaultQ + + } + //ничё не нашли, ищем резулт + console.log("ничё не нашли, ищем резулт ") + return questions.find(q => { + console.log('q.type === "result"', q.type === "result") + console.log('q.content.rule.parentId === question.content.id', q.content.rule.parentId === question.content.id) + return q.type === "result" && q.content.rule.parentId === question.content.id + })?.content.id + }; const followPreviousStep = () => { @@ -195,22 +214,18 @@ export const Footer = ({ setCurrentQuestion, question, setShowContactForm, setSh const nextQuestionId = getNextQuestionId(); + console.log(nextQuestionId) if (nextQuestionId) { const nextQuestion = getQuestionByContentId(nextQuestionId); + console.log(nextQuestion) - if (nextQuestion?.type && nextQuestion.type !== "result") { - setCurrentQuestion(nextQuestion); - return; + if (nextQuestion?.type && nextQuestion.type === "result") { + showResult(nextQuestion); } else { - enqueueSnackbar("не могу получить последующий вопрос"); + setCurrentQuestion(nextQuestion); } } else { - const nextQuestion = getQuestionByContentId(question.content.rule.default); - if (nextQuestion?.type && nextQuestion.type !== "result") { - setCurrentQuestion(nextQuestion); - } else { - showResult(nextQuestion); - } + enqueueSnackbar("не могу получить последующий вопрос"); } }; @@ -237,9 +252,9 @@ export const Footer = ({ setCurrentQuestion, question, setShowContactForm, setSh }} > {mode[quiz.config.theme] ? ( - - ):( - + + ) : ( + ) } @@ -311,7 +326,7 @@ export const Footer = ({ setCurrentQuestion, question, setShowContactForm, setSh