annotate DataTables-1.9.4/examples/server_side/pipeline.html @ 0:c73753f1606f draft

Uploaded
author saskia-hiltemann
date Mon, 06 Oct 2014 08:13:54 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
2 <html>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
3 <head>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
4 <meta http-equiv="content-type" content="text/html; charset=utf-8" />
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
5 <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/media/images/favicon.ico" />
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
6
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
7 <title>DataTables example</title>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
8 <style type="text/css" title="currentStyle">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
9 @import "../../media/css/demo_page.css";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
10 @import "../../media/css/demo_table.css";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
11 </style>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
12 <script type="text/javascript" language="javascript" src="../../media/js/jquery.js"></script>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
13 <script type="text/javascript" language="javascript" src="../../media/js/jquery.dataTables.js"></script>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
14 <script type="text/javascript" charset="utf-8">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
15 var oCache = {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
16 iCacheLower: -1
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
17 };
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
18
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
19 function fnSetKey( aoData, sKey, mValue )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
20 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
21 for ( var i=0, iLen=aoData.length ; i<iLen ; i++ )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
22 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
23 if ( aoData[i].name == sKey )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
24 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
25 aoData[i].value = mValue;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
26 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
27 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
28 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
29
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
30 function fnGetKey( aoData, sKey )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
31 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
32 for ( var i=0, iLen=aoData.length ; i<iLen ; i++ )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
33 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
34 if ( aoData[i].name == sKey )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
35 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
36 return aoData[i].value;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
37 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
38 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
39 return null;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
40 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
41
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
42 function fnDataTablesPipeline ( sSource, aoData, fnCallback, oSettings ) {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
43 var iPipe = 5; /* Ajust the pipe size */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
44
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
45 var bNeedServer = false;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
46 var sEcho = fnGetKey(aoData, "sEcho");
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
47 var iRequestStart = fnGetKey(aoData, "iDisplayStart");
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
48 var iRequestLength = fnGetKey(aoData, "iDisplayLength");
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
49 var iRequestEnd = iRequestStart + iRequestLength;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
50 oCache.iDisplayStart = iRequestStart;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
51
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
52 /* outside pipeline? */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
53 if ( oCache.iCacheLower < 0 || iRequestStart < oCache.iCacheLower || iRequestEnd > oCache.iCacheUpper )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
54 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
55 bNeedServer = true;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
56 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
57
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
58 /* sorting etc changed? */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
59 if ( oCache.lastRequest && !bNeedServer )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
60 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
61 for( var i=0, iLen=aoData.length ; i<iLen ; i++ )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
62 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
63 if ( aoData[i].name != "iDisplayStart" && aoData[i].name != "iDisplayLength" && aoData[i].name != "sEcho" )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
64 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
65 if ( aoData[i].value != oCache.lastRequest[i].value )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
66 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
67 bNeedServer = true;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
68 break;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
69 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
70 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
71 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
72 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
73
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
74 /* Store the request for checking next time around */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
75 oCache.lastRequest = aoData.slice();
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
76
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
77 if ( bNeedServer )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
78 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
79 if ( iRequestStart < oCache.iCacheLower )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
80 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
81 iRequestStart = iRequestStart - (iRequestLength*(iPipe-1));
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
82 if ( iRequestStart < 0 )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
83 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
84 iRequestStart = 0;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
85 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
86 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
87
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
88 oCache.iCacheLower = iRequestStart;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
89 oCache.iCacheUpper = iRequestStart + (iRequestLength * iPipe);
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
90 oCache.iDisplayLength = fnGetKey( aoData, "iDisplayLength" );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
91 fnSetKey( aoData, "iDisplayStart", iRequestStart );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
92 fnSetKey( aoData, "iDisplayLength", iRequestLength*iPipe );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
93
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
94 oSettings.jqXHR = $.getJSON( sSource, aoData, function (json) {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
95 /* Callback processing */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
96 oCache.lastJson = jQuery.extend(true, {}, json);
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
97
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
98 if ( oCache.iCacheLower != oCache.iDisplayStart )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
99 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
100 json.aaData.splice( 0, oCache.iDisplayStart-oCache.iCacheLower );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
101 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
102 json.aaData.splice( oCache.iDisplayLength, json.aaData.length );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
103
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
104 fnCallback(json)
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
105 } );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
106 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
107 else
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
108 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
109 json = jQuery.extend(true, {}, oCache.lastJson);
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
110 json.sEcho = sEcho; /* Update the echo for each response */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
111 json.aaData.splice( 0, iRequestStart-oCache.iCacheLower );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
112 json.aaData.splice( iRequestLength, json.aaData.length );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
113 fnCallback(json);
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
114 return;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
115 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
116 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
117
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
118 $(document).ready(function() {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
119 $('#example').dataTable( {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
120 "bProcessing": true,
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
121 "bServerSide": true,
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
122 "sAjaxSource": "scripts/server_processing.php",
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
123 "fnServerData": fnDataTablesPipeline
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
124 } );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
125 } );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
126 </script>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
127 </head>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
128 <body id="dt_example">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
129 <div id="container">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
130 <div class="full_width big">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
131 DataTables server-side processing with pipelining example
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
132 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
133
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
134 <h1>Preamble</h1>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
135 <p>When using server-side processing with DataTables, it can be quite intensive on your server having an Ajax call every time the user performs some kind of interaction - you can effectively DDOS your server with your own application!</p>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
136 <p>This example shows how you might over-come this by modifying the request set to the server to retrieve more information than is actually required for a single page's display. This means that the user can page multiple times (5 times the display size is the default) before a request must be made of the server. Paging is typically the most common interaction performed with a DataTable, so this can be most beneficial to your server's resource usage. Of course the pipeline must be cleared for interactions other than paging (sorting, filtering etc), but that's the trade off that can be made (sending extra information is cheap - while another XHR is expensive).</p>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
137
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
138 <h1>Live example</h1>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
139 <div id="dynamic">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
140 <table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
141 <thead>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
142 <tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
143 <th width="20%">Rendering engine</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
144 <th width="25%">Browser</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
145 <th width="25%">Platform(s)</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
146 <th width="15%">Engine version</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
147 <th width="15%">CSS grade</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
148 </tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
149 </thead>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
150 <tbody>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
151 <tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
152 <td colspan="5" class="dataTables_empty">Loading data from server</td>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
153 </tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
154 </tbody>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
155 <tfoot>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
156 <tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
157 <th>Rendering engine</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
158 <th>Browser</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
159 <th>Platform(s)</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
160 <th>Engine version</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
161 <th>CSS grade</th>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
162 </tr>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
163 </tfoot>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
164 </table>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
165 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
166 <div class="spacer"></div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
167
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
168
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
169 <h1>Initialisation code</h1>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
170 <pre class="brush: js;">var oCache = {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
171 iCacheLower: -1
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
172 };
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
173
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
174 function fnSetKey( aoData, sKey, mValue )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
175 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
176 for ( var i=0, iLen=aoData.length ; i&lt;iLen ; i++ )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
177 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
178 if ( aoData[i].name == sKey )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
179 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
180 aoData[i].value = mValue;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
181 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
182 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
183 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
184
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
185 function fnGetKey( aoData, sKey )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
186 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
187 for ( var i=0, iLen=aoData.length ; i&lt;iLen ; i++ )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
188 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
189 if ( aoData[i].name == sKey )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
190 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
191 return aoData[i].value;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
192 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
193 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
194 return null;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
195 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
196
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
197 function fnDataTablesPipeline ( sSource, aoData, fnCallback ) {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
198 var iPipe = 5; /* Ajust the pipe size */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
199
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
200 var bNeedServer = false;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
201 var sEcho = fnGetKey(aoData, "sEcho");
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
202 var iRequestStart = fnGetKey(aoData, "iDisplayStart");
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
203 var iRequestLength = fnGetKey(aoData, "iDisplayLength");
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
204 var iRequestEnd = iRequestStart + iRequestLength;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
205 oCache.iDisplayStart = iRequestStart;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
206
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
207 /* outside pipeline? */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
208 if ( oCache.iCacheLower &lt; 0 || iRequestStart &lt; oCache.iCacheLower || iRequestEnd &gt; oCache.iCacheUpper )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
209 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
210 bNeedServer = true;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
211 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
212
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
213 /* sorting etc changed? */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
214 if ( oCache.lastRequest &amp;&amp; !bNeedServer )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
215 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
216 for( var i=0, iLen=aoData.length ; i&lt;iLen ; i++ )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
217 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
218 if ( aoData[i].name != "iDisplayStart" &amp;&amp; aoData[i].name != "iDisplayLength" &amp;&amp; aoData[i].name != "sEcho" )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
219 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
220 if ( aoData[i].value != oCache.lastRequest[i].value )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
221 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
222 bNeedServer = true;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
223 break;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
224 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
225 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
226 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
227 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
228
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
229 /* Store the request for checking next time around */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
230 oCache.lastRequest = aoData.slice();
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
231
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
232 if ( bNeedServer )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
233 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
234 if ( iRequestStart &lt; oCache.iCacheLower )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
235 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
236 iRequestStart = iRequestStart - (iRequestLength*(iPipe-1));
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
237 if ( iRequestStart &lt; 0 )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
238 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
239 iRequestStart = 0;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
240 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
241 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
242
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
243 oCache.iCacheLower = iRequestStart;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
244 oCache.iCacheUpper = iRequestStart + (iRequestLength * iPipe);
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
245 oCache.iDisplayLength = fnGetKey( aoData, "iDisplayLength" );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
246 fnSetKey( aoData, "iDisplayStart", iRequestStart );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
247 fnSetKey( aoData, "iDisplayLength", iRequestLength*iPipe );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
248
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
249 $.getJSON( sSource, aoData, function (json) {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
250 /* Callback processing */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
251 oCache.lastJson = jQuery.extend(true, {}, json);
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
252
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
253 if ( oCache.iCacheLower != oCache.iDisplayStart )
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
254 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
255 json.aaData.splice( 0, oCache.iDisplayStart-oCache.iCacheLower );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
256 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
257 json.aaData.splice( oCache.iDisplayLength, json.aaData.length );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
258
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
259 fnCallback(json)
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
260 } );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
261 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
262 else
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
263 {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
264 json = jQuery.extend(true, {}, oCache.lastJson);
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
265 json.sEcho = sEcho; /* Update the echo for each response */
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
266 json.aaData.splice( 0, iRequestStart-oCache.iCacheLower );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
267 json.aaData.splice( iRequestLength, json.aaData.length );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
268 fnCallback(json);
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
269 return;
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
270 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
271 }
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
272
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
273 $(document).ready(function() {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
274 $('#example').dataTable( {
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
275 "bProcessing": true,
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
276 "bServerSide": true,
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
277 "sAjaxSource": "scripts/server_processing.php",
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
278 "fnServerData": fnDataTablesPipeline
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
279 } );
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
280 } );</pre>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
281 <style type="text/css">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
282 @import "../examples_support/syntax/css/shCore.css";
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
283 </style>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
284 <script type="text/javascript" language="javascript" src="../examples_support/syntax/js/shCore.js"></script>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
285
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
286 <h1>Server response</h1>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
287 <p>The code below shows the latest JSON data that has been returned from the server in response to the Ajax request made by DataTables. This will update as further requests are made.</p>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
288 <pre id="latest_xhr" class="brush: js;"></pre>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
289
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
290
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
291 <h1>Other examples</h1>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
292 <div class="demo_links">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
293 <h2>Basic initialisation</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
294 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
295 <li><a href="../basic_init/zero_config.html">Zero configuration</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
296 <li><a href="../basic_init/filter_only.html">Feature enablement</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
297 <li><a href="../basic_init/table_sorting.html">Sorting data</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
298 <li><a href="../basic_init/multi_col_sort.html">Multi-column sorting</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
299 <li><a href="../basic_init/multiple_tables.html">Multiple tables</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
300 <li><a href="../basic_init/hidden_columns.html">Hidden columns</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
301 <li><a href="../basic_init/complex_header.html">Complex headers - grouping with colspan</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
302 <li><a href="../basic_init/dom.html">DOM positioning</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
303 <li><a href="../basic_init/flexible_width.html">Flexible table width</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
304 <li><a href="../basic_init/state_save.html">State saving</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
305 <li><a href="../basic_init/alt_pagination.html">Alternative pagination styles</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
306 <li>Scrolling: <br>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
307 <a href="../basic_init/scroll_x.html">Horizontal</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
308 <a href="../basic_init/scroll_y.html">Vertical</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
309 <a href="../basic_init/scroll_xy.html">Both</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
310 <a href="../basic_init/scroll_y_theme.html">Themed</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
311 <a href="../basic_init/scroll_y_infinite.html">Infinite</a>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
312 </li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
313 <li><a href="../basic_init/language.html">Change language information (internationalisation)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
314 <li><a href="../basic_init/themes.html">ThemeRoller themes (Smoothness)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
315 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
316
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
317 <h2>Advanced initialisation</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
318 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
319 <li>Events: <br>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
320 <a href="../advanced_init/events_live.html">Live events</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
321 <a href="../advanced_init/events_pre_init.html">Pre-init</a> /
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
322 <a href="../advanced_init/events_post_init.html">Post-init</a>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
323 </li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
324 <li><a href="../advanced_init/column_render.html">Column rendering</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
325 <li><a href="../advanced_init/html_sort.html">Sorting without HTML tags</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
326 <li><a href="../advanced_init/dom_multiple_elements.html">Multiple table controls (sDom)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
327 <li><a href="../advanced_init/length_menu.html">Defining length menu options</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
328 <li><a href="../advanced_init/complex_header.html">Complex headers and hidden columns</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
329 <li><a href="../advanced_init/dom_toolbar.html">Custom toolbar (element) around table</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
330 <li><a href="../advanced_init/highlight.html">Row highlighting with CSS</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
331 <li><a href="../advanced_init/row_grouping.html">Row grouping</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
332 <li><a href="../advanced_init/row_callback.html">Row callback</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
333 <li><a href="../advanced_init/footer_callback.html">Footer callback</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
334 <li><a href="../advanced_init/sorting_control.html">Control sorting direction of columns</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
335 <li><a href="../advanced_init/language_file.html">Change language information from a file (internationalisation)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
336 <li><a href="../advanced_init/defaults.html">Setting defaults</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
337 <li><a href="../advanced_init/localstorage.html">State saving with localStorage</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
338 <li><a href="../advanced_init/dt_events.html">Custom events</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
339 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
340
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
341 <h2>API</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
342 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
343 <li><a href="../api/add_row.html">Dynamically add a new row</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
344 <li><a href="../api/multi_filter.html">Individual column filtering (using "input" elements)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
345 <li><a href="../api/multi_filter_select.html">Individual column filtering (using "select" elements)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
346 <li><a href="../api/highlight.html">Highlight rows and columns</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
347 <li><a href="../api/row_details.html">Show and hide details about a particular record</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
348 <li><a href="../api/select_row.html">User selectable rows (multiple rows)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
349 <li><a href="../api/select_single_row.html">User selectable rows (single row) and delete rows</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
350 <li><a href="../api/editable.html">Editable rows (with jEditable)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
351 <li><a href="../api/form.html">Submit form with elements in table</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
352 <li><a href="../api/counter_column.html">Index column (static number column)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
353 <li><a href="../api/show_hide.html">Show and hide columns dynamically</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
354 <li><a href="../api/api_in_init.html">API function use in initialisation object (callback)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
355 <li><a href="../api/tabs_and_scrolling.html">DataTables scrolling and tabs</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
356 <li><a href="../api/regex.html">Regular expression filtering</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
357 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
358 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
359
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
360 <div class="demo_links">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
361 <h2>Data sources</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
362 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
363 <li><a href="../data_sources/dom.html">DOM</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
364 <li><a href="../data_sources/js_array.html">Javascript array</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
365 <li><a href="../data_sources/ajax.html">Ajax source</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
366 <li><a href="../data_sources/server_side.html">Server side processing</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
367 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
368
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
369 <h2>Server-side processing</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
370 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
371 <li><a href="../server_side/server_side.html">Obtain server-side data</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
372 <li><a href="../server_side/custom_vars.html">Add extra HTTP variables</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
373 <li><a href="../server_side/post.html">Use HTTP POST</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
374 <li><a href="../server_side/ids.html">Automatic addition of IDs and classes to rows</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
375 <li><a href="../server_side/object_data.html">Reading table data from objects</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
376 <li><a href="../server_side/row_details.html">Show and hide details about a particular record</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
377 <li><a href="../server_side/select_rows.html">User selectable rows (multiple rows)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
378 <li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
379 <li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
380 <li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
381 <li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
382 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
383
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
384 <h2>Ajax data source</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
385 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
386 <li><a href="../ajax/ajax.html">Ajax sourced data (array of arrays)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
387 <li><a href="../ajax/objects.html">Ajax sourced data (array of objects)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
388 <li><a href="../ajax/defer_render.html">Deferred DOM creation for extra speed</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
389 <li><a href="../ajax/null_data_source.html">Empty data source columns</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
390 <li><a href="../ajax/custom_data_property.html">Use a data source other than aaData (the default)</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
391 <li><a href="../ajax/objects_subarrays.html">Read column data from sub-arrays</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
392 <li><a href="../ajax/deep.html">Read column data from deeply nested properties</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
393 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
394
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
395 <h2>Plug-ins</h2>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
396 <ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
397 <li><a href="../plug-ins/plugin_api.html">Add custom API functions</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
398 <li><a href="../plug-ins/sorting_plugin.html">Sorting and automatic type detection</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
399 <li><a href="../plug-ins/sorting_sType.html">Sorting without automatic type detection</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
400 <li><a href="../plug-ins/paging_plugin.html">Custom pagination controls</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
401 <li><a href="../plug-ins/range_filtering.html">Range filtering / custom filtering</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
402 <li><a href="../plug-ins/dom_sort.html">Live DOM sorting</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
403 <li><a href="../plug-ins/html_sort.html">Automatic HTML type detection</a></li>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
404 </ul>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
405 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
406
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
407
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
408 <div id="footer" class="clear" style="text-align:center;">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
409 <p>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
410 Please refer to the <a href="http://www.datatables.net/usage">DataTables documentation</a> for full information about its API properties and methods.<br>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
411 Additionally, there are a wide range of <a href="http://www.datatables.net/extras">extras</a> and <a href="http://www.datatables.net/plug-ins">plug-ins</a> which extend the capabilities of DataTables.
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
412 </p>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
413
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
414 <span style="font-size:10px;">
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
415 DataTables designed and created by <a href="http://www.sprymedia.co.uk">Allan Jardine</a> &copy; 2007-2011<br>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
416 DataTables is dual licensed under the <a href="http://www.datatables.net/license_gpl2">GPL v2 license</a> or a <a href="http://www.datatables.net/license_bsd">BSD (3-point) license</a>.
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
417 </span>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
418 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
419 </div>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
420 </body>
c73753f1606f Uploaded
saskia-hiltemann
parents:
diff changeset
421 </html>