diff --git a/src/pages/startPage/EditPage.tsx b/src/pages/startPage/EditPage.tsx
index d7dcf538..62402097 100755
--- a/src/pages/startPage/EditPage.tsx
+++ b/src/pages/startPage/EditPage.tsx
@@ -30,9 +30,10 @@ import { enqueueSnackbar } from "notistack";
import React, { useEffect, useLayoutEffect, useState } from "react";
import { Link, useNavigate } from "react-router-dom";
import useSWR from "swr";
+import { useDebouncedCallback } from "use-debounce";
import { SidebarMobile } from "./Sidebar/SidebarMobile";
import { cleanQuestions, setQuestions } from "@root/questions/actions";
-import { updateOpenBranchingPanel } from "@root/uiTools/actions";
+import { updateOpenBranchingPanel, updateCanCreatePublic } from "@root/uiTools/actions";
import { BranchingPanel } from "../Questions/BranchingPanel";
import { useQuestionsStore } from "@root/questions/store";
import { useQuizes } from "@root/quizes/hooks";
@@ -43,10 +44,12 @@ import Logotip from "../Landing/images/icons/QuizLogo";
import { clearUserData } from "@root/user";
import { clearAuthToken } from "@frontend/kitui";
import { logout } from "@api/auth";
+import { AnyTypedQuizQuestion } from "@model/questionTypes/shared";
export default function EditPage() {
const quiz = useCurrentQuiz();
const { editQuizId } = useQuizStore();
+ const { questions } = useQuestionsStore();
useEffect(() => {
const getData = async () => {
@@ -59,7 +62,7 @@ export default function EditPage() {
getData();
}, []);
- const { openBranchingPanel } = useUiTools();
+ const { openBranchingPanel, whyCantCreatePublic, canCreatePublic } = useUiTools();
const theme = useTheme();
const navigate = useNavigate();
const currentStep = useQuizStore((state) => state.currentStep);
@@ -80,6 +83,45 @@ export default function EditPage() {
},
[]
);
+
+
+
+ const updateQuestionHint = useDebouncedCallback((questions:AnyTypedQuizQuestion[]) => {
+ console.log("пересчитываю")
+
+ const problems:any = {}
+
+ questions.forEach((question) => {
+ //Если не участвует в ветвлении, или безтиповый, или резулт - он нам не интересен
+ if (question.type === null
+ || question.type === "result"
+ || question.content.rule.parentId.length === 0) return
+
+ //если есть дети, но нет дефолта - логическая ошибка. Так нельзя
+ if (question.content.rule.children.length > 0 && question.content.rule.default.length === 0) {
+ problems[question.content.id] = {
+ name: question.title,
+ problems: ["Не выбран дефолтный вопрос"]
+ }
+ }
+
+ })
+
+ useUiTools.setState({ whyCantCreatePublic: problems })
+ if (Object.keys(problems).length > 0) { updateCanCreatePublic(false) } else { updateCanCreatePublic(true) }
+ console.log(problems)
+ console.log(Object.keys(problems).length > 0)
+
+ }, 1000);
+
+
+ useEffect(() => {
+ updateQuestionHint(questions)
+ console.log(canCreatePublic)
+ }, [questions]);
+
+
+
console.log(currentStep)
console.log(quizConfig)
@@ -95,7 +137,7 @@ export default function EditPage() {
navigate("/");
}
-if (!quizConfig) return <>>
+ if (!quizConfig) return <>>
return (
<>
{/*хедер*/}
@@ -157,6 +199,8 @@ if (!quizConfig) return <>>
/>
+
+
{isTablet ? (
>
>
{quiz?.status === "start" ? "Стоп" : "Старт"}
-{quiz?.status === "start" && https://hbpn.link/{quiz.qid} }
+ {quiz?.status === "start" && https://hbpn.link/{quiz.qid}}
>
diff --git a/src/stores/uiTools/actions.ts b/src/stores/uiTools/actions.ts
index 03c2a534..4eb3e0c8 100644
--- a/src/stores/uiTools/actions.ts
+++ b/src/stores/uiTools/actions.ts
@@ -31,4 +31,7 @@ export const updateEditSomeQuestion = (contentId?: string) => {
};
-export const updateOpenedModalSettingsId = (id?: string) => useUiTools.setState({ openedModalSettingsId: id ? id : null });
\ No newline at end of file
+export const updateOpenedModalSettingsId = (id?: string) => useUiTools.setState({ openedModalSettingsId: id ? id : null });
+
+
+export const updateCanCreatePublic = (can?: boolean) => useUiTools.setState({ canCreatePublic: can ? can : false });
\ No newline at end of file
diff --git a/src/stores/uiTools/store.ts b/src/stores/uiTools/store.ts
index 2a102999..74be21ce 100644
--- a/src/stores/uiTools/store.ts
+++ b/src/stores/uiTools/store.ts
@@ -8,7 +8,14 @@ export type UiTools = {
openBranchingPanel: boolean;
desireToOpenABranchingModal: string | null;
editSomeQuestion: string | null;
+ canCreatePublic: boolean;
+ whyCantCreatePublic: Record//ид вопроса и список претензий к нему
};
+export type WhyCantCreatePublic = {
+ name: string;
+ problems: string[]
+
+}
const initialState: UiTools = {
openedModalSettingsId: null as null,
@@ -16,6 +23,8 @@ const initialState: UiTools = {
openBranchingPanel: false,
desireToOpenABranchingModal: null as null,
editSomeQuestion: null as null,
+ canCreatePublic: false,
+ whyCantCreatePublic: {}
};
export const useUiTools = create()(