From 77f8fd166f288b04a3834fbb9a0cdd3b12f613ca Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Mon, 25 Apr 2022 16:38:01 +0300 Subject: [PATCH] schema --- .../MultipleDropDownService.js | 10 +++++ .../schema/multipleDropDownContainerNode.js | 29 +++++++++++++ .../schema/multipleDropDownOptionNode.js | 42 +++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownContainerNode.js create mode 100644 wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownOptionNode.js diff --git a/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js b/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js index dc8a38533..8a7911bdc 100644 --- a/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js +++ b/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js @@ -1,6 +1,8 @@ import Service from '../Service'; import MultipleDropDownQuestion from './MultipleDropDownQuestion'; import MultipleDropDownContainerNodeView from './MultipleDropDownContainerNodeView'; +import multipleDropDownContainerNode from './schema/multipleDropDownContainerNode'; +import multipleDropDownOptionNode from './schema/multipleDropDownOptionNode'; import CreateDropDownService from './CreateDropDownService/CreateDropDownService'; class MultipleDropDownService extends Service { @@ -12,6 +14,14 @@ class MultipleDropDownService extends Service { .to(MultipleDropDownQuestion); const createNode = this.container.get('CreateNode'); const addPortal = this.container.get('AddPortal'); + + createNode({ + multiple_drop_down_container: multipleDropDownContainerNode, + }); + + createNode({ + multiple_drop_down_option: multipleDropDownOptionNode, + }); } dependencies = [new CreateDropDownService()]; diff --git a/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownContainerNode.js b/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownContainerNode.js new file mode 100644 index 000000000..83884cd92 --- /dev/null +++ b/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownContainerNode.js @@ -0,0 +1,29 @@ +const multipleDropDownContainerNode = { + attrs: { + id: { default: '' }, + class: { default: 'multiple-drop-down-container' }, + feedback: { default: '' }, + }, + group: 'block questions', + atom: true, + selectable: false, + draggable: false, + content: 'block*', + parseDOM: [ + { + tag: 'div.multiple-drop-down-container', + getAttrs(dom) { + return { + id: dom.getAttribute('id'), + class: dom.getAttribute('class'), + feedback: dom.getAttribute('feedback'), + }; + }, + }, + ], + toDOM(node) { + return ['div', node.attrs, 0]; + }, +}; + +export default multipleDropDownContainerNode; diff --git a/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownOptionNode.js b/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownOptionNode.js new file mode 100644 index 000000000..5002ec17d --- /dev/null +++ b/wax-prosemirror-services/src/MultipleDropDownService/schema/multipleDropDownOptionNode.js @@ -0,0 +1,42 @@ +const multipleDropDownOptionNode = { + attrs: { + class: { default: 'multiple-drop-down-option' }, + id: { default: '' }, + isfirst: { default: false }, + answer: { default: {} }, + options: { default: [] }, + }, + group: 'inline questions', + content: 'text*', + inline: true, + atom: true, + defining: true, + parseDOM: [ + { + tag: 'span.multiple-drop-down-option', + getAttrs(dom) { + return { + id: dom.getAttribute('id'), + class: dom.getAttribute('class'), + isfirst: JSON.parse(dom.getAttribute('isfirst').toLowerCase()), + answer: JSON.parse(dom.getAttribute('answer').toLowerCase()), + }; + }, + }, + ], + toDOM(node) { + return [ + 'span', + { + id: node.attrs.id, + class: node.attrs.class, + isfirst: node.attrs.isfirst, + answer: JSON.stringify(node.attrs.answer), + feedback: node.attrs.feedback, + }, + 0, + ]; + }, +}; + +export default multipleDropDownOptionNode; -- GitLab