Upgrade to ExtJS 3.0.3 - Released 10/11/2009
[extjs.git] / docs / output / Ext.ux.grid.filter.ListFilter.html
1 <div class="body-wrap" xmlns:ext="http://www.extjs.com"><div class="top-tools"><a class="inner-link" href="#Ext.ux.grid.filter.ListFilter-props"><img src="resources/images/default/s.gif" class="item-icon icon-prop">Properties</a>&#13;<a class="inner-link" href="#Ext.ux.grid.filter.ListFilter-methods"><img src="resources/images/default/s.gif" class="item-icon icon-method">Methods</a>&#13;<a class="inner-link" href="#Ext.ux.grid.filter.ListFilter-events"><img src="resources/images/default/s.gif" class="item-icon icon-event">Events</a>&#13;<a class="inner-link" href="#Ext.ux.grid.filter.ListFilter-configs"><img src="resources/images/default/s.gif" class="item-icon icon-config">Config Options</a>&#13;<a class="bookmark" href="../docs/?class=Ext.ux.grid.filter.ListFilter"><img src="resources/images/default/s.gif" class="item-icon icon-fav">Direct Link</a>&#13;</div><div class="inheritance res-block"><pre class="res-block-inner"><a href="output/Ext.util.Observable.html" ext:member="" ext:cls="Ext.util.Observable">Observable</a>&#13;&nbsp;&nbsp;<img src="resources/elbow-end.gif"><a href="output/Ext.ux.grid.filter.Filter.html" ext:member="" ext:cls="Ext.ux.grid.filter.Filter">Filter</a>&#13;&nbsp;&nbsp;&nbsp;&nbsp;<img src="resources/elbow-end.gif">ListFilter</pre></div><h1>Class <a href="source/ListFilter.html#cls-Ext.ux.grid.filter.ListFilter">Ext.ux.grid.filter.ListFilter</a></h1><table cellspacing="0"><tr><td class="label">Package:</td><td class="hd-info">Ext.ux.grid.filter</td></tr><tr><td class="label">Defined In:</td><td class="hd-info">ListFilter.js</td></tr><tr><td class="label">Class:</td><td class="hd-info"><a href="source/ListFilter.html#cls-Ext.ux.grid.filter.ListFilter">ListFilter</a></td></tr><tr><td class="label">Extends:</td><td class="hd-info"><a href="output/Ext.ux.grid.filter.Filter.html" ext:cls="Ext.ux.grid.filter.Filter" ext:member="">Filter</a></td></tr><tr><td class="hd-info"></td></tr></table><div class="description"><p>List filters are able to be preloaded/backed by an Ext.data.Store to load\r
2 their options the first time they are shown. ListFilter utilizes the\r
3 <a href="output/Ext.ux.menu.ListMenu.html" ext:cls="Ext.ux.menu.ListMenu">Ext.ux.menu.ListMenu</a> component.</p>\r
4 <p>Although not shown here, this class accepts all configuration options\r
5 for <a href="output/Ext.ux.menu.ListMenu.html" ext:cls="Ext.ux.menu.ListMenu">Ext.ux.menu.ListMenu</a>.</p>\r
6 <p><b><u>Example Usage:</u></b></p>\r
7 <pre><code><b>var</b> filters = <b>new</b> Ext.ux.grid.GridFilters({\r
8     ...\r
9     filters: [{\r
10         type: <em>'list'</em>,\r
11         dataIndex: <em>'size'</em>,\r
12         phpMode: true,\r
13         <i>// options will be used as data to implicitly creates an ArrayStore\r</i>
14         options: [<em>'extra small'</em>, <em>'small'</em>, <em>'medium'</em>, <em>'large'</em>, <em>'extra large'</em>]\r
15     }]\r
16 });</code></pre></div><div class="hr"></div><a id="Ext.ux.grid.filter.ListFilter-configs"></a><h2>Config Options</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Config Options</th><th class="msource-header">Defined By</th></tr><tr class="config-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-active"></a><b><a href="source/Filter.html#cfg-Ext.ux.grid.filter.Filter-active">active</a></b> : Boolean<div class="mdesc">Indicates the initial status of the filter (defaults to false).</div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#active" ext:member="#active" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-dataIndex"></a><b><a href="source/Filter.html#cfg-Ext.ux.grid.filter.Filter-dataIndex">dataIndex</a></b> : String<div class="mdesc"><div class="short">The Ext.data.Store dataIndex of the field this filter represents.&#13;\r
17 The dataIndex does not actually have to exist in t...</div><div class="long">The <a href="output/Ext.data.Store.html" ext:cls="Ext.data.Store">Ext.data.Store</a> dataIndex of the field this filter represents.\r
18 The dataIndex does not actually have to exist in the store.</div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#dataIndex" ext:member="#dataIndex" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-listeners"></a><b><a href="source/Observable.html#cfg-Ext.util.Observable-listeners">listeners</a></b> : Object<div class="mdesc"><div class="short">A config object containing one or more event handlers to be added to this\r
19 object during initialization.  This should ...</div><div class="long"><p>A config object containing one or more event handlers to be added to this
20 object during initialization.  This should be a valid listeners config object as specified in the
21 <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a> example for attaching multiple handlers at once.</p>
22 <br><p><b><u>DOM events from ExtJs <a href="output/Ext.Component.html" ext:cls="Ext.Component">Components</a></u></b></p>
23 <br><p>While <i>some</i> ExtJs Component classes export selected DOM events (e.g. "click", "mouseover" etc), this
24 is usually only done when extra value can be added. For example the <a href="output/Ext.DataView.html" ext:cls="Ext.DataView">DataView</a>'s
25 <b><code><a href="output/Ext.DataView.html#Ext.DataView-click" ext:member="click" ext:cls="Ext.DataView">click</a></code></b> event passing the node clicked on. To access DOM
26 events directly from a Component's HTMLElement, listeners must be added to the <i><a href="output/Ext.Component.html#Ext.Component-getEl" ext:member="getEl" ext:cls="Ext.Component">Element</a></i> after the Component
27 has been rendered. A plugin can simplify this step:<pre><code><i>// Plugin is configured <b>with</b> a listeners config object.</i>
28 <i>// The Component is appended to the argument list of all handler functions.</i>
29 Ext.DomObserver = Ext.extend(Object, {
30     constructor: <b>function</b>(config) {
31         this.listeners = config.listeners ? config.listeners : config;
32     },
33
34     <i>// Component passes itself into plugin&#39;s init method</i>
35     init: <b>function</b>(c) {
36         <b>var</b> p, l = this.listeners;
37         <b>for</b> (p <b>in</b> l) {
38             <b>if</b> (Ext.isFunction(l[p])) {
39                 l[p] = this.createHandler(l[p], c);
40             } <b>else</b> {
41                 l[p].fn = this.createHandler(l[p].fn, c);
42             }
43         }
44
45         <i>// Add the listeners to the Element immediately following the render call</i>
46         c.render = c.render.<a href="output/Function.html#Function-createSequence" ext:member="createSequence" ext:cls="Function">createSequence</a>(<b>function</b>() {
47             <b>var</b> e = c.getEl();
48             <b>if</b> (e) {
49                 e.on(l);
50             }
51         });
52     },
53
54     createHandler: <b>function</b>(fn, c) {
55         <b>return</b> <b>function</b>(e) {
56             fn.call(this, e, c);
57         };
58     }
59 });
60
61 <b>var</b> combo = <b>new</b> Ext.form.ComboBox({
62
63     <i>// Collapse combo when its element is clicked on</i>
64     plugins: [ <b>new</b> Ext.DomObserver({
65         click: <b>function</b>(evt, comp) {
66             comp.collapse();
67         }
68     })],
69     store: myStore,
70     typeAhead: true,
71     mode: <em>'local'</em>,
72     triggerAction: <em>'all'</em>
73 });</code></pre></p></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#listeners" ext:member="#listeners" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="config-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.ListFilter-options"></a><b><a href="source/ListFilter.html#cfg-Ext.ux.grid.filter.ListFilter-options">options</a></b> : Array<div class="mdesc"><div class="short">data to be used to implicitly create a data store&#13;\r
74 to back this list when the data source is local. If the&#13;\r
75 data for ...</div><div class="long"><p><code>data</code> to be used to implicitly create a data store\r
76 to back this list when the data source is <b>local</b>. If the\r
77 data for the list is remote, use the <code><a href="output/Ext.ux.grid.filter.ListFilter.html#Ext.ux.grid.filter.ListFilter-store" ext:member="store" ext:cls="Ext.ux.grid.filter.ListFilter">store</a></code>\r
78 config instead.</p>\r
79 <br><p>Each item within the provided array may be in one of the\r
80 following formats:</p>\r
81 <div class="mdetail-params"><ul>\r
82 <li><b>Array</b> :\r
83 <pre><code>options: [\r
84     [11, <em>'extra small'</em>], \r
85     [18, <em>'small'</em>],\r
86     [22, <em>'medium'</em>],\r
87     [35, <em>'large'</em>],\r
88     [44, <em>'extra large'</em>]\r
89 ]</code></pre>\r
90 </li>\r
91 <li><b>Object</b> :\r
92 <pre><code>labelField: <em>'name'</em>, <i>// override <b>default</b> of <em>'text'</em>\r</i>
93 options: [\r
94     {id: 11, name:<em>'extra small'</em>}, \r
95     {id: 18, name:<em>'small'</em>}, \r
96     {id: 22, name:<em>'medium'</em>}, \r
97     {id: 35, name:<em>'large'</em>}, \r
98     {id: 44, name:<em>'extra large'</em>} \r
99 ]</code></pre>\r
100 </li>\r
101 <li><b>String</b> :\r
102 <pre><code>options: [<em>'extra small'</em>, <em>'small'</em>, <em>'medium'</em>, <em>'large'</em>, <em>'extra large'</em>]</code></pre>\r
103 </li></div></div></td><td class="msource">ListFilter</td></tr><tr class="config-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.ListFilter-phpMode"></a><b><a href="source/ListFilter.html#cfg-Ext.ux.grid.filter.ListFilter-phpMode">phpMode</a></b> : Boolean<div class="mdesc"><div class="short">Adjust the format of this filter. Defaults to false.&#13;\r
104 When GridFilters @cfg encode = false (default):&#13;\r
105 // phpMode == ...</div><div class="long"><p>Adjust the format of this filter. Defaults to false.</p>\r
106 <br><p>When GridFilters <code>@cfg encode = false</code> (default):</p>\r
107 <pre><code><i>// phpMode == false (<b>default</b>):\r</i>
108 filter[0][data][type] list\r
109 filter[0][data][value] value1\r
110 filter[0][data][value] value2\r
111 filter[0][field] prod \r
112 \r
113 <i>// phpMode == true:\r</i>
114 filter[0][data][type] list\r
115 filter[0][data][value] value1, value2\r
116 filter[0][field] prod</code></pre>\r
117 When GridFilters <code>@cfg encode = true</code>:\r
118 <pre><code><i>// phpMode == false (<b>default</b>):\r</i>
119 filter : [{<em>"type"</em>:<em>"list"</em>,<em>"value"</em>:[<em>"small"</em>,<em>"medium"</em>],<em>"field"</em>:<em>"size"</em>}]\r
120 \r
121 <i>// phpMode == true:\r</i>
122 filter : [{<em>"type"</em>:<em>"list"</em>,<em>"value"</em>:<em>"small,medium"</em>,<em>"field"</em>:<em>"size"</em>}]</code></pre></div></div></td><td class="msource">ListFilter</td></tr><tr class="config-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.ListFilter-store"></a><b><a href="source/ListFilter.html#cfg-Ext.ux.grid.filter.ListFilter-store">store</a></b> : Ext.data.Store<div class="mdesc"><div class="short">The Ext.data.Store this list should use as its data source&#13;\r
123 when the data source is remote. If the data for the list&#13;...</div><div class="long">The <a href="output/Ext.data.Store.html" ext:cls="Ext.data.Store">Ext.data.Store</a> this list should use as its data source\r
124 when the data source is <b>remote</b>. If the data for the list\r
125 is local, use the <code><a href="output/Ext.ux.grid.filter.ListFilter.html#Ext.ux.grid.filter.ListFilter-options" ext:member="options" ext:cls="Ext.ux.grid.filter.ListFilter">options</a></code> config instead.</div></div></td><td class="msource">ListFilter</td></tr><tr class="config-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-updateBuffer"></a><b><a href="source/Filter.html#cfg-Ext.ux.grid.filter.Filter-updateBuffer">updateBuffer</a></b> : Number<div class="mdesc"><div class="short">Number of milliseconds to wait after user interaction to fire an update. Only supported &#13;\r
126 by filters: 'list', 'numeri...</div><div class="long">Number of milliseconds to wait after user interaction to fire an update. Only supported \r
127 by filters: 'list', 'numeric', and 'string'. Defaults to 500.</div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#updateBuffer" ext:member="#updateBuffer" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr></tbody></table><a id="Ext.ux.grid.filter.ListFilter-props"></a><h2>Public Properties</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Property</th><th class="msource-header">Defined By</th></tr><tr class="property-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-active"></a><b><a href="source/Filter.html#prop-Ext.ux.grid.filter.Filter-active">active</a></b> : Boolean<div class="mdesc">True if this filter is active.  Use setActive() to alter after configuration.</div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#active" ext:member="#active" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="property-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-getSerialArgs"></a><b><a href="source/Filter.html#prop-Ext.ux.grid.filter.Filter-getSerialArgs">getSerialArgs</a></b> : Object<div class="mdesc"><div class="short">Template method to be implemented by all subclasses that is to&#13;\r
128 get and return serialized filter data for transmissio...</div><div class="long">Template method to be implemented by all subclasses that is to\r
129 get and return serialized filter data for transmission to the server.\r
130 Defaults to Ext.emptyFn.</div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#getSerialArgs" ext:member="#getSerialArgs" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="property-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-init"></a><b><a href="source/Filter.html#prop-Ext.ux.grid.filter.Filter-init">init</a></b> : Object<div class="mdesc"><div class="short">Template method to be implemented by all subclasses that is to&#13;\r
131 initialize the filter and install required menu items...</div><div class="long">Template method to be implemented by all subclasses that is to\r
132 initialize the filter and install required menu items.\r
133 Defaults to Ext.emptyFn.</div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#init" ext:member="#init" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="property-row  inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-menu"></a><b><a href="source/Filter.html#prop-Ext.ux.grid.filter.Filter-menu">menu</a></b> : Ext.menu.Menu<div class="mdesc">The filter configuration menu that will be installed into the filter submenu of a column menu.</div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#menu" ext:member="#menu" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr></tbody></table><a id="Ext.ux.grid.filter.ListFilter-methods"></a><h2>Public Methods</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Method</th><th class="msource-header">Defined By</th></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-addEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-addEvents">addEvents</a></b>(&nbsp;<code>Object|String&nbsp;o</code>,&nbsp;<code>string&nbsp;Optional.</code>&nbsp;)\r
134     :\r
135                                         void<div class="mdesc"><div class="short">Adds the specified events to the list of events which this Observable may fire.</div><div class="long">Adds the specified events to the list of events which this Observable may fire.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>o</code> : Object|String<div class="sub-desc">Either an object with event names as properties with a value of <code>true</code>
136 or the first event name string if multiple event names are being passed as separate parameters.</div></li><li><code>Optional.</code> : string<div class="sub-desc">Event name if multiple event names are being passed as separate parameters.
137 Usage:<pre><code>this.addEvents(<em>'storeloaded'</em>, <em>'storecleared'</em>);</code></pre></div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#addEvents" ext:member="#addEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-addListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-addListener">addListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;options</code>]</span>&nbsp;)\r
138     :\r
139                                         void<div class="mdesc"><div class="short">Appends an event handler to this object.</div><div class="long">Appends an event handler to this object.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The name of the event to listen for.</div></li><li><code>handler</code> : Function<div class="sub-desc">The method the event invokes.</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the handler function is executed.
140 <b>If omitted, defaults to the object which fired the event.</b></div></li><li><code>options</code> : Object<div class="sub-desc">(optional) An object containing handler configuration.
141 properties. This may contain any of the following properties:<ul>
142 <li><b>scope</b> : Object<div class="sub-desc">The scope (<code><b>this</b></code> reference) in which the handler function is executed.
143 <b>If omitted, defaults to the object which fired the event.</b></div></li>
144 <li><b>delay</b> : Number<div class="sub-desc">The number of milliseconds to delay the invocation of the handler after the event fires.</div></li>
145 <li><b>single</b> : Boolean<div class="sub-desc">True to add a handler to handle just the next firing of the event, and then remove itself.</div></li>
146 <li><b>buffer</b> : Number<div class="sub-desc">Causes the handler to be scheduled to run in an <a href="output/Ext.util.DelayedTask.html" ext:cls="Ext.util.DelayedTask">Ext.util.DelayedTask</a> delayed
147 by the specified number of milliseconds. If the event fires again within that time, the original
148 handler is <em>not</em> invoked, but the new handler is scheduled in its place.</div></li>
149 <li><b>target</b> : Observable<div class="sub-desc">Only call the handler if the event was fired on the target Observable, <i>not</i>
150 if the event was bubbled up from a child Observable.</div></li>
151 </ul><br>
152 <p>
153 <b>Combining Options</b><br>
154 Using the options argument, it is possible to combine different types of listeners:<br>
155 <br>
156 A delayed, one-time listener.
157 <pre><code>myDataView.on(<em>'click'</em>, this.onClick, this, {
158 single: true,
159 delay: 100
160 });</code></pre>
161 <p>
162 <b>Attaching multiple handlers in 1 call</b><br>
163 The method also allows for a single argument to be passed which is a config object containing properties
164 which specify multiple handlers.
165 <p>
166 <pre><code>myGridPanel.on({
167 <em>'click'</em> : {
168     fn: this.onClick,
169     scope: this,
170     delay: 100
171 },
172 <em>'mouseover'</em> : {
173     fn: this.onMouseOver,
174     scope: this
175 },
176 <em>'mouseout'</em> : {
177     fn: this.onMouseOut,
178     scope: this
179 }
180 });</code></pre>
181 <p>
182 Or a shorthand syntax:<br>
183 <pre><code>myGridPanel.on({
184 <em>'click'</em> : this.onClick,
185 <em>'mouseover'</em> : this.onMouseOver,
186 <em>'mouseout'</em> : this.onMouseOut,
187  scope: this
188 });</code></pre></div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#addListener" ext:member="#addListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-destroy"></a><b><a href="source/Filter.html#method-Ext.ux.grid.filter.Filter-destroy">destroy</a></b>()\r
189     :\r
190                                         void<div class="mdesc"><div class="short">Destroys this filter by purging any event listeners, and removing any menus.</div><div class="long">Destroys this filter by purging any event listeners, and removing any menus.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#destroy" ext:member="#destroy" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-enableBubble"></a><b><a href="source/Observable-more.html#method-Ext.util.Observable-enableBubble">enableBubble</a></b>(&nbsp;<code>Object&nbsp;events</code>&nbsp;)\r
191     :\r
192                                         void<div class="mdesc"><div class="short">Enables events fired by this Observable to bubble up an owner hierarchy by calling&#13;\r
193 this.getBubbleTarget() if present...</div><div class="long"><p>Enables events fired by this Observable to bubble up an owner hierarchy by calling\r
194 <code>this.getBubbleTarget()</code> if present. There is no implementation in the Observable base class.</p>\r
195 <p>This is commonly used by Ext.Components to bubble events to owner Containers. See <a href="output/Ext.Component.getBubbleTarget.html" ext:cls="Ext.Component.getBubbleTarget">Ext.Component.getBubbleTarget</a>. The default\r
196 implementation in Ext.Component returns the Component's immediate owner. But if a known target is required, this can be overridden to\r
197 access the required target more quickly.</p>\r
198 <p>Example:</p><pre><code>Ext.override(Ext.form.Field, {\r
199 <i>//  Add functionality to Field<em>'s initComponent to enable the change event to bubble\r</i>
200     initComponent: Ext.form.Field.prototype.initComponent.createSequence(<b>function</b>() {\r
201         this.enableBubble('</em>change<em>');\r
202     }),\r
203 \r
204 <i>//  We know that we want Field'</em>s events to bubble directly to the FormPanel.\r</i>
205     getBubbleTarget: <b>function</b>() {\r
206         <b>if</b> (!this.formPanel) {\r
207             this.formPanel = this.findParentByType(<em>'form'</em>);\r
208         }\r
209         <b>return</b> this.formPanel;\r
210     }\r
211 });\r
212 \r
213 <b>var</b> myForm = <b>new</b> Ext.formPanel({\r
214     title: <em>'User Details'</em>,\r
215     items: [{\r
216         ...\r
217     }],\r
218     listeners: {\r
219         change: <b>function</b>() {\r
220 <i>//          Title goes red <b>if</b> form has been modified.\r</i>
221             myForm.header.setStyle(<em>"color"</em>, <em>"red"</em>);\r
222         }\r
223     }\r
224 });</code></pre><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>events</code> : Object<div class="sub-desc">The event name to bubble, or an Array of event names.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#enableBubble" ext:member="#enableBubble" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-fireEvent"></a><b><a href="source/Observable.html#method-Ext.util.Observable-fireEvent">fireEvent</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Object...&nbsp;args</code>&nbsp;)\r
225     :\r
226                                         Boolean<div class="mdesc"><div class="short">Fires the specified event with the passed parameters (minus the event name).\r
227 An event may be set to bubble up an Obse...</div><div class="long"><p>Fires the specified event with the passed parameters (minus the event name).</p>
228 <p>An event may be set to bubble up an Observable parent hierarchy (See <a href="output/Ext.Component.html#Ext.Component-getBubbleTarget" ext:member="getBubbleTarget" ext:cls="Ext.Component">Ext.Component.getBubbleTarget</a>)
229 by calling <a href="output/Ext.util.Observable.html#Ext.util.Observable-enableBubble" ext:member="enableBubble" ext:cls="Ext.util.Observable">enableBubble</a>.</p><div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The name of the event to fire.</div></li><li><code>args</code> : Object...<div class="sub-desc">Variable number of parameters are passed to handlers.</div></li></ul><strong>Returns:</strong><ul><li><code>Boolean</code><div class="sub-desc">returns false if any of the handlers return false otherwise it returns true.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#fireEvent" ext:member="#fireEvent" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-getValue"></a><b><a href="source/Filter.html#method-Ext.ux.grid.filter.Filter-getValue">getValue</a></b>()\r
230     :\r
231                                         Object<div class="mdesc"><div class="short">Template method to be implemented by all subclasses that is to&#13;\r
232 get and return the value of the filter.&#13;\r
233 Defaults to ...</div><div class="long">Template method to be implemented by all subclasses that is to\r
234 get and return the value of the filter.\r
235 Defaults to Ext.emptyFn.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li><code>Object</code><div class="sub-desc">The 'serialized' form of this filter</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#getValue" ext:member="#getValue" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-hasListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-hasListener">hasListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>&nbsp;)\r
236     :\r
237                                         Boolean<div class="mdesc"><div class="short">Checks to see if this object has any listeners for a specified event</div><div class="long">Checks to see if this object has any listeners for a specified event<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The name of the event to check for</div></li></ul><strong>Returns:</strong><ul><li><code>Boolean</code><div class="sub-desc">True if the event is being listened for, else false</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#hasListener" ext:member="#hasListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-isActivatable"></a><b><a href="source/Filter.html#method-Ext.ux.grid.filter.Filter-isActivatable">isActivatable</a></b>()\r
238     :\r
239                                         Boolean<div class="mdesc"><div class="short">Template method to be implemented by all subclasses that is to&#13;\r
240 return true if the filter has enough configuration in...</div><div class="long">Template method to be implemented by all subclasses that is to\r
241 return <tt>true</tt> if the filter has enough configuration information to be activated.\r
242 Defaults to <tt>return true</tt>.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li><code>Boolean</code><div class="sub-desc"></div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#isActivatable" ext:member="#isActivatable" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-on"></a><b><a href="source/Observable.html#method-Ext.util.Observable-on">on</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;options</code>]</span>&nbsp;)\r
243     :\r
244                                         void<div class="mdesc"><div class="short">Appends an event handler to this object (shorthand for addListener.)</div><div class="long">Appends an event handler to this object (shorthand for <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a>.)<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The type of event to listen for</div></li><li><code>handler</code> : Function<div class="sub-desc">The method the event invokes</div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope (<code><b>this</b></code> reference) in which the handler function is executed.
245 <b>If omitted, defaults to the object which fired the event.</b></div></li><li><code>options</code> : Object<div class="sub-desc">(optional) An object containing handler configuration.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#on" ext:member="#on" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-purgeListeners"></a><b><a href="source/Observable.html#method-Ext.util.Observable-purgeListeners">purgeListeners</a></b>()\r
246     :\r
247                                         void<div class="mdesc"><div class="short">Removes all listeners for this object</div><div class="long">Removes all listeners for this object<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#purgeListeners" ext:member="#purgeListeners" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-relayEvents"></a><b><a href="source/Observable-more.html#method-Ext.util.Observable-relayEvents">relayEvents</a></b>(&nbsp;<code>Object&nbsp;o</code>,&nbsp;<code>Array&nbsp;events</code>&nbsp;)\r
248     :\r
249                                         void<div class="mdesc"><div class="short">Relays selected events from the specified Observable as if the events were fired by this.</div><div class="long">Relays selected events from the specified Observable as if the events were fired by <tt><b>this</b></tt>.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>o</code> : Object<div class="sub-desc">The Observable whose events this object is to relay.</div></li><li><code>events</code> : Array<div class="sub-desc">Array of event names to relay.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#relayEvents" ext:member="#relayEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-removeListener"></a><b><a href="source/Observable.html#method-Ext.util.Observable-removeListener">removeListener</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)\r
250     :\r
251                                         void<div class="mdesc"><div class="short">Removes an event handler.</div><div class="long">Removes an event handler.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The type of event the handler was associated with.</div></li><li><code>handler</code> : Function<div class="sub-desc">The handler to remove. <b>This must be a reference to the function passed into the <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a> call.</b></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope originally specified for the handler.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#removeListener" ext:member="#removeListener" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-resumeEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-resumeEvents">resumeEvents</a></b>()\r
252     :\r
253                                         void<div class="mdesc"><div class="short">Resume firing events. (see suspendEvents)\r
254 If events were suspended using the queueSuspended parameter, then all\r
255 event...</div><div class="long">Resume firing events. (see <a href="output/Ext.util.Observable.html#Ext.util.Observable-suspendEvents" ext:member="suspendEvents" ext:cls="Ext.util.Observable">suspendEvents</a>)
256 If events were suspended using the <tt><b>queueSuspended</b></tt> parameter, then all
257 events fired during event suspension will be sent to any listeners now.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#resumeEvents" ext:member="#resumeEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-serialize"></a><b><a href="source/Filter.html#method-Ext.ux.grid.filter.Filter-serialize">serialize</a></b>()\r
258     :\r
259                                         Object/Array<div class="mdesc"><div class="short">Returns the serialized filter data for transmission to the server&#13;\r
260 and fires the 'serialize' event.</div><div class="long">Returns the serialized filter data for transmission to the server\r
261 and fires the 'serialize' event.<div class="mdetail-params"><strong>Parameters:</strong><ul><li>None.</li></ul><strong>Returns:</strong><ul><li><code>Object/Array</code><div class="sub-desc">An object or collection of objects containing&#13;\r
262 key value pairs representing the current configuration of the filter.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#serialize" ext:member="#serialize" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-setActive"></a><b><a href="source/Filter.html#method-Ext.ux.grid.filter.Filter-setActive">setActive</a></b>(&nbsp;<code>Boolean&nbsp;active</code>,&nbsp;<code>Boolean&nbsp;suppressEvent</code>&nbsp;)\r
263     :\r
264                                         void<div class="mdesc"><div class="short">Sets the status of the filter and fires the appropriate events.</div><div class="long">Sets the status of the filter and fires the appropriate events.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>active</code> : Boolean<div class="sub-desc">The new filter state.</div></li><li><code>suppressEvent</code> : Boolean<div class="sub-desc">True to prevent events from being fired.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#setActive" ext:member="#setActive" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-setValue"></a><b><a href="source/Filter.html#method-Ext.ux.grid.filter.Filter-setValue">setValue</a></b>(&nbsp;<code>Object&nbsp;data</code>&nbsp;)\r
265     :\r
266                                         void<div class="mdesc"><div class="short">Template method to be implemented by all subclasses that is to&#13;\r
267 set the value of the filter and fire the 'update' eve...</div><div class="long">Template method to be implemented by all subclasses that is to\r
268 set the value of the filter and fire the 'update' event.\r
269 Defaults to Ext.emptyFn.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>data</code> : Object<div class="sub-desc">The value to set the filter</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#setValue" ext:member="#setValue" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-suspendEvents"></a><b><a href="source/Observable.html#method-Ext.util.Observable-suspendEvents">suspendEvents</a></b>(&nbsp;<code>Boolean&nbsp;queueSuspended</code>&nbsp;)\r
270     :\r
271                                         void<div class="mdesc"><div class="short">Suspend the firing of all events. (see resumeEvents)</div><div class="long">Suspend the firing of all events. (see <a href="output/Ext.util.Observable.html#Ext.util.Observable-resumeEvents" ext:member="resumeEvents" ext:cls="Ext.util.Observable">resumeEvents</a>)<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>queueSuspended</code> : Boolean<div class="sub-desc">Pass as true to queue up suspended events to be fired
272 after the <a href="output/Ext.util.Observable.html#Ext.util.Observable-resumeEvents" ext:member="resumeEvents" ext:cls="Ext.util.Observable">resumeEvents</a> call instead of discarding all suspended events;</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#suspendEvents" ext:member="#suspendEvents" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.util.Observable-un"></a><b><a href="source/Observable.html#method-Ext.util.Observable-un">un</a></b>(&nbsp;<code>String&nbsp;eventName</code>,&nbsp;<code>Function&nbsp;handler</code>,&nbsp;<span title="Optional" class="optional">[<code>Object&nbsp;scope</code>]</span>&nbsp;)\r
273     :\r
274                                         void<div class="mdesc"><div class="short">Removes an event handler (shorthand for removeListener.)</div><div class="long">Removes an event handler (shorthand for <a href="output/Ext.util.Observable.html#Ext.util.Observable-removeListener" ext:member="removeListener" ext:cls="Ext.util.Observable">removeListener</a>.)<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>eventName</code> : String<div class="sub-desc">The type of event the handler was associated with.</div></li><li><code>handler</code> : Function<div class="sub-desc">The handler to remove. <b>This must be a reference to the function passed into the <a href="output/Ext.util.Observable.html#Ext.util.Observable-addListener" ext:member="addListener" ext:cls="Ext.util.Observable">addListener</a> call.</b></div></li><li><code>scope</code> : Object<div class="sub-desc">(optional) The scope originally specified for the handler.</div></li></ul><strong>Returns:</strong><ul><li>void</li></ul></div></div></div></td><td class="msource"><a href="output/Ext.util.Observable.html#un" ext:member="#un" ext:cls="Ext.util.Observable">Observable</a></td></tr><tr class="method-row expandable "><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.ListFilter-validateRecord"></a><b><a href="source/ListFilter.html#method-Ext.ux.grid.filter.ListFilter-validateRecord">validateRecord</a></b>(&nbsp;<code>Ext.data.Record&nbsp;record</code>&nbsp;)\r
275     :\r
276                                         Boolean<div class="mdesc"><div class="short">Template method that is to validate the provided Ext.data.Record&#13;\r
277 against the filters configuration.</div><div class="long">Template method that is to validate the provided Ext.data.Record\r
278 against the filters configuration.<div class="mdetail-params"><strong>Parameters:</strong><ul><li><code>record</code> : Ext.data.Record<div class="sub-desc">The record to validate</div></li></ul><strong>Returns:</strong><ul><li><code>Boolean</code><div class="sub-desc">true if the record is valid within the bounds&#13;\r
279 of the filter, false otherwise.</div></li></ul></div></div></div></td><td class="msource">ListFilter</td></tr></tbody></table><a id="Ext.ux.grid.filter.ListFilter-events"></a><h2>Public Events</h2><table cellspacing="0" class="member-table"><tbody><tr><th colspan="2" class="sig-header">Event</th><th class="msource-header">Defined By</th></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-activate"></a><b><a href="source/Filter.html#event-Ext.ux.grid.filter.Filter-activate">activate</a></b> :\r
280                                       (&nbsp;<code>Ext.ux.grid.filter.Filter&nbsp;this</code>&nbsp;)\r
281     <div class="mdesc"><div class="short">Fires when an inactive filter becomes active</div><div class="long">Fires when an inactive filter becomes active<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Ext.ux.grid.filter.Filter<div class="sub-desc"></div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#activate" ext:member="#activate" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-deactivate"></a><b><a href="source/Filter.html#event-Ext.ux.grid.filter.Filter-deactivate">deactivate</a></b> :\r
282                                       (&nbsp;<code>Ext.ux.grid.filter.Filter&nbsp;this</code>&nbsp;)\r
283     <div class="mdesc"><div class="short">Fires when an active filter becomes inactive</div><div class="long">Fires when an active filter becomes inactive<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Ext.ux.grid.filter.Filter<div class="sub-desc"></div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#deactivate" ext:member="#deactivate" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-serialize"></a><b><a href="source/Filter.html#event-Ext.ux.grid.filter.Filter-serialize">serialize</a></b> :\r
284                                       (&nbsp;<code>Array/Object&nbsp;data</code>,&nbsp;<code>Ext.ux.grid.filter.Filter&nbsp;filter</code>&nbsp;)\r
285     <div class="mdesc"><div class="short">Fires after the serialization process. Use this to attach additional parameters to serialization&#13;\r
286 data before it is e...</div><div class="long">Fires after the serialization process. Use this to attach additional parameters to serialization\r
287 data before it is encoded and sent to the server.<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>data</code> : Array/Object<div class="sub-desc">A map or collection of maps representing the current filter configuration.</div></li><li><code>filter</code> : Ext.ux.grid.filter.Filter<div class="sub-desc">The filter being serialized.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#serialize" ext:member="#serialize" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr><tr class="method-row expandable inherited"><td class="micon"><a href="#expand" class="exi">&nbsp;</a></td><td class="sig"><a id="Ext.ux.grid.filter.Filter-update"></a><b><a href="source/Filter.html#event-Ext.ux.grid.filter.Filter-update">update</a></b> :\r
288                                       (&nbsp;<code>Ext.ux.grid.filter.Filter&nbsp;this</code>&nbsp;)\r
289     <div class="mdesc"><div class="short">Fires when a filter configuration has changed</div><div class="long">Fires when a filter configuration has changed<div class="mdetail-params"><strong style="font-weight: normal;">Listeners will be called with the following arguments:</strong><ul><li><code>this</code> : Ext.ux.grid.filter.Filter<div class="sub-desc">The filter object.</div></li></ul></div></div></div></td><td class="msource"><a href="output/Ext.ux.grid.filter.Filter.html#update" ext:member="#update" ext:cls="Ext.ux.grid.filter.Filter">Filter</a></td></tr></tbody></table></div>