/** * jQuery DataTables jPaginator plugin v1.0 - integration between DataTables and * jPaginator * by Ernani Azevedo * * You'll need jQuery DataTables (http://datatables.net/) and jPaginator * (http://remylab.github.com/jpaginator/) loaded before load this one. * * Full description is available here: * http://www.intellinews.com.br/blog/2012/10/26/jquery-datatables-integration-with-jpaginator-4/ * * @license GPL v3.0. * @example * // Initialise DataTables with jPaginator paging * $('#example').dataTable ( { * 'sPaginationType': 'jPaginator' * } ); */ // API method to get paging information (Got idea from Twitter Bootstrap plugin): $.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings) { if ( oSettings) { return { "iStart": oSettings._iDisplayStart, "iEnd": oSettings.fnDisplayEnd (), "iLength": oSettings._iDisplayLength, "iTotal": oSettings.fnRecordsTotal (), "iFilteredTotal": oSettings.fnRecordsDisplay (), "iPage": Math.ceil ( oSettings._iDisplayStart / oSettings._iDisplayLength), "iTotalPages": Math.ceil ( oSettings.fnRecordsDisplay () / oSettings._iDisplayLength)}; } else { return { "iStart": 0, "iEnd": 0, "iLength": 0, "iTotal": 0, "iFilteredTotal": 0, "iPage": 0, "iTotalPages": 0 } } }; // Extends DataTable to support jPaginator pagination style: $.fn.dataTableExt.oPagination.jPaginator = { 'paginator': $('').html ( '
'), 'fnInit': function ( oSettings, nPaging, fnCallbackDraw) { $(nPaging).prepend ( this.paginator); $(this.paginator).jPaginator ( { selectedPage: 1, nbPages: 1, nbVisible: 6, overBtnLeft: '#o_left', overBtnRight: '#o_right', maxBtnLeft: '#m_left', maxBtnRight: '#m_right', minSlidesForSlider: 2, onPageClicked: function ( a, num) { if ( num - 1 == Math.ceil ( oSettings._iDisplayStart / oSettings._iDisplayLength)) { return; } oSettings._iDisplayStart = ( num - 1) * oSettings._iDisplayLength; fnCallbackDraw ( oSettings); } }).addClass ( 'jPaginator'); }, 'fnUpdate': function ( oSettings, fnCallbackDraw) { if ( ! oSettings.aanFeatures.p) { return; } var oPaging = oSettings.oInstance.fnPagingInfo (); $(this.paginator).trigger ( 'reset', { nbVisible: 6, selectedPage: oPaging.iPage + 1, nbPages: oPaging.iTotalPages}); } };