datefilter.js.svn-base
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 120 行
SVN-BASE
120 行
/*
* Ext JS Library 2.1
* Copyright(c) 2006-2008, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.grid.filter.DateFilter = Ext.extend(Ext.grid.filter.Filter, {
dateFormat: 'm/d/Y',
pickerOpts: {},
init: function() {
var opts = Ext.apply(this.pickerOpts, {
minDate: this.minDate,
maxDate: this.maxDate,
format: this.dateFormat
});
var dates = this.dates = {
'before': new Ext.menu.CheckItem({text: "Before", menu: new Ext.menu.DateMenu(opts)}),
'after': new Ext.menu.CheckItem({text: "After", menu: new Ext.menu.DateMenu(opts)}),
'on': new Ext.menu.CheckItem({text: "On", menu: new Ext.menu.DateMenu(opts)})
};
this.menu.add(dates.before, dates.after, "-", dates.on);
for(var key in dates) {
var date = dates[key];
date.menu.on('select', this.onSelect.createDelegate(this, [date]), this);
date.on('checkchange', function(){
this.setActive(this.isActivatable());
}, this);
};
},
onSelect: function(date, menuItem, value, picker) {
date.setChecked(true);
var dates = this.dates;
if(date == dates.on) {
dates.before.setChecked(false, true);
dates.after.setChecked(false, true);
} else {
dates.on.setChecked(false, true);
if(date == dates.after && dates.before.menu.picker.value < value) {
dates.before.setChecked(false, true);
} else if (date == dates.before && dates.after.menu.picker.value > value) {
dates.after.setChecked(false, true);
}
}
this.fireEvent("update", this);
},
getFieldValue: function(field) {
return this.dates[field].menu.picker.getValue();
},
getPicker: function(field) {
return this.dates[field].menu.picker;
},
isActivatable: function() {
return this.dates.on.checked || this.dates.after.checked || this.dates.before.checked;
},
setValue: function(value) {
for(var key in this.dates) {
if(value[key]) {
this.dates[key].menu.picker.setValue(value[key]);
this.dates[key].setChecked(true);
} else {
this.dates[key].setChecked(false);
}
}
},
getValue: function() {
var result = {};
for(var key in this.dates) {
if(this.dates[key].checked) {
result[key] = this.dates[key].menu.picker.getValue();
}
}
return result;
},
serialize: function() {
var args = [];
if(this.dates.before.checked) {
args = [{type: 'date', comparison: 'lt', value: this.getFieldValue('before').format(this.dateFormat)}];
}
if(this.dates.after.checked) {
args.push({type: 'date', comparison: 'gt', value: this.getFieldValue('after').format(this.dateFormat)});
}
if(this.dates.on.checked) {
args = {type: 'date', comparison: 'eq', value: this.getFieldValue('on').format(this.dateFormat)};
}
this.fireEvent('serialize', args, this);
return args;
},
validateRecord: function(record) {
var val = record.get(this.dataIndex).clearTime(true).getTime();
if(this.dates.on.checked && val != this.getFieldValue('on').clearTime(true).getTime()) {
return false;
}
if(this.dates.before.checked && val >= this.getFieldValue('before').clearTime(true).getTime()) {
return false;
}
if(this.dates.after.checked && val <= this.getFieldValue('after').clearTime(true).getTime()) {
return false;
}
return true;
}
});
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?