| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-ux-grid-menu-RangeMenu'>/**
 
- </span> * @class Ext.ux.grid.menu.RangeMenu
 
-  * @extends Ext.menu.Menu
 
-  * Custom implementation of {@link Ext.menu.Menu} that has preconfigured items for entering numeric
 
-  * range comparison values: less-than, greater-than, and equal-to. This is used internally
 
-  * by {@link Ext.ux.grid.filter.NumericFilter} to create its menu.
 
-  */
 
- Ext.define('Ext.ux.grid.menu.RangeMenu', {
 
-     extend: 'Ext.menu.Menu',
 
- <span id='Ext-ux-grid-menu-RangeMenu-cfg-fieldCls'>    /**
 
- </span>     * @cfg {String} fieldCls
 
-      * The Class to use to construct each field item within this menu
 
-      * Defaults to:<pre>
 
-      * fieldCls : Ext.form.field.Number
 
-      * </pre>
 
-      */
 
-     fieldCls : 'Ext.form.field.Number',
 
- <span id='Ext-ux-grid-menu-RangeMenu-cfg-fieldCfg'>    /**
 
- </span>     * @cfg {Object} fieldCfg
 
-      * The default configuration options for any field item unless superseded
 
-      * by the <code>{@link #fields}</code> configuration.
 
-      * Defaults to:<pre>
 
-      * fieldCfg : {}
 
-      * </pre>
 
-      * Example usage:
 
-      * <pre><code>
 
- fieldCfg : {
 
-     width: 150,
 
- },
 
-      * </code></pre>
 
-      */
 
- <span id='Ext-ux-grid-menu-RangeMenu-cfg-fields'>    /**
 
- </span>     * @cfg {Object} fields
 
-      * The field items may be configured individually
 
-      * Defaults to <tt>undefined</tt>.
 
-      * Example usage:
 
-      * <pre><code>
 
- fields : {
 
-     gt: { // override fieldCfg options
 
-         width: 200,
 
-         fieldCls: Ext.ux.form.CustomNumberField // to override default {@link #fieldCls}
 
-     }
 
- },
 
-      * </code></pre>
 
-      */
 
- <span id='Ext-ux-grid-menu-RangeMenu-cfg-itemIconCls'>    /**
 
- </span>     * @cfg {Object} itemIconCls
 
-      * The itemIconCls to be applied to each comparator field item.
 
-      * Defaults to:<pre>
 
- itemIconCls : {
 
-     gt : 'ux-rangemenu-gt',
 
-     lt : 'ux-rangemenu-lt',
 
-     eq : 'ux-rangemenu-eq'
 
- }
 
-      * </pre>
 
-      */
 
-     itemIconCls : {
 
-         gt : 'ux-rangemenu-gt',
 
-         lt : 'ux-rangemenu-lt',
 
-         eq : 'ux-rangemenu-eq'
 
-     },
 
- <span id='Ext-ux-grid-menu-RangeMenu-cfg-fieldLabels'>    /**
 
- </span>     * @cfg {Object} fieldLabels
 
-      * Accessible label text for each comparator field item. Can be overridden by localization
 
-      * files. Defaults to:<pre>
 
- fieldLabels : {
 
-      gt: 'Greater Than',
 
-      lt: 'Less Than',
 
-      eq: 'Equal To'
 
- }</pre>
 
-      */
 
-     fieldLabels: {
 
-         gt: 'Greater Than',
 
-         lt: 'Less Than',
 
-         eq: 'Equal To'
 
-     },
 
- <span id='Ext-ux-grid-menu-RangeMenu-cfg-menuItemCfgs'>    /**
 
- </span>     * @cfg {Object} menuItemCfgs
 
-      * Default configuration options for each menu item
 
-      * Defaults to:<pre>
 
- menuItemCfgs : {
 
-     emptyText: 'Enter Filter Text...',
 
-     selectOnFocus: true,
 
-     width: 125
 
- }
 
-      * </pre>
 
-      */
 
-     menuItemCfgs : {
 
-         emptyText: 'Enter Number...',
 
-         selectOnFocus: false,
 
-         width: 155
 
-     },
 
- <span id='Ext-ux-grid-menu-RangeMenu-cfg-menuItems'>    /**
 
- </span>     * @cfg {Array} menuItems
 
-      * The items to be shown in this menu.  Items are added to the menu
 
-      * according to their position within this array. Defaults to:<pre>
 
-      * menuItems : ['lt','gt','-','eq']
 
-      * </pre>
 
-      */
 
-     menuItems : ['lt', 'gt', '-', 'eq'],
 
-     constructor : function (config) {
 
-         var me = this,
 
-             fields, fieldCfg, i, len, item, cfg, Cls;
 
-         me.callParent(arguments);
 
-         fields = me.fields = me.fields || {};
 
-         fieldCfg = me.fieldCfg = me.fieldCfg || {};
 
-         
 
-         me.addEvents(
 
- <span id='Ext-ux-grid-menu-RangeMenu-event-update'>            /**
 
- </span>             * @event update
 
-              * Fires when a filter configuration has changed
 
-              * @param {Ext.ux.grid.filter.Filter} this The filter object.
 
-              */
 
-             'update'
 
-         );
 
-       
 
-         me.updateTask = Ext.create('Ext.util.DelayedTask', me.fireUpdate, me);
 
-     
 
-         for (i = 0, len = me.menuItems.length; i < len; i++) {
 
-             item = me.menuItems[i];
 
-             if (item !== '-') {
 
-                 // defaults
 
-                 cfg = {
 
-                     itemId: 'range-' + item,
 
-                     enableKeyEvents: true,
 
-                     hideLabel: false,
 
-                     fieldLabel: me.iconTpl.apply({
 
-                         cls: me.itemIconCls[item] || 'no-icon',
 
-                         text: me.fieldLabels[item] || '',
 
-                         src: Ext.BLANK_IMAGE_URL
 
-                     }),
 
-                     labelSeparator: '',
 
-                     labelWidth: 29,
 
-                     labelStyle: 'position: relative;',
 
-                     listeners: {
 
-                         scope: me,
 
-                         change: me.onInputChange,
 
-                         keyup: me.onInputKeyUp,
 
-                         el: {
 
-                             click: function(e) {
 
-                                 e.stopPropagation();
 
-                             }
 
-                         }
 
-                     },
 
-                     activate: Ext.emptyFn,
 
-                     deactivate: Ext.emptyFn
 
-                 };
 
-                 Ext.apply(
 
-                     cfg,
 
-                     // custom configs
 
-                     Ext.applyIf(fields[item] || {}, fieldCfg[item]),
 
-                     // configurable defaults
 
-                     me.menuItemCfgs
 
-                 );
 
-                 Cls = cfg.fieldCls || me.fieldCls;
 
-                 item = fields[item] = Ext.create(Cls, cfg);
 
-             }
 
-             me.add(item);
 
-         }
 
-     },
 
- <span id='Ext-ux-grid-menu-RangeMenu-method-fireUpdate'>    /**
 
- </span>     * @private
 
-      * called by this.updateTask
 
-      */
 
-     fireUpdate : function () {
 
-         this.fireEvent('update', this);
 
-     },
 
-     
 
- <span id='Ext-ux-grid-menu-RangeMenu-method-getValue'>    /**
 
- </span>     * Get and return the value of the filter.
 
-      * @return {String} The value of this filter
 
-      */
 
-     getValue : function () {
 
-         var result = {}, key, field;
 
-         for (key in this.fields) {
 
-             field = this.fields[key];
 
-             if (field.isValid() && field.getValue() !== null) {
 
-                 result[key] = field.getValue();
 
-             }
 
-         }
 
-         return result;
 
-     },
 
-   
 
- <span id='Ext-ux-grid-menu-RangeMenu-method-setValue'>    /**
 
- </span>     * Set the value of this menu and fires the 'update' event.
 
-      * @param {Object} data The data to assign to this menu
 
-      */	
 
-     setValue : function (data) {
 
-         var me = this,
 
-             key,
 
-             field;
 
-         for (key in me.fields) {
 
-             
 
-             // Prevent field's change event from tiggering a Store filter. The final upate event will do that
 
-             field = me.fields[key];
 
-             field.suspendEvents();
 
-             field.setValue(key in data ? data[key] : '');
 
-             field.resumeEvents();
 
-         }
 
-         // Trigger the filering of the Store
 
-         me.fireEvent('update', me);
 
-     },
 
- <span id='Ext-ux-grid-menu-RangeMenu-method-onInputKeyUp'>    /**  
 
- </span>     * @private
 
-      * Handler method called when there is a keyup event on an input
 
-      * item of this menu.
 
-      */
 
-     onInputKeyUp: function(field, e) {
 
-         if (e.getKey() === e.RETURN && field.isValid()) {
 
-             e.stopEvent();
 
-             this.hide();
 
-         }
 
-     },
 
- <span id='Ext-ux-grid-menu-RangeMenu-method-onInputChange'>    /**
 
- </span>     * @private
 
-      * Handler method called when the user changes the value of one of the input
 
-      * items in this menu.
 
-      */
 
-     onInputChange: function(field) {
 
-         var me = this,
 
-             fields = me.fields,
 
-             eq = fields.eq,
 
-             gt = fields.gt,
 
-             lt = fields.lt;
 
-         if (field == eq) {
 
-             if (gt) {
 
-                 gt.setValue(null);
 
-             }
 
-             if (lt) {
 
-                 lt.setValue(null);
 
-             }
 
-         }
 
-         else {
 
-             eq.setValue(null);
 
-         }
 
-         // restart the timer
 
-         this.updateTask.delay(this.updateBuffer);
 
-     }
 
- }, function() {
 
- <span id='Ext-ux-grid-menu-RangeMenu-cfg-iconTpl'>    /**
 
- </span>     * @cfg {Ext.XTemplate} iconTpl
 
-      * A template for generating the label for each field in the menu
 
-      */
 
-     this.prototype.iconTpl = Ext.create('Ext.XTemplate',
 
-         '<img src="{src}" alt="{text}" class="' + Ext.baseCSSPrefix + 'menu-item-icon ux-rangemenu-icon {cls}" />'
 
-     );
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |