mirror of
https://github.com/fergalmoran/dss.git
synced 2026-01-04 16:04:35 +00:00
8 lines
2.3 KiB
JavaScript
Executable File
8 lines
2.3 KiB
JavaScript
Executable File
/*
|
|
backgrid-select-all
|
|
http://github.com/wyuenho/backgrid
|
|
|
|
Copyright (c) 2013 Jimmy Yuen Ho Wong and contributors
|
|
Licensed under the MIT @license.
|
|
*/
|
|
(function(e,t,i,n,o){var c=o.Extension.SelectRowCell=n.View.extend({className:"select-row-cell",tagName:"td",events:{"keydown :checkbox":"onKeydown","change :checkbox":"onChange","click :checkbox":"enterEditMode"},initialize:function(e){o.requireOptions(e,["model","column"]),this.column=e.column,this.column instanceof o.Column||(this.column=new o.Column(this.column)),this.listenTo(this.model,"backgrid:select",function(e,t){this.$el.find(":checkbox").prop("checked",t).change()})},enterEditMode:function(){this.$el.find(":checkbox").focus()},exitEditMode:function(){this.$el.find(":checkbox").blur()},onKeydown:function(e){var t=new o.Command(e);return t.passThru()?!0:(t.cancel()?(e.stopPropagation(),this.$el.find(":checkbox").blur()):(t.save()||t.moveLeft()||t.moveRight()||t.moveUp()||t.moveDown())&&(e.preventDefault(),e.stopPropagation(),this.model.trigger("backgrid:edited",this.model,this.column,t)),void 0)},onChange:function(e){this.model.trigger("backgrid:selected",this.model,t(e.target).prop("checked"))},render:function(){return this.$el.empty().append('<input tabindex="-1" type="checkbox" />'),this.delegateEvents(),this}}),l=o.Extension.SelectAllHeaderCell=c.extend({className:"select-all-header-cell",tagName:"th",initialize:function(e){o.requireOptions(e,["column","collection"]),this.column=e.column,this.column instanceof o.Column||(this.column=new o.Column(this.column));var t=this.collection,i=this.selectedModels={};this.listenTo(t,"backgrid:selected",function(e,t){t?i[e.id||e.cid]=e:(delete i[e.id||e.cid],this.$el.find(":checkbox").prop("checked",!1))}),this.listenTo(t,"remove",function(e){delete i[e.cid]}),this.listenTo(t,"backgrid:refresh",function(){this.$el.find(":checkbox").prop("checked",!1);for(var e=0;e<t.length;e++){var n=t.at(e);i[n.id||n.cid]&&n.trigger("backgrid:select",n,!0)}})},onChange:function(e){var i=t(e.target).prop("checked"),n=this.collection;n.each(function(e){e.trigger("backgrid:select",e,i)})}});o.Grid.prototype.getSelectedModels=function(){for(var e,t=this.header.row.cells,i=0,n=t.length;n>i;i++){var o=t[i];if(o instanceof l){e=o;break}}var c=[];if(e)for(var s in e.selectedModels)c.push(this.collection.get(s));return c}})(window,jQuery,_,Backbone,Backgrid); |