1 /* Set the defaults for DataTables initialisation */
\r
3 $.extend( true, $.fn.dataTable.defaults, {
\r
4 "sDom": "<'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r><'table-scrollable't><'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>", // horizobtal scrollable datatable
\r
5 //"sDom": "<'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r>t<'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>", // defaukt datatable without horizobtal scroll
\r
6 "sPaginationType": "bootstrap",
\r
8 "sLengthMenu": " _MENU_ records ",
\r
13 /* Default class modification */
\r
15 $.extend( $.fn.dataTableExt.oStdClasses, {
\r
16 "sWrapper": "dataTables_wrapper"
\r
20 /* API method to get paging information */
\r
22 $.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )
\r
25 "iStart": oSettings._iDisplayStart,
\r
26 "iEnd": oSettings.fnDisplayEnd(),
\r
27 "iLength": oSettings._iDisplayLength,
\r
28 "iTotal": oSettings.fnRecordsTotal(),
\r
29 "iFilteredTotal": oSettings.fnRecordsDisplay(),
\r
30 "iPage": Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
\r
31 "iTotalPages": Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
\r
36 /* Bootstrap style pagination control */
\r
37 $.extend( $.fn.dataTableExt.oPagination, {
\r
39 "fnInit": function( oSettings, nPaging, fnDraw ) {
\r
40 var oLang = oSettings.oLanguage.oPaginate;
\r
41 var fnClickHandler = function ( e ) {
\r
43 if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
\r
44 fnDraw( oSettings );
\r
48 // pagination with prev, next link icons
\r
50 '<ul class="pagination">'+
\r
51 '<li class="prev disabled"><a href="#" title="'+oLang.sPrevious+'"><i class="fa fa-angle-left"></i></a></li>'+
\r
52 '<li class="next disabled"><a href="#" title="'+oLang.sNext+'"><i class="fa fa-angle-right"></i></a></li>'+
\r
56 var els = $('a', nPaging);
\r
57 $(els[0]).bind( 'click.DT', { action: "previous" }, fnClickHandler );
\r
58 $(els[1]).bind( 'click.DT', { action: "next" }, fnClickHandler );
\r
61 "fnUpdate": function ( oSettings, fnDraw ) {
\r
62 var iListLength = 5;
\r
63 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
64 var an = oSettings.aanFeatures.p;
\r
65 var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);
\r
67 if ( oPaging.iTotalPages < iListLength) {
\r
69 iEnd = oPaging.iTotalPages;
\r
71 else if ( oPaging.iPage <= iHalf ) {
\r
74 } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {
\r
75 iStart = oPaging.iTotalPages - iListLength + 1;
\r
76 iEnd = oPaging.iTotalPages;
\r
78 iStart = oPaging.iPage - iHalf + 1;
\r
79 iEnd = iStart + iListLength - 1;
\r
82 for ( i=0, iLen=an.length ; i<iLen ; i++ ) {
\r
84 if (oPaging.iTotalPages < 0) {
\r
85 $('.pagination', an[i]).css('visibility', 'hidden');
\r
87 $('.pagination', an[i]).css('visibility', 'visible');
\r
90 // Remove the middle elements
\r
91 $('li:gt(0)', an[i]).filter(':not(:last)').remove();
\r
93 // Add the new list items and their event handlers
\r
94 for ( j=iStart ; j<=iEnd ; j++ ) {
\r
95 sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';
\r
96 $('<li '+sClass+'><a href="#">'+j+'</a></li>')
\r
97 .insertBefore( $('li:last', an[i])[0] )
\r
98 .bind('click', function (e) {
\r
100 oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
\r
101 fnDraw( oSettings );
\r
105 // Add / remove disabled classes from the static elements
\r
106 if ( oPaging.iPage === 0 ) {
\r
107 $('li:first', an[i]).addClass('disabled');
\r
109 $('li:first', an[i]).removeClass('disabled');
\r
112 if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
\r
113 $('li:last', an[i]).addClass('disabled');
\r
115 $('li:last', an[i]).removeClass('disabled');
\r
122 /* Bootstrap style full number pagination control */
\r
123 $.extend( $.fn.dataTableExt.oPagination, {
\r
124 "bootstrap_full_number": {
\r
125 "fnInit": function( oSettings, nPaging, fnDraw ) {
\r
126 var oLang = oSettings.oLanguage.oPaginate;
\r
127 var fnClickHandler = function ( e ) {
\r
128 e.preventDefault();
\r
129 if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
\r
130 fnDraw( oSettings );
\r
135 '<ul class="pagination">' +
\r
136 '<li class="prev disabled"><a href="#" title="' + oLang.sFirst + '"><i class="fa fa-angle-double-left"></i></a></li>' +
\r
137 '<li class="prev disabled"><a href="#" title="' + oLang.sPrevious + '"><i class="fa fa-angle-left"></i></a></li>'+
\r
138 '<li class="next disabled"><a href="#" title="' + oLang.sNext + '"><i class="fa fa-angle-right"></i></a></li>' +
\r
139 '<li class="next disabled"><a href="#" title="' + oLang.sLast + '"><i class="fa fa-angle-double-right"></i></a></li>' +
\r
142 var els = $('a', nPaging);
\r
143 $(els[0]).bind('click.DT', { action: "first" }, fnClickHandler);
\r
144 $(els[1]).bind( 'click.DT', { action: "previous" }, fnClickHandler );
\r
145 $(els[2]).bind('click.DT', { action: "next" }, fnClickHandler);
\r
146 $(els[3]).bind('click.DT', { action: "last" }, fnClickHandler);
\r
149 "fnUpdate": function ( oSettings, fnDraw ) {
\r
150 var iListLength = 5;
\r
151 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
152 var an = oSettings.aanFeatures.p;
\r
153 var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);
\r
155 if ( oPaging.iTotalPages < iListLength) {
\r
157 iEnd = oPaging.iTotalPages;
\r
159 else if ( oPaging.iPage <= iHalf ) {
\r
161 iEnd = iListLength;
\r
162 } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {
\r
163 iStart = oPaging.iTotalPages - iListLength + 1;
\r
164 iEnd = oPaging.iTotalPages;
\r
166 iStart = oPaging.iPage - iHalf + 1;
\r
167 iEnd = iStart + iListLength - 1;
\r
172 for ( i=0, iLen=an.length ; i<iLen ; i++ ) {
\r
173 if (oPaging.iTotalPages < 0) {
\r
174 $('.pagination', an[i]).css('visibility', 'hidden');
\r
176 $('.pagination', an[i]).css('visibility', 'visible');
\r
179 // Remove the middle elements
\r
180 $('li:gt(1)', an[i]).filter(':not(.next)').remove();
\r
182 // Add the new list items and their event handlers
\r
183 for ( j=iStart ; j<=iEnd ; j++ ) {
\r
184 sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';
\r
185 $('<li '+sClass+'><a href="#">'+j+'</a></li>')
\r
186 .insertBefore( $('li.next:first', an[i])[0] )
\r
187 .bind('click', function (e) {
\r
188 e.preventDefault();
\r
189 oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
\r
190 fnDraw( oSettings );
\r
194 // Add / remove disabled classes from the static elements
\r
195 if ( oPaging.iPage === 0 ) {
\r
196 $('li.prev', an[i]).addClass('disabled');
\r
198 $('li.prev', an[i]).removeClass('disabled');
\r
201 if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
\r
202 $('li.next', an[i]).addClass('disabled');
\r
204 $('li.next', an[i]).removeClass('disabled');
\r
211 /* Bootstrap style full number pagination control */
\r
212 $.extend( $.fn.dataTableExt.oPagination, {
\r
213 "bootstrap_extended": {
\r
214 "fnInit": function( oSettings, nPaging, fnDraw ) {
\r
215 var oLang = oSettings.oLanguage.oPaginate;
\r
216 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
218 var fnClickHandler = function ( e ) {
\r
219 e.preventDefault();
\r
220 if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
\r
221 fnDraw( oSettings );
\r
226 '<div class="pagination-panel"> ' + oLang.sPage + ' ' +
\r
227 '<a href="#" class="btn btn-sm default prev disabled" title="' + oLang.sPrevious + '"><i class="fa fa-angle-left"></i></a>' +
\r
228 '<input type="text" class="pagination-panel-input form-control input-mini input-inline input-sm" maxlenght="5" style="text-align:center; margin: 0 5px;">' +
\r
229 '<a href="#" class="btn btn-sm default next disabled" title="' + oLang.sNext + '"><i class="fa fa-angle-right"></i></a> ' +
\r
230 oLang.sPageOf + ' <span class="pagination-panel-total"></span>' +
\r
234 var els = $('a', nPaging);
\r
236 $(els[0]).bind('click.DT', { action: "previous" }, fnClickHandler );
\r
237 $(els[1]).bind('click.DT', { action: "next" }, fnClickHandler);
\r
239 $('.pagination-panel-input', nPaging).bind('change.DT', function(e) {
\r
240 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
241 e.preventDefault();
\r
242 var page = parseInt($(this).val());
\r
243 if (page > 0 && page < oPaging.iTotalPages) {
\r
244 if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) {
\r
245 fnDraw( oSettings );
\r
248 $(this).val(oPaging.iPage + 1);
\r
252 $('.pagination-panel-input', nPaging).bind('keypress.DT', function(e) {
\r
253 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
254 if (e.which == 13) {
\r
255 var page = parseInt($(this).val());
\r
256 if (page > 0 && page < oSettings.oInstance.fnPagingInfo().iTotalPages) {
\r
257 if ( oSettings.oApi._fnPageChange(oSettings, page-1) ) {
\r
258 fnDraw( oSettings );
\r
261 $(this).val(oPaging.iPage + 1);
\r
263 e.preventDefault();
\r
268 "fnUpdate": function ( oSettings, fnDraw ) {
\r
269 var iListLength = 5;
\r
270 var oPaging = oSettings.oInstance.fnPagingInfo();
\r
271 var an = oSettings.aanFeatures.p;
\r
272 var i, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);
\r
274 if ( oPaging.iTotalPages < iListLength) {
\r
276 iEnd = oPaging.iTotalPages;
\r
278 else if ( oPaging.iPage <= iHalf ) {
\r
280 iEnd = iListLength;
\r
281 } else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {
\r
282 iStart = oPaging.iTotalPages - iListLength + 1;
\r
283 iEnd = oPaging.iTotalPages;
\r
285 iStart = oPaging.iPage - iHalf + 1;
\r
286 iEnd = iStart + iListLength - 1;
\r
290 for ( i=0, iLen=an.length ; i<iLen ; i++ ) {
\r
291 var wrapper = $(an[i]).parents(".dataTables_wrapper");
\r
293 if (oPaging.iTotalPages <= 0) {
\r
294 $('.pagination-panel, .dataTables_length', wrapper).hide();
\r
296 $('.pagination-panel, .dataTables_length', wrapper).show();
\r
299 $('.pagination-panel-total', an[i]).html(oPaging.iTotalPages);
\r
300 $('.pagination-panel-input', an[i]).val(oPaging.iPage + 1);
\r
302 // Remove the middle elements
\r
303 $('li:gt(1)', an[i]).filter(':not(.next)').remove();
\r
305 // Add the new list items and their event handlers
\r
306 for ( j=iStart ; j<=iEnd ; j++ ) {
\r
307 sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';
\r
308 $('<li '+sClass+'><a href="#">'+j+'</a></li>')
\r
309 .insertBefore( $('li.next:first', an[i])[0] )
\r
310 .bind('click', function (e) {
\r
311 e.preventDefault();
\r
312 oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
\r
313 fnDraw( oSettings );
\r
317 // Add / remove disabled classes from the static elements
\r
318 if ( oPaging.iPage === 0 ) {
\r
319 $('a.prev', an[i]).addClass('disabled');
\r
321 $('a.prev', an[i]).removeClass('disabled');
\r
324 if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
\r
325 $('a.next', an[i]).addClass('disabled');
\r
327 $('a.next', an[i]).removeClass('disabled');
\r
335 * TableTools Bootstrap compatibility
\r
336 * Required TableTools 2.1+
\r
338 if ( $.fn.DataTable.TableTools ) {
\r
339 // Set the classes that TableTools uses to something suitable for Bootstrap
\r
340 $.extend( true, $.fn.DataTable.TableTools.classes, {
\r
341 "container": "btn-group",
\r
343 "normal": "btn default",
\r
344 "disabled": "btn disabled"
\r
347 "container": "DTTT_dropdown dropdown-menu",
\r
350 "disabled": "disabled"
\r
355 // Have the collection use a bootstrap compatible dropdown
\r
356 $.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {
\r