datatables-rails-bs3 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/lib/datatables-rails-bs3.rb +2 -0
- data/lib/jquery/datatables/rails/engine.rb +11 -0
- data/lib/jquery/datatables/rails/version.rb +7 -0
- data/vendor/assets/images/dataTables/back_disabled.png +0 -0
- data/vendor/assets/images/dataTables/back_enabled.png +0 -0
- data/vendor/assets/images/dataTables/back_enabled_hover.png +0 -0
- data/vendor/assets/images/dataTables/extras/background.png +0 -0
- data/vendor/assets/images/dataTables/extras/collection.png +0 -0
- data/vendor/assets/images/dataTables/extras/collection_hover.png +0 -0
- data/vendor/assets/images/dataTables/extras/copy.png +0 -0
- data/vendor/assets/images/dataTables/extras/copy_hover.png +0 -0
- data/vendor/assets/images/dataTables/extras/csv.png +0 -0
- data/vendor/assets/images/dataTables/extras/csv_hover.png +0 -0
- data/vendor/assets/images/dataTables/extras/pdf.png +0 -0
- data/vendor/assets/images/dataTables/extras/pdf_hover.png +0 -0
- data/vendor/assets/images/dataTables/extras/print.png +0 -0
- data/vendor/assets/images/dataTables/extras/print_hover.png +0 -0
- data/vendor/assets/images/dataTables/extras/xls.png +0 -0
- data/vendor/assets/images/dataTables/extras/xls_hover.png +0 -0
- data/vendor/assets/images/dataTables/favicon.ico +0 -0
- data/vendor/assets/images/dataTables/forward_disabled.png +0 -0
- data/vendor/assets/images/dataTables/forward_enabled.png +0 -0
- data/vendor/assets/images/dataTables/forward_enabled_hover.png +0 -0
- data/vendor/assets/images/dataTables/sort_asc.png +0 -0
- data/vendor/assets/images/dataTables/sort_asc_disabled.png +0 -0
- data/vendor/assets/images/dataTables/sort_both.png +0 -0
- data/vendor/assets/images/dataTables/sort_desc.png +0 -0
- data/vendor/assets/images/dataTables/sort_desc_disabled.png +0 -0
- data/vendor/assets/javascripts/dataTables/extras/AutoFill.js +820 -0
- data/vendor/assets/javascripts/dataTables/extras/ColReorder.js +956 -0
- data/vendor/assets/javascripts/dataTables/extras/ColVis.js +1013 -0
- data/vendor/assets/javascripts/dataTables/extras/FixedColumns.js +1240 -0
- data/vendor/assets/javascripts/dataTables/extras/FixedHeader.js +937 -0
- data/vendor/assets/javascripts/dataTables/extras/KeyTable.js +1111 -0
- data/vendor/assets/javascripts/dataTables/extras/Scroller.js +904 -0
- data/vendor/assets/javascripts/dataTables/extras/TableTools.js +2424 -0
- data/vendor/assets/javascripts/dataTables/extras/TableTools.min.js +76 -0
- data/vendor/assets/javascripts/dataTables/extras/ZeroClipboard.js +367 -0
- data/vendor/assets/javascripts/dataTables/jquery.dataTables.api.fnFilterOnReturn.js +17 -0
- data/vendor/assets/javascripts/dataTables/jquery.dataTables.api.fnGetColumnData.js +54 -0
- data/vendor/assets/javascripts/dataTables/jquery.dataTables.api.fnReloadAjax.js +44 -0
- data/vendor/assets/javascripts/dataTables/jquery.dataTables.api.fnSetFilteringDelay.js +32 -0
- data/vendor/assets/javascripts/dataTables/jquery.dataTables.bootstrap.js +383 -0
- data/vendor/assets/javascripts/dataTables/jquery.dataTables.js +12098 -0
- data/vendor/assets/javascripts/dataTables/jquery.dataTables.sorting.numbersHtml.js +15 -0
- data/vendor/assets/javascripts/dataTables/jquery.dataTables.typeDetection.numbersHtml.js +40 -0
- data/vendor/assets/media/dataTables/extras/as3/ZeroClipboard.as +221 -0
- data/vendor/assets/media/dataTables/extras/as3/ZeroClipboardPdf.as +310 -0
- data/vendor/assets/media/dataTables/extras/as3/lib/AlivePDF.swc +0 -0
- data/vendor/assets/media/dataTables/extras/swf/copy_csv_xls.swf +0 -0
- data/vendor/assets/media/dataTables/extras/swf/copy_csv_xls_pdf.swf +0 -0
- data/vendor/assets/stylesheets/dataTables/extras/TableTools.css +314 -0
- data/vendor/assets/stylesheets/dataTables/extras/TableTools_JUI.css +185 -0
- data/vendor/assets/stylesheets/dataTables/jquery.dataTables.bootstrap.css.scss +177 -0
- data/vendor/assets/stylesheets/dataTables/jquery.dataTables.css.scss +220 -0
- data/vendor/assets/stylesheets/dataTables/src/demo_page.css +107 -0
- data/vendor/assets/stylesheets/dataTables/src/demo_table.css +575 -0
- data/vendor/assets/stylesheets/dataTables/src/demo_table_jui.css +530 -0
- data/vendor/assets/stylesheets/dataTables/src/jquery.dataTables_themeroller.css +243 -0
- metadata +116 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
(function($) {
|
2
|
+
/*
|
3
|
+
* Function: fnGetColumnData
|
4
|
+
* Purpose: Return an array of table values from a particular column.
|
5
|
+
* Returns: array string: 1d data array
|
6
|
+
* Inputs: object:oSettings - dataTable settings object. This is always the last argument past to the function
|
7
|
+
* int:iColumn - the id of the column to extract the data from
|
8
|
+
* bool:bUnique - optional - if set to false duplicated values are not filtered out
|
9
|
+
* bool:bFiltered - optional - if set to false all the table data is used (not only the filtered)
|
10
|
+
* bool:bIgnoreEmpty - optional - if set to false empty values are not filtered from the result array
|
11
|
+
* Author: Benedikt Forchhammer <b.forchhammer /AT\ mind2.de>
|
12
|
+
*/
|
13
|
+
$.fn.dataTableExt.oApi.fnGetColumnData = function ( oSettings, iColumn, bUnique, bFiltered, bIgnoreEmpty ) {
|
14
|
+
// check that we have a column id
|
15
|
+
if ( typeof iColumn == "undefined" ) return new Array();
|
16
|
+
|
17
|
+
// by default we only wany unique data
|
18
|
+
if ( typeof bUnique == "undefined" ) bUnique = true;
|
19
|
+
|
20
|
+
// by default we do want to only look at filtered data
|
21
|
+
if ( typeof bFiltered == "undefined" ) bFiltered = true;
|
22
|
+
|
23
|
+
// by default we do not wany to include empty values
|
24
|
+
if ( typeof bIgnoreEmpty == "undefined" ) bIgnoreEmpty = true;
|
25
|
+
|
26
|
+
// list of rows which we're going to loop through
|
27
|
+
var aiRows;
|
28
|
+
|
29
|
+
// use only filtered rows
|
30
|
+
if (bFiltered == true) aiRows = oSettings.aiDisplay;
|
31
|
+
// use all rows
|
32
|
+
else aiRows = oSettings.aiDisplayMaster; // all row numbers
|
33
|
+
|
34
|
+
// set up data array
|
35
|
+
var asResultData = new Array();
|
36
|
+
|
37
|
+
for (var i=0,c=aiRows.length; i<c; i++) {
|
38
|
+
iRow = aiRows[i];
|
39
|
+
var sValue = this.fnGetData(iRow, iColumn);
|
40
|
+
|
41
|
+
// ignore empty values?
|
42
|
+
if (bIgnoreEmpty == true && sValue.length == 0) continue;
|
43
|
+
|
44
|
+
// ignore unique values?
|
45
|
+
else if (bUnique == true && jQuery.inArray(sValue, asResultData) > -1) continue;
|
46
|
+
|
47
|
+
// else push the value onto the result data array
|
48
|
+
else asResultData.push(sValue);
|
49
|
+
}
|
50
|
+
|
51
|
+
return asResultData;
|
52
|
+
}
|
53
|
+
|
54
|
+
}(jQuery));
|
@@ -0,0 +1,44 @@
|
|
1
|
+
$.fn.dataTableExt.oApi.fnReloadAjax = function ( oSettings, sNewSource, fnCallback, bStandingRedraw )
|
2
|
+
{
|
3
|
+
if ( typeof sNewSource != 'undefined' && sNewSource != null )
|
4
|
+
{
|
5
|
+
oSettings.sAjaxSource = sNewSource;
|
6
|
+
}
|
7
|
+
this.oApi._fnProcessingDisplay( oSettings, true );
|
8
|
+
var that = this;
|
9
|
+
var iStart = oSettings._iDisplayStart;
|
10
|
+
var aData = [];
|
11
|
+
|
12
|
+
this.oApi._fnServerParams( oSettings, aData );
|
13
|
+
|
14
|
+
oSettings.fnServerData( oSettings.sAjaxSource, aData, function(json) {
|
15
|
+
/* Clear the old information from the table */
|
16
|
+
that.oApi._fnClearTable( oSettings );
|
17
|
+
|
18
|
+
/* Got the data - add it to the table */
|
19
|
+
var aData = (oSettings.sAjaxDataProp !== "") ?
|
20
|
+
that.oApi._fnGetObjectDataFn( oSettings.sAjaxDataProp )( json ) : json;
|
21
|
+
|
22
|
+
for ( var i=0 ; i<aData.length ; i++ )
|
23
|
+
{
|
24
|
+
that.oApi._fnAddData( oSettings, aData[i] );
|
25
|
+
}
|
26
|
+
|
27
|
+
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
|
28
|
+
that.fnDraw();
|
29
|
+
|
30
|
+
if ( typeof bStandingRedraw != 'undefined' && bStandingRedraw === true )
|
31
|
+
{
|
32
|
+
oSettings._iDisplayStart = iStart;
|
33
|
+
that.fnDraw( false );
|
34
|
+
}
|
35
|
+
|
36
|
+
that.oApi._fnProcessingDisplay( oSettings, false );
|
37
|
+
|
38
|
+
/* Callback user function - for event handlers etc */
|
39
|
+
if ( typeof fnCallback == 'function' && fnCallback != null )
|
40
|
+
{
|
41
|
+
fnCallback( oSettings );
|
42
|
+
}
|
43
|
+
}, oSettings );
|
44
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
jQuery.fn.dataTableExt.oApi.fnSetFilteringDelay = function ( oSettings, iDelay ) {
|
2
|
+
var _that = this;
|
3
|
+
|
4
|
+
if ( iDelay === undefined ) {
|
5
|
+
iDelay = 250;
|
6
|
+
}
|
7
|
+
|
8
|
+
this.each( function ( i ) {
|
9
|
+
$.fn.dataTableExt.iApiIndex = i;
|
10
|
+
var
|
11
|
+
$this = this,
|
12
|
+
oTimerId = null,
|
13
|
+
sPreviousSearch = null,
|
14
|
+
anControl = $( 'input', _that.fnSettings().aanFeatures.f );
|
15
|
+
|
16
|
+
anControl.unbind( 'keyup' ).bind( 'keyup', function() {
|
17
|
+
var $$this = $this;
|
18
|
+
|
19
|
+
if (sPreviousSearch === null || sPreviousSearch != anControl.val()) {
|
20
|
+
window.clearTimeout(oTimerId);
|
21
|
+
sPreviousSearch = anControl.val();
|
22
|
+
oTimerId = window.setTimeout(function() {
|
23
|
+
$.fn.dataTableExt.iApiIndex = i;
|
24
|
+
_that.fnFilter( anControl.val() );
|
25
|
+
}, iDelay);
|
26
|
+
}
|
27
|
+
});
|
28
|
+
|
29
|
+
return this;
|
30
|
+
} );
|
31
|
+
return this;
|
32
|
+
};
|
@@ -0,0 +1,383 @@
|
|
1
|
+
/* Set the defaults for DataTables initialisation */
|
2
|
+
$.extend( true, $.fn.dataTable.defaults, {
|
3
|
+
"sDom": "<'row'<'col-sm-12'<'pull-right'f><'pull-left'l>r<'clearfix'>>>t<'row'<'col-sm-12'<'pull-left'i><'pull-right'p><'clearfix'>>>",
|
4
|
+
"sPaginationType": "bs_normal",
|
5
|
+
"oLanguage": {
|
6
|
+
"sLengthMenu": "Show _MENU_ Rows",
|
7
|
+
"sSearch": ""
|
8
|
+
}
|
9
|
+
} );
|
10
|
+
|
11
|
+
/* Default class modification */
|
12
|
+
$.extend( $.fn.dataTableExt.oStdClasses, {
|
13
|
+
"sWrapper": "dataTables_wrapper form-inline"
|
14
|
+
} );
|
15
|
+
|
16
|
+
/* API method to get paging information */
|
17
|
+
$.fn.dataTableExt.oApi.fnPagingInfo = function ( oSettings )
|
18
|
+
{
|
19
|
+
return {
|
20
|
+
"iStart": oSettings._iDisplayStart,
|
21
|
+
"iEnd": oSettings.fnDisplayEnd(),
|
22
|
+
"iLength": oSettings._iDisplayLength,
|
23
|
+
"iTotal": oSettings.fnRecordsTotal(),
|
24
|
+
"iFilteredTotal": oSettings.fnRecordsDisplay(),
|
25
|
+
"iPage": oSettings._iDisplayLength === -1 ?
|
26
|
+
0 : Math.ceil( oSettings._iDisplayStart / oSettings._iDisplayLength ),
|
27
|
+
"iTotalPages": oSettings._iDisplayLength === -1 ?
|
28
|
+
0 : Math.ceil( oSettings.fnRecordsDisplay() / oSettings._iDisplayLength )
|
29
|
+
};
|
30
|
+
};
|
31
|
+
|
32
|
+
/* Bootstrap style pagination control */
|
33
|
+
$.extend( $.fn.dataTableExt.oPagination, {
|
34
|
+
"bs_normal": {
|
35
|
+
"fnInit": function( oSettings, nPaging, fnDraw ) {
|
36
|
+
var oLang = oSettings.oLanguage.oPaginate;
|
37
|
+
var fnClickHandler = function ( e ) {
|
38
|
+
e.preventDefault();
|
39
|
+
if ( oSettings.oApi._fnPageChange(oSettings, e.data.action) ) {
|
40
|
+
fnDraw( oSettings );
|
41
|
+
}
|
42
|
+
};
|
43
|
+
$(nPaging).append(
|
44
|
+
'<ul class="pagination">'+
|
45
|
+
'<li class="prev disabled"><a href="#"><span class="glyphicon glyphicon-chevron-left"></span> '+oLang.sPrevious+'</a></li>'+
|
46
|
+
'<li class="next disabled"><a href="#">'+oLang.sNext+' <span class="glyphicon glyphicon-chevron-right"></span></a></li>'+
|
47
|
+
'</ul>'
|
48
|
+
);
|
49
|
+
var els = $('a', nPaging);
|
50
|
+
$(els[0]).bind( 'click.DT', { action: "previous" }, fnClickHandler );
|
51
|
+
$(els[1]).bind( 'click.DT', { action: "next" }, fnClickHandler );
|
52
|
+
},
|
53
|
+
"fnUpdate": function ( oSettings, fnDraw ) {
|
54
|
+
var iListLength = 5;
|
55
|
+
var oPaging = oSettings.oInstance.fnPagingInfo();
|
56
|
+
var an = oSettings.aanFeatures.p;
|
57
|
+
var i, ien, j, sClass, iStart, iEnd, iHalf=Math.floor(iListLength/2);
|
58
|
+
if ( oPaging.iTotalPages < iListLength) {
|
59
|
+
iStart = 1;
|
60
|
+
iEnd = oPaging.iTotalPages;
|
61
|
+
}
|
62
|
+
else if ( oPaging.iPage <= iHalf ) {
|
63
|
+
iStart = 1;
|
64
|
+
iEnd = iListLength;
|
65
|
+
} else if ( oPaging.iPage >= (oPaging.iTotalPages-iHalf) ) {
|
66
|
+
iStart = oPaging.iTotalPages - iListLength + 1;
|
67
|
+
iEnd = oPaging.iTotalPages;
|
68
|
+
} else {
|
69
|
+
iStart = oPaging.iPage - iHalf + 1;
|
70
|
+
iEnd = iStart + iListLength - 1;
|
71
|
+
}
|
72
|
+
for ( i=0, ien=an.length ; i<ien ; i++ ) {
|
73
|
+
$('li:gt(0)', an[i]).filter(':not(:last)').remove();
|
74
|
+
for ( j=iStart ; j<=iEnd ; j++ ) {
|
75
|
+
sClass = (j==oPaging.iPage+1) ? 'class="active"' : '';
|
76
|
+
$('<li '+sClass+'><a href="#">'+j+'</a></li>')
|
77
|
+
.insertBefore( $('li:last', an[i])[0] )
|
78
|
+
.bind('click', function (e) {
|
79
|
+
e.preventDefault();
|
80
|
+
oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
|
81
|
+
fnDraw( oSettings );
|
82
|
+
} );
|
83
|
+
}
|
84
|
+
if ( oPaging.iPage === 0 ) {
|
85
|
+
$('li:first', an[i]).addClass('disabled');
|
86
|
+
} else {
|
87
|
+
$('li:first', an[i]).removeClass('disabled');
|
88
|
+
}
|
89
|
+
|
90
|
+
if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
|
91
|
+
$('li:last', an[i]).addClass('disabled');
|
92
|
+
} else {
|
93
|
+
$('li:last', an[i]).removeClass('disabled');
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
},
|
98
|
+
"bs_two_button": {
|
99
|
+
"fnInit": function ( oSettings, nPaging, fnCallbackDraw )
|
100
|
+
{
|
101
|
+
var oLang = oSettings.oLanguage.oPaginate;
|
102
|
+
var oClasses = oSettings.oClasses;
|
103
|
+
var fnClickHandler = function ( e ) {
|
104
|
+
if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
|
105
|
+
{
|
106
|
+
fnCallbackDraw( oSettings );
|
107
|
+
}
|
108
|
+
};
|
109
|
+
var sAppend = '<ul class="pagination">'+
|
110
|
+
'<li class="prev"><a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="glyphicon glyphicon-chevron-left"></span> '+oLang.sPrevious+'</a></li>'+
|
111
|
+
'<li class="next"><a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sNext+' <span class="glyphicon glyphicon-chevron-right"></span></a></li>'+
|
112
|
+
'</ul>';
|
113
|
+
$(nPaging).append( sAppend );
|
114
|
+
var els = $('a', nPaging);
|
115
|
+
var nPrevious = els[0],
|
116
|
+
nNext = els[1];
|
117
|
+
oSettings.oApi._fnBindAction( nPrevious, {action: "previous"}, fnClickHandler );
|
118
|
+
oSettings.oApi._fnBindAction( nNext, {action: "next"}, fnClickHandler );
|
119
|
+
if ( !oSettings.aanFeatures.p )
|
120
|
+
{
|
121
|
+
nPaging.id = oSettings.sTableId+'_paginate';
|
122
|
+
nPrevious.id = oSettings.sTableId+'_previous';
|
123
|
+
nNext.id = oSettings.sTableId+'_next';
|
124
|
+
nPrevious.setAttribute('aria-controls', oSettings.sTableId);
|
125
|
+
nNext.setAttribute('aria-controls', oSettings.sTableId);
|
126
|
+
}
|
127
|
+
},
|
128
|
+
"fnUpdate": function ( oSettings, fnCallbackDraw )
|
129
|
+
{
|
130
|
+
if ( !oSettings.aanFeatures.p )
|
131
|
+
{
|
132
|
+
return;
|
133
|
+
}
|
134
|
+
var oPaging = oSettings.oInstance.fnPagingInfo();
|
135
|
+
var oClasses = oSettings.oClasses;
|
136
|
+
var an = oSettings.aanFeatures.p;
|
137
|
+
var nNode;
|
138
|
+
for ( var i=0, iLen=an.length ; i<iLen ; i++ )
|
139
|
+
{
|
140
|
+
if ( oPaging.iPage === 0 ) {
|
141
|
+
$('li:first', an[i]).addClass('disabled');
|
142
|
+
} else {
|
143
|
+
$('li:first', an[i]).removeClass('disabled');
|
144
|
+
}
|
145
|
+
|
146
|
+
if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
|
147
|
+
$('li:last', an[i]).addClass('disabled');
|
148
|
+
} else {
|
149
|
+
$('li:last', an[i]).removeClass('disabled');
|
150
|
+
}
|
151
|
+
}
|
152
|
+
}
|
153
|
+
},
|
154
|
+
"bs_four_button": {
|
155
|
+
"fnInit": function ( oSettings, nPaging, fnCallbackDraw )
|
156
|
+
{
|
157
|
+
var oLang = oSettings.oLanguage.oPaginate;
|
158
|
+
var oClasses = oSettings.oClasses;
|
159
|
+
var fnClickHandler = function ( e ) {
|
160
|
+
if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
|
161
|
+
{
|
162
|
+
fnCallbackDraw( oSettings );
|
163
|
+
}
|
164
|
+
};
|
165
|
+
$(nPaging).append(
|
166
|
+
'<ul class="pagination">'+
|
167
|
+
'<li class="disabled"><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageFirst+'"><span class="glyphicon glyphicon-backward"></span> '+oLang.sFirst+'</a></li>'+
|
168
|
+
'<li class="disabled"><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPagePrevious+'"><span class="glyphicon glyphicon-chevron-left"></span> '+oLang.sPrevious+'</a></li>'+
|
169
|
+
'<li><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageNext+'">'+oLang.sNext+' <span class="glyphicon glyphicon-chevron-right"></span></a></li>'+
|
170
|
+
'<li><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageLast+'">'+oLang.sLast+' <span class="glyphicon glyphicon-forward"></span></a></li>'+
|
171
|
+
'</ul>'
|
172
|
+
);
|
173
|
+
var els = $('a', nPaging);
|
174
|
+
var nFirst = els[0],
|
175
|
+
nPrev = els[1],
|
176
|
+
nNext = els[2],
|
177
|
+
nLast = els[3];
|
178
|
+
oSettings.oApi._fnBindAction( nFirst, {action: "first"}, fnClickHandler );
|
179
|
+
oSettings.oApi._fnBindAction( nPrev, {action: "previous"}, fnClickHandler );
|
180
|
+
oSettings.oApi._fnBindAction( nNext, {action: "next"}, fnClickHandler );
|
181
|
+
oSettings.oApi._fnBindAction( nLast, {action: "last"}, fnClickHandler );
|
182
|
+
if ( !oSettings.aanFeatures.p )
|
183
|
+
{
|
184
|
+
nPaging.id = oSettings.sTableId+'_paginate';
|
185
|
+
nFirst.id =oSettings.sTableId+'_first';
|
186
|
+
nPrev.id =oSettings.sTableId+'_previous';
|
187
|
+
nNext.id =oSettings.sTableId+'_next';
|
188
|
+
nLast.id =oSettings.sTableId+'_last';
|
189
|
+
}
|
190
|
+
},
|
191
|
+
"fnUpdate": function ( oSettings, fnCallbackDraw )
|
192
|
+
{
|
193
|
+
if ( !oSettings.aanFeatures.p )
|
194
|
+
{
|
195
|
+
return;
|
196
|
+
}
|
197
|
+
var oPaging = oSettings.oInstance.fnPagingInfo();
|
198
|
+
var oClasses = oSettings.oClasses;
|
199
|
+
var an = oSettings.aanFeatures.p;
|
200
|
+
var nNode;
|
201
|
+
for ( var i=0, iLen=an.length ; i<iLen ; i++ )
|
202
|
+
{
|
203
|
+
if ( oPaging.iPage === 0 ) {
|
204
|
+
$('li:eq(0)', an[i]).addClass('disabled');
|
205
|
+
$('li:eq(1)', an[i]).addClass('disabled');
|
206
|
+
} else {
|
207
|
+
$('li:eq(0)', an[i]).removeClass('disabled');
|
208
|
+
$('li:eq(1)', an[i]).removeClass('disabled');
|
209
|
+
}
|
210
|
+
|
211
|
+
if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
|
212
|
+
$('li:eq(2)', an[i]).addClass('disabled');
|
213
|
+
$('li:eq(3)', an[i]).addClass('disabled');
|
214
|
+
} else {
|
215
|
+
$('li:eq(2)', an[i]).removeClass('disabled');
|
216
|
+
$('li:eq(3)', an[i]).removeClass('disabled');
|
217
|
+
}
|
218
|
+
}
|
219
|
+
}
|
220
|
+
},
|
221
|
+
"bs_full": {
|
222
|
+
"fnInit": function ( oSettings, nPaging, fnCallbackDraw )
|
223
|
+
{
|
224
|
+
var oLang = oSettings.oLanguage.oPaginate;
|
225
|
+
var oClasses = oSettings.oClasses;
|
226
|
+
var fnClickHandler = function ( e ) {
|
227
|
+
if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
|
228
|
+
{
|
229
|
+
fnCallbackDraw( oSettings );
|
230
|
+
}
|
231
|
+
};
|
232
|
+
$(nPaging).append(
|
233
|
+
'<ul class="pagination">'+
|
234
|
+
'<li class="disabled"><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageFirst+'">'+oLang.sFirst+'</a></li>'+
|
235
|
+
'<li class="disabled"><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPagePrevious+'">'+oLang.sPrevious+'</a></li>'+
|
236
|
+
'<li><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageNext+'">'+oLang.sNext+'</a></li>'+
|
237
|
+
'<li><a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageLast+'">'+oLang.sLast+'</a></li>'+
|
238
|
+
'</ul>'
|
239
|
+
);
|
240
|
+
var els = $('a', nPaging);
|
241
|
+
var nFirst = els[0],
|
242
|
+
nPrev = els[1],
|
243
|
+
nNext = els[2],
|
244
|
+
nLast = els[3];
|
245
|
+
oSettings.oApi._fnBindAction( nFirst, {action: "first"}, fnClickHandler );
|
246
|
+
oSettings.oApi._fnBindAction( nPrev, {action: "previous"}, fnClickHandler );
|
247
|
+
oSettings.oApi._fnBindAction( nNext, {action: "next"}, fnClickHandler );
|
248
|
+
oSettings.oApi._fnBindAction( nLast, {action: "last"}, fnClickHandler );
|
249
|
+
if ( !oSettings.aanFeatures.p )
|
250
|
+
{
|
251
|
+
nPaging.id = oSettings.sTableId+'_paginate';
|
252
|
+
nFirst.id =oSettings.sTableId+'_first';
|
253
|
+
nPrev.id =oSettings.sTableId+'_previous';
|
254
|
+
nNext.id =oSettings.sTableId+'_next';
|
255
|
+
nLast.id =oSettings.sTableId+'_last';
|
256
|
+
}
|
257
|
+
},
|
258
|
+
"fnUpdate": function ( oSettings, fnCallbackDraw )
|
259
|
+
{
|
260
|
+
if ( !oSettings.aanFeatures.p )
|
261
|
+
{
|
262
|
+
return;
|
263
|
+
}
|
264
|
+
var oPaging = oSettings.oInstance.fnPagingInfo();
|
265
|
+
var iPageCount = $.fn.dataTableExt.oPagination.iFullNumbersShowPages;
|
266
|
+
var iPageCountHalf = Math.floor(iPageCount / 2);
|
267
|
+
var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);
|
268
|
+
var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
|
269
|
+
var sList = "";
|
270
|
+
var iStartButton, iEndButton, i, iLen;
|
271
|
+
var oClasses = oSettings.oClasses;
|
272
|
+
var anButtons, anStatic, nPaginateList, nNode;
|
273
|
+
var an = oSettings.aanFeatures.p;
|
274
|
+
var fnBind = function (j) {
|
275
|
+
oSettings.oApi._fnBindAction( this, {"page": j+iStartButton-1}, function(e) {
|
276
|
+
oSettings.oApi._fnPageChange( oSettings, e.data.page );
|
277
|
+
fnCallbackDraw( oSettings );
|
278
|
+
e.preventDefault();
|
279
|
+
} );
|
280
|
+
};
|
281
|
+
if ( oSettings._iDisplayLength === -1 )
|
282
|
+
{
|
283
|
+
iStartButton = 1;
|
284
|
+
iEndButton = 1;
|
285
|
+
iCurrentPage = 1;
|
286
|
+
}
|
287
|
+
else if (iPages < iPageCount)
|
288
|
+
{
|
289
|
+
iStartButton = 1;
|
290
|
+
iEndButton = iPages;
|
291
|
+
}
|
292
|
+
else if (iCurrentPage <= iPageCountHalf)
|
293
|
+
{
|
294
|
+
iStartButton = 1;
|
295
|
+
iEndButton = iPageCount;
|
296
|
+
}
|
297
|
+
else if (iCurrentPage >= (iPages - iPageCountHalf))
|
298
|
+
{
|
299
|
+
iStartButton = iPages - iPageCount + 1;
|
300
|
+
iEndButton = iPages;
|
301
|
+
}
|
302
|
+
else
|
303
|
+
{
|
304
|
+
iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;
|
305
|
+
iEndButton = iStartButton + iPageCount - 1;
|
306
|
+
}
|
307
|
+
for ( i=iStartButton ; i<=iEndButton ; i++ )
|
308
|
+
{
|
309
|
+
sList += (iCurrentPage !== i) ?
|
310
|
+
'<li><a tabindex="'+oSettings.iTabIndex+'">'+oSettings.fnFormatNumber(i)+'</a></li>' :
|
311
|
+
'<li class="active"><a tabindex="'+oSettings.iTabIndex+'">'+oSettings.fnFormatNumber(i)+'</a></li>';
|
312
|
+
}
|
313
|
+
for ( i=0, iLen=an.length ; i<iLen ; i++ )
|
314
|
+
{
|
315
|
+
nNode = an[i];
|
316
|
+
if ( !nNode.hasChildNodes() )
|
317
|
+
{
|
318
|
+
continue;
|
319
|
+
}
|
320
|
+
$('li:gt(1)', an[i]).filter(':not(li:eq(-2))').filter(':not(li:eq(-1))').remove();
|
321
|
+
if ( oPaging.iPage === 0 ) {
|
322
|
+
$('li:eq(0)', an[i]).addClass('disabled');
|
323
|
+
$('li:eq(1)', an[i]).addClass('disabled');
|
324
|
+
} else {
|
325
|
+
$('li:eq(0)', an[i]).removeClass('disabled');
|
326
|
+
$('li:eq(1)', an[i]).removeClass('disabled');
|
327
|
+
}
|
328
|
+
if ( oPaging.iPage === oPaging.iTotalPages-1 || oPaging.iTotalPages === 0 ) {
|
329
|
+
$('li:eq(-1)', an[i]).addClass('disabled');
|
330
|
+
$('li:eq(-2)', an[i]).addClass('disabled');
|
331
|
+
} else {
|
332
|
+
$('li:eq(-1)', an[i]).removeClass('disabled');
|
333
|
+
$('li:eq(-2)', an[i]).removeClass('disabled');
|
334
|
+
}
|
335
|
+
$(sList)
|
336
|
+
.insertBefore('li:eq(-2)', an[i])
|
337
|
+
.bind('click', function (e) {
|
338
|
+
e.preventDefault();
|
339
|
+
oSettings._iDisplayStart = (parseInt($('a', this).text(),10)-1) * oPaging.iLength;
|
340
|
+
fnCallbackDraw( oSettings );
|
341
|
+
});
|
342
|
+
}
|
343
|
+
}
|
344
|
+
}
|
345
|
+
} );
|
346
|
+
|
347
|
+
|
348
|
+
/*
|
349
|
+
* TableTools Bootstrap compatibility
|
350
|
+
* Required TableTools 2.1+
|
351
|
+
*/
|
352
|
+
if ( $.fn.DataTable.TableTools ) {
|
353
|
+
// Set the classes that TableTools uses to something suitable for Bootstrap
|
354
|
+
$.extend( true, $.fn.DataTable.TableTools.classes, {
|
355
|
+
"container": "DTTT btn-group",
|
356
|
+
"buttons": {
|
357
|
+
"normal": "btn",
|
358
|
+
"disabled": "disabled"
|
359
|
+
},
|
360
|
+
"collection": {
|
361
|
+
"container": "DTTT_dropdown dropdown-menu",
|
362
|
+
"buttons": {
|
363
|
+
"normal": "",
|
364
|
+
"disabled": "disabled"
|
365
|
+
}
|
366
|
+
},
|
367
|
+
"print": {
|
368
|
+
"info": "DTTT_print_info modal"
|
369
|
+
},
|
370
|
+
"select": {
|
371
|
+
"row": "active"
|
372
|
+
}
|
373
|
+
} );
|
374
|
+
|
375
|
+
// Have the collection use a bootstrap compatible dropdown
|
376
|
+
$.extend( true, $.fn.DataTable.TableTools.DEFAULTS.oTags, {
|
377
|
+
"collection": {
|
378
|
+
"container": "ul",
|
379
|
+
"button": "li",
|
380
|
+
"liner": "a"
|
381
|
+
}
|
382
|
+
} );
|
383
|
+
}
|