parent
fc4170c581
commit
b4c6284fae
@ -0,0 +1,49 @@
|
||||
'use strict';
|
||||
define(
|
||||
[
|
||||
'jquery',
|
||||
'underscore',
|
||||
'backgrid.selectall'
|
||||
], function ($, _, BackgridSelectAll) {
|
||||
return BackgridSelectAll.extend({
|
||||
|
||||
enterEditMode: function (e) {
|
||||
if (e.shiftKey && this.model.collection.lastToggled) {
|
||||
this._selectRange();
|
||||
}
|
||||
|
||||
var checked = $(e.target).prop('checked');
|
||||
|
||||
this.model.collection.lastToggled = this.model;
|
||||
this.model.collection.checked = checked;
|
||||
},
|
||||
|
||||
onChange: function (e) {
|
||||
var checked = $(e.target).prop('checked');
|
||||
this.$el.parent().toggleClass('selected', checked);
|
||||
this.model.trigger('backgrid:selected', this.model, checked);
|
||||
},
|
||||
|
||||
_selectRange: function () {
|
||||
var collection = this.model.collection;
|
||||
var lastToggled = collection.lastToggled;
|
||||
var checked = collection.checked;
|
||||
|
||||
var currentIndex = collection.indexOf(this.model);
|
||||
var lastIndex = collection.indexOf(lastToggled);
|
||||
|
||||
var low = Math.min(currentIndex, lastIndex);
|
||||
var high = Math.max(currentIndex, lastIndex);
|
||||
var range = _.range(low + 1, high);
|
||||
|
||||
_.each(range, function (index) {
|
||||
var model = collection.at(index);
|
||||
|
||||
model.trigger('backgrid:select', model, checked);
|
||||
});
|
||||
|
||||
this.model.collection.lastToggled = undefined;
|
||||
this.model.collection.checked = undefined;
|
||||
}
|
||||
});
|
||||
});
|
Loading…
Reference in new issue