при добавлении первого узла - первый узел становится дефолтным у родителя. +фикс бага, где при добавлении результата создавался новый даже при дублировании

This commit is contained in:
Nastya 2023-12-23 14:35:09 +03:00
parent 679558b75e
commit 1a430a338d
3 changed files with 26 additions and 9 deletions

@ -169,22 +169,30 @@ function CsComponent({
} }
}) })
//предупреждаем добавленный вопрос о том, кто его родитель //предупреждаем добавленный вопрос о том, кто его родитель
updateQuestion(targetQuestion.content.id, question => { updateQuestion(targetQuestion.content.id, question => {
question.content.rule.parentId = parentNodeContentId question.content.rule.parentId = parentNodeContentId
question.content.rule.main = [] question.content.rule.main = []
//Это листик. Сбросим ему на всякий случай не листиковые поля
question.content.rule.children = []
question.content.rule.default = ""
}) })
const noChild = parentQuestion.content.rule.children.length === 0
//предупреждаем родителя о новом потомке (если он ещё не знает о нём) //предупреждаем родителя о новом потомке (если он ещё не знает о нём)
if (!parentQuestion.content.rule.children.includes(targetQuestion.content.id)) updateQuestion(parentNodeContentId, question => { if (!parentQuestion.content.rule.children.includes(targetQuestion.content.id)) updateQuestion(parentNodeContentId, question => {
question.content.rule.children = [...question.content.rule.children, targetQuestion.content.id] question.content.rule.children = [...question.content.rule.children, targetQuestion.content.id]
//единственному ребёнку даём дефолт по-умолчанию
question.content.rule.default = noChild ? targetQuestion.content.id : question.content.rule.default
}) })
if (!noChild) {//детей больше 1
//Если детей больше 1 - предупреждаем стор вопросов об открытии модалки ветвления //- предупреждаем стор вопросов об открытии модалки ветвления
if (parentQuestion.content.rule.children >= 1) {
updateOpenedModalSettingsId(targetQuestion.content.id) updateOpenedModalSettingsId(targetQuestion.content.id)
} }
} }

@ -179,10 +179,17 @@ export default function BranchingQuestions() {
checked={parentQuestion.content.rule.default === targetQuestion.content.id} checked={parentQuestion.content.rule.default === targetQuestion.content.id}
onClick={() => { onClick={() => {
let mutate = JSON.parse(JSON.stringify(parentQuestion)); let mutate = JSON.parse(JSON.stringify(parentQuestion));
mutate.content.rule.default =
parentQuestion.content.rule.default === targetQuestion.content.id if (parentQuestion.content.rule.children.length === 1) {
? "" //Если потомок 1 - можно только чекнуть чекбокс (по-умолчанию и так должен быть чекнут единственный)
: targetQuestion.content.id; mutate.content.rule.default = targetQuestion.content.id
} else {//Изменять чекбокс можно только если много потомков
mutate.content.rule.default =
parentQuestion.content.rule.default === targetQuestion.content.id
? ""
: targetQuestion.content.id;
}
setParentQuestion(mutate); setParentQuestion(mutate);
}} }}
/> />

@ -506,8 +506,10 @@ export const createResult = async (
} }
//Мы получили запрос на создание резулта. Анализируем существует ли такой. Если да - просто делаем его активным //Мы получили запрос на создание резулта. Анализируем существует ли такой. Если да - просто делаем его активным
const question = useQuestionsStore.getState().questions.find(q=> q.type !== null && q?.content.rule.parentContentId === parentContentId) const question = useQuestionsStore.getState().questions.find(q=> q.type !== null && q?.content.rule.parentId === parentContentId)
console.log("Получил запрос на создание результа родителю ", parentContentId)
console.log("Ищу такой же результ в списке ", question)
if (question) {//существует, делаем активным if (question) {//существует, делаем активным
updateQuestion(question.id, (q) => { updateQuestion(question.id, (q) => {