From 1fd76927fb3ef065c3aa1af9705bd11e713d3485 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Fri, 3 Dec 2021 11:19:12 +0200 Subject: [PATCH] handleChange --- .../components/SwitchComponent.js | 40 ++++++++++--------- ...ultipleChoiceSingleCorrectContainerNode.js | 4 +- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js index 7507b8b46..5b8de36a4 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/components/SwitchComponent.js @@ -33,29 +33,31 @@ const CustomSwitch = ({ node, getPos }) => { const handleChange = () => { setChecked(!checked); - - main.state.doc.descendants((editorNode, pos) => { - if (editorNode.type.name === 'multiple_choice_single_correct_container') { - editorNode.content.content.forEach(element => { - if (element.attrs.id === node.attrs.id) { - main.dispatch( - main.state.tr.setNodeMarkup(getPos(), undefined, { - ...element.attrs, - correct: !checked, - }), - ); - } else if (element.attrs.correct) { - // console.log(element); - // main.dispatch( - // main.state.tr.setNodeMarkup(getPos() + 4, undefined, { - // ...element.attrs, - // correct: false, - // }), - // ); + const { tr } = main.state; + main.state.doc.descendants((parentNode, parentPos) => { + if (parentNode.type.name === 'multiple_choice_single_correct_container') { + parentNode.descendants((element, position) => { + if ( + element.type.name === 'multiple_choice_single_correct' && + element.attrs.id === node.attrs.id + ) { + tr.setNodeMarkup(getPos(), undefined, { + ...element.attrs, + correct: !checked, + }); + } else if ( + element.type.name === 'multiple_choice_single_correct' && + element.attrs.correct + ) { + tr.setNodeMarkup(parentPos + position + 1, undefined, { + ...element.attrs, + correct: false, + }); } }); } }); + main.dispatch(tr); }; return ( diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/schema/multipleChoiceSingleCorrectContainerNode.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/schema/multipleChoiceSingleCorrectContainerNode.js index 8f6db3202..ab224fb26 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/schema/multipleChoiceSingleCorrectContainerNode.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/MultipleChoiceSingleCorrectQuestionService/schema/multipleChoiceSingleCorrectContainerNode.js @@ -1,6 +1,8 @@ +import { v4 as uuidv4 } from 'uuid'; + const multipleChoiceSingleCorrectContainerNode = { attrs: { - id: { default: '' }, + id: { default: uuidv4() }, class: { default: 'multiple-choice-single-correct' }, correctId: { default: '' }, }, -- GitLab