From bdccaabf0f35f96ce9db01021f93021a8b35b061 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Wed, 24 Nov 2021 23:40:43 +0200 Subject: [PATCH] new files --- wax-prosemirror-core/src/WaxView.js | 3 ++ .../components/FeedbackComponent.js | 9 +++++- .../plugins/PasteIntoFeedbackPlugin.js | 15 ++++++++++ .../components/QuestionComponent.js | 10 +++++-- .../TrueFalseNodeView.js | 0 .../TrueFalseQuestion.js | 0 .../TrueFalseQuestionService.js | 30 +++++++++++++++++++ 7 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 wax-prosemirror-services/src/MultipleChoiceQuestionService/plugins/PasteIntoFeedbackPlugin.js create mode 100644 wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseNodeView.js create mode 100644 wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestion.js create mode 100644 wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestionService.js diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js index 0ad849249..7cf556de2 100644 --- a/wax-prosemirror-core/src/WaxView.js +++ b/wax-prosemirror-core/src/WaxView.js @@ -77,6 +77,9 @@ const WaxView = forwardRef((props, ref) => { attributes: { spellcheck: browserSpellCheck ? 'true' : 'false', }, + handlePaste: (view, event, slice) => { + if (view.state.selection.from === null) return true; + }, }, ); diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js index 0fa7d157c..e1619f25a 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/components/FeedbackComponent.js @@ -47,7 +47,7 @@ export default ({ node, view, getPos }) => { if (e.key === 'Backspace') { context.view.main.dispatch( context.view.main.state.tr.setSelection( - TextSelection.create(context.view.main.state.tr.doc, 0), + TextSelection.create(context.view.main.state.tr.doc, null), ), ); } @@ -81,6 +81,12 @@ export default ({ node, view, getPos }) => { ); }; + const handleOnPaste = e => { + const clipboardData = e.clipboardData || window.clipboardData; + const pastedData = clipboardData.getData('Text'); + setFeedBack(pastedData); + }; + return ( <FeedBack> <FeedBackLabel>Feedback</FeedBackLabel> @@ -88,6 +94,7 @@ export default ({ node, view, getPos }) => { onBlur={saveFeedBack} onChange={feedBackInput} onFocus={onFocus} + onPaste={e => handleOnPaste(e)} onKeyDown={handleKeyDown} placeholder="Insert feedback" ref={feedBackRef} diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/plugins/PasteIntoFeedbackPlugin.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/plugins/PasteIntoFeedbackPlugin.js new file mode 100644 index 000000000..fcab65db1 --- /dev/null +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/plugins/PasteIntoFeedbackPlugin.js @@ -0,0 +1,15 @@ +/* eslint-disable no-param-reassign */ +import { Plugin, PluginKey } from 'prosemirror-state'; + +const PasteIntoFeedbackPlugin = new PluginKey('pasteIntoFeedbackPlugin'); + +export default (props, context) => { + return new Plugin({ + key: PasteIntoFeedbackPlugin, + props: { + handlePaste: (view, event, slice) => { + if (view.state.selection.from === null) return true; + }, + }, + }); +}; diff --git a/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js b/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js index 7f3e507c5..80044aa84 100644 --- a/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js +++ b/wax-prosemirror-services/src/MultipleChoiceSingleCorrectQuestionService/components/QuestionComponent.js @@ -122,8 +122,12 @@ export default ({ node, view, getPos }) => { const getIsDisabled = () => { context.view.main.state.doc.descendants((editorNode, index) => { - if (editorNode.type.name === 'multiple_choice_single_correct') { - console.log(editorNode); + if (editorNode.type.name === 'multiple_choice_single_correct_container') { + editorNode.content.content.forEach(element => { + if (element.attrs.correct) { + console.log(element); + } + }); } }); }; @@ -139,8 +143,8 @@ export default ({ node, view, getPos }) => { <QuestionNunber /> <SwitchComponent getPos={getPos} - node={node} isDisabled={getIsDisabled()} + node={node} /> </InfoRow> <QuestionWrapper> diff --git a/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseNodeView.js b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseNodeView.js new file mode 100644 index 000000000..e69de29bb diff --git a/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestion.js b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestion.js new file mode 100644 index 000000000..e69de29bb diff --git a/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestionService.js b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestionService.js new file mode 100644 index 000000000..eb82a0962 --- /dev/null +++ b/wax-prosemirror-services/src/TrueFalseQuestionService/TrueFalseQuestionService.js @@ -0,0 +1,30 @@ +import Service from '../Service'; +import TrueFalseQuestion from './TrueFalseQuestion'; +// import multipleChoiceSingleCorrectNode from './schema/multipleChoiceSingleCorrectNode'; +// import multipleChoiceSingleCorrectContainerNode from './schema/multipleChoiceSingleCorrectContainerNode'; +// import QuestionComponent from './components/QuestionComponent'; +import TrueFalseNodeView from './TrueFalseNodeView'; + +class TrueFalseQuestionService extends Service { + register() { + this.container.bind('TrueFalseQuestion').to(TrueFalseQuestion); + const createNode = this.container.get('CreateNode'); + const addPortal = this.container.get('AddPortal'); + + // createNode({ + // multiple_choice_single_correct: multipleChoiceSingleCorrectNode, + // }); + + // createNode({ + // multiple_choice_single_correct_container: multipleChoiceSingleCorrectContainerNode, + // }); + + // addPortal({ + // nodeView: TrueFalseNodeView, + // component: QuestionComponent, + // context: this.app, + // }); + } +} + +export default TrueFalseQuestionService; -- GitLab