UNPKG

jsgrid

Version:

Lightweight data grid jQuery plugin. It supports basic grid operations like inserting, filtering, editing, deleting, paging, sorting, and validation. jsGrid is tunable and allows to customize appearance and components.

98 lines (75 loc) 2.5 kB
(function(jsGrid, $, undefined) { var Field = jsGrid.Field; function CheckboxField(config) { Field.call(this, config); } CheckboxField.prototype = new Field({ sorter: "number", align: "center", autosearch: true, itemTemplate: function(value) { return this._createCheckbox().prop({ checked: value, disabled: true }); }, filterTemplate: function() { if(!this.filtering) return ""; var grid = this._grid, $result = this.filterControl = this._createCheckbox(); $result.prop({ readOnly: true, indeterminate: true }); $result.on("click", function() { var $cb = $(this); if($cb.prop("readOnly")) { $cb.prop({ checked: false, readOnly: false }); } else if(!$cb.prop("checked")) { $cb.prop({ readOnly: true, indeterminate: true }); } }); if(this.autosearch) { $result.on("click", function() { grid.search(); }); } return $result; }, insertTemplate: function() { if(!this.inserting) return ""; return this.insertControl = this._createCheckbox(); }, editTemplate: function(value) { if(!this.editing) return this.itemTemplate.apply(this, arguments); var $result = this.editControl = this._createCheckbox(); $result.prop("checked", value); return $result; }, filterValue: function() { return this.filterControl.get(0).indeterminate ? undefined : this.filterControl.is(":checked"); }, insertValue: function() { return this.insertControl.is(":checked"); }, editValue: function() { return this.editControl.is(":checked"); }, _createCheckbox: function() { return $("<input>").attr("type", "checkbox"); } }); jsGrid.fields.checkbox = jsGrid.CheckboxField = CheckboxField; }(jsGrid, jQuery));