X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/3dfe15d50b60598341b9754876db4a48162c5cd0..6d7963d9e1a726e9e8d2173b7df165c63421f546:/src/editor/plugins/core/edumed/choice/choiceBase.js diff --git a/src/editor/plugins/core/edumed/choice/choiceBase.js b/src/editor/plugins/core/edumed/choice/choiceBase.js new file mode 100644 index 0000000..dc8fe0a --- /dev/null +++ b/src/editor/plugins/core/edumed/choice/choiceBase.js @@ -0,0 +1,61 @@ +define(function(require) { + +'use strict'; + +var $ = require('libs/jquery'), + _ = require('libs/underscore'), + documentElement = require('modules/documentCanvas/canvas/documentElement'), + template = require('libs/text!./element.html'); + + +var choiceBase = Object.create(documentElement.DocumentNodeElement.prototype); +_.extend(choiceBase, { + init: function() { + documentElement.DocumentNodeElement.prototype.init.call(this); + this.view = $(_.template(template)({type: this.type})); + this._container().append(this.view); + + this.createContainer(this.wlxmlNode.contents().filter(function(n) {return !n.is('list');}), { + manages: function(node, removedFrom) { + if(node.is('list.orderable')) { + return false; + } + return this.wlxmlNode.sameNode(node.parent() || removedFrom); + }.bind(this), + dom: this.view.find('.description') + }); + + this.wlxmlNode.contents() + .filter(function(node) { return node.is('list'); }) + .some(function(node) { + this.listView = this.createListView(node); + this.view.find('.list').append(this.listView.dom); + }.bind(this)); + }, + getVerticallyFirstTextElement: function() { + var toret; + this.containers.some(function(container) { + toret = container.getVerticallyFirstTextElement(); + return !!toret; + }); + return toret; + }, + onNodeAdded: function(event) { + var node = event.meta.node; + if(this.listView.listNode.sameNode(node.parent()) && node.is('item.answer')) { + this.listView.addItem(node); + } + }, + onNodeDetached: function(event) { + var node = event.meta.node; + if(this.listView.listNode.sameNode(event.meta.parent) && node.is('item.answer')) { + this.listView.removeItem(node); + } + } +}); + +return choiceBase; + +}); + +