1 /* Set the defaults for DataTables initialisation */
5 $.fn.dataTable.defaults,
7 "sDom" : "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
8 "sPaginationType" : "bootstrap",
10 "sLengthMenu" : "_MENU_ records per page"
14 /* Default class modification */
15 $.extend($.fn.dataTableExt.oStdClasses, {
16 "sWrapper" : "dataTables_wrapper form-inline"
19 /* API method to get paging information */
20 $.fn.dataTableExt.oApi.fnPagingInfo = function(oSettings) {
22 "iStart" : oSettings._iDisplayStart,
23 "iEnd" : oSettings.fnDisplayEnd(),
24 "iLength" : oSettings._iDisplayLength,
25 "iTotal" : oSettings.fnRecordsTotal(),
26 "iFilteredTotal" : oSettings.fnRecordsDisplay(),
27 "iPage" : oSettings._iDisplayLength === -1 ? 0 : Math
28 .ceil(oSettings._iDisplayStart / oSettings._iDisplayLength),
29 "iTotalPages" : oSettings._iDisplayLength === -1 ? 0 : Math
30 .ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength)
34 /* Bootstrap style pagination control */
35 $.extend($.fn.dataTableExt.oPagination, {
37 "fnInit" : function(oSettings, nPaging, fnDraw) {
38 var oLang = oSettings.oLanguage.oPaginate;
39 var fnClickHandler = function(e) {
41 if (oSettings.oApi._fnPageChange(oSettings, e.data.action)) {
47 * $(nPaging).addClass('pagination').append(
49 * '<li class="prev disabled"><a href="#">← ' + oLang.sPrevious + '</a></li>' +
50 * '<li class="next disabled"><a href="#">' + oLang.sNext + ' → </a></li>' +
53 $(nPaging).addClass('pagination').append(
54 '<a href="#">← ' + oLang.sPrevious + '</a>' +
55 ' <a href="#">' + oLang.sNext + ' → </a>');
56 var els = $('a', nPaging);
57 $(els[0]).bind('click.DT', {
60 $(els[1]).bind('click.DT', {
65 "fnUpdate" : function(oSettings, fnDraw) {
66 //var iListLength = 5; // original code!!!
68 var oPaging = oSettings.oInstance.fnPagingInfo();
69 var an = oSettings.aanFeatures.p;
70 var i, ien, j, sClass, iStart, iEnd, iHalf = Math.floor(iListLength / 2);
72 if (oPaging.iTotalPages < iListLength) {
74 iEnd = oPaging.iTotalPages;
75 } else if (oPaging.iPage <= iHalf) {
78 } else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) {
79 iStart = oPaging.iTotalPages - iListLength + 1;
80 iEnd = oPaging.iTotalPages;
82 iStart = oPaging.iPage - iHalf + 1;
83 iEnd = iStart + iListLength - 1;
86 for (i = 0, ien = an.length; i < ien; i++) {
87 // Remove the middle elements
88 $('li:gt(0)', an[i]).filter(':not(:last)').remove();
90 // Add the new list items and their event handlers
91 for (j = iStart; j <= iEnd; j++) {
92 sClass = (j == oPaging.iPage + 1) ? 'class="active"' : '';
93 $('<li ' + sClass + '><a href="#">' + j + '</a></li>')
94 .insertBefore($('li:last', an[i])[0]).bind(
98 oSettings._iDisplayStart = (parseInt($(
99 'a', this).text(), 10) - 1)
105 // Add / remove disabled classes from the static elements
106 if (oPaging.iPage === 0) {
107 $('li:first', an[i]).addClass('disabled');
109 $('li:first', an[i]).removeClass('disabled');
112 if (oPaging.iPage === oPaging.iTotalPages - 1
113 || oPaging.iTotalPages === 0) {
114 $('li:last', an[i]).addClass('disabled');
116 $('li:last', an[i]).removeClass('disabled');
124 * TableTools Bootstrap compatibility Required TableTools 2.1+
126 if ($.fn.DataTable.TableTools) {
127 // Set the classes that TableTools uses to something suitable for Bootstrap
128 $.extend(true, $.fn.DataTable.TableTools.classes, {
129 "container" : "DTTT btn-group",
132 "disabled" : "disabled"
135 "container" : "DTTT_dropdown dropdown-menu",
138 "disabled" : "disabled"
142 "info" : "DTTT_print_info modal"
149 // Have the collection use a bootstrap compatible dropdown
150 $.extend(true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {
159 /* Table initialisation */
160 $(document).ready(function() {
161 $('#example').dataTable({
162 "sDom" : "<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
163 "sPaginationType" : "bootstrap",
165 "sLengthMenu" : "_MENU_ records per page"