Add datatables-1.9.4 and jquery-1.10.2 libraries
[proteocache.git] / webapp / resources / datatables-1.9.4 / docs / DataTable.models.ext.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2 <html>
3         <head>
4                 <meta http-equiv="Content-type" content="text/html; charset=utf-8">
5                 <title>Namespace: ext - documentation</title>
6   
7                 <style type="text/css" media="screen">
8                         @import "media/css/doc.css";
9                         @import "media/css/shCore.css";
10                         @import "media/css/shThemeDataTables.css";
11                 </style>
12         
13                 <script type="text/javascript" src="media/js/shCore.js"></script>
14                 <script type="text/javascript" src="media/js/shBrushJScript.js"></script>
15                 <script type="text/javascript" src="media/js/jquery.js"></script>
16                 <script type="text/javascript" src="media/js/doc.js"></script>
17         </head>
18         <body>
19                 <div class="fw_container">
20                         
21                                 <a name="top"></a>
22                                 <div class="fw_header">
23                                         <h1 class="page-title">Namespace: ext</h1>
24                                         <h2 class="ancestors">Ancestry: <span class="ancestors"><a href="DataTable.html">DataTable</a> » <a href="DataTable.models.html">.models</a>.</span> » ext</h2>
25                                         <div class="page-info">
26                                                 DataTables v1.9.4 documentation
27                                         </div>
28                                 </div>
29
30                                 
31
32                                 <div class="fw_nav">
33                                         <h2>Navigation</h2>
34                                         <ul>
35                                         <li><a href="#top">Overview</a></li>
36                                         <li><a href="#summary">Summary</a><div><table cellpadding="5" border="0" cellspacing="0" width="100%"><tbody><tr><td>Classes (0)</td><td>Namespaces (0)</td></tr><tr><td>Properties (0)</td><td><a href="#summary_properties_static">Static properties (14)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li><li><a href="#details">Details</a><div><table cellpadding="5" border="0" cellspacing="0" width="100%"><tbody><tr><td>Properties (0)</td><td><a href="#summary_properties_static">Static properties (14)</a></td></tr><tr><td>Methods (0)</td><td>Static methods (0)</td></tr><tr><td>Events (0)</td><td></td></tr></tbody></table></div></li></ul>
37                                         <div style="margin-top: 10px;">
38                                                 <input type="hidden" name="show_private" value="0">
39                                                 <span id="private_label">Hiding</span> private elements 
40                                                         (<a id="private_toggle" href="">toggle</a>)
41                                                 </span>
42                                         </div>
43                                         <div>
44                                                 <input type="hidden" name="show_extended" value="1">
45                                                 <span id="extended_label">Showing</span> extended elements 
46                                                         (<a id="extended_toggle" href="">toggle</a>)
47                                                 </span>
48                                         </div>
49                                 </div>
50
51                                 <div class="fw_content">
52                                         <a name="overview"></a>
53                                         <div class="doc_overview">
54                                                 <div class="nav_blocker"></div>
55                                                 <p>DataTables extension options and plug-ins. This namespace acts as a collection "area"
56 for plug-ins that can be used to extend the default DataTables behaviour - indeed many
57 of the build in methods use this method to provide their own capabilities (sorting methods
58 for example).</p>
59
60 <p>Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed
61 and modified by plug-ins.</p><dl class="details">
62         
63 </dl>
64
65                                         </div>
66
67                                         
68                                         <div class="doc_summary">
69                                                 <a name="summary"></a>
70                                                 <h2>Summary</h2>
71
72                                                 <div class="doc_group"><a name="summary_properties_static"></a><h3 class="subsection-title">Properties - static</h3>
73
74 <dl>
75     <dt class="  even"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#afnFiltering">afnFiltering</a></span><span class="type-sig"><span class="type-signature"> :array</span></span></dt><dd class="  even"><p>Plug-in filtering functions - this method of filtering is complimentary to the default
76 type based filtering, and a lot more comprehensive as it allows you complete control
77 over the filtering logic. Each element in this array is a function (parameters
78 described below) that is called for every row in the table, and your logic decides if
79 it should be included in the filtered data set or not.
80   <ul>
81     <li>
82       Function input parameters:
83       <ul>
84         <li>{object} DataTables settings object: see <a href="DataTable.models.oSettings.html">DataTable.models.oSettings</a>.</li>
85         <li>{array|object} Data for the row to be processed (same as the original format
86           that was passed in as the data source, or an array from a DOM data source</li>
87         <li>{int} Row index in aoData (<a href="DataTable.models.oSettings.html#aoData">DataTable.models.oSettings.aoData</a>), which can
88           be useful to retrieve the TR element if you need DOM interaction.</li>
89       </ul>
90     </li>
91     <li>
92       Function return:
93       <ul>
94         <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>
95       </ul>
96     </il>
97   </ul></p></dd><dt class="  odd"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#afnSortData">afnSortData</a></span><span class="type-sig"><span class="type-signature"> :array</span></span></dt><dd class="  odd"><p>Plug-in sorting functions - this method of sorting is complimentary to the default type
98 based sorting that DataTables does automatically, allowing much greater control over the
99 the data that is being used to sort a column. This is useful if you want to do sorting
100 based on live data (for example the contents of an 'input' element) rather than just the
101 static string that DataTables knows of. The way these plug-ins work is that you create
102 an array of the values you wish to be sorted for the column in question and then return
103 that array. Which pre-sorting function is run here depends on the sSortDataType parameter
104 that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort 
105 data.
106   <ul>
107     <li>
108       Function input parameters:
109       <ul>
110         <li>{object} DataTables settings object: see <a href="DataTable.models.oSettings.html">DataTable.models.oSettings</a>.</li>
111         <li>{int} Target column index</li>
112       </ul>
113     </li>
114     <li>
115       Function return:
116       <ul>
117         <li>{array} Data for the column to be sorted upon</li>
118       </ul>
119     </il>
120   </ul> [<a href-"#afnSortData">...</a>] </p></dd><dt class="  even"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#aoFeatures">aoFeatures</a></span><span class="type-sig"><span class="type-signature"> :array</span></span></dt><dd class="  even"><p>Feature plug-ins - This is an array of objects which describe the feature plug-ins that are
121 available to DataTables. These feature plug-ins are accessible through the sDom initialisation
122 option. As such, each feature plug-in must describe a function that is used to initialise
123 itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name
124 of the feature (sFeature). Thus the objects attached to this method must provide:
125   <ul>
126     <li>{function} fnInit Initialisation of the plug-in
127       <ul>
128         <li>
129           Function input parameters:
130           <ul>
131             <li>{object} DataTables settings object: see <a href="DataTable.models.oSettings.html">DataTable.models.oSettings</a>.</li>
132           </ul>
133         </li>
134         <li>
135           Function return:
136           <ul>
137             <li>{node|null} The element which contains your feature. Note that the return
138                may also be void if your plug-in does not require to inject any DOM elements 
139                into DataTables control (sDom) - for example this might be useful when 
140                developing a plug-in which allows table control via keyboard entry.</li>
141           </ul>
142         </il>
143       </ul>
144     </li>
145     <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>
146     <li>{string} sFeature Feature name</li>
147   </ul></p></dd><dt class="  odd"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#aTypes">aTypes</a></span><span class="type-sig"><span class="type-signature"> :array</span></span></dt><dd class="  odd"><p>Type detection plug-in functions - DataTables utilises types to define how sorting and
148 filtering behave, and types can be either  be defined by the developer (sType for the
149 column) or they can be automatically detected by the methods in this array. The functions
150 defined in the array are quite simple, taking a single parameter (the data to analyse) 
151 and returning the type if it is a known type, or null otherwise.
152   <ul>
153     <li>
154       Function input parameters:
155       <ul>
156         <li>{*} Data from the column cell to be analysed</li>
157       </ul>
158     </li>
159     <li>
160       Function return:
161       <ul>
162         <li>{string|null} Data type detected, or null if unknown (and thus pass it
163           on to the other type detection functions.</li>
164       </ul>
165     </il>
166   </ul></p></dd><dt class="  even"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#fnVersionCheck">fnVersionCheck</a></span><span class="type-sig"><span class="type-signature"> :function</span></span></dt><dd class="  even"><p>Provide a common method for plug-ins to check the version of DataTables being used, 
167 in order to ensure compatibility.</p></dd><dt class="  odd"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#iApiIndex">iApiIndex</a></span><span class="type-sig"><span class="type-signature"> :int</span></span></dt><dd class="  odd"><p>Index for what 'this' index API functions should use</p></dd><dt class="  even"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#oApi">oApi</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  even"><p>Container for all private functions in DataTables so they can be exposed externally</p></dd><dt class="  odd"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#ofnSearch">ofnSearch</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  odd"><p>Pre-processing of filtering data plug-ins - When you assign the sType for a column
168 (or have it automatically detected for you by DataTables or a type detection plug-in), 
169 you will typically be using this for custom sorting, but it can also be used to provide 
170 custom filtering by allowing you to pre-processing the data and returning the data in
171 the format that should be filtered upon. This is done by adding functions this object 
172 with a parameter name which matches the sType for that target column. This is the
173 corollary of <i>afnSortData</i> for filtering data.
174   <ul>
175     <li>
176       Function input parameters:
177       <ul>
178         <li>{*} Data from the column cell to be prepared for filtering</li>
179       </ul>
180     </li>
181     <li>
182       Function return:
183       <ul>
184         <li>{string|null} Formatted string that will be used for the filtering.</li>
185       </ul>
186     </il>
187   </ul> [<a href-"#ofnSearch">...</a>] </p></dd><dt class="  even"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#oJUIClasses">oJUIClasses</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  even"><p>Storage for the various classes that DataTables uses - jQuery UI suitable</p></dd><dt class="  odd"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#oPagination">oPagination</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  odd"><p>Pagination plug-in methods - The style and controls of the pagination can significantly 
188 impact on how the end user interacts with the data in your table, and DataTables allows 
189 the addition of pagination controls by extending this object, which can then be enabled
190 through the <i>sPaginationType</i> initialisation parameter. Each pagination type that
191 is added is an object (the property name of which is what <i>sPaginationType</i> refers
192 to) that has two properties, both methods that are used by DataTables to update the
193 control's state.
194   <ul>
195     <li>
196       fnInit -  Initialisation of the paging controls. Called only during initialisation 
197         of the table. It is expected that this function will add the required DOM elements 
198         to the page for the paging controls to work. The element pointer 
199         'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging 
200         controls (note that this is a 2D array to allow for multiple instances of each 
201         DataTables DOM element). It is suggested that you add the controls to this element 
202         as children
203       <ul>
204         <li>
205           Function input parameters:
206           <ul>
207             <li>{object} DataTables settings object: see <a href="DataTable.models.oSettings.html">DataTable.models.oSettings</a>.</li>
208             <li>{node} Container into which the pagination controls must be inserted</li>
209             <li>{function} Draw callback function - whenever the controls cause a page
210               change, this method must be called to redraw the table.</li>
211           </ul>
212         </li>
213         <li>
214           Function return:
215           <ul>
216             <li>No return required</li>
217           </ul>
218         </il>
219       </ul>
220     </il>
221     <li>
222       fnInit -  This function is called whenever the paging status of the table changes and is
223         typically used to update classes and/or text of the paging controls to reflex the new 
224         status.
225       <ul>
226         <li>
227           Function input parameters:
228           <ul>
229             <li>{object} DataTables settings object: see <a href="DataTable.models.oSettings.html">DataTable.models.oSettings</a>.</li>
230             <li>{function} Draw callback function - in case you need to redraw the table again
231               or attach new event listeners</li>
232           </ul>
233         </li>
234         <li>
235           Function return:
236           <ul>
237             <li>No return required</li>
238           </ul>
239         </il>
240       </ul>
241     </il>
242   </ul></p></dd><dt class="  even"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#oSort">oSort</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  even"><p>Sorting plug-in methods - Sorting in DataTables is based on the detected type of the
243 data column (you can add your own type detection functions, or override automatic 
244 detection using sType). With this specific type given to the column, DataTables will 
245 apply the required sort from the functions in the object. Each sort type must provide
246 two mandatory methods, one each for ascending and descending sorting, and can optionally
247 provide a pre-formatting method that will help speed up sorting by allowing DataTables
248 to pre-format the sort data only once (rather than every time the actual sort functions
249 are run). The two sorting functions are typical Javascript sort methods:
250   <ul>
251     <li>
252       Function input parameters:
253       <ul>
254         <li>{<em>} Data to compare to the second parameter</li>
255         <li>{</em>} Data to compare to the first parameter</li>
256       </ul>
257     </li>
258     <li>
259       Function return:
260       <ul>
261         <li>{int} Sorting match: &lt;0 if first parameter should be sorted lower than
262           the second parameter, ===0 if the two parameters are equal and >0 if
263           the first parameter should be sorted height than the second parameter.</li>
264       </ul>
265     </il>
266   </ul></p></dd><dt class="  odd"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#oStdClasses">oStdClasses</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  odd"><p>Storage for the various classes that DataTables uses</p></dd><dt class="  even"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#sErrMode">sErrMode</a></span><span class="type-sig"><span class="type-signature"> :string</span></span></dt><dd class="  even"><p>How should DataTables report an error. Can take the value 'alert' or 'throw'</p></dd><dt class="  odd"><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#sVersion">sVersion</a></span><span class="type-sig"><span class="type-signature"> :string</span></span></dt><dd class="  odd"><p>Version string for plug-ins to check compatibility. Allowed format is
267 a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and
268 e are optional</p></dd>
269 </dl></div>
270                                         </div>
271                                         
272
273
274                                         
275                                         <div class="doc_details">
276                                                 <a name="details"></a>
277                                                 <h2>Details</h2>
278                                                 <div class="doc_group"><a name="details_properties"></a><h3 class="subsection-title">Properties - static</h3>
279 <dl>
280     <dt class="  even"><a name="afnFiltering"></a><a name="afnFiltering_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#afnFiltering">afnFiltering</a></span><span class="type-sig"><span class="type-signature"> :array</span></span></dt><dd class="  even"><p>Plug-in filtering functions - this method of filtering is complimentary to the default
281 type based filtering, and a lot more comprehensive as it allows you complete control
282 over the filtering logic. Each element in this array is a function (parameters
283 described below) that is called for every row in the table, and your logic decides if
284 it should be included in the filtered data set or not.
285   <ul>
286     <li>
287       Function input parameters:
288       <ul>
289         <li>{object} DataTables settings object: see <a href="DataTable.models.oSettings.html">DataTable.models.oSettings</a>.</li>
290         <li>{array|object} Data for the row to be processed (same as the original format
291           that was passed in as the data source, or an array from a DOM data source</li>
292         <li>{int} Row index in aoData (<a href="DataTable.models.oSettings.html#aoData">DataTable.models.oSettings.aoData</a>), which can
293           be useful to retrieve the TR element if you need DOM interaction.</li>
294       </ul>
295     </li>
296     <li>
297       Function return:
298       <ul>
299         <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>
300       </ul>
301     </il>
302   </ul></p><div class="collapse_details"><dl class="details">
303         
304 </dl>
305 <h5>Example</h5>
306     <div class="example-code">
307         <pre class="brush: js">   // The following example shows custom filtering being applied to the fourth column (i.e.
308    // the aData[3] index) based on two input values from the end-user, matching the data in 
309    // a certain range.
310    $.fn.dataTableExt.afnFiltering.push(
311      function( oSettings, aData, iDataIndex ) {
312        var iMin = document.getElementById('min').value * 1;
313        var iMax = document.getElementById('max').value * 1;
314        var iVersion = aData[3] == "-" ? 0 : aData[3]*1;
315        if ( iMin == "" && iMax == "" ) {
316          return true;
317        }
318        else if ( iMin == "" && iVersion < iMax ) {
319          return true;
320        }
321        else if ( iMin < iVersion && "" == iMax ) {
322          return true;
323        }
324        else if ( iMin < iVersion && iVersion < iMax ) {
325          return true;
326        }
327        return false;
328      }
329    );</pre>
330     </div>
331 </div></dd><dt class="  odd"><a name="afnSortData"></a><a name="afnSortData_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#afnSortData">afnSortData</a></span><span class="type-sig"><span class="type-signature"> :array</span></span></dt><dd class="  odd"><p>Plug-in sorting functions - this method of sorting is complimentary to the default type
332 based sorting that DataTables does automatically, allowing much greater control over the
333 the data that is being used to sort a column. This is useful if you want to do sorting
334 based on live data (for example the contents of an 'input' element) rather than just the
335 static string that DataTables knows of. The way these plug-ins work is that you create
336 an array of the values you wish to be sorted for the column in question and then return
337 that array. Which pre-sorting function is run here depends on the sSortDataType parameter
338 that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort 
339 data.
340   <ul>
341     <li>
342       Function input parameters:
343       <ul>
344         <li>{object} DataTables settings object: see <a href="DataTable.models.oSettings.html">DataTable.models.oSettings</a>.</li>
345         <li>{int} Target column index</li>
346       </ul>
347     </li>
348     <li>
349       Function return:
350       <ul>
351         <li>{array} Data for the column to be sorted upon</li>
352       </ul>
353     </il>
354   </ul></p>
355
356 <p>Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for
357 the different uses that DataTables can put the data to. Specifically <i>mData</i> when
358 used as a function will give you a 'type' (sorting, filtering etc) that you can use to 
359 prepare the data as required for the different types. As such, this method is deprecated.</p><div class="collapse_details"><dl class="details">
360         <dt class="important">Deprecated</dt><dd class="yes-def">Yes</dd>
361 </dl>
362 <h5>Example</h5>
363     <div class="example-code">
364         <pre class="brush: js">   // Updating the cached sorting information with user entered values in HTML input elements
365    jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )
366    {
367      var aData = [];
368      $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
369        aData.push( this.value );
370      } );
371      return aData;
372    }</pre>
373     </div>
374 </div></dd><dt class="  even"><a name="aoFeatures"></a><a name="aoFeatures_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#aoFeatures">aoFeatures</a></span><span class="type-sig"><span class="type-signature"> :array</span></span></dt><dd class="  even"><p>Feature plug-ins - This is an array of objects which describe the feature plug-ins that are
375 available to DataTables. These feature plug-ins are accessible through the sDom initialisation
376 option. As such, each feature plug-in must describe a function that is used to initialise
377 itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name
378 of the feature (sFeature). Thus the objects attached to this method must provide:
379   <ul>
380     <li>{function} fnInit Initialisation of the plug-in
381       <ul>
382         <li>
383           Function input parameters:
384           <ul>
385             <li>{object} DataTables settings object: see <a href="DataTable.models.oSettings.html">DataTable.models.oSettings</a>.</li>
386           </ul>
387         </li>
388         <li>
389           Function return:
390           <ul>
391             <li>{node|null} The element which contains your feature. Note that the return
392                may also be void if your plug-in does not require to inject any DOM elements 
393                into DataTables control (sDom) - for example this might be useful when 
394                developing a plug-in which allows table control via keyboard entry.</li>
395           </ul>
396         </il>
397       </ul>
398     </li>
399     <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>
400     <li>{string} sFeature Feature name</li>
401   </ul></p><div class="collapse_details"><dl class="details">
402         
403 </dl>
404 <h5>Example</h5>
405     <div class="example-code">
406         <pre class="brush: js">   // How TableTools initialises itself.
407    $.fn.dataTableExt.aoFeatures.push( {
408      "fnInit": function( oSettings ) {
409        return new TableTools( { "oDTSettings": oSettings } );
410      },
411      "cFeature": "T",
412      "sFeature": "TableTools"
413    } );</pre>
414     </div>
415 </div></dd><dt class="  odd"><a name="aTypes"></a><a name="aTypes_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#aTypes">aTypes</a></span><span class="type-sig"><span class="type-signature"> :array</span></span></dt><dd class="  odd"><p>Type detection plug-in functions - DataTables utilises types to define how sorting and
416 filtering behave, and types can be either  be defined by the developer (sType for the
417 column) or they can be automatically detected by the methods in this array. The functions
418 defined in the array are quite simple, taking a single parameter (the data to analyse) 
419 and returning the type if it is a known type, or null otherwise.
420   <ul>
421     <li>
422       Function input parameters:
423       <ul>
424         <li>{*} Data from the column cell to be analysed</li>
425       </ul>
426     </li>
427     <li>
428       Function return:
429       <ul>
430         <li>{string|null} Data type detected, or null if unknown (and thus pass it
431           on to the other type detection functions.</li>
432       </ul>
433     </il>
434   </ul></p><div class="collapse_details"><dl class="details">
435         
436 </dl>
437 <h5>Example</h5>
438     <div class="example-code">
439         <pre class="brush: js">   // Currency type detection plug-in:
440    jQuery.fn.dataTableExt.aTypes.push(
441      function ( sData ) {
442        var sValidChars = "0123456789.-";
443        var Char;
444        
445        // Check the numeric part
446        for ( i=1 ; i<sData.length ; i++ ) {
447          Char = sData.charAt(i); 
448          if (sValidChars.indexOf(Char) == -1) {
449            return null;
450          }
451        }
452        
453        // Check prefixed by currency
454        if ( sData.charAt(0) == '$' || sData.charAt(0) == '&pound;' ) {
455          return 'currency';
456        }
457        return null;
458      }
459    );</pre>
460     </div>
461 </div></dd><dt id="DataTable.models.ext.fnVersionCheck" class="  even"><a name="fnVersionCheck"></a><a name="fnVersionCheck_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a>fnVersionCheck</a></span><span class="type-sig"><span class="type-signature"> :function</span></span></span></dt><dd class="  even"><p>Provide a common method for plug-ins to check the version of DataTables being used, 
462 in order to ensure compatibility.</p><div class="collapse_details"><dl class="details">
463         
464 </dl>
465 <h5>Parameters:</h5>
466
467 <table class="params">
468     <thead>
469         <tr>
470         <th width="20"></th>
471         <th width="12%" class="bottom_border name">Name</th>
472                 <th width="10%" class="bottom_border">Type</th>
473                 <th width="10%" class="bottom_border">Attributes</th>
474                 <th width="10%" class="bottom_border">Default</th>
475                 <th class="last bottom_border">Description</th>
476         </tr>
477         </thead>
478         
479         <tbody>
480         <tr class="even"><td class="number right_border"><div>1</div></td><td class="name">sVersion</td><td class="type type-param">string</td><td class="attributes"></td><td class="default"></td><td class="description last"><p>Version string to check for, in the format "X.Y.Z". Note 
481    that the formats "X" and "X.Y" are also acceptable.</p></td></tr>
482         </tbody>
483 </table><h5>Returns:</h5><p class="returns"><p>true if this version of DataTables is greater or equal to the 
484    required version, or false if this version of DataTales is not suitable</p></p><h5>Example:</h5>
485     <div class="example-code">
486         <pre class="brush: js">   $(document).ready(function() {
487      var oTable = $('#example').dataTable();
488      alert( oTable.fnVersionCheck( '1.9.0' ) );
489    } );</pre>
490     </div>
491 </div>
492 <dt class="  odd"><a name="iApiIndex"></a><a name="iApiIndex_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#iApiIndex">iApiIndex</a></span><span class="type-sig"><span class="type-signature"> :int</span></span></dt><dd class="  odd"><p>Index for what 'this' index API functions should use</p><div class="collapse_details"><dl class="details">
493         
494 </dl>
495 </div></dd><dt class="  even"><a name="oApi"></a><a name="oApi_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#oApi">oApi</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  even"><p>Container for all private functions in DataTables so they can be exposed externally</p><div class="collapse_details"><dl class="details">
496         
497 </dl>
498 </div></dd><dt class="  odd"><a name="ofnSearch"></a><a name="ofnSearch_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#ofnSearch">ofnSearch</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  odd"><p>Pre-processing of filtering data plug-ins - When you assign the sType for a column
499 (or have it automatically detected for you by DataTables or a type detection plug-in), 
500 you will typically be using this for custom sorting, but it can also be used to provide 
501 custom filtering by allowing you to pre-processing the data and returning the data in
502 the format that should be filtered upon. This is done by adding functions this object 
503 with a parameter name which matches the sType for that target column. This is the
504 corollary of <i>afnSortData</i> for filtering data.
505   <ul>
506     <li>
507       Function input parameters:
508       <ul>
509         <li>{*} Data from the column cell to be prepared for filtering</li>
510       </ul>
511     </li>
512     <li>
513       Function return:
514       <ul>
515         <li>{string|null} Formatted string that will be used for the filtering.</li>
516       </ul>
517     </il>
518   </ul></p>
519
520 <p>Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for
521 the different uses that DataTables can put the data to. Specifically <i>mData</i> when
522 used as a function will give you a 'type' (sorting, filtering etc) that you can use to 
523 prepare the data as required for the different types. As such, this method is deprecated.</p><div class="collapse_details"><dl class="details">
524         <dt class="important">Deprecated</dt><dd class="yes-def">Yes</dd>
525 </dl>
526 <h5>Example</h5>
527     <div class="example-code">
528         <pre class="brush: js">   $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {
529      return sData.replace(/\n/g," ").replace( /<.*?>/g, "" );
530    }</pre>
531     </div>
532 </div></dd><dt class="  even"><a name="oJUIClasses"></a><a name="oJUIClasses_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#oJUIClasses">oJUIClasses</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  even"><p>Storage for the various classes that DataTables uses - jQuery UI suitable</p><div class="collapse_details"><dl class="details">
533         
534 </dl>
535 </div></dd><dt class="  odd"><a name="oPagination"></a><a name="oPagination_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#oPagination">oPagination</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  odd"><p>Pagination plug-in methods - The style and controls of the pagination can significantly 
536 impact on how the end user interacts with the data in your table, and DataTables allows 
537 the addition of pagination controls by extending this object, which can then be enabled
538 through the <i>sPaginationType</i> initialisation parameter. Each pagination type that
539 is added is an object (the property name of which is what <i>sPaginationType</i> refers
540 to) that has two properties, both methods that are used by DataTables to update the
541 control's state.
542   <ul>
543     <li>
544       fnInit -  Initialisation of the paging controls. Called only during initialisation 
545         of the table. It is expected that this function will add the required DOM elements 
546         to the page for the paging controls to work. The element pointer 
547         'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging 
548         controls (note that this is a 2D array to allow for multiple instances of each 
549         DataTables DOM element). It is suggested that you add the controls to this element 
550         as children
551       <ul>
552         <li>
553           Function input parameters:
554           <ul>
555             <li>{object} DataTables settings object: see <a href="DataTable.models.oSettings.html">DataTable.models.oSettings</a>.</li>
556             <li>{node} Container into which the pagination controls must be inserted</li>
557             <li>{function} Draw callback function - whenever the controls cause a page
558               change, this method must be called to redraw the table.</li>
559           </ul>
560         </li>
561         <li>
562           Function return:
563           <ul>
564             <li>No return required</li>
565           </ul>
566         </il>
567       </ul>
568     </il>
569     <li>
570       fnInit -  This function is called whenever the paging status of the table changes and is
571         typically used to update classes and/or text of the paging controls to reflex the new 
572         status.
573       <ul>
574         <li>
575           Function input parameters:
576           <ul>
577             <li>{object} DataTables settings object: see <a href="DataTable.models.oSettings.html">DataTable.models.oSettings</a>.</li>
578             <li>{function} Draw callback function - in case you need to redraw the table again
579               or attach new event listeners</li>
580           </ul>
581         </li>
582         <li>
583           Function return:
584           <ul>
585             <li>No return required</li>
586           </ul>
587         </il>
588       </ul>
589     </il>
590   </ul></p><div class="collapse_details"><dl class="details">
591         
592 </dl>
593 <h5>Example</h5>
594     <div class="example-code">
595         <pre class="brush: js">   $.fn.dataTableExt.oPagination.four_button = {
596      "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) {
597        nFirst = document.createElement( 'span' );
598        nPrevious = document.createElement( 'span' );
599        nNext = document.createElement( 'span' );
600        nLast = document.createElement( 'span' );
601        
602        nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );
603        nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );
604        nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );
605        nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );
606        
607        nFirst.className = "paginate_button first";
608        nPrevious.className = "paginate_button previous";
609        nNext.className="paginate_button next";
610        nLast.className = "paginate_button last";
611        
612        nPaging.appendChild( nFirst );
613        nPaging.appendChild( nPrevious );
614        nPaging.appendChild( nNext );
615        nPaging.appendChild( nLast );
616        
617        $(nFirst).click( function () {
618          oSettings.oApi._fnPageChange( oSettings, "first" );
619          fnCallbackDraw( oSettings );
620        } );
621        
622        $(nPrevious).click( function() {
623          oSettings.oApi._fnPageChange( oSettings, "previous" );
624          fnCallbackDraw( oSettings );
625        } );
626        
627        $(nNext).click( function() {
628          oSettings.oApi._fnPageChange( oSettings, "next" );
629          fnCallbackDraw( oSettings );
630        } );
631        
632        $(nLast).click( function() {
633          oSettings.oApi._fnPageChange( oSettings, "last" );
634          fnCallbackDraw( oSettings );
635        } );
636        
637        $(nFirst).bind( 'selectstart', function () { return false; } );
638        $(nPrevious).bind( 'selectstart', function () { return false; } );
639        $(nNext).bind( 'selectstart', function () { return false; } );
640        $(nLast).bind( 'selectstart', function () { return false; } );
641      },
642      
643      "fnUpdate": function ( oSettings, fnCallbackDraw ) {
644        if ( !oSettings.aanFeatures.p ) {
645          return;
646        }
647        
648        // Loop over each instance of the pager
649        var an = oSettings.aanFeatures.p;
650        for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {
651          var buttons = an[i].getElementsByTagName('span');
652          if ( oSettings._iDisplayStart === 0 ) {
653            buttons[0].className = "paginate_disabled_previous";
654            buttons[1].className = "paginate_disabled_previous";
655          }
656          else {
657            buttons[0].className = "paginate_enabled_previous";
658            buttons[1].className = "paginate_enabled_previous";
659          }
660          
661          if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {
662            buttons[2].className = "paginate_disabled_next";
663            buttons[3].className = "paginate_disabled_next";
664          }
665          else {
666            buttons[2].className = "paginate_enabled_next";
667            buttons[3].className = "paginate_enabled_next";
668          }
669        }
670      }
671    };</pre>
672     </div>
673 </div></dd><dt class="  even"><a name="oSort"></a><a name="oSort_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#oSort">oSort</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  even"><p>Sorting plug-in methods - Sorting in DataTables is based on the detected type of the
674 data column (you can add your own type detection functions, or override automatic 
675 detection using sType). With this specific type given to the column, DataTables will 
676 apply the required sort from the functions in the object. Each sort type must provide
677 two mandatory methods, one each for ascending and descending sorting, and can optionally
678 provide a pre-formatting method that will help speed up sorting by allowing DataTables
679 to pre-format the sort data only once (rather than every time the actual sort functions
680 are run). The two sorting functions are typical Javascript sort methods:
681   <ul>
682     <li>
683       Function input parameters:
684       <ul>
685         <li>{<em>} Data to compare to the second parameter</li>
686         <li>{</em>} Data to compare to the first parameter</li>
687       </ul>
688     </li>
689     <li>
690       Function return:
691       <ul>
692         <li>{int} Sorting match: &lt;0 if first parameter should be sorted lower than
693           the second parameter, ===0 if the two parameters are equal and >0 if
694           the first parameter should be sorted height than the second parameter.</li>
695       </ul>
696     </il>
697   </ul></p><div class="collapse_details"><dl class="details">
698         
699 </dl>
700 <h5>Examples</h5>
701     <div class="example-code">
702         <pre class="brush: js">   // Case-sensitive string sorting, with no pre-formatting method
703    $.extend( $.fn.dataTableExt.oSort, {
704      "string-case-asc": function(x,y) {
705        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
706      },
707      "string-case-desc": function(x,y) {
708        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
709      }
710    } );
711
712  </pre>
713     </div>
714
715     <div class="example-code">
716         <pre class="brush: js">   // Case-insensitive string sorting, with pre-formatting
717    $.extend( $.fn.dataTableExt.oSort, {
718      "string-pre": function(x) {
719        return x.toLowerCase();
720      },
721      "string-asc": function(x,y) {
722        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
723      },
724      "string-desc": function(x,y) {
725        return ((x < y) ? 1 : ((x > y) ? -1 : 0));
726      }
727    } );</pre>
728     </div>
729 </div></dd><dt class="  odd"><a name="oStdClasses"></a><a name="oStdClasses_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#oStdClasses">oStdClasses</a></span><span class="type-sig"><span class="type-signature"> :object</span></span></dt><dd class="  odd"><p>Storage for the various classes that DataTables uses</p><div class="collapse_details"><dl class="details">
730         
731 </dl>
732 </div></dd><dt class="  even"><a name="sErrMode"></a><a name="sErrMode_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#sErrMode">sErrMode</a></span><span class="type-sig"><span class="type-signature"> :string</span></span></dt><dd class="  even"><p>How should DataTables report an error. Can take the value 'alert' or 'throw'</p><div class="collapse_details"><dl class="details">
733         
734 </dl>
735 </div></dd><dt class="  odd"><a name="sVersion"></a><a name="sVersion_details"></a><span class="type-attr"><span class="type-signature">&lt;static> </span></span><span class="type-name"><a href="#sVersion">sVersion</a></span><span class="type-sig"><span class="type-signature"> :string</span></span></dt><dd class="  odd"><p>Version string for plug-ins to check compatibility. Allowed format is
736 a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and
737 e are optional</p><div class="collapse_details"><dl class="details">
738         
739 </dl>
740 </div></dd>
741 </dl></div>
742                                         </div>
743                                 
744                 </div>
745
746                 <div class="fw_footer">
747                         DataTables: Copyright 2008-2012 Allan Jardine, all rights reserved<br>
748
749                         Documentation generated by <a href="https://github.com/micmath/JSDoc">JSDoc 3</a> on
750                         23th Sep 2012 - 14:27
751                         with the <a href="http://datatables.net/">DataTables</a> template.
752                 </div>
753         </body>
754 </html>