/* * Ext JS Library 2.2.1 * Copyright(c) 2006-2009, Ext JS, LLC. * licensing@extjs.com * * http://extjs.com/license */ Ext.ns("Ext.grid.filter"); Ext.grid.filter.Filter = function(config){ Ext.apply(this, config); this.events = { /** * @event activate * Fires when a inactive filter becomes active * @param {Ext.ux.grid.filter.Filter} this */ 'activate': true, /** * @event deactivate * Fires when a active filter becomes inactive * @param {Ext.ux.grid.filter.Filter} this */ 'deactivate': true, /** * @event update * Fires when a filter configuration has changed * @param {Ext.ux.grid.filter.Filter} this */ 'update': true, /** * @event serialize * Fires after the serialization process. Use this to apply additional parameters to the serialized data. * @param {Array/Object} data A map or collection of maps representing the current filter configuration. * @param {Ext.ux.grid.filter.Filter} filter The filter being serialized. **/ 'serialize': true }; Ext.grid.filter.Filter.superclass.constructor.call(this); this.menu = new Ext.menu.Menu(); this.init(); if(config && config.value) { this.setValue(config.value); this.setActive(config.active !== false, true); delete config.value; } }; Ext.extend(Ext.grid.filter.Filter, Ext.util.Observable, { /** * @cfg {Boolean} active * Indicates the default status of the filter (defaults to false). */ /** * True if this filter is active. Read-only. * @type Boolean * @property */ active: false, /** * @cfg {String} dataIndex * The {@link Ext.data.Store} data index of the field this filter represents. The dataIndex does not actually * have to exist in the store. */ dataIndex: null, /** * The filter configuration menu that will be installed into the filter submenu of a column menu. * @type Ext.menu.Menu * @property */ menu: null, /** * Initialize the filter and install required menu items. */ init: Ext.emptyFn, fireUpdate: function() { this.value = this.item.getValue(); if(this.active) { this.fireEvent("update", this); } this.setActive(this.value.length > 0); }, /** * Returns true if the filter has enough configuration information to be activated. * @return {Boolean} */ isActivatable: function() { return true; }, /** * Sets the status of the filter and fires that appropriate events. * @param {Boolean} active The new filter state. * @param {Boolean} suppressEvent True to prevent events from being fired. */ setActive: function(active, suppressEvent) { if(this.active != active) { this.active = active; if(suppressEvent !== true) { this.fireEvent(active ? 'activate' : 'deactivate', this); } } }, /** * Get the value of the filter * @return {Object} The 'serialized' form of this filter */ getValue: Ext.emptyFn, /** * Set the value of the filter. * @param {Object} data The value of the filter */ setValue: Ext.emptyFn, /** * Serialize the filter data for transmission to the server. * @return {Object/Array} An object or collection of objects containing key value pairs representing * the current configuration of the filter. */ serialize: Ext.emptyFn, /** * Validates the provided Ext.data.Record against the filters configuration. * @param {Ext.data.Record} record The record to validate * @return {Boolean} True if the record is valid with in the bounds of the filter, false otherwise. */ validateRecord: function(){return true;} });