diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceNodeView.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceNodeView.js index 5b2e317c52a5bb27b37a0ec0e8e56dad0b2521cf..78fbc24122e39d40bd512f0270ccd3a566a44e2f 100644 --- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceNodeView.js +++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/MultipleChoiceNodeView.js @@ -23,12 +23,6 @@ export default class MultipleChoiceNodeView extends AbstractNodeView { } update(node) { - if ( - node.attrs.correct !== this.node.attrs.correct || - node.attrs.feedback !== this.node.attrs.feedback - ) - return true; - // if (!node.sameMarkup(this.node)) return false; this.node = node; if (this.context.view[node.attrs.id]) { diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/FeedbackComponent.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/FeedbackComponent.js index 50b15d24107248973c634c7385b9ce6e942f9b46..468279e3286aea71a39936d16e43420170405301 100644 --- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/FeedbackComponent.js +++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/FeedbackComponent.js @@ -1,8 +1,9 @@ /* eslint-disable react-hooks/exhaustive-deps */ -import React, { useContext, useRef, useState } from 'react'; +import React, { useContext, useRef, useState, useEffect } from 'react'; import styled from 'styled-components'; import { TextSelection } from 'prosemirror-state'; import { WaxContext } from 'wax-prosemirror-core'; +import { DocumentHelpers } from 'wax-prosemirror-utilities'; const FeedBack = styled.div` color: black; @@ -21,9 +22,20 @@ const FeedBackInput = styled.input` export default ({ node, view, getPos }) => { const context = useContext(WaxContext); - const [feedBack, setFeedBack] = useState(node.attrs.feedback); + const [feedBack, setFeedBack] = useState(''); const feedBackRef = useRef(null); + useEffect(() => { + const allNodes = getNodes(context.view.main); + allNodes.forEach(singNode => { + if (singNode.node.attrs.id === node.attrs.id) { + console.log('here', singNode.node.attrs.feedback); + if (singNode.node.attrs.feedback !== '') + setFeedBack(singNode.node.attrs.feedback); + } + }); + }, [getNodes(context.view.main)]); + const handleKeyDown = e => { e.stopPropagation(); if (e.key === 'Backspace') { @@ -72,3 +84,14 @@ export default ({ node, view, getPos }) => { </FeedBack> ); }; + +const getNodes = view => { + const allNodes = DocumentHelpers.findBlockNodes(view.state.doc); + const multipleChoiceNodes = []; + allNodes.forEach(node => { + if (node.node.type.name === 'multiple_choice') { + multipleChoiceNodes.push(node); + } + }); + return multipleChoiceNodes; +}; diff --git a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/SwitchComponent.js b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/SwitchComponent.js index d696b1f9e9b11805d2c92cb51cab0a08e24e6378..c09f657a6eb3f4d2d14397e3c91390f79bcdcccc 100644 --- a/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/SwitchComponent.js +++ b/editors/demo/src/HHMI/MultipleChoiceQuestionService/components/SwitchComponent.js @@ -27,13 +27,13 @@ const CustomSwitch = ({ node, getPos }) => { const [checked, setChecked] = useState(false); useEffect(() => { - const allNodes = getNodes(context.view); + const allNodes = getNodes(context.view.main); allNodes.forEach(singNode => { if (singNode.node.attrs.id === node.attrs.id) { setChecked(singNode.node.attrs.correct); } }); - }, [getNodes(context.view)]); + }, [getNodes(context.view.main)]); const handleChange = () => { setChecked(!checked); @@ -58,7 +58,7 @@ const CustomSwitch = ({ node, getPos }) => { }; const getNodes = view => { - const allNodes = DocumentHelpers.findBlockNodes(view.main.state.doc); + const allNodes = DocumentHelpers.findBlockNodes(view.state.doc); const multipleChoiceNodes = []; allNodes.forEach(node => { if (node.node.type.name === 'multiple_choice') {