this.dom = $(_.template(viewTemplate)());
this.modePills = this.dom.find('.modePills');
this.list = this.dom.find('ol');
- this.addButton = this.dom.find('button.add');
this.description = this.dom.find('.description');
+ this.shuffleButton = this.dom.find('.shuffle');
this.itemViews = [];
- this.addButton.on('click', function(e) {
+ this.modePills.find('a').on('click', function(e) {
e.stopPropagation();
e.preventDefault();
- this.trigger('newItemRequested');
- //_.last(this.itemViews).editStart();
+ this.setMode($(e.target).parent().attr('mode'));
}.bind(this));
- this.modePills.find('a').on('click', function(e) {
+ this.shuffleButton.on('click', function(e) {
e.stopPropagation();
e.preventDefault();
- this.setMode($(e.target).parent().attr('mode'));
+ this.trigger('shuffleItems');
}.bind(this));
this.mode = 'initial';
dropTargets.on('dragenter', function() {
var first = this.itemViews[0];
if(this.mode === 'correct') {
- first = this.itemViews.slice(0)
- .sort(function(view1, view2) {
- if(view1.item.getAnswer() > view2.item.getAnswer()) {
- return 1;
- }
- return -1;
- })[0];
+ first = this.sortedItemViews()[0];
}
if(!this.allowDropAt(first, true)) {
return;
var first = this.itemViews[0];
if(this.mode === 'correct') {
- first = this.itemViews.slice(0)
- .sort(function(view1, view2) {
- if(view1.item.getAnswer() > view2.item.getAnswer()) {
- return 1;
- }
- return -1;
- })[0];
+ first = this.sortedItemViews()[0];
}
this.trigger(this.mode === 'initial' ? 'moveItem' : 'moveAnswer', droppedItem.item, first.item, 'before');
dropTargets.removeClass('active');
+ e.preventDefault();
}.bind(this));
};
_.extend(OrderExerciseView.prototype, Backbone.Events, {
addItem: function(item) {
var view = new ItemView(item, this);
- view.on('edit', function(text) {
- this.trigger('itemEdited', item, text);
- }.bind(this));
view.on('receivedDrop', function(droppedItem) {
this.trigger(this.mode === 'initial' ? 'moveItem' : 'moveAnswer', droppedItem.item, item, 'after');
}.bind(this));
this.itemViews.forEach(function(itemView) {
this.list.append(itemView.dom);
}.bind(this));
+ this.shuffleButton.show();
} else {
- this.itemViews.slice(0)
- .sort(function(view1, view2) {
- if(view1.item.getAnswer() > view2.item.getAnswer()) {
- return 1;
- }
- return -1;
- })
+ this.sortedItemViews()
.forEach(function(itemView) {
this.list.append(itemView.dom);
}.bind(this));
+ this.shuffleButton.hide();
}
},
+ sortedItemViews: function () {
+ return this.itemViews.slice(0)
+ .sort(function(view1, view2) {
+ if(view1.item.getAnswer() > view2.item.getAnswer()) {
+ return 1;
+ }
+ return -1;
+ });
+ },
allowDropAt: function(view, up) {
var arr = [this.draggedView.dom[0]];
if(!up) {
var dropTargets = this.dom.find('.placeholder'),
- dragSources = this.dom.find('.wrapper');
+ dragSources = this.dom.find('.handle');
dragSources.on('dragstart', function(e) {
this.dom.addClass('dragged');
var content = this.content;
this.container = exerciseView.element.createContainer(item.node.contents(), {
+ resetBackground: true,
manages: function(node, originaParent) {
return item.node.sameNode(node.parent() || originaParent);
},