From 8c047ae1ec8167d3f24da64ea9b4031e1f8b5486 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Mon, 17 Jan 2022 02:33:00 +0200 Subject: [PATCH] add tool files --- editors/demo/src/HHMI/config/config.js | 4 +++- wax-prosemirror-services/index.js | 1 + .../src/EssayService/EssayQuestion.js | 22 +++++++++++++++---- .../helpers/helpers.js | 2 ++ .../EssayToolGroupService/Essay.js | 13 +++++++++++ .../EssayToolGroupService.js | 10 +++++++++ .../MultipleChoice.js | 4 +--- 7 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/Essay.js create mode 100644 wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/EssayToolGroupService.js diff --git a/editors/demo/src/HHMI/config/config.js b/editors/demo/src/HHMI/config/config.js index dbebc2840..28e67c535 100644 --- a/editors/demo/src/HHMI/config/config.js +++ b/editors/demo/src/HHMI/config/config.js @@ -26,6 +26,7 @@ import { FillTheGapToolGroupService, MultipleDropDownToolGroupService, EssayService, + EssayToolGroupService, } from 'wax-prosemirror-services'; import { DefaultSchema } from 'wax-prosemirror-utilities'; @@ -52,7 +53,7 @@ export default { 'Images', 'Tables', 'MultipleDropDown', - 'MultipleChoice', + 'Essay', 'FillTheGap', 'FullScreen', ], @@ -76,6 +77,7 @@ export default { new MultipleChoiceToolGroupService(), new MultipleDropDownToolGroupService(), new EssayService(), + new EssayToolGroupService(), new ListsService(), new LinkService(), new InlineAnnotationsService(), diff --git a/wax-prosemirror-services/index.js b/wax-prosemirror-services/index.js index 17d4efd65..d6ad74108 100644 --- a/wax-prosemirror-services/index.js +++ b/wax-prosemirror-services/index.js @@ -76,3 +76,4 @@ export { default as CustomTagBlockToolGroupService } from './src/WaxToolGroups/C export { default as MultipleChoiceToolGroupService } from './src/WaxToolGroups/MultipleChoiceToolGroupService/MultipleChoiceToolGroupService'; export { default as FillTheGapToolGroupService } from './src/WaxToolGroups/FillTheGapToolGroupService/FillTheGapToolGroupService'; export { default as MultipleDropDownToolGroupService } from './src/WaxToolGroups/MultipleDropDownToolGroupService/MultipleDropDownToolGroupService'; +export { default as EssayToolGroupService } from './src/WaxToolGroups/EssayToolGroupService/EssayToolGroupService'; diff --git a/wax-prosemirror-services/src/EssayService/EssayQuestion.js b/wax-prosemirror-services/src/EssayService/EssayQuestion.js index aca581aab..655fd4900 100644 --- a/wax-prosemirror-services/src/EssayService/EssayQuestion.js +++ b/wax-prosemirror-services/src/EssayService/EssayQuestion.js @@ -1,8 +1,22 @@ import { injectable } from 'inversify'; -import { wrapIn } from 'prosemirror-commands'; import { v4 as uuidv4 } from 'uuid'; +import { Commands } from 'wax-prosemirror-utilities'; import Tools from '../lib/Tools'; +const checkifEmpty = view => { + const { state } = view; + const { from, to } = state.selection; + state.doc.nodesBetween(from, to, (node, pos) => { + if (node.textContent !== ' ') Commands.simulateKey(view, 13, 'Enter'); + }); + if (state.selection.constructor.name === 'GapCursor') { + Commands.simulateKey(view, 13, 'Enter'); + setTimeout(() => { + view.focus(); + }); + } +}; + @injectable() class EssayQuestion extends Tools { title = 'Add Essay Question'; @@ -12,9 +26,9 @@ class EssayQuestion extends Tools { get run() { return (state, dispatch) => { - wrapIn(state.config.schema.nodes.essay, { - id: uuidv4(), - })(state, dispatch); + console.log('essay'); + //checkifEmpty(main); + //const { state, dispatch } = main; }; } diff --git a/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js b/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js index 3a4183238..197698db1 100644 --- a/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js +++ b/wax-prosemirror-services/src/MultipleChoiceQuestionService/helpers/helpers.js @@ -84,6 +84,8 @@ const createOptions = (main, context, parentType, questionType, answerType) => { createEmptyParagraph(context, secondOption.attrs.id); createEmptyParagraph(context, question.attrs.id); }, 50); + + return true; }; export default { diff --git a/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/Essay.js b/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/Essay.js new file mode 100644 index 000000000..3c34de106 --- /dev/null +++ b/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/Essay.js @@ -0,0 +1,13 @@ +import { injectable, inject } from 'inversify'; +import ToolGroup from '../../lib/ToolGroup'; + +@injectable() +class Essay extends ToolGroup { + tools = []; + constructor(@inject('EssayQuestion') essayQuestion) { + super(); + this.tools = [essayQuestion]; + } +} + +export default Essay; diff --git a/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/EssayToolGroupService.js b/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/EssayToolGroupService.js new file mode 100644 index 000000000..5a2bdb7ce --- /dev/null +++ b/wax-prosemirror-services/src/WaxToolGroups/EssayToolGroupService/EssayToolGroupService.js @@ -0,0 +1,10 @@ +import Service from '../../Service'; +import Essay from './Essay'; + +class EssayToolGroupService extends Service { + register() { + this.container.bind('Essay').to(Essay); + } +} + +export default EssayToolGroupService; diff --git a/wax-prosemirror-services/src/WaxToolGroups/MultipleChoiceToolGroupService/MultipleChoice.js b/wax-prosemirror-services/src/WaxToolGroups/MultipleChoiceToolGroupService/MultipleChoice.js index 1e54cffb1..cffe0cf6b 100644 --- a/wax-prosemirror-services/src/WaxToolGroups/MultipleChoiceToolGroupService/MultipleChoice.js +++ b/wax-prosemirror-services/src/WaxToolGroups/MultipleChoiceToolGroupService/MultipleChoice.js @@ -8,11 +8,9 @@ class MultipleChoice extends ToolGroup { @inject('MultipleChoiceQuestion') multipleChoiceQuestion, @inject('MultipleChoiceSingleCorrectQuestion') multipleChoiceSingleCorrectQuestion, - @inject('EssayQuestion') - essayQuestion, ) { super(); - this.tools = [essayQuestion]; + this.tools = [multipleChoiceQuestion, multipleChoiceSingleCorrectQuestion]; } } -- GitLab