98 lines
2.4 KiB
JavaScript
98 lines
2.4 KiB
JavaScript
(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));
|