@ -1,15 +1,12 @@
/* Set the defaults for DataTables initialisation */
$ . extend ( true , $ . fn . dataTable . defaults , {
"sDom" : "<'row'<'col-xs-6'l><'col-xs-6'f>r>t<'row'<'col-xs-6'i><'col-xs-6'p>>" ,
"sPaginationType" : "bootstrap" ,
"oLanguage" : {
"sLengthMenu" : "_MENU_ records per page"
}
} ) ;
/* Default class modification */
$ . extend ( $ . fn . dataTableExt . oStdClasses , {
"sWrapper" : "dataTables_wrapper form-inline" ,
@ -17,100 +14,196 @@ $.extend( $.fn.dataTableExt.oStdClasses, {
"sLengthSelect" : "form-control input-sm"
} ) ;
/* API method to get paging information */
$ . fn . dataTableExt . oApi . fnPagingInfo = function ( oSettings )
{
return {
"iStart" : oSettings . _iDisplayStart ,
"iEnd" : oSettings . fnDisplayEnd ( ) ,
"iLength" : oSettings . _iDisplayLength ,
"iTotal" : oSettings . fnRecordsTotal ( ) ,
"iFilteredTotal" : oSettings . fnRecordsDisplay ( ) ,
"iPage" : oSettings . _iDisplayLength === - 1 ?
0 : Math . ceil ( oSettings . _iDisplayStart / oSettings . _iDisplayLength ) ,
"iTotalPages" : oSettings . _iDisplayLength === - 1 ?
0 : Math . ceil ( oSettings . fnRecordsDisplay ( ) / oSettings . _iDisplayLength )
} ;
} ;
/* Bootstrap style pagination control */
$ . extend ( $ . fn . dataTableExt . oPagination , {
"bootstrap" : {
"fnInit" : function ( oSettings , nPaging , fnDraw ) {
var oLang = oSettings . oLanguage . oPaginate ;
var fnClickHandler = function ( e ) {
e . preventDefault ( ) ;
if ( oSettings . oApi . _fnPageChange ( oSettings , e . data . action ) ) {
fnDraw ( oSettings ) ;
}
// In 1.10 we use the pagination renderers to draw the Bootstrap paging,
// rather than custom plug-in
if ( $ . fn . dataTable . Api ) {
$ . fn . dataTable . defaults . renderer = 'bootstrap' ;
$ . fn . dataTable . ext . renderer . pageButton . bootstrap = function ( settings , host , idx , buttons , page , pages ) {
var classes = settings . oClasses ;
var lang = settings . oLanguage . oPaginate ;
var btnDisplay , btnClass ;
var attach = function ( container , buttons ) {
var i , ien , node , button ;
var clickHandler = function ( e ) {
settings . oApi . _fnPageChange ( settings , e . data . action , true ) ;
} ;
$ ( nPaging ) . append (
'<ul class="pagination">' +
'<li class="prev disabled"><a href="#">← ' + oLang . sPrevious + '</a></li>' +
'<li class="next disabled"><a href="#">' + oLang . sNext + ' → </a></li>' +
'</ul>'
) ;
var els = $ ( 'a' , nPaging ) ;
$ ( els [ 0 ] ) . bind ( 'click.DT' , { action : "previous" } , fnClickHandler ) ;
$ ( els [ 1 ] ) . bind ( 'click.DT' , { action : "next" } , fnClickHandler ) ;
} ,
"fnUpdate" : function ( oSettings , fnDraw ) {
var iListLength = 5 ;
var oPaging = oSettings . oInstance . fnPagingInfo ( ) ;
var an = oSettings . aanFeatures . p ;
var i , ien , j , sClass , iStart , iEnd , iHalf = Math . floor ( iListLength / 2 ) ;
for ( i = 0 , ien = buttons . length ; i < ien ; i ++ ) {
button = buttons [ i ] ;
if ( oPaging . iTotalPages < iListLength ) {
iStart = 1 ;
iEnd = oPaging . iTotalPages ;
}
else if ( oPaging . iPage <= iHalf ) {
iStart = 1 ;
iEnd = iListLength ;
} else if ( oPaging . iPage >= ( oPaging . iTotalPages - iHalf ) ) {
iStart = oPaging . iTotalPages - iListLength + 1 ;
iEnd = oPaging . iTotalPages ;
} else {
iStart = oPaging . iPage - iHalf + 1 ;
iEnd = iStart + iListLength - 1 ;
if ( $ . isArray ( button ) ) {
// var inner = $( '<'+(button.DT_el || 'div')+'/>' )
// .appendTo( container );
attach ( container , button ) ;
}
else {
btnDisplay = '' ;
btnClass = '' ;
switch ( button ) {
case 'ellipsis' :
container . append ( '<span>…</span>' ) ;
break ;
case 'first' :
btnDisplay = lang . sFirst ;
btnClass = button + ( page > 0 ?
'' : ' disabled' ) ;
break ;
case 'previous' :
btnDisplay = lang . sPrevious ;
btnClass = button + ( page > 0 ?
'' : ' disabled' ) ;
break ;
case 'next' :
btnDisplay = lang . sNext ;
btnClass = button + ( page < pages - 1 ?
'' : ' disabled' ) ;
break ;
case 'last' :
btnDisplay = lang . sLast ;
btnClass = button + ( page < pages - 1 ?
'' : ' disabled' ) ;
break ;
default :
btnDisplay = button + 1 ;
btnClass = page === button ?
'active' : '' ;
break ;
}
if ( btnDisplay ) {
node = $ ( '<li>' , {
'class' : classes . sPageButton + ' ' + btnClass ,
'aria-controls' : settings . sTableId ,
'tabindex' : settings . iTabIndex ,
'id' : idx === 0 && typeof button === 'string' ?
settings . sTableId + '_' + button :
null
} )
. append ( $ ( '<a>' , {
'href' : '#'
} )
. html ( btnDisplay )
)
. appendTo ( container ) ;
settings . oApi . _fnBindAction (
node , { action : button } , clickHandler
) ;
}
}
}
} ;
for ( i = 0 , ien = an . length ; i < ien ; i ++ ) {
// Remove the middle elements
$ ( 'li:gt(0)' , an [ i ] ) . filter ( ':not(:last)' ) . remove ( ) ;
// Add the new list items and their event handlers
for ( j = iStart ; j <= iEnd ; j ++ ) {
sClass = ( j == oPaging . iPage + 1 ) ? 'class="active"' : '' ;
$ ( '<li ' + sClass + '><a href="#">' + j + '</a></li>' )
. insertBefore ( $ ( 'li:last' , an [ i ] ) [ 0 ] )
. bind ( 'click' , function ( e ) {
e . preventDefault ( ) ;
oSettings . _iDisplayStart = ( parseInt ( $ ( 'a' , this ) . text ( ) , 10 ) - 1 ) * oPaging . iLength ;
fnDraw ( oSettings ) ;
} ) ;
}
attach (
$ ( host ) . empty ( ) . html ( '<ul class="pagination"/>' ) . children ( 'ul' ) ,
buttons
) ;
}
}
else {
// Integration for 1.9-
$ . fn . dataTable . defaults . sPaginationType = 'bootstrap' ;
/* API method to get paging information */
$ . fn . dataTableExt . oApi . fnPagingInfo = function ( oSettings )
{
return {
"iStart" : oSettings . _iDisplayStart ,
"iEnd" : oSettings . fnDisplayEnd ( ) ,
"iLength" : oSettings . _iDisplayLength ,
"iTotal" : oSettings . fnRecordsTotal ( ) ,
"iFilteredTotal" : oSettings . fnRecordsDisplay ( ) ,
"iPage" : oSettings . _iDisplayLength === - 1 ?
0 : Math . ceil ( oSettings . _iDisplayStart / oSettings . _iDisplayLength ) ,
"iTotalPages" : oSettings . _iDisplayLength === - 1 ?
0 : Math . ceil ( oSettings . fnRecordsDisplay ( ) / oSettings . _iDisplayLength )
} ;
} ;
// Add / remove disabled classes from the static elements
if ( oPaging . iPage === 0 ) {
$ ( 'li:first' , an [ i ] ) . addClass ( 'disabled' ) ;
/* Bootstrap style pagination control */
$ . extend ( $ . fn . dataTableExt . oPagination , {
"bootstrap" : {
"fnInit" : function ( oSettings , nPaging , fnDraw ) {
var oLang = oSettings . oLanguage . oPaginate ;
var fnClickHandler = function ( e ) {
e . preventDefault ( ) ;
if ( oSettings . oApi . _fnPageChange ( oSettings , e . data . action ) ) {
fnDraw ( oSettings ) ;
}
} ;
$ ( nPaging ) . append (
'<ul class="pagination">' +
'<li class="prev disabled"><a href="#">← ' + oLang . sPrevious + '</a></li>' +
'<li class="next disabled"><a href="#">' + oLang . sNext + ' → </a></li>' +
'</ul>'
) ;
var els = $ ( 'a' , nPaging ) ;
$ ( els [ 0 ] ) . bind ( 'click.DT' , { action : "previous" } , fnClickHandler ) ;
$ ( els [ 1 ] ) . bind ( 'click.DT' , { action : "next" } , fnClickHandler ) ;
} ,
"fnUpdate" : function ( oSettings , fnDraw ) {
var iListLength = 5 ;
var oPaging = oSettings . oInstance . fnPagingInfo ( ) ;
var an = oSettings . aanFeatures . p ;
var i , ien , j , sClass , iStart , iEnd , iHalf = Math . floor ( iListLength / 2 ) ;
if ( oPaging . iTotalPages < iListLength ) {
iStart = 1 ;
iEnd = oPaging . iTotalPages ;
}
else if ( oPaging . iPage <= iHalf ) {
iStart = 1 ;
iEnd = iListLength ;
} else if ( oPaging . iPage >= ( oPaging . iTotalPages - iHalf ) ) {
iStart = oPaging . iTotalPages - iListLength + 1 ;
iEnd = oPaging . iTotalPages ;
} else {
$ ( 'li:first' , an [ i ] ) . removeClass ( 'disabled' ) ;
iStart = oPaging . iPage - iHalf + 1 ;
iEnd = iStart + iListLength - 1 ;
}
if ( oPaging . iPage === oPaging . iTotalPages - 1 || oPaging . iTotalPages === 0 ) {
$ ( 'li:last' , an [ i ] ) . addClass ( 'disabled' ) ;
} else {
$ ( 'li:last' , an [ i ] ) . removeClass ( 'disabled' ) ;
for ( i = 0 , ien = an . length ; i < ien ; i ++ ) {
// Remove the middle elements
$ ( 'li:gt(0)' , an [ i ] ) . filter ( ':not(:last)' ) . remove ( ) ;
// Add the new list items and their event handlers
for ( j = iStart ; j <= iEnd ; j ++ ) {
sClass = ( j == oPaging . iPage + 1 ) ? 'class="active"' : '' ;
$ ( '<li ' + sClass + '><a href="#">' + j + '</a></li>' )
. insertBefore ( $ ( 'li:last' , an [ i ] ) [ 0 ] )
. bind ( 'click' , function ( e ) {
e . preventDefault ( ) ;
oSettings . _iDisplayStart = ( parseInt ( $ ( 'a' , this ) . text ( ) , 10 ) - 1 ) * oPaging . iLength ;
fnDraw ( oSettings ) ;
} ) ;
}
// Add / remove disabled classes from the static elements
if ( oPaging . iPage === 0 ) {
$ ( 'li:first' , an [ i ] ) . addClass ( 'disabled' ) ;
} else {
$ ( 'li:first' , an [ i ] ) . removeClass ( 'disabled' ) ;
}
if ( oPaging . iPage === oPaging . iTotalPages - 1 || oPaging . iTotalPages === 0 ) {
$ ( 'li:last' , an [ i ] ) . addClass ( 'disabled' ) ;
} else {
$ ( 'li:last' , an [ i ] ) . removeClass ( 'disabled' ) ;
}
}
}
}
}
} ) ;
} ) ;
}
/ *