X-Git-Url: https://git.mdrn.pl/fnpeditor.git/blobdiff_plain/3dfe15d50b60598341b9754876db4a48162c5cd0..6d7963d9e1a726e9e8d2173b7df165c63421f546:/src/editor/plugins/core/edumed/choice/choiceMulti.js diff --git a/src/editor/plugins/core/edumed/choice/choiceMulti.js b/src/editor/plugins/core/edumed/choice/choiceMulti.js new file mode 100644 index 0000000..a05346c --- /dev/null +++ b/src/editor/plugins/core/edumed/choice/choiceMulti.js @@ -0,0 +1,49 @@ +define(function(require) { + +'use strict'; + +/* globals gettext */ + +var $ = require('libs/jquery'), + _ = require('libs/underscore'), + choiceBase = require('./choiceBase'), + ListView = require('./list'); + + +var choiceMulti = Object.create(choiceBase); +_.extend(choiceMulti, { + type: 'multi', + createListView: function(listNode) { + return new ListView(this, listNode, { + onItemViewAdded: function(itemView) { + var checkbox = new CheckboxView(itemView.node.getAttr('answer') === 'true', function(checked) { + itemView.node.document.transaction(function() { + itemView.node.getParent('exercise.choice').object.setAnswer(itemView.node, checked); + }, { + metadata: { + description: gettext('Change answer') + } + }); + }); + itemView.addPrefixView(checkbox); + } + }); + }, + onNodeAttrChange: function(event) { + if(this.listView.listNode.sameNode(event.meta.node.parent())) { + this.listView.getItemView(event.meta.node).prefixView.dom.attr('checked', event.meta.newVal === 'true'); + } + } +}); + +var CheckboxView = function(checked, onValueChange) { + this.dom = $('') + .attr('checked', checked); + this.dom.on('click', function() { + onValueChange(this.checked); + }); +}; + +return choiceMulti; + +}); \ No newline at end of file