editor: Missing names of exercises on a canvas
[fnpeditor.git] / src / editor / plugins / core / edumed / choice / choiceMulti.js
1 define(function(require) {
2     
3 'use strict';
4
5 /* globals gettext */
6
7 var $ = require('libs/jquery'),
8     _ = require('libs/underscore'),
9     choiceBase = require('./choiceBase'),
10     ListView = require('./list');
11
12
13 var choiceMulti = Object.create(choiceBase);
14 _.extend(choiceMulti, {
15     type: 'multi',
16     name: gettext('Multiple Choice'),
17     createListView: function(listNode) {
18         return new ListView(this, listNode, {
19             onItemViewAdded: function(itemView) {
20                 var checkbox = new CheckboxView(itemView.node.getAttr('answer') === 'true', function(checked) {
21                     itemView.node.document.transaction(function() {
22                         itemView.node.getParent('exercise.choice').object.setAnswer(itemView.node, checked);
23                     }, {
24                         metadata: {
25                             description: gettext('Change answer')
26                         }
27                     });
28                 });
29                 itemView.addPrefixView(checkbox);
30             }
31         });
32     },
33     onNodeAttrChange: function(event) {
34         if(this.listView.listNode.sameNode(event.meta.node.parent())) {
35             this.listView.getItemView(event.meta.node).prefixView.dom.attr('checked', event.meta.newVal === 'true');
36         }
37     }
38 });
39
40 var CheckboxView = function(checked, onValueChange) {
41     this.dom = $('<input type="checkbox">')
42             .attr('checked', checked);
43     this.dom.on('click', function() {
44         onValueChange(this.checked);
45     });
46 };
47
48 return choiceMulti;
49
50 });