1 define(function(require) {
6 var _ = require('libs/underscore');
8 var elementBase = require('plugins/core/edumed/elementBase'),
9 AssignExerciseView = require('./view');
11 var AssignExerciseElement = Object.create(elementBase);
12 _.extend(AssignExerciseElement, {
14 elementBase.init.call(this);
16 this.view = new AssignExerciseView(this, this.wlxmlNode);
17 this._container().append(this.view.dom);
19 this.view.on('assignmentAdded', function() {
23 this.view.on('assignmentRemoved', function() {
28 var exerciseNode = this.wlxmlNode;
29 this.createContainer(this.wlxmlNode.object.getDescription(), {
30 resetBackground: true,
31 manages: function(node, removedFrom) {
32 if(exerciseNode.object.isList(node) || (removedFrom && exerciseNode.object.isList(removedFrom))) {
35 return exerciseNode.sameNode(node.parent() || removedFrom);
37 dom: this.view.dom.find('.description')
42 onNodeAdded: function(event) {
43 var node = event.meta.node;
44 if(this.wlxmlNode.object.isItemNode(node)) {
48 onNodeAttrChange: function(event) {
51 onNodeDetached: function(event) {
52 if(this.wlxmlNode.object.isItemNode(event.meta.node, event.meta.parent)) {
56 reloadView: function() {
57 this.view.clearItems();
58 this.wlxmlNode.object.getSourceItems().forEach(function(item) {
59 this.view.addSourceItem(item);
61 this.wlxmlNode.object.getDestinationItems().forEach(function(item) {
62 this.view.addDestinationItem(item);
65 getVerticallyFirstTextElement: function() {
67 this.containers.some(function(container) {
68 toret = container.getVerticallyFirstTextElement();
75 return {tag: 'div', klass: 'exercise.assign', prototype: AssignExerciseElement};