-/*!
- * Ext JS Library 3.3.1
- * Copyright(c) 2006-2010 Sencha Inc.
- * licensing@sencha.com
- * http://www.sencha.com/license
- */
-/**
+/**
* @class Ext.ux.grid.filter.DateFilter
* @extends Ext.ux.grid.filter.Filter
- * Filter by a configurable Ext.menu.DateMenu
+ * Filter by a configurable Ext.picker.DatePicker menu
* <p><b><u>Example Usage:</u></b></p>
- * <pre><code>
-var filters = new Ext.ux.grid.GridFilters({
+ * <pre><code>
+var filters = Ext.create('Ext.ux.grid.GridFilters', {
...
filters: [{
// required configs
type: 'date',
dataIndex: 'dateAdded',
-
+
// optional configs
dateFormat: 'm/d/Y', // default
beforeText: 'Before', // default
afterText: 'After', // default
onText: 'On', // default
pickerOpts: {
- // any DateMenu configs
+ // any DatePicker configs
},
active: true // default is false
});
* </code></pre>
*/
-Ext.ux.grid.filter.DateFilter = Ext.extend(Ext.ux.grid.filter.Filter, {
+Ext.define('Ext.ux.grid.filter.DateFilter', {
+ extend: 'Ext.ux.grid.filter.Filter',
+ alias: 'gridfilter.date',
+ uses: ['Ext.picker.Date', 'Ext.menu.Menu'],
+
/**
* @cfg {String} afterText
* Defaults to 'After'.
* Defaults to 'On'.
*/
onText : 'On',
-
+
/**
* @cfg {Object} pickerOpts
* Configuration options for the date picker associated with each field.
*/
pickerOpts : {},
- /**
+ /**
* @private
* Template method that is to initialize the filter and install required menu items.
*/
init : function (config) {
- var menuCfg, i, len, item, cfg, Cls;
+ var me = this,
+ pickerCfg, i, len, item, cfg;
- menuCfg = Ext.apply(this.pickerOpts, {
- minDate: this.minDate,
- maxDate: this.maxDate,
- format: this.dateFormat,
+ pickerCfg = Ext.apply(me.pickerOpts, {
+ xtype: 'datepicker',
+ minDate: me.minDate,
+ maxDate: me.maxDate,
+ format: me.dateFormat,
listeners: {
- scope: this,
- select: this.onMenuSelect
+ scope: me,
+ select: me.onMenuSelect
}
});
- this.fields = {};
- for (i = 0, len = this.menuItems.length; i < len; i++) {
- item = this.menuItems[i];
+ me.fields = {};
+ for (i = 0, len = me.menuItems.length; i < len; i++) {
+ item = me.menuItems[i];
if (item !== '-') {
cfg = {
itemId: 'range-' + item,
- text: this[item + 'Text'],
- menu: new Ext.menu.DateMenu(
- Ext.apply(menuCfg, {
- itemId: item
- })
- ),
+ text: me[item + 'Text'],
+ menu: Ext.create('Ext.menu.Menu', {
+ items: [
+ Ext.apply(pickerCfg, {
+ itemId: item
+ })
+ ]
+ }),
listeners: {
- scope: this,
- checkchange: this.onCheckChange
+ scope: me,
+ checkchange: me.onCheckChange
}
};
- Cls = Ext.menu.CheckItem;
- item = this.fields[item] = new Cls(cfg);
+ item = me.fields[item] = Ext.create('Ext.menu.CheckItem', cfg);
}
- //this.add(item);
- this.menu.add(item);
+ //me.add(item);
+ me.menu.add(item);
}
},
this.fireEvent('update', this);
},
- /**
+ /**
* @private
* Handler method called when there is a keyup event on an input
* item of this menu.
var k = e.getKey();
if (k == e.RETURN && field.isValid()) {
e.stopEvent();
- this.menu.hide(true);
- return;
+ this.menu.hide();
}
},
/**
- * Handler for when the menu for a field fires the 'select' event
- * @param {Object} date
- * @param {Object} menuItem
- * @param {Object} value
+ * Handler for when the DatePicker for a field fires the 'select' event
+ * @param {Ext.picker.Date} picker
* @param {Object} picker
+ * @param {Object} date
*/
- onMenuSelect : function (menuItem, value, picker) {
+ onMenuSelect : function (picker, date) {
var fields = this.fields,
- field = this.fields[menuItem.itemId];
-
+ field = this.fields[picker.itemId];
+
field.setChecked(true);
-
+
if (field == fields.on) {
fields.before.setChecked(false, true);
fields.after.setChecked(false, true);
} else {
fields.on.setChecked(false, true);
- if (field == fields.after && fields.before.menu.picker.value < value) {
+ if (field == fields.after && this.getFieldValue('before') < date) {
fields.before.setChecked(false, true);
- } else if (field == fields.before && fields.after.menu.picker.value > value) {
+ } else if (field == fields.before && this.getFieldValue('after') > date) {
fields.after.setChecked(false, true);
}
}
this.fireEvent('update', this);
+
+ picker.up('menu').hide();
},
/**
var key, result = {};
for (key in this.fields) {
if (this.fields[key].checked) {
- result[key] = this.fields[key].menu.picker.getValue();
+ result[key] = this.getFieldValue(key);
}
}
return result;
* @param {Boolean} preserve true to preserve the checked status
* of the other fields. Defaults to false, unchecking the
* other fields
- */
+ */
setValue : function (value, preserve) {
var key;
for (key in this.fields) {
if(value[key]){
- this.fields[key].menu.picker.setValue(value[key]);
+ this.getPicker(key).setValue(value[key]);
this.fields[key].setChecked(true);
} else if (!preserve) {
this.fields[key].setChecked(false);
* @return {Date} Gets the current selected value of the date field
*/
getFieldValue : function(item){
- return this.fields[item].menu.picker.getValue();
+ return this.getPicker(item).getValue();
},
-
+
/**
* Gets the menu picker associated with the passed field
* @param {String} item The field identifier ('before', 'after', 'on')
* @return {Object} The menu picker
*/
getPicker : function(item){
- return this.fields[item].menu.picker;
+ return this.fields[item].menu.items.first();
},
/**
validateRecord : function (record) {
var key,
pickerValue,
- val = record.get(this.dataIndex);
-
+ val = record.get(this.dataIndex),
+ clearTime = Ext.Date.clearTime;
+
if(!Ext.isDate(val)){
return false;
}
- val = val.clearTime(true).getTime();
-
+ val = clearTime(val, true).getTime();
+
for (key in this.fields) {
if (this.fields[key].checked) {
- pickerValue = this.getFieldValue(key).clearTime(true).getTime();
+ pickerValue = clearTime(this.getFieldValue(key), true).getTime();
if (key == 'before' && pickerValue <= val) {
return false;
}
}
return true;
}
-});
\ No newline at end of file
+});