mirror of
https://github.com/DataTables/DataTables.git
synced 2026-01-12 07:48:20 -05:00
Compare commits
193 Commits
RELEASE_1_
...
1_9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ca12924904 | ||
|
|
79238d337b | ||
|
|
36ba2549ad | ||
|
|
6c41618c71 | ||
|
|
822c62d05d | ||
|
|
26d2926390 | ||
|
|
bd6bb74967 | ||
|
|
b4cd9f11c6 | ||
|
|
77a8cb5946 | ||
|
|
d1142e1450 | ||
|
|
a19e1dee12 | ||
|
|
55adb2f3d5 | ||
|
|
e25b377ee8 | ||
|
|
a43714bfba | ||
|
|
66e92ab655 | ||
|
|
ca96ed55d5 | ||
|
|
0a3793b4bb | ||
|
|
df614240cf | ||
|
|
f6401f062a | ||
|
|
880de42c6e | ||
|
|
555aacfc6d | ||
|
|
898357fc84 | ||
|
|
30f936d8ff | ||
|
|
6d11218a7f | ||
|
|
bb08308dfe | ||
|
|
3ffa14ea8a | ||
|
|
4603ad13d4 | ||
|
|
95381359ed | ||
|
|
fcf49ef66e | ||
|
|
a66bec8368 | ||
|
|
89be8f4083 | ||
|
|
cb2495b440 | ||
|
|
6bce847a3b | ||
|
|
2afa5e4360 | ||
|
|
e6e4205b02 | ||
|
|
6a5c4cf261 | ||
|
|
24fc23f63d | ||
|
|
af5c3d8178 | ||
|
|
3485f6530a | ||
|
|
ef1c0890df | ||
|
|
4cbb9f3196 | ||
|
|
f5a772c594 | ||
|
|
70cea14422 | ||
|
|
59dc2aed9c | ||
|
|
e69e3c6c1c | ||
|
|
93b0c9ede7 | ||
|
|
9c82abe79d | ||
|
|
a950fb0642 | ||
|
|
1fdfb65457 | ||
|
|
dd2f084794 | ||
|
|
30eb6f0426 | ||
|
|
55b8e6fd04 | ||
|
|
0c0fef65c1 | ||
|
|
d8d7759613 | ||
|
|
dd616424b9 | ||
|
|
1001a332fb | ||
|
|
845eaaab67 | ||
|
|
82fad5ca50 | ||
|
|
75ce320838 | ||
|
|
ce59c7403f | ||
|
|
0d47107906 | ||
|
|
3cc96cf58f | ||
|
|
25f4602b3c | ||
|
|
37485da480 | ||
|
|
66de941632 | ||
|
|
87b4055b7a | ||
|
|
6fa5559dc3 | ||
|
|
08619a3a21 | ||
|
|
6855be79f5 | ||
|
|
c2af41140b | ||
|
|
9f8d2a632b | ||
|
|
34096537c2 | ||
|
|
93774f4d7d | ||
|
|
3c358417e0 | ||
|
|
e83488ab56 | ||
|
|
05201c21c4 | ||
|
|
d62ac092a6 | ||
|
|
854612a399 | ||
|
|
bec8dc3651 | ||
|
|
f6ffbc7e28 | ||
|
|
6a8ca62b07 | ||
|
|
e15342225c | ||
|
|
0585beb0c9 | ||
|
|
5ac94e2512 | ||
|
|
f29bd9ffbf | ||
|
|
b16efbc62a | ||
|
|
660e8cb374 | ||
|
|
725c1b68ba | ||
|
|
1f0b162760 | ||
|
|
fd0e0a42e4 | ||
|
|
0804c50d72 | ||
|
|
9a7613362f | ||
|
|
9c51aa0ad7 | ||
|
|
320f53e217 | ||
|
|
ed935f3fb8 | ||
|
|
45a6d2b505 | ||
|
|
5311067cd2 | ||
|
|
d034d187bd | ||
|
|
a3a4619f12 | ||
|
|
649dcd8789 | ||
|
|
a79e5127f5 | ||
|
|
6cc9524695 | ||
|
|
3be6982a63 | ||
|
|
1186901c95 | ||
|
|
f03c670cf9 | ||
|
|
d155f7a7e7 | ||
|
|
4886322183 | ||
|
|
0ed6ceda95 | ||
|
|
56b0d11c96 | ||
|
|
a022e2f736 | ||
|
|
40a236a7cc | ||
|
|
1bd6b29fe4 | ||
|
|
6a61818e52 | ||
|
|
1055d27887 | ||
|
|
dc3f9b148e | ||
|
|
284658e3c9 | ||
|
|
29e0d112cb | ||
|
|
3d802a685b | ||
|
|
391cd6a7a6 | ||
|
|
90edd0bd94 | ||
|
|
b64dda47c3 | ||
|
|
49fe9f2e0e | ||
|
|
d512e8cce7 | ||
|
|
fee3ba754f | ||
|
|
c2a2b4f531 | ||
|
|
2884ee23d2 | ||
|
|
09a9755540 | ||
|
|
1fa1ef94a8 | ||
|
|
43f7878fab | ||
|
|
f6372323e3 | ||
|
|
ba85dc22d6 | ||
|
|
827d4c1ae4 | ||
|
|
aef0be6a1d | ||
|
|
e290b2cd7a | ||
|
|
9ec52faec5 | ||
|
|
814ce1f7d5 | ||
|
|
513d6d5440 | ||
|
|
dc59830454 | ||
|
|
ac9e454e11 | ||
|
|
732d25b229 | ||
|
|
773c88b9f6 | ||
|
|
8a66adc2d4 | ||
|
|
2a60a96177 | ||
|
|
0518525f59 | ||
|
|
4be9b362c8 | ||
|
|
3a27a605b9 | ||
|
|
5114e98a93 | ||
|
|
35a23adb75 | ||
|
|
cd0babca54 | ||
|
|
04d4786455 | ||
|
|
c1e40a8596 | ||
|
|
e815062197 | ||
|
|
dec097ef50 | ||
|
|
1d62b40f66 | ||
|
|
f883df1afd | ||
|
|
2096244c60 | ||
|
|
b5f4938d7d | ||
|
|
c22dfe00d3 | ||
|
|
74f970e1a7 | ||
|
|
d7912b09a0 | ||
|
|
918a065f21 | ||
|
|
d22e47ede1 | ||
|
|
c09b0b89ea | ||
|
|
608f872950 | ||
|
|
1ef5243cab | ||
|
|
f5ff5884bc | ||
|
|
f0c91b7a9c | ||
|
|
b6709c017b | ||
|
|
cc42c49ec3 | ||
|
|
fc730e17f3 | ||
|
|
3a40c3a440 | ||
|
|
e40d1edebc | ||
|
|
5479600611 | ||
|
|
126a4fe44e | ||
|
|
aa0ff53ee5 | ||
|
|
872dc0db3e | ||
|
|
bc756f3a69 | ||
|
|
793020a8d4 | ||
|
|
409edd791b | ||
|
|
273aab7e59 | ||
|
|
af2e153bc3 | ||
|
|
431b5e8a55 | ||
|
|
d3c2fd551b | ||
|
|
ca009fdf88 | ||
|
|
6021360da1 | ||
|
|
68975aff10 | ||
|
|
5907eb4639 | ||
|
|
ab9dfd5052 | ||
|
|
0151d43c25 | ||
|
|
de6482a15e | ||
|
|
92ce6487f2 | ||
|
|
904f5dd672 | ||
|
|
05b9ad3d0c |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,3 +3,4 @@ docs
|
||||
cdn
|
||||
media/js/jquery.dataTables.min.js
|
||||
.DS_Store
|
||||
Plugins
|
||||
|
||||
11
component.json
Executable file
11
component.json
Executable file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "DataTables",
|
||||
"version": "1.9.4",
|
||||
"main": [
|
||||
"./media/js/jquery.dataTables.js",
|
||||
"./media/css/jquery.dataTables.css"
|
||||
],
|
||||
"dependencies": {
|
||||
"jquery": ">=1.7.0"
|
||||
}
|
||||
}
|
||||
@@ -16,8 +16,11 @@
|
||||
$('#example').dataTable( {
|
||||
"aoColumnDefs": [
|
||||
{
|
||||
"fnRender": function ( oObj, sVal ) {
|
||||
return sVal +' '+ oObj.aData[3];
|
||||
// `data` refers to the data for the cell (defined by `mData`, which
|
||||
// defaults to the column being worked with, in this case is the first
|
||||
// Using `row[0]` is equivalent.
|
||||
"mRender": function ( data, type, row ) {
|
||||
return data +' '+ row[3];
|
||||
},
|
||||
"aTargets": [ 0 ]
|
||||
},
|
||||
@@ -35,7 +38,8 @@
|
||||
</div>
|
||||
|
||||
<h1>Preamble</h1>
|
||||
<p>You may specify a function for each column to render the available data in a specific manner which will be called when the table is drawn. In this example I've appended the rendering engine version to the rendering engine name in the first column, and hidden the version column.</p>
|
||||
<p>Each column has an optional rendering control called <a href="http://datatables.net/ref#mRender">mRender</a> which can be used to process the content of each cell before the data is used. <code>mRender</code> has a wide array of options available to it for rendering different types of data (sorting, filtering, display etc), but it can be used very simply to manipulate the content of a cell, as shown here.</p>
|
||||
<p>This example shows the rendering engine version combined with the rendering engine name in the first column, hiding the version column. This technique can be useful for adding links, assigning colours based on content rules and any other form of text manipulation you require.</p>
|
||||
|
||||
<h1>Live example</h1>
|
||||
<div id="demo">
|
||||
@@ -469,8 +473,11 @@
|
||||
$('#example').dataTable( {
|
||||
"aoColumnDefs": [
|
||||
{
|
||||
"fnRender": function ( oObj, sVal ) {
|
||||
return sVal +' '+ oObj.aData[3];
|
||||
// `data` refers to the data for the cell (defined by `mData`, which
|
||||
// defaults to the column being worked with, in this case is the first
|
||||
// Using `row[0]` is equivalent.
|
||||
"mRender": function ( data, type, row ) {
|
||||
return data +' '+ row[3];
|
||||
},
|
||||
"aTargets": [ 0 ]
|
||||
},
|
||||
@@ -575,7 +582,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -572,7 +572,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -569,7 +569,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -568,7 +568,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -573,7 +573,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -579,7 +579,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -601,7 +601,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -624,7 +624,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -623,7 +623,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -607,7 +607,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -600,7 +600,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -154,7 +154,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -565,7 +565,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -561,7 +561,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -569,7 +569,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
</div>
|
||||
|
||||
<h1>Preamble</h1>
|
||||
<p>The following example shows how a callback function can be used to format a particular row at draw time. For each row that is generated for display, the <b>fnRowCallback()</b> function is called. It is passed the row node which can then be modified. In this case a trivial example of making the 'grade' column bold if the grade is 'A' is shown (note that this could also be performed using the <b>fnRender()</b> function, but this is just for example).</p>
|
||||
<p>The following example shows how a callback function can be used to format a particular row at draw time. For each row that is generated for display, the <b>fnRowCallback()</b> function is called. It is passed the row node which can then be modified. In this case a trivial example of making the 'grade' column bold if the grade is 'A' is shown (note that this could also be performed using <a href="http://datatables.net/ref#mData">mData</a> as a function, but this is just for example of fnRowCallback!).</p>
|
||||
|
||||
<h1>Live example</h1>
|
||||
<div id="demo">
|
||||
@@ -581,7 +581,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -618,7 +618,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -582,7 +582,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -165,7 +165,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -167,7 +167,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
"bProcessing": true,
|
||||
"sAjaxSource": "sources/deep.txt",
|
||||
"aoColumns": [
|
||||
{ "mDataProp": "engine" },
|
||||
{ "mDataProp": "browser" },
|
||||
{ "mDataProp": "platform.inner" },
|
||||
{ "mDataProp": "platform.details.0" },
|
||||
{ "mDataProp": "platform.details.1" }
|
||||
{ "mData": "engine" },
|
||||
{ "mData": "browser" },
|
||||
{ "mData": "platform.inner" },
|
||||
{ "mData": "platform.details.0" },
|
||||
{ "mData": "platform.details.1" }
|
||||
]
|
||||
} );
|
||||
} );
|
||||
@@ -71,11 +71,11 @@
|
||||
"bProcessing": true,
|
||||
"sAjaxSource": "sources/deep.txt",
|
||||
"aoColumns": [
|
||||
{ "mDataProp": "engine" },
|
||||
{ "mDataProp": "browser" },
|
||||
{ "mDataProp": "platform.inner" },
|
||||
{ "mDataProp": "platform.details.0" },
|
||||
{ "mDataProp": "platform.details.1" }
|
||||
{ "mData": "engine" },
|
||||
{ "mData": "browser" },
|
||||
{ "mData": "platform.inner" },
|
||||
{ "mData": "platform.details.0" },
|
||||
{ "mData": "platform.details.1" }
|
||||
]
|
||||
} );
|
||||
} );</pre>
|
||||
@@ -179,7 +179,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -167,7 +167,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
{ "mDataProp": null }
|
||||
{ "mData": null }
|
||||
]
|
||||
} );
|
||||
} );
|
||||
@@ -35,7 +35,7 @@
|
||||
</div>
|
||||
|
||||
<h1>Preamble</h1>
|
||||
<p>In some tables it can be useful to not need to specify any data source for a column, as it's content is automatically generated (for example using fnRender). This is fairly common with add, edit and delete columns for a CRUD interface. You can now use the <b>mDataProp</b> set to <i>null</i> to specify that the column has no data source. DataTables will render this column as empty.</p>
|
||||
<p>In some tables it can be useful to not need to specify any data source for a column, as it's content is automatically generated (for example using fnRender). This is fairly common with add, edit and delete columns for a CRUD interface. You can now use the <b>mData</b> set to <i>null</i> to specify that the column has no data source. DataTables will render this column as empty.</p>
|
||||
|
||||
<h1>Live example</h1>
|
||||
<div id="dynamic">
|
||||
@@ -67,7 +67,7 @@
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
{ "mDataProp": null }
|
||||
{ "mData": null }
|
||||
]
|
||||
} );
|
||||
} );</pre>
|
||||
@@ -171,7 +171,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
"bProcessing": true,
|
||||
"sAjaxSource": "sources/objects.txt",
|
||||
"aoColumns": [
|
||||
{ "mDataProp": "engine" },
|
||||
{ "mDataProp": "browser" },
|
||||
{ "mDataProp": "platform" },
|
||||
{ "mDataProp": "version" },
|
||||
{ "mDataProp": "grade" }
|
||||
{ "mData": "engine" },
|
||||
{ "mData": "browser" },
|
||||
{ "mData": "platform" },
|
||||
{ "mData": "version" },
|
||||
{ "mData": "grade" }
|
||||
]
|
||||
} );
|
||||
} );
|
||||
@@ -71,11 +71,11 @@
|
||||
"bProcessing": true,
|
||||
"sAjaxSource": "sources/objects.txt",
|
||||
"aoColumns": [
|
||||
{ "mDataProp": "engine" },
|
||||
{ "mDataProp": "browser" },
|
||||
{ "mDataProp": "platform" },
|
||||
{ "mDataProp": "version" },
|
||||
{ "mDataProp": "grade" }
|
||||
{ "mData": "engine" },
|
||||
{ "mData": "browser" },
|
||||
{ "mData": "platform" },
|
||||
{ "mData": "version" },
|
||||
{ "mData": "grade" }
|
||||
]
|
||||
} );
|
||||
} );</pre>
|
||||
@@ -179,7 +179,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
"bProcessing": true,
|
||||
"sAjaxSource": "sources/objects_subarrays.txt",
|
||||
"aoColumns": [
|
||||
{ "mDataProp": "engine" },
|
||||
{ "mDataProp": "browser" },
|
||||
{ "mDataProp": "platform" },
|
||||
{ "mDataProp": "details.0" },
|
||||
{ "mDataProp": "details.1" }
|
||||
{ "mData": "engine" },
|
||||
{ "mData": "browser" },
|
||||
{ "mData": "platform" },
|
||||
{ "mData": "details.0" },
|
||||
{ "mData": "details.1" }
|
||||
]
|
||||
} );
|
||||
} );
|
||||
@@ -71,11 +71,11 @@
|
||||
"bProcessing": true,
|
||||
"sAjaxSource": "sources/objects_subarrays.txt",
|
||||
"aoColumns": [
|
||||
{ "mDataProp": "engine" },
|
||||
{ "mDataProp": "browser" },
|
||||
{ "mDataProp": "platform" },
|
||||
{ "mDataProp": "details.0" },
|
||||
{ "mDataProp": "details.1" }
|
||||
{ "mData": "engine" },
|
||||
{ "mData": "browser" },
|
||||
{ "mData": "platform" },
|
||||
{ "mData": "details.0" },
|
||||
{ "mData": "details.1" }
|
||||
]
|
||||
} );
|
||||
} );</pre>
|
||||
@@ -179,7 +179,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -178,7 +178,6 @@ function fnClickAddRow() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -572,7 +572,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -15,13 +15,14 @@
|
||||
$(document).ready(function() {
|
||||
$('#example').dataTable( {
|
||||
"fnDrawCallback": function ( oSettings ) {
|
||||
var that = this;
|
||||
|
||||
/* Need to redo the counters if filtered or sorted */
|
||||
if ( oSettings.bSorted || oSettings.bFiltered )
|
||||
{
|
||||
for ( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ )
|
||||
{
|
||||
$('td:eq(0)', oSettings.aoData[ oSettings.aiDisplay[i] ].nTr ).html( i+1 );
|
||||
}
|
||||
this.$('td:first-child', {"filter":"applied"}).each( function (i) {
|
||||
that.fnUpdate( i+1, this.parentNode, 0, false, false );
|
||||
} );
|
||||
}
|
||||
},
|
||||
"aoColumnDefs": [
|
||||
@@ -539,10 +540,9 @@
|
||||
/* Need to redo the counters if filtered or sorted */
|
||||
if ( oSettings.bSorted || oSettings.bFiltered )
|
||||
{
|
||||
for ( var i=0, iLen=oSettings.aiDisplay.length ; i<iLen ; i++ )
|
||||
{
|
||||
$('td:eq(0)', oSettings.aoData[ oSettings.aiDisplay[i] ].nTr ).html( i+1 );
|
||||
}
|
||||
this.$('td:first-child', {"filter":"applied"}).each( function (i) {
|
||||
that.fnUpdate( i+1, this.parentNode, 0, false, false );
|
||||
} );
|
||||
}
|
||||
},
|
||||
"aoColumnDefs": [
|
||||
@@ -647,7 +647,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
<p>Using DataTables in-combination with the excellent <a href="http://www.appelsiini.net/projects/jeditable">jEditable</a> plugin for jQuery allows you to produce a table which can have individual cells edited. The table can then be updated such that filtering, sorting etc. will all work as expected. This is showing in the demo below.</p>
|
||||
<p>The example shows how a table element can be edited (you could limit to a particular column if you wish using the selector), posted to the server (for saving in a database or whatever) and then placed back into the DataTable. The server's processing in this example simply appends the string '(server updated)' to indicate that something has happened on the server.</p>
|
||||
<p>Note also that this example makes use of the information in the 'ID' attribute of the TR element. This is useful in order to tell the server what row is being updated - this can readily be expended to include column information as required. Further to this, it is worth noting that to use this type of example with DataTables' server-side processing option, you must use <a href="http://datatables.net/usage/callbacks#fnDrawCallback">fnDrawCallback</a> to apply the event listeners on each draw.</p>
|
||||
<p>Finally, if you are interested in a full <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a> implementation for DataTables, check out the <a href="http://editor.datatables.net">Editor plug-in for DataTables</a>, which provides a flexible and easy to use create, edit and delete environment for DataTables controlled tables with full server interaction.</p>
|
||||
|
||||
<h1>Live example</h1>
|
||||
<div id="demo">
|
||||
@@ -596,7 +597,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -637,7 +637,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -575,7 +575,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -633,7 +633,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -28,13 +28,13 @@
|
||||
// check that we have a column id
|
||||
if ( typeof iColumn == "undefined" ) return new Array();
|
||||
|
||||
// by default we only wany unique data
|
||||
// by default we only want unique data
|
||||
if ( typeof bUnique == "undefined" ) bUnique = true;
|
||||
|
||||
// by default we do want to only look at filtered data
|
||||
if ( typeof bFiltered == "undefined" ) bFiltered = true;
|
||||
|
||||
// by default we do not wany to include empty values
|
||||
// by default we do not want to include empty values
|
||||
if ( typeof bIgnoreEmpty == "undefined" ) bIgnoreEmpty = true;
|
||||
|
||||
// list of rows which we're going to loop through
|
||||
@@ -554,13 +554,13 @@ $.fn.dataTableExt.oApi.fnGetColumnData = function ( oSettings, iColumn, bUnique,
|
||||
// check that we have a column id
|
||||
if ( typeof iColumn == "undefined" ) return new Array();
|
||||
|
||||
// by default we only wany unique data
|
||||
// by default we only want unique data
|
||||
if ( typeof bUnique == "undefined" ) bUnique = true;
|
||||
|
||||
// by default we do want to only look at filtered data
|
||||
if ( typeof bFiltered == "undefined" ) bFiltered = true;
|
||||
|
||||
// by default we do not wany to include empty values
|
||||
// by default we do not want to include empty values
|
||||
if ( typeof bIgnoreEmpty == "undefined" ) bIgnoreEmpty = true;
|
||||
|
||||
// list of rows which we're going to loop through
|
||||
@@ -716,7 +716,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -683,7 +683,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -662,7 +662,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -587,7 +587,6 @@ function fnGetSelected( oTableLocal )
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -29,7 +29,9 @@
|
||||
/* Add a click handler for the delete row */
|
||||
$('#delete').click( function() {
|
||||
var anSelected = fnGetSelected( oTable );
|
||||
oTable.fnDeleteRow( anSelected[0] );
|
||||
if ( anSelected.length !== 0 ) {
|
||||
oTable.fnDeleteRow( anSelected[0] );
|
||||
}
|
||||
} );
|
||||
|
||||
/* Init the table */
|
||||
@@ -503,7 +505,9 @@ $(document).ready(function() {
|
||||
/* Add a click handler for the delete row */
|
||||
$('#delete').click( function() {
|
||||
var anSelected = fnGetSelected( oTable );
|
||||
oTable.fnDeleteRow( anSelected[0] );
|
||||
if ( anSelected.length !== 0 ) {
|
||||
oTable.fnDeleteRow( anSelected[0] );
|
||||
}
|
||||
} );
|
||||
|
||||
/* Init the table */
|
||||
@@ -612,7 +616,6 @@ function fnGetSelected( oTableLocal )
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -587,7 +587,6 @@ function fnShowHide( iCol )
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
$(document).ready(function() {
|
||||
$("#tabs").tabs( {
|
||||
"show": function(event, ui) {
|
||||
var oTable = $('div.dataTables_scrollBody>table.display', ui.panel).dataTable();
|
||||
if ( oTable.length > 0 ) {
|
||||
oTable.fnAdjustColumnSizing();
|
||||
var table = $.fn.dataTable.fnTables(true);
|
||||
if ( table.length > 0 ) {
|
||||
$(table).dataTable().fnAdjustColumnSizing();
|
||||
}
|
||||
}
|
||||
} );
|
||||
@@ -300,9 +300,9 @@
|
||||
<pre class="brush: js;">$(document).ready(function() {
|
||||
$("#tabs").tabs( {
|
||||
"show": function(event, ui) {
|
||||
var oTable = $('div.dataTables_scrollBody>table.display', ui.panel).dataTable();
|
||||
if ( oTable.length > 0 ) {
|
||||
oTable.fnAdjustColumnSizing();
|
||||
var table = $.fn.dataTable.fnTables(true);
|
||||
if ( table.length > 0 ) {
|
||||
$(table).dataTable().fnAdjustColumnSizing();
|
||||
}
|
||||
}
|
||||
} );
|
||||
@@ -413,7 +413,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -566,7 +566,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -553,7 +553,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -549,7 +549,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -563,7 +563,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -576,7 +576,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -566,7 +566,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -559,7 +559,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -561,7 +561,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -569,7 +569,6 @@ $('#example').dataTable( {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -592,7 +592,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -373,7 +373,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -567,7 +567,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -557,7 +557,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
$(document).ready(function() {
|
||||
$('#example').dataTable( {
|
||||
"sScrollY": "200px",
|
||||
"bPaginate": false
|
||||
"bPaginate": false,
|
||||
"bScrollCollapse": true
|
||||
} );
|
||||
} );
|
||||
</script>
|
||||
@@ -465,7 +466,8 @@
|
||||
<pre class="brush: js;">$(document).ready(function() {
|
||||
$('#example').dataTable( {
|
||||
"sScrollY": "200px",
|
||||
"bPaginate": false
|
||||
"bPaginate": false,
|
||||
"bScrollCollapse": true
|
||||
} );
|
||||
} );</pre>
|
||||
<style type="text/css">
|
||||
@@ -564,7 +566,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -567,7 +567,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -566,7 +566,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -561,7 +561,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -561,7 +561,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -555,7 +555,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -557,7 +557,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -165,7 +165,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -557,7 +557,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -82,17 +82,7 @@
|
||||
{ "sTitle": "Browser" },
|
||||
{ "sTitle": "Platform" },
|
||||
{ "sTitle": "Version", "sClass": "center" },
|
||||
{
|
||||
"sTitle": "Grade",
|
||||
"sClass": "center",
|
||||
"fnRender": function(obj) {
|
||||
var sReturn = obj.aData[ obj.iDataColumn ];
|
||||
if ( sReturn == "A" ) {
|
||||
sReturn = "<b>A</b>";
|
||||
}
|
||||
return sReturn;
|
||||
}
|
||||
}
|
||||
{ "sTitle": "Grade", "sClass": "center" }
|
||||
]
|
||||
} );
|
||||
} );
|
||||
@@ -136,17 +126,7 @@
|
||||
{ "sTitle": "Browser" },
|
||||
{ "sTitle": "Platform" },
|
||||
{ "sTitle": "Version", "sClass": "center" },
|
||||
{
|
||||
"sTitle": "Grade",
|
||||
"sClass": "center",
|
||||
"fnRender": function(obj) {
|
||||
var sReturn = obj.aData[ obj.iDataColumn ];
|
||||
if ( sReturn == "A" ) {
|
||||
sReturn = "<b>A</b>";
|
||||
}
|
||||
return sReturn;
|
||||
}
|
||||
}
|
||||
{ "sTitle": "Grade", "sClass": "center" }
|
||||
]
|
||||
} );
|
||||
} );</pre>
|
||||
@@ -246,7 +226,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -82,12 +82,6 @@
|
||||
|
||||
<h1>Server side (PHP) code</h1>
|
||||
<pre><?php
|
||||
/*
|
||||
* Script: DataTables server-side script for PHP and MySQL
|
||||
* Copyright: 2010 - Allan Jardine
|
||||
* License: GPL v2 or BSD (3-point)
|
||||
*/
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Easy set variables
|
||||
*/
|
||||
@@ -109,6 +103,9 @@
|
||||
$gaSql['db'] = "";
|
||||
$gaSql['server'] = "localhost";
|
||||
|
||||
/* REMOVE THIS LINE (it just includes my SQL connection user/pass) */
|
||||
include( $_SERVER['DOCUMENT_ROOT']."/datatables/mysql.php" );
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* If you just want to use the basic configuration for DataTables with PHP server-side, there is
|
||||
@@ -139,6 +136,7 @@
|
||||
/*
|
||||
* Ordering
|
||||
*/
|
||||
$sOrder = "";
|
||||
if ( isset( $_GET['iSortCol_0'] ) )
|
||||
{
|
||||
$sOrder = "ORDER BY ";
|
||||
@@ -146,8 +144,8 @@
|
||||
{
|
||||
if ( $_GET[ 'bSortable_'.intval($_GET['iSortCol_'.$i]) ] == "true" )
|
||||
{
|
||||
$sOrder .= $aColumns[ intval( $_GET['iSortCol_'.$i] ) ]."
|
||||
".mysql_real_escape_string( $_GET['sSortDir_'.$i] ) .", ";
|
||||
$sOrder .= "`".$aColumns[ intval( $_GET['iSortCol_'.$i] ) ]."` ".
|
||||
mysql_real_escape_string( $_GET['sSortDir_'.$i] ) .", ";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,12 +164,12 @@
|
||||
* on very large tables, and MySQL's regex functionality is very limited
|
||||
*/
|
||||
$sWhere = "";
|
||||
if ( $_GET['sSearch'] != "" )
|
||||
if ( isset($_GET['sSearch']) && $_GET['sSearch'] != "" )
|
||||
{
|
||||
$sWhere = "WHERE (";
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
$sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
}
|
||||
$sWhere = substr_replace( $sWhere, "", -3 );
|
||||
$sWhere .= ')';
|
||||
@@ -180,7 +178,7 @@
|
||||
/* Individual column filtering */
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
if ( $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' )
|
||||
if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' )
|
||||
{
|
||||
if ( $sWhere == "" )
|
||||
{
|
||||
@@ -190,7 +188,7 @@
|
||||
{
|
||||
$sWhere .= " AND ";
|
||||
}
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string($_GET['sSearch_'.$i])."%' ";
|
||||
$sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string($_GET['sSearch_'.$i])."%' ";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,12 +198,12 @@
|
||||
* Get data to display
|
||||
*/
|
||||
$sQuery = "
|
||||
SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))."
|
||||
SELECT SQL_CALC_FOUND_ROWS `".str_replace(" , ", " ", implode("`, `", $aColumns))."`
|
||||
FROM $sTable
|
||||
$sWhere
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
|
||||
/* Data set length after filtering */
|
||||
@@ -218,7 +216,7 @@
|
||||
|
||||
/* Total data set length */
|
||||
$sQuery = "
|
||||
SELECT COUNT(".$sIndexColumn.")
|
||||
SELECT COUNT(`".$sIndexColumn."`)
|
||||
FROM $sTable
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
@@ -349,7 +347,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
188
examples/examples_support/syntax/js/shCore.js
vendored
188
examples/examples_support/syntax/js/shCore.js
vendored
@@ -1,21 +1,5 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/SyntaxHighlighter
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/SyntaxHighlighter/donate.html
|
||||
*
|
||||
* @version
|
||||
* 3.0.83 (July 02 2010)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2010 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
*/
|
||||
// XRegExp 1.5.0
|
||||
// (c) 2007-2010 Steven Levithan
|
||||
// XRegExp 1.5.1
|
||||
// (c) 2007-2012 Steven Levithan
|
||||
// MIT License
|
||||
// <http://xregexp.com>
|
||||
// Provides an augmented, extensible, cross-browser implementation of regular expressions,
|
||||
@@ -29,7 +13,7 @@ if (XRegExp) {
|
||||
}
|
||||
|
||||
// Run within an anonymous function to protect variables and avoid new globals
|
||||
(function () {
|
||||
(function (undefined) {
|
||||
|
||||
//---------------------------------
|
||||
// Constructor
|
||||
@@ -73,7 +57,7 @@ if (XRegExp) {
|
||||
} else {
|
||||
// Check for native multicharacter metasequences (excluding character classes) at
|
||||
// the current position
|
||||
if (match = real.exec.call(nativeTokens[currScope], pattern.slice(pos))) {
|
||||
if (match = nativ.exec.call(nativeTokens[currScope], pattern.slice(pos))) {
|
||||
output.push(match[0]);
|
||||
pos += match[0].length;
|
||||
} else {
|
||||
@@ -89,7 +73,7 @@ if (XRegExp) {
|
||||
}
|
||||
}
|
||||
|
||||
regex = RegExp(output.join(""), real.replace.call(flags, flagClip, ""));
|
||||
regex = RegExp(output.join(""), nativ.replace.call(flags, flagClip, ""));
|
||||
regex._xregexp = {
|
||||
source: pattern,
|
||||
captureNames: context.hasNamedCapture ? context.captureNames : null
|
||||
@@ -102,7 +86,7 @@ if (XRegExp) {
|
||||
// Public properties
|
||||
//---------------------------------
|
||||
|
||||
XRegExp.version = "1.5.0";
|
||||
XRegExp.version = "1.5.1";
|
||||
|
||||
// Token scope bitflags
|
||||
XRegExp.INSIDE_CLASS = 1;
|
||||
@@ -119,22 +103,17 @@ if (XRegExp) {
|
||||
isInsideConstructor = false,
|
||||
tokens = [],
|
||||
// Copy native globals for reference ("native" is an ES3 reserved keyword)
|
||||
real = {
|
||||
nativ = {
|
||||
exec: RegExp.prototype.exec,
|
||||
test: RegExp.prototype.test,
|
||||
match: String.prototype.match,
|
||||
replace: String.prototype.replace,
|
||||
split: String.prototype.split
|
||||
},
|
||||
compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
|
||||
compliantExecNpcg = nativ.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups
|
||||
compliantLastIndexIncrement = function () {
|
||||
var x = /^/g;
|
||||
real.test.call(x, "");
|
||||
return !x.lastIndex;
|
||||
}(),
|
||||
compliantLastIndexReset = function () {
|
||||
var x = /x/g;
|
||||
real.replace.call("x", x, "");
|
||||
nativ.test.call(x, "");
|
||||
return !x.lastIndex;
|
||||
}(),
|
||||
hasNativeY = RegExp.prototype.sticky !== undefined,
|
||||
@@ -189,15 +168,17 @@ if (XRegExp) {
|
||||
// Accepts a string to search, regex to search with, position to start the search within the
|
||||
// string (default: 0), and an optional Boolean indicating whether matches must start at-or-
|
||||
// after the position or at the specified position only. This function ignores the `lastIndex`
|
||||
// property of the provided regex
|
||||
// of the provided regex in its own handling, but updates the property for compatibility
|
||||
XRegExp.execAt = function (str, regex, pos, anchored) {
|
||||
regex = clone(regex, "g" + ((anchored && hasNativeY) ? "y" : ""));
|
||||
regex.lastIndex = pos = pos || 0;
|
||||
var match = regex.exec(str);
|
||||
if (anchored)
|
||||
return (match && match.index === pos) ? match : null;
|
||||
else
|
||||
return match;
|
||||
var r2 = clone(regex, "g" + ((anchored && hasNativeY) ? "y" : "")),
|
||||
match;
|
||||
r2.lastIndex = pos = pos || 0;
|
||||
match = r2.exec(str); // Run the altered `exec` (required for `lastIndex` fix, etc.)
|
||||
if (anchored && match && match.index !== pos)
|
||||
match = null;
|
||||
if (regex.global)
|
||||
regex.lastIndex = match ? r2.lastIndex : 0;
|
||||
return match;
|
||||
};
|
||||
|
||||
// Breaks the unrestorable link to XRegExp's private list of tokens, thereby preventing
|
||||
@@ -219,16 +200,18 @@ if (XRegExp) {
|
||||
// Executes `callback` once per match within `str`. Provides a simpler and cleaner way to
|
||||
// iterate over regex matches compared to the traditional approaches of subverting
|
||||
// `String.prototype.replace` or repeatedly calling `exec` within a `while` loop
|
||||
XRegExp.iterate = function (str, origRegex, callback, context) {
|
||||
var regex = clone(origRegex, "g"),
|
||||
XRegExp.iterate = function (str, regex, callback, context) {
|
||||
var r2 = clone(regex, "g"),
|
||||
i = -1, match;
|
||||
while (match = regex.exec(str)) {
|
||||
while (match = r2.exec(str)) { // Run the altered `exec` (required for `lastIndex` fix, etc.)
|
||||
if (regex.global)
|
||||
regex.lastIndex = r2.lastIndex; // Doing this to follow expectations if `lastIndex` is checked within `callback`
|
||||
callback.call(context, match, ++i, str, regex);
|
||||
if (regex.lastIndex === match.index)
|
||||
regex.lastIndex++;
|
||||
if (r2.lastIndex === match.index)
|
||||
r2.lastIndex++;
|
||||
}
|
||||
if (origRegex.global)
|
||||
origRegex.lastIndex = 0;
|
||||
if (regex.global)
|
||||
regex.lastIndex = 0;
|
||||
};
|
||||
|
||||
// Accepts a string and an array of regexes; returns the result of using each successive regex
|
||||
@@ -285,16 +268,18 @@ if (XRegExp) {
|
||||
// rather than the empty string.
|
||||
// - `lastIndex` should not be incremented after zero-length matches.
|
||||
RegExp.prototype.exec = function (str) {
|
||||
var match = real.exec.apply(this, arguments),
|
||||
name, r2;
|
||||
if (match && str) {
|
||||
var match, name, r2, origLastIndex;
|
||||
if (!this.global)
|
||||
origLastIndex = this.lastIndex;
|
||||
match = nativ.exec.apply(this, arguments);
|
||||
if (match) {
|
||||
// Fix browsers whose `exec` methods don't consistently return `undefined` for
|
||||
// nonparticipating capturing groups
|
||||
if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {
|
||||
r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));
|
||||
r2 = RegExp(this.source, nativ.replace.call(getNativeFlags(this), "g", ""));
|
||||
// Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed
|
||||
// matching due to characters outside the match
|
||||
real.replace.call(str.slice(match.index), r2, function () {
|
||||
nativ.replace.call((str + "").slice(match.index), r2, function () {
|
||||
for (var i = 1; i < arguments.length - 2; i++) {
|
||||
if (arguments[i] === undefined)
|
||||
match[i] = undefined;
|
||||
@@ -313,29 +298,33 @@ if (XRegExp) {
|
||||
if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
|
||||
this.lastIndex--;
|
||||
}
|
||||
if (!this.global)
|
||||
this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows)
|
||||
return match;
|
||||
};
|
||||
|
||||
// Don't override `test` if it won't change anything
|
||||
if (!compliantLastIndexIncrement) {
|
||||
// Fix browser bug in native method
|
||||
RegExp.prototype.test = function (str) {
|
||||
// Use the native `exec` to skip some processing overhead, even though the overriden
|
||||
// `exec` would take care of the `lastIndex` fix
|
||||
var match = real.exec.call(this, str);
|
||||
// Fix browsers that increment `lastIndex` after zero-length matches
|
||||
if (match && this.global && !match[0].length && (this.lastIndex > match.index))
|
||||
this.lastIndex--;
|
||||
return !!match;
|
||||
};
|
||||
}
|
||||
// Fix browser bugs in native method
|
||||
RegExp.prototype.test = function (str) {
|
||||
// Use the native `exec` to skip some processing overhead, even though the altered
|
||||
// `exec` would take care of the `lastIndex` fixes
|
||||
var match, origLastIndex;
|
||||
if (!this.global)
|
||||
origLastIndex = this.lastIndex;
|
||||
match = nativ.exec.call(this, str);
|
||||
// Fix browsers that increment `lastIndex` after zero-length matches
|
||||
if (match && !compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))
|
||||
this.lastIndex--;
|
||||
if (!this.global)
|
||||
this.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows)
|
||||
return !!match;
|
||||
};
|
||||
|
||||
// Adds named capture support and fixes browser bugs in native method
|
||||
String.prototype.match = function (regex) {
|
||||
if (!XRegExp.isRegExp(regex))
|
||||
regex = RegExp(regex); // Native `RegExp`
|
||||
if (regex.global) {
|
||||
var result = real.match.apply(this, arguments);
|
||||
var result = nativ.match.apply(this, arguments);
|
||||
regex.lastIndex = 0; // Fix IE bug
|
||||
return result;
|
||||
}
|
||||
@@ -350,20 +339,24 @@ if (XRegExp) {
|
||||
// third (`flags`) parameter
|
||||
String.prototype.replace = function (search, replacement) {
|
||||
var isRegex = XRegExp.isRegExp(search),
|
||||
captureNames, result, str;
|
||||
captureNames, result, str, origLastIndex;
|
||||
|
||||
// There are many combinations of search/replacement types/values and browser bugs that
|
||||
// preclude passing to native `replace`, so just keep this check relatively simple
|
||||
if (isRegex && typeof replacement.valueOf() === "string" && replacement.indexOf("${") === -1 && compliantLastIndexReset)
|
||||
return real.replace.apply(this, arguments);
|
||||
// There are too many combinations of search/replacement types/values and browser bugs that
|
||||
// preclude passing to native `replace`, so don't try
|
||||
//if (...)
|
||||
// return nativ.replace.apply(this, arguments);
|
||||
|
||||
if (!isRegex)
|
||||
if (isRegex) {
|
||||
if (search._xregexp)
|
||||
captureNames = search._xregexp.captureNames; // Array or `null`
|
||||
if (!search.global)
|
||||
origLastIndex = search.lastIndex;
|
||||
} else {
|
||||
search = search + ""; // Type conversion
|
||||
else if (search._xregexp)
|
||||
captureNames = search._xregexp.captureNames; // Array or `null`
|
||||
}
|
||||
|
||||
if (typeof replacement === "function") {
|
||||
result = real.replace.call(this, search, function () {
|
||||
if (Object.prototype.toString.call(replacement) === "[object Function]") {
|
||||
result = nativ.replace.call(this + "", search, function () {
|
||||
if (captureNames) {
|
||||
// Change the `arguments[0]` string primitive to a String object which can store properties
|
||||
arguments[0] = new String(arguments[0]);
|
||||
@@ -373,16 +366,16 @@ if (XRegExp) {
|
||||
arguments[0][captureNames[i]] = arguments[i + 1];
|
||||
}
|
||||
}
|
||||
// Update `lastIndex` before calling `replacement`
|
||||
// Update `lastIndex` before calling `replacement` (fix browsers)
|
||||
if (isRegex && search.global)
|
||||
search.lastIndex = arguments[arguments.length - 2] + arguments[0].length;
|
||||
return replacement.apply(null, arguments);
|
||||
});
|
||||
} else {
|
||||
str = this + ""; // Type conversion, so `args[args.length - 1]` will be a string (given nonstring `this`)
|
||||
result = real.replace.call(str, search, function () {
|
||||
result = nativ.replace.call(str, search, function () {
|
||||
var args = arguments; // Keep this function's `arguments` available through closure
|
||||
return real.replace.call(replacement, replacementToken, function ($0, $1, $2) {
|
||||
return nativ.replace.call(replacement + "", replacementToken, function ($0, $1, $2) {
|
||||
// Numbered backreference (without delimiters) or special variable
|
||||
if ($1) {
|
||||
switch ($1) {
|
||||
@@ -428,8 +421,12 @@ if (XRegExp) {
|
||||
});
|
||||
}
|
||||
|
||||
if (isRegex && search.global)
|
||||
search.lastIndex = 0; // Fix IE bug
|
||||
if (isRegex) {
|
||||
if (search.global)
|
||||
search.lastIndex = 0; // Fix IE, Safari bug (last tested IE 9.0.5, Safari 5.1.2 on Windows)
|
||||
else
|
||||
search.lastIndex = origLastIndex; // Fix IE, Opera bug (last tested IE 9.0.5, Opera 11.61 on Windows)
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
@@ -438,7 +435,7 @@ if (XRegExp) {
|
||||
String.prototype.split = function (s /* separator */, limit) {
|
||||
// If separator `s` is not a regex, use the native `split`
|
||||
if (!XRegExp.isRegExp(s))
|
||||
return real.split.apply(this, arguments);
|
||||
return nativ.split.apply(this, arguments);
|
||||
|
||||
var str = this + "", // Type conversion
|
||||
output = [],
|
||||
@@ -482,7 +479,7 @@ if (XRegExp) {
|
||||
}
|
||||
|
||||
if (lastLastIndex === str.length) {
|
||||
if (!real.test.call(s, "") || lastLength)
|
||||
if (!nativ.test.call(s, "") || lastLength)
|
||||
output.push("");
|
||||
} else {
|
||||
output.push(str.slice(lastLastIndex));
|
||||
@@ -511,7 +508,7 @@ if (XRegExp) {
|
||||
};
|
||||
}
|
||||
return regex;
|
||||
};
|
||||
}
|
||||
|
||||
function getNativeFlags (regex) {
|
||||
return (regex.global ? "g" : "") +
|
||||
@@ -519,7 +516,7 @@ if (XRegExp) {
|
||||
(regex.multiline ? "m" : "") +
|
||||
(regex.extended ? "x" : "") + // Proposed for ES4; included in AS3
|
||||
(regex.sticky ? "y" : "");
|
||||
};
|
||||
}
|
||||
|
||||
function runTokens (pattern, index, scope, context) {
|
||||
var i = tokens.length,
|
||||
@@ -548,7 +545,7 @@ if (XRegExp) {
|
||||
isInsideConstructor = false;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
}
|
||||
|
||||
function indexOf (array, item, from) {
|
||||
if (Array.prototype.indexOf) // Use the native array method if available
|
||||
@@ -558,7 +555,7 @@ if (XRegExp) {
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
//---------------------------------
|
||||
@@ -573,7 +570,7 @@ if (XRegExp) {
|
||||
/\(\?#[^)]*\)/,
|
||||
function (match) {
|
||||
// Keep tokens separated unless the following token is a quantifier
|
||||
return real.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)";
|
||||
return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)";
|
||||
}
|
||||
);
|
||||
|
||||
@@ -635,7 +632,7 @@ if (XRegExp) {
|
||||
/(?:\s+|#.*)+/,
|
||||
function (match) {
|
||||
// Keep tokens separated unless the following token is a quantifier
|
||||
return real.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)";
|
||||
return nativ.test.call(quantifier, match.input.slice(match.index + match[0].length)) ? "" : "(?:)";
|
||||
},
|
||||
XRegExp.OUTSIDE_CLASS,
|
||||
function () {return this.hasFlag("x");}
|
||||
@@ -664,6 +661,7 @@ if (XRegExp) {
|
||||
*/
|
||||
|
||||
})();
|
||||
|
||||
//
|
||||
// Begin anonymous function. This is used to contain local scope variables without polutting global scope.
|
||||
//
|
||||
@@ -2536,6 +2534,8 @@ var dtOptions = [
|
||||
'fnStateSaveCallback',
|
||||
'bDeferRender',
|
||||
'mDataProp',
|
||||
'mData',
|
||||
'mRender',
|
||||
'iDeferLoading',
|
||||
'bSortCellsTop',
|
||||
'sDefaultContent',
|
||||
@@ -2644,6 +2644,8 @@ var dtLinks = [
|
||||
'fnStateSaveCallback',
|
||||
'bDeferRender',
|
||||
'mDataProp',
|
||||
'mData',
|
||||
'mRender',
|
||||
'iDeferLoading',
|
||||
'bSortCellsTop',
|
||||
'sDefaultContent',
|
||||
@@ -2696,13 +2698,13 @@ var dtLinks = [
|
||||
/* Show and syntax highlight XHR returns from the server */
|
||||
$(document).ready( function () {
|
||||
if ( $.fn.dataTableSettings.length >= 1 ) {
|
||||
$('#example').dataTable().bind('xhr', function ( e, oSettings ) {
|
||||
$('#example').bind('xhr', function ( e, oSettings, json ) {
|
||||
var n = document.getElementById('latest_xhr');
|
||||
n.innerHTML = JSON.stringify(
|
||||
JSON.parse(oSettings.jqXHR.responseText), null, 2
|
||||
);
|
||||
n.className = "brush: js;"
|
||||
SyntaxHighlighter.highlight({}, n);
|
||||
if ( n ) {
|
||||
n.innerHTML = JSON.stringify( json, null, 2 );
|
||||
n.className = "brush: js;"
|
||||
SyntaxHighlighter.highlight({}, n);
|
||||
}
|
||||
} );
|
||||
}
|
||||
} );
|
||||
@@ -107,7 +107,6 @@
|
||||
<li><a href="server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -1099,7 +1099,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -165,7 +165,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -18,29 +18,28 @@ $.fn.dataTableExt.oPagination.iTweenTime = 100;
|
||||
$.fn.dataTableExt.oPagination.scrolling = {
|
||||
"fnInit": function ( oSettings, nPaging, fnCallbackDraw )
|
||||
{
|
||||
/* Store the next and previous elements in the oSettings object as they can be very
|
||||
* usful for automation - particularly testing
|
||||
*/
|
||||
var nPrevious = document.createElement( 'div' );
|
||||
var nNext = document.createElement( 'div' );
|
||||
var oLang = oSettings.oLanguage.oPaginate;
|
||||
var oClasses = oSettings.oClasses;
|
||||
var fnClickHandler = function ( e ) {
|
||||
if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
|
||||
{
|
||||
fnCallbackDraw( oSettings );
|
||||
}
|
||||
};
|
||||
|
||||
var sAppend = (!oSettings.bJUI) ?
|
||||
'<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sPrevious+'</a>'+
|
||||
'<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sNext+'</a>'
|
||||
:
|
||||
'<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUIPrev+'"></span></a>'+
|
||||
'<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUINext+'"></span></a>';
|
||||
$(nPaging).append( sAppend );
|
||||
|
||||
if ( oSettings.sTableId !== '' )
|
||||
{
|
||||
nPaging.setAttribute( 'id', oSettings.sTableId+'_paginate' );
|
||||
nPrevious.setAttribute( 'id', oSettings.sTableId+'_previous' );
|
||||
nNext.setAttribute( 'id', oSettings.sTableId+'_next' );
|
||||
}
|
||||
var els = $('a', nPaging);
|
||||
var nPrevious = els[0],
|
||||
nNext = els[1];
|
||||
|
||||
nPrevious.className = "paginate_disabled_previous";
|
||||
nNext.className = "paginate_disabled_next";
|
||||
|
||||
nPrevious.title = oSettings.oLanguage.oPaginate.sPrevious;
|
||||
nNext.title = oSettings.oLanguage.oPaginate.sNext;
|
||||
|
||||
nPaging.appendChild( nPrevious );
|
||||
nPaging.appendChild( nNext );
|
||||
|
||||
$(nPrevious).click( function() {
|
||||
oSettings.oApi._fnBindAction( nPrevious, {action: "previous"}, function() {
|
||||
/* Disallow paging event during a current paging event */
|
||||
if ( typeof oSettings.iPagingLoopStart != 'undefined' && oSettings.iPagingLoopStart != -1 )
|
||||
{
|
||||
@@ -69,8 +68,8 @@ $.fn.dataTableExt.oPagination.scrolling = {
|
||||
};
|
||||
innerLoop();
|
||||
} );
|
||||
|
||||
$(nNext).click( function() {
|
||||
|
||||
oSettings.oApi._fnBindAction( nNext, {action: "next"}, function() {
|
||||
/* Disallow paging event during a current paging event */
|
||||
if ( typeof oSettings.iPagingLoopStart != 'undefined' && oSettings.iPagingLoopStart != -1 )
|
||||
{
|
||||
@@ -98,10 +97,6 @@ $.fn.dataTableExt.oPagination.scrolling = {
|
||||
};
|
||||
innerLoop();
|
||||
} );
|
||||
|
||||
/* Take the brutal approach to cancelling text selection */
|
||||
$(nPrevious).bind( 'selectstart', function () { return false; } );
|
||||
$(nNext).bind( 'selectstart', function () { return false; } );
|
||||
},
|
||||
|
||||
"fnUpdate": function ( oSettings, fnCallbackDraw )
|
||||
@@ -795,7 +790,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -625,7 +625,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -629,7 +629,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -658,7 +658,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -606,7 +606,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -175,7 +175,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -238,7 +238,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
|
||||
<h1>Preamble</h1>
|
||||
<p>When using server-side processing and you wish to integrate the <a href="http://www.appelsiini.net/projects/jeditable">jEditable plug-in for jQuery</a> with DataTables, you need to consider that each time data is returned from the server, DataTables will build new DOM elements - so these need the jEditable event handlers applied to them. This is down through use of the fnDrawCallback function.</p>
|
||||
<p>If you are interested in a full <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a> implementation for DataTables, check out the <a href="http://editor.datatables.net">Editor plug-in for DataTables</a>, which provides a flexible and easy to use create, edit and delete environment for DataTables controlled tables with full server interaction.</p>
|
||||
|
||||
<h1>Live example</h1>
|
||||
<div id="dynamic">
|
||||
@@ -188,7 +189,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -169,7 +169,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
"bProcessing": true,
|
||||
"bServerSide": true,
|
||||
"sAjaxSource": "scripts/jsonp.php",
|
||||
"fnServerData": function( sUrl, aoData, fnCallback ) {
|
||||
$.ajax( {
|
||||
"fnServerData": function( sUrl, aoData, fnCallback, oSettings ) {
|
||||
oSettings.jqXHR = $.ajax( {
|
||||
"url": sUrl,
|
||||
"data": aoData,
|
||||
"success": fnCallback,
|
||||
@@ -76,8 +76,8 @@
|
||||
"bProcessing": true,
|
||||
"bServerSide": true,
|
||||
"sAjaxSource": "scripts/jsonp.php",
|
||||
"fnServerData": function( sUrl, aoData, fnCallback ) {
|
||||
$.ajax( {
|
||||
"fnServerData": function( sUrl, aoData, fnCallback, oSettings ) {
|
||||
oSettings.jqXHR = $.ajax( {
|
||||
"url": sUrl,
|
||||
"data": aoData,
|
||||
"success": fnCallback,
|
||||
@@ -187,7 +187,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -18,11 +18,11 @@
|
||||
"bServerSide": true,
|
||||
"sAjaxSource": "scripts/objects.php",
|
||||
"aoColumns": [
|
||||
{ "mDataProp": "engine" },
|
||||
{ "mDataProp": "browser" },
|
||||
{ "mDataProp": "platform" },
|
||||
{ "mDataProp": "version" },
|
||||
{ "mDataProp": "grade" }
|
||||
{ "mData": "engine" },
|
||||
{ "mData": "browser" },
|
||||
{ "mData": "platform" },
|
||||
{ "mData": "version" },
|
||||
{ "mData": "grade" }
|
||||
]
|
||||
} );
|
||||
} );
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
<h1>Preamble</h1>
|
||||
<p>The "native" data format that DataTables expects for server-side processing is a 2D array of data (rows by columns). However, this is often not flexible enough for either the server-side environment, or you might want to convey more information in the data source than is necessary to show in the table (row IDs from the database for example). For this DataTables supports the reading of data for objects as well as arrays.</p>
|
||||
<p>In this example the server responds with an array of objects, and DataTables will look up each property that is specified by the <b>mDataProp</b> property given for each column</p>
|
||||
<p>In this example the server responds with an array of objects, and DataTables will look up each property that is specified by the <b>mData</b> property given for each column</p>
|
||||
|
||||
<h1>Live example</h1>
|
||||
<div id="dynamic">
|
||||
@@ -76,11 +76,11 @@
|
||||
"bServerSide": true,
|
||||
"sAjaxSource": "scripts/objects.php",
|
||||
"aoColumns": [
|
||||
{ "mDataProp": "engine" },
|
||||
{ "mDataProp": "browser" },
|
||||
{ "mDataProp": "platform" },
|
||||
{ "mDataProp": "version" },
|
||||
{ "mDataProp": "grade" }
|
||||
{ "mData": "engine" },
|
||||
{ "mData": "browser" },
|
||||
{ "mData": "platform" },
|
||||
{ "mData": "version" },
|
||||
{ "mData": "grade" }
|
||||
]
|
||||
} );
|
||||
} );</pre>
|
||||
@@ -184,7 +184,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
return null;
|
||||
}
|
||||
|
||||
function fnDataTablesPipeline ( sSource, aoData, fnCallback ) {
|
||||
function fnDataTablesPipeline ( sSource, aoData, fnCallback, oSettings ) {
|
||||
var iPipe = 5; /* Ajust the pipe size */
|
||||
|
||||
var bNeedServer = false;
|
||||
@@ -91,7 +91,7 @@
|
||||
fnSetKey( aoData, "iDisplayStart", iRequestStart );
|
||||
fnSetKey( aoData, "iDisplayLength", iRequestLength*iPipe );
|
||||
|
||||
$.getJSON( sSource, aoData, function (json) {
|
||||
oSettings.jqXHR = $.getJSON( sSource, aoData, function (json) {
|
||||
/* Callback processing */
|
||||
oCache.lastJson = jQuery.extend(true, {}, json);
|
||||
|
||||
@@ -378,7 +378,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -171,7 +171,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -251,7 +251,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -29,14 +29,28 @@
|
||||
* no need to edit below this line
|
||||
*/
|
||||
|
||||
/*
|
||||
* Local functions
|
||||
*/
|
||||
function fatal_error ( $sErrorMessage = '' )
|
||||
{
|
||||
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
|
||||
die( $sErrorMessage );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MySQL connection
|
||||
*/
|
||||
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
|
||||
die( 'Could not open connection to server' );
|
||||
|
||||
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
|
||||
die( 'Could not select database '. $gaSql['db'] );
|
||||
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
|
||||
{
|
||||
fatal_error( 'Could not open connection to server' );
|
||||
}
|
||||
|
||||
if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
|
||||
{
|
||||
fatal_error( 'Could not select database ' );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@@ -86,7 +100,10 @@
|
||||
$sWhere = "WHERE (";
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
}
|
||||
}
|
||||
$sWhere = substr_replace( $sWhere, "", -3 );
|
||||
$sWhere .= ')';
|
||||
@@ -121,13 +138,13 @@
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
|
||||
/* Data set length after filtering */
|
||||
$sQuery = "
|
||||
SELECT FOUND_ROWS()
|
||||
";
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
|
||||
$iFilteredTotal = $aResultFilterTotal[0];
|
||||
|
||||
@@ -136,7 +153,7 @@
|
||||
SELECT COUNT(".$sIndexColumn.")
|
||||
FROM $sTable
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultTotal = mysql_fetch_array($rResultTotal);
|
||||
$iTotal = $aResultTotal[0];
|
||||
|
||||
|
||||
@@ -29,14 +29,28 @@
|
||||
* no need to edit below this line
|
||||
*/
|
||||
|
||||
/*
|
||||
* Local functions
|
||||
*/
|
||||
function fatal_error ( $sErrorMessage = '' )
|
||||
{
|
||||
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
|
||||
die( $sErrorMessage );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MySQL connection
|
||||
*/
|
||||
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
|
||||
die( 'Could not open connection to server' );
|
||||
|
||||
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
|
||||
die( 'Could not select database '. $gaSql['db'] );
|
||||
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
|
||||
{
|
||||
fatal_error( 'Could not open connection to server' );
|
||||
}
|
||||
|
||||
if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
|
||||
{
|
||||
fatal_error( 'Could not select database ' );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@@ -86,7 +100,10 @@
|
||||
$sWhere = "WHERE (";
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
}
|
||||
}
|
||||
$sWhere = substr_replace( $sWhere, "", -3 );
|
||||
$sWhere .= ')';
|
||||
@@ -121,13 +138,13 @@
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
|
||||
/* Data set length after filtering */
|
||||
$sQuery = "
|
||||
SELECT FOUND_ROWS()
|
||||
";
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
|
||||
$iFilteredTotal = $aResultFilterTotal[0];
|
||||
|
||||
@@ -136,7 +153,7 @@
|
||||
SELECT COUNT(".$sIndexColumn.")
|
||||
FROM $sTable
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultTotal = mysql_fetch_array($rResultTotal);
|
||||
$iTotal = $aResultTotal[0];
|
||||
|
||||
|
||||
@@ -2,11 +2,30 @@
|
||||
/* MySQL connection */
|
||||
include( $_SERVER['DOCUMENT_ROOT']."/datatables/mysql.php" ); /* ;-) */
|
||||
|
||||
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
|
||||
die( 'Could not open connection to server' );
|
||||
/*
|
||||
* Local functions
|
||||
*/
|
||||
function fatal_error ( $sErrorMessage = '' )
|
||||
{
|
||||
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
|
||||
die( $sErrorMessage );
|
||||
}
|
||||
|
||||
|
||||
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
|
||||
die( 'Could not select database '. $gaSql['db'] );
|
||||
/*
|
||||
* MySQL connection
|
||||
*/
|
||||
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
|
||||
{
|
||||
fatal_error( 'Could not open connection to server' );
|
||||
}
|
||||
|
||||
if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
|
||||
{
|
||||
fatal_error( 'Could not select database ' );
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Paging */
|
||||
$sLimit = "";
|
||||
@@ -65,12 +84,12 @@
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
|
||||
$sQuery = "
|
||||
SELECT FOUND_ROWS()
|
||||
";
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
|
||||
$iFilteredTotal = $aResultFilterTotal[0];
|
||||
|
||||
@@ -78,7 +97,7 @@
|
||||
SELECT COUNT(id)
|
||||
FROM ajax
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultTotal = mysql_fetch_array($rResultTotal);
|
||||
$iTotal = $aResultTotal[0];
|
||||
|
||||
|
||||
@@ -29,14 +29,28 @@
|
||||
* no need to edit below this line
|
||||
*/
|
||||
|
||||
/*
|
||||
* Local functions
|
||||
*/
|
||||
function fatal_error ( $sErrorMessage = '' )
|
||||
{
|
||||
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
|
||||
die( $sErrorMessage );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MySQL connection
|
||||
*/
|
||||
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
|
||||
die( 'Could not open connection to server' );
|
||||
|
||||
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
|
||||
die( 'Could not select database '. $gaSql['db'] );
|
||||
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
|
||||
{
|
||||
fatal_error( 'Could not open connection to server' );
|
||||
}
|
||||
|
||||
if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
|
||||
{
|
||||
fatal_error( 'Could not select database ' );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@@ -86,7 +100,10 @@
|
||||
$sWhere = "WHERE (";
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
}
|
||||
}
|
||||
$sWhere = substr_replace( $sWhere, "", -3 );
|
||||
$sWhere .= ')';
|
||||
@@ -121,13 +138,13 @@
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
|
||||
/* Data set length after filtering */
|
||||
$sQuery = "
|
||||
SELECT FOUND_ROWS()
|
||||
";
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
|
||||
$iFilteredTotal = $aResultFilterTotal[0];
|
||||
|
||||
@@ -136,7 +153,7 @@
|
||||
SELECT COUNT(".$sIndexColumn.")
|
||||
FROM $sTable
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultTotal = mysql_fetch_array($rResultTotal);
|
||||
$iTotal = $aResultTotal[0];
|
||||
|
||||
|
||||
@@ -29,14 +29,28 @@
|
||||
* no need to edit below this line
|
||||
*/
|
||||
|
||||
/*
|
||||
* Local functions
|
||||
*/
|
||||
function fatal_error ( $sErrorMessage = '' )
|
||||
{
|
||||
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
|
||||
die( $sErrorMessage );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MySQL connection
|
||||
*/
|
||||
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
|
||||
die( 'Could not open connection to server' );
|
||||
|
||||
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
|
||||
die( 'Could not select database '. $gaSql['db'] );
|
||||
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
|
||||
{
|
||||
fatal_error( 'Could not open connection to server' );
|
||||
}
|
||||
|
||||
if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
|
||||
{
|
||||
fatal_error( 'Could not select database ' );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@@ -86,7 +100,10 @@
|
||||
$sWhere = "WHERE (";
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
}
|
||||
}
|
||||
$sWhere = substr_replace( $sWhere, "", -3 );
|
||||
$sWhere .= ')';
|
||||
@@ -121,13 +138,13 @@
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
|
||||
/* Data set length after filtering */
|
||||
$sQuery = "
|
||||
SELECT FOUND_ROWS()
|
||||
";
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
|
||||
$iFilteredTotal = $aResultFilterTotal[0];
|
||||
|
||||
@@ -136,7 +153,7 @@
|
||||
SELECT COUNT(".$sIndexColumn.")
|
||||
FROM $sTable
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultTotal = mysql_fetch_array($rResultTotal);
|
||||
$iTotal = $aResultTotal[0];
|
||||
|
||||
|
||||
@@ -29,14 +29,28 @@
|
||||
* no need to edit below this line
|
||||
*/
|
||||
|
||||
/*
|
||||
* Local functions
|
||||
*/
|
||||
function fatal_error ( $sErrorMessage = '' )
|
||||
{
|
||||
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
|
||||
die( $sErrorMessage );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MySQL connection
|
||||
*/
|
||||
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
|
||||
die( 'Could not open connection to server' );
|
||||
|
||||
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
|
||||
die( 'Could not select database '. $gaSql['db'] );
|
||||
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
|
||||
{
|
||||
fatal_error( 'Could not open connection to server' );
|
||||
}
|
||||
|
||||
if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
|
||||
{
|
||||
fatal_error( 'Could not select database ' );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@@ -86,7 +100,10 @@
|
||||
$sWhere = "WHERE (";
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
}
|
||||
}
|
||||
$sWhere = substr_replace( $sWhere, "", -3 );
|
||||
$sWhere .= ')';
|
||||
@@ -121,13 +138,13 @@
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
|
||||
/* Data set length after filtering */
|
||||
$sQuery = "
|
||||
SELECT FOUND_ROWS()
|
||||
";
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
|
||||
$iFilteredTotal = $aResultFilterTotal[0];
|
||||
|
||||
@@ -136,7 +153,7 @@
|
||||
SELECT COUNT(".$sIndexColumn.")
|
||||
FROM $sTable
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultTotal = mysql_fetch_array($rResultTotal);
|
||||
$iTotal = $aResultTotal[0];
|
||||
|
||||
|
||||
@@ -29,14 +29,28 @@
|
||||
* no need to edit below this line
|
||||
*/
|
||||
|
||||
/*
|
||||
* Local functions
|
||||
*/
|
||||
function fatal_error ( $sErrorMessage = '' )
|
||||
{
|
||||
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
|
||||
die( $sErrorMessage );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MySQL connection
|
||||
*/
|
||||
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
|
||||
die( 'Could not open connection to server' );
|
||||
|
||||
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
|
||||
die( 'Could not select database '. $gaSql['db'] );
|
||||
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
|
||||
{
|
||||
fatal_error( 'Could not open connection to server' );
|
||||
}
|
||||
|
||||
if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
|
||||
{
|
||||
fatal_error( 'Could not select database ' );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@@ -87,7 +101,10 @@
|
||||
$sWhere = "WHERE (";
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
}
|
||||
}
|
||||
$sWhere = substr_replace( $sWhere, "", -3 );
|
||||
$sWhere .= ')';
|
||||
@@ -123,13 +140,13 @@
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
|
||||
/* Data set length after filtering */
|
||||
$sQuery = "
|
||||
SELECT FOUND_ROWS()
|
||||
";
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
|
||||
$iFilteredTotal = $aResultFilterTotal[0];
|
||||
|
||||
@@ -138,7 +155,7 @@
|
||||
SELECT COUNT(".$sIndexColumn.")
|
||||
FROM $sTable
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultTotal = mysql_fetch_array($rResultTotal);
|
||||
$iTotal = $aResultTotal[0];
|
||||
|
||||
|
||||
@@ -29,14 +29,28 @@
|
||||
* no need to edit below this line
|
||||
*/
|
||||
|
||||
/*
|
||||
* Local functions
|
||||
*/
|
||||
function fatal_error ( $sErrorMessage = '' )
|
||||
{
|
||||
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
|
||||
die( $sErrorMessage );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MySQL connection
|
||||
*/
|
||||
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
|
||||
die( 'Could not open connection to server' );
|
||||
|
||||
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
|
||||
die( 'Could not select database '. $gaSql['db'] );
|
||||
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
|
||||
{
|
||||
fatal_error( 'Could not open connection to server' );
|
||||
}
|
||||
|
||||
if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
|
||||
{
|
||||
fatal_error( 'Could not select database ' );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@@ -87,7 +101,10 @@
|
||||
$sWhere = "WHERE (";
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
}
|
||||
}
|
||||
$sWhere = substr_replace( $sWhere, "", -3 );
|
||||
$sWhere .= ')';
|
||||
@@ -123,13 +140,13 @@
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
|
||||
/* Data set length after filtering */
|
||||
$sQuery = "
|
||||
SELECT FOUND_ROWS()
|
||||
";
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
|
||||
$iFilteredTotal = $aResultFilterTotal[0];
|
||||
|
||||
@@ -138,7 +155,7 @@
|
||||
SELECT COUNT(".$sIndexColumn.")
|
||||
FROM $sTable
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultTotal = mysql_fetch_array($rResultTotal);
|
||||
$iTotal = $aResultTotal[0];
|
||||
|
||||
|
||||
@@ -29,14 +29,28 @@
|
||||
* no need to edit below this line
|
||||
*/
|
||||
|
||||
/*
|
||||
* Local functions
|
||||
*/
|
||||
function fatal_error ( $sErrorMessage = '' )
|
||||
{
|
||||
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
|
||||
die( $sErrorMessage );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MySQL connection
|
||||
*/
|
||||
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
|
||||
die( 'Could not open connection to server' );
|
||||
|
||||
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
|
||||
die( 'Could not select database '. $gaSql['db'] );
|
||||
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
|
||||
{
|
||||
fatal_error( 'Could not open connection to server' );
|
||||
}
|
||||
|
||||
if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
|
||||
{
|
||||
fatal_error( 'Could not select database ' );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@@ -85,7 +99,10 @@
|
||||
$sWhere = "WHERE (";
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_POST['sSearch'] )."%' OR ";
|
||||
if ( isset($_POST['bSearchable_'.$i]) && $_POST['bSearchable_'.$i] == "true" )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_POST['sSearch'] )."%' OR ";
|
||||
}
|
||||
}
|
||||
$sWhere = substr_replace( $sWhere, "", -3 );
|
||||
$sWhere .= ')';
|
||||
@@ -120,13 +137,13 @@
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
|
||||
/* Data set length after filtering */
|
||||
$sQuery = "
|
||||
SELECT FOUND_ROWS()
|
||||
";
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
|
||||
$iFilteredTotal = $aResultFilterTotal[0];
|
||||
|
||||
@@ -135,7 +152,7 @@
|
||||
SELECT COUNT(".$sIndexColumn.")
|
||||
FROM $sTable
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultTotal = mysql_fetch_array($rResultTotal);
|
||||
$iTotal = $aResultTotal[0];
|
||||
|
||||
|
||||
@@ -29,24 +29,37 @@
|
||||
* no need to edit below this line
|
||||
*/
|
||||
|
||||
/*
|
||||
* Local functions
|
||||
*/
|
||||
function fatal_error ( $sErrorMessage = '' )
|
||||
{
|
||||
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
|
||||
die( $sErrorMessage );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MySQL connection
|
||||
*/
|
||||
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
|
||||
die( 'Could not open connection to server' );
|
||||
|
||||
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
|
||||
die( 'Could not select database '. $gaSql['db'] );
|
||||
|
||||
|
||||
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
|
||||
{
|
||||
fatal_error( 'Could not open connection to server' );
|
||||
}
|
||||
|
||||
if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
|
||||
{
|
||||
fatal_error( 'Could not select database ' );
|
||||
}
|
||||
|
||||
/*
|
||||
* Paging
|
||||
*/
|
||||
$sLimit = "";
|
||||
if ( isset( $_GET['iDisplayStart'] ) && $_GET['iDisplayLength'] != '-1' )
|
||||
{
|
||||
$sLimit = "LIMIT ".mysql_real_escape_string( $_GET['iDisplayStart'] ).", ".
|
||||
mysql_real_escape_string( $_GET['iDisplayLength'] );
|
||||
$sLimit = "LIMIT ".intval( $_GET['iDisplayStart'] ).", ".
|
||||
intval( $_GET['iDisplayLength'] );
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +99,10 @@
|
||||
$sWhere = "WHERE (";
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
$sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" )
|
||||
{
|
||||
$sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
}
|
||||
}
|
||||
$sWhere = substr_replace( $sWhere, "", -3 );
|
||||
$sWhere .= ')';
|
||||
@@ -121,13 +137,13 @@
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
|
||||
/* Data set length after filtering */
|
||||
$sQuery = "
|
||||
SELECT FOUND_ROWS()
|
||||
";
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
|
||||
$iFilteredTotal = $aResultFilterTotal[0];
|
||||
|
||||
@@ -136,7 +152,7 @@
|
||||
SELECT COUNT(`".$sIndexColumn."`)
|
||||
FROM $sTable
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultTotal = mysql_fetch_array($rResultTotal);
|
||||
$iTotal = $aResultTotal[0];
|
||||
|
||||
|
||||
@@ -213,7 +213,6 @@ $(document).ready(function() {
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -81,12 +81,6 @@
|
||||
|
||||
<h1>Server side (PHP) code</h1>
|
||||
<pre><?php
|
||||
/*
|
||||
* Script: DataTables server-side script for PHP and MySQL
|
||||
* Copyright: 2010 - Allan Jardine
|
||||
* License: GPL v2 or BSD (3-point)
|
||||
*/
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Easy set variables
|
||||
*/
|
||||
@@ -108,20 +102,37 @@
|
||||
$gaSql['db'] = "";
|
||||
$gaSql['server'] = "localhost";
|
||||
|
||||
/* REMOVE THIS LINE (it just includes my SQL connection user/pass) */
|
||||
include( $_SERVER['DOCUMENT_ROOT']."/datatables/mysql.php" );
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* If you just want to use the basic configuration for DataTables with PHP server-side, there is
|
||||
* no need to edit below this line
|
||||
*/
|
||||
|
||||
/*
|
||||
* Local functions
|
||||
*/
|
||||
function fatal_error ( $sErrorMessage = '' )
|
||||
{
|
||||
header( $_SERVER['SERVER_PROTOCOL'] .' 500 Internal Server Error' );
|
||||
die( $sErrorMessage );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* MySQL connection
|
||||
*/
|
||||
$gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) or
|
||||
die( 'Could not open connection to server' );
|
||||
|
||||
mysql_select_db( $gaSql['db'], $gaSql['link'] ) or
|
||||
die( 'Could not select database '. $gaSql['db'] );
|
||||
if ( ! $gaSql['link'] = mysql_pconnect( $gaSql['server'], $gaSql['user'], $gaSql['password'] ) )
|
||||
{
|
||||
fatal_error( 'Could not open connection to server' );
|
||||
}
|
||||
|
||||
if ( ! mysql_select_db( $gaSql['db'], $gaSql['link'] ) )
|
||||
{
|
||||
fatal_error( 'Could not select database ' );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
@@ -138,6 +149,7 @@
|
||||
/*
|
||||
* Ordering
|
||||
*/
|
||||
$sOrder = "";
|
||||
if ( isset( $_GET['iSortCol_0'] ) )
|
||||
{
|
||||
$sOrder = "ORDER BY ";
|
||||
@@ -145,8 +157,8 @@
|
||||
{
|
||||
if ( $_GET[ 'bSortable_'.intval($_GET['iSortCol_'.$i]) ] == "true" )
|
||||
{
|
||||
$sOrder .= $aColumns[ intval( $_GET['iSortCol_'.$i] ) ]."
|
||||
".mysql_real_escape_string( $_GET['sSortDir_'.$i] ) .", ";
|
||||
$sOrder .= "`".$aColumns[ intval( $_GET['iSortCol_'.$i] ) ]."` ".
|
||||
mysql_real_escape_string( $_GET['sSortDir_'.$i] ) .", ";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,12 +177,12 @@
|
||||
* on very large tables, and MySQL's regex functionality is very limited
|
||||
*/
|
||||
$sWhere = "";
|
||||
if ( $_GET['sSearch'] != "" )
|
||||
if ( isset($_GET['sSearch']) && $_GET['sSearch'] != "" )
|
||||
{
|
||||
$sWhere = "WHERE (";
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
$sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
|
||||
}
|
||||
$sWhere = substr_replace( $sWhere, "", -3 );
|
||||
$sWhere .= ')';
|
||||
@@ -179,7 +191,7 @@
|
||||
/* Individual column filtering */
|
||||
for ( $i=0 ; $i<count($aColumns) ; $i++ )
|
||||
{
|
||||
if ( $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' )
|
||||
if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' )
|
||||
{
|
||||
if ( $sWhere == "" )
|
||||
{
|
||||
@@ -189,7 +201,7 @@
|
||||
{
|
||||
$sWhere .= " AND ";
|
||||
}
|
||||
$sWhere .= $aColumns[$i]." LIKE '%".mysql_real_escape_string($_GET['sSearch_'.$i])."%' ";
|
||||
$sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string($_GET['sSearch_'.$i])."%' ";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,28 +211,28 @@
|
||||
* Get data to display
|
||||
*/
|
||||
$sQuery = "
|
||||
SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))."
|
||||
SELECT SQL_CALC_FOUND_ROWS `".str_replace(" , ", " ", implode("`, `", $aColumns))."`
|
||||
FROM $sTable
|
||||
$sWhere
|
||||
$sOrder
|
||||
$sLimit
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
";
|
||||
$rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
|
||||
/* Data set length after filtering */
|
||||
$sQuery = "
|
||||
SELECT FOUND_ROWS()
|
||||
";
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultFilterTotal = mysql_fetch_array($rResultFilterTotal);
|
||||
$iFilteredTotal = $aResultFilterTotal[0];
|
||||
|
||||
/* Total data set length */
|
||||
$sQuery = "
|
||||
SELECT COUNT(".$sIndexColumn.")
|
||||
SELECT COUNT(`".$sIndexColumn."`)
|
||||
FROM $sTable
|
||||
";
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error());
|
||||
$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
|
||||
$aResultTotal = mysql_fetch_array($rResultTotal);
|
||||
$iTotal = $aResultTotal[0];
|
||||
|
||||
@@ -348,7 +360,6 @@
|
||||
<li><a href="../server_side/jsonp.html">JSONP for a cross domain data source</a></li>
|
||||
<li><a href="../server_side/editable.html">jEditable integration with DataTables</a></li>
|
||||
<li><a href="../server_side/defer_loading.html">Deferred loading of Ajax data</a></li>
|
||||
<li><a href="../server_side/column_ordering.html">Custom column ordering (in callback data)</a></li>
|
||||
<li><a href="../server_side/pipeline.html">Pipelining data (reduce Ajax calls for paging)</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -104,4 +104,19 @@
|
||||
height: 100px;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
#dt_example code {
|
||||
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
||||
padding: 2px 4px !important;
|
||||
white-space: nowrap;
|
||||
font-size: 0.9em;
|
||||
|
||||
color: #D14;
|
||||
background-color: #F7F7F9;
|
||||
|
||||
border: 1px solid #E1E1E8;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
@@ -201,7 +201,8 @@ table.display td.center {
|
||||
background: url('../images/sort_desc_disabled.png') no-repeat center right;
|
||||
}
|
||||
|
||||
th:active {
|
||||
table.display thead th:active,
|
||||
table.display thead td:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
@@ -265,6 +266,7 @@ tr.even {
|
||||
|
||||
.dataTables_scrollBody {
|
||||
*margin-top: -1px;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.top, .bottom {
|
||||
|
||||
@@ -82,7 +82,6 @@ div.dataTables_wrapper .ui-widget-header {
|
||||
table.display thead th div.DataTables_sort_wrapper {
|
||||
position: relative;
|
||||
padding-right: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
table.display thead th div.DataTables_sort_wrapper span {
|
||||
@@ -147,30 +146,6 @@ table.display thead th div.DataTables_sort_wrapper span {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Pagination nested */
|
||||
.paginate_disabled_previous, .paginate_enabled_previous, .paginate_disabled_next, .paginate_enabled_next {
|
||||
height: 19px;
|
||||
width: 19px;
|
||||
margin-left: 3px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.paginate_disabled_previous {
|
||||
background-image: url('../images/back_disabled.jpg');
|
||||
}
|
||||
|
||||
.paginate_enabled_previous {
|
||||
background-image: url('../images/back_enabled.jpg');
|
||||
}
|
||||
|
||||
.paginate_disabled_next {
|
||||
background-image: url('../images/forward_disabled.jpg');
|
||||
}
|
||||
|
||||
.paginate_enabled_next {
|
||||
background-image: url('../images/forward_enabled.jpg');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
@@ -296,6 +271,10 @@ tr.even {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.dataTables_scrollBody {
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
.top, .bottom {
|
||||
padding: 15px;
|
||||
background-color: #F5F5F5;
|
||||
|
||||
@@ -201,7 +201,8 @@ table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; }
|
||||
.sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; }
|
||||
.sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; }
|
||||
|
||||
table.dataTable th:active {
|
||||
table.dataTable thead th:active,
|
||||
table.dataTable thead td:active {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
@@ -215,5 +216,6 @@ table.dataTable th:active {
|
||||
|
||||
.dataTables_scrollBody {
|
||||
*margin-top: -1px;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ table.dataTable {
|
||||
margin: 0 auto;
|
||||
clear: both;
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table.dataTable thead th {
|
||||
@@ -215,7 +216,6 @@ table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; }
|
||||
table.dataTable thead th div.DataTables_sort_wrapper {
|
||||
position: relative;
|
||||
padding-right: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
table.dataTable thead th div.DataTables_sort_wrapper span {
|
||||
@@ -239,5 +239,6 @@ table.dataTable th:active {
|
||||
|
||||
.dataTables_scrollBody {
|
||||
*margin-top: -1px;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user