jquery-datatables 1.10.19.1 → 1.10.20
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitattributes +1 -0
- data/README.md +28 -1
- data/app/assets/javascripts/datatables/dataTables.uikit.js +2 -2
- data/app/assets/javascripts/datatables/extensions/AutoFill/dataTables.autoFill.js +42 -29
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.bootstrap.js +1 -1
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.bootstrap4.js +8 -2
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.colVis.js +6 -3
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.foundation.js +5 -4
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.html5.js +58 -6
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.print.js +16 -5
- data/app/assets/javascripts/datatables/extensions/Buttons/buttons.semanticui.js +1 -1
- data/app/assets/javascripts/datatables/extensions/Buttons/dataTables.buttons.js +267 -152
- data/app/assets/javascripts/datatables/extensions/ColReorder/colReorder.foundation.js +1 -1
- data/app/assets/javascripts/datatables/extensions/ColReorder/dataTables.colReorder.js +121 -52
- data/app/assets/javascripts/datatables/extensions/FixedColumns/dataTables.fixedColumns.js +32 -5
- data/app/assets/javascripts/datatables/extensions/KeyTable/dataTables.keyTable.js +166 -63
- data/app/assets/javascripts/datatables/extensions/KeyTable/keyTable.foundation.js +1 -1
- data/app/assets/javascripts/datatables/extensions/RowGroup/dataTables.rowGroup.js +105 -53
- data/app/assets/javascripts/datatables/extensions/RowGroup/rowGroup.foundation.js +1 -1
- data/app/assets/javascripts/datatables/extensions/RowGroup/{rowGroup.semanicui.js → rowGroup.semanticui.js} +0 -0
- data/app/assets/javascripts/datatables/extensions/RowReorder/dataTables.rowReorder.js +10 -9
- data/app/assets/javascripts/datatables/extensions/RowReorder/rowReorder.foundation.js +1 -1
- data/app/assets/javascripts/datatables/extensions/Scroller/dataTables.scroller.js +519 -636
- data/app/assets/javascripts/datatables/extensions/Scroller/scroller.foundation.js +1 -1
- data/app/assets/javascripts/datatables/extensions/Select/dataTables.select.js +49 -18
- data/app/assets/javascripts/datatables/extensions/Select/select.foundation.js +1 -1
- data/app/assets/javascripts/datatables/jquery.dataTables.js +97 -60
- data/app/assets/javascripts/datatables/plugins/api/average.js +7 -6
- data/app/assets/javascripts/datatables/plugins/api/sum.js +7 -6
- data/app/assets/javascripts/datatables/plugins/pagination/ellipses.js +160 -0
- data/app/assets/javascripts/datatables/plugins/pagination/extjs.js +137 -0
- data/app/assets/javascripts/datatables/plugins/pagination/four_button.js +110 -0
- data/app/assets/javascripts/datatables/plugins/pagination/full_numbers_no_ellipses.js +59 -0
- data/app/assets/javascripts/datatables/plugins/pagination/input.js +22 -19
- data/app/assets/javascripts/datatables/plugins/pagination/scrolling.js +130 -0
- data/app/assets/javascripts/datatables/plugins/pagination/select.js +97 -0
- data/app/assets/javascripts/datatables/plugins/pagination/simple_incremental_bootstrap.js +154 -0
- data/app/assets/javascripts/datatables/plugins/pagination/simple_numbers_no_ellipses.js +59 -0
- data/app/assets/javascripts/datatables/plugins/search/dataTables.alphabetSearch.js +440 -399
- data/app/assets/javascripts/datatables/plugins/sorting/enum.js +51 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/date-dd-MMM-yyyy.js +63 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/date-de.js +125 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/date-eu.js +64 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/date-euro.js +48 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/date-uk.js +35 -12
- data/app/assets/javascripts/datatables/plugins/type-detection/datetime-moment.js +74 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/datetime-us.js +86 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/file-size.js +37 -13
- data/app/assets/javascripts/datatables/plugins/type-detection/ip-address.js +113 -11
- data/app/assets/javascripts/datatables/plugins/type-detection/numString.js +63 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/percent.js +34 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/time-elapsed-dhms.js +42 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/time.js +56 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/title-numeric.js +40 -0
- data/app/assets/javascripts/datatables/plugins/type-detection/title-string.js +36 -0
- data/app/assets/stylesheets/datatables/extensions/AutoFill/autoFill.dataTables.scss +10 -3
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.bootstrap.scss +12 -3
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.bootstrap4.scss +13 -6
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.dataTables.scss +2 -0
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.foundation.scss +5 -1
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.jqueryui.scss +1 -0
- data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.semanticui.scss +2 -1
- data/app/assets/stylesheets/datatables/extensions/Buttons/common.scss +10 -0
- data/app/assets/stylesheets/datatables/extensions/Buttons/mixins.scss +42 -30
- data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.bootstrap.scss +11 -7
- data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.foundation.scss +1 -0
- data/app/assets/stylesheets/datatables/extensions/KeyTable/keyTable.dataTables.scss +13 -5
- data/app/assets/stylesheets/datatables/extensions/RowGroup/rowGroup.dataTables.scss +20 -2
- data/app/assets/stylesheets/datatables/extensions/Scroller/scroller.dataTables.scss +15 -2
- data/lib/jquery-datatables/version.rb +1 -1
- metadata +26 -12
- data/app/assets/javascripts/datatables/dataTables.bootstrap2.js +0 -162
- data/app/assets/javascripts/datatables/extensions/ColReorder/colReorder.semanicui.js +0 -38
- data/app/assets/javascripts/datatables/extensions/FixedColumns/fixedColumns.semanicui.js +0 -38
- data/app/assets/javascripts/datatables/extensions/FixedHeader/fixedHeader.semanicui.js +0 -38
- data/app/assets/javascripts/datatables/extensions/KeyTable/keyTable.semanicui.js +0 -38
- data/app/assets/javascripts/datatables/extensions/RowReorder/rowReorder.semanicui.js +0 -38
- data/app/assets/stylesheets/datatables/dataTables.bootstrap2.scss +0 -178
@@ -21,11 +21,12 @@
|
|
21
21
|
* table.cells( 0, [3,4] ).data().average();
|
22
22
|
*/
|
23
23
|
|
24
|
-
jQuery.fn.dataTable.Api.register(
|
24
|
+
jQuery.fn.dataTable.Api.register('average()', function () {
|
25
25
|
var data = this.flatten();
|
26
|
-
var sum = data.reduce(
|
27
|
-
return (a*1) + (b*1); // cast values in-case they are strings
|
28
|
-
}, 0
|
29
|
-
|
26
|
+
var sum = data.reduce(function (a, b) {
|
27
|
+
return (a * 1) + (b * 1); // cast values in-case they are strings
|
28
|
+
}, 0);
|
29
|
+
|
30
30
|
return sum / data.length;
|
31
|
-
}
|
31
|
+
});
|
32
|
+
|
@@ -36,15 +36,16 @@
|
|
36
36
|
* } );
|
37
37
|
*/
|
38
38
|
|
39
|
-
jQuery.fn.dataTable.Api.register(
|
40
|
-
return this.flatten().reduce(
|
41
|
-
if (
|
39
|
+
jQuery.fn.dataTable.Api.register('sum()', function () {
|
40
|
+
return this.flatten().reduce(function (a, b) {
|
41
|
+
if (typeof a === 'string') {
|
42
42
|
a = a.replace(/[^\d.-]/g, '') * 1;
|
43
43
|
}
|
44
|
-
if (
|
44
|
+
if (typeof b === 'string') {
|
45
45
|
b = b.replace(/[^\d.-]/g, '') * 1;
|
46
46
|
}
|
47
47
|
|
48
48
|
return a + b;
|
49
|
-
}, 0
|
50
|
-
}
|
49
|
+
}, 0);
|
50
|
+
});
|
51
|
+
|
@@ -0,0 +1,160 @@
|
|
1
|
+
/*
|
2
|
+
* This plug-in adds another pagination option similar to `full_numbers`, except
|
3
|
+
* it adds ellipses around the page numbers when applicable. You can set how
|
4
|
+
* many page numbers should be displayed with the iShowPages option.
|
5
|
+
*
|
6
|
+
* This plug- in extends the oStdClasses object with the following properties:
|
7
|
+
* sPageEllipsis, sPageNumber and sPageNumbers.
|
8
|
+
*
|
9
|
+
* It also extends the oSettings object with the following properties:
|
10
|
+
* _iShowPages, _iShowPagesHalf, _iCurrentPage, _iTotalPages, _iFirstPage and
|
11
|
+
* _iLastPage.
|
12
|
+
*
|
13
|
+
* Note that DataTables 1.10 has this ability built in. As such, this plug-ins
|
14
|
+
* has been marked as deprecated, but may still be useful for if you are using
|
15
|
+
* an old version of DataTables.
|
16
|
+
*
|
17
|
+
* @name Ellipses
|
18
|
+
* @summary Show ellipses in the pagination control where there is a gap in numbers
|
19
|
+
* @deprecated
|
20
|
+
* @author [Dave Kennedy](http://daveden.wordpress.com/)
|
21
|
+
* @example
|
22
|
+
* $(document).ready(function() {
|
23
|
+
* $('#example').dataTable({
|
24
|
+
* 'sPaginationType': 'ellipses'
|
25
|
+
* });
|
26
|
+
* });
|
27
|
+
*/
|
28
|
+
|
29
|
+
$.extend($.fn.dataTableExt.oStdClasses, {
|
30
|
+
'sPageEllipsis': 'paginate_ellipsis',
|
31
|
+
'sPageNumber': 'paginate_number',
|
32
|
+
'sPageNumbers': 'paginate_numbers'
|
33
|
+
});
|
34
|
+
|
35
|
+
$.fn.dataTableExt.oPagination.ellipses = {
|
36
|
+
'oDefaults': {
|
37
|
+
'iShowPages': 5
|
38
|
+
},
|
39
|
+
'fnClickHandler': function(e) {
|
40
|
+
var fnCallbackDraw = e.data.fnCallbackDraw,
|
41
|
+
oSettings = e.data.oSettings,
|
42
|
+
sPage = e.data.sPage;
|
43
|
+
|
44
|
+
if ($(this).is('[disabled]')) {
|
45
|
+
return false;
|
46
|
+
}
|
47
|
+
|
48
|
+
oSettings.oApi._fnPageChange(oSettings, sPage);
|
49
|
+
fnCallbackDraw(oSettings);
|
50
|
+
|
51
|
+
return true;
|
52
|
+
},
|
53
|
+
// fnInit is called once for each instance of pager
|
54
|
+
'fnInit': function(oSettings, nPager, fnCallbackDraw) {
|
55
|
+
var oClasses = oSettings.oClasses,
|
56
|
+
oLang = oSettings.oLanguage.oPaginate,
|
57
|
+
that = this;
|
58
|
+
|
59
|
+
var iShowPages = oSettings.oInit.iShowPages || this.oDefaults.iShowPages,
|
60
|
+
iShowPagesHalf = Math.floor(iShowPages / 2);
|
61
|
+
|
62
|
+
$.extend(oSettings, {
|
63
|
+
_iShowPages: iShowPages,
|
64
|
+
_iShowPagesHalf: iShowPagesHalf,
|
65
|
+
});
|
66
|
+
|
67
|
+
var oFirst = $('<a class="' + oClasses.sPageButton + ' ' + oClasses.sPageFirst + '">' + oLang.sFirst + '</a>'),
|
68
|
+
oPrevious = $('<a class="' + oClasses.sPageButton + ' ' + oClasses.sPagePrevious + '">' + oLang.sPrevious + '</a>'),
|
69
|
+
oNumbers = $('<span class="' + oClasses.sPageNumbers + '"></span>'),
|
70
|
+
oNext = $('<a class="' + oClasses.sPageButton + ' ' + oClasses.sPageNext + '">' + oLang.sNext + '</a>'),
|
71
|
+
oLast = $('<a class="' + oClasses.sPageButton + ' ' + oClasses.sPageLast + '">' + oLang.sLast + '</a>');
|
72
|
+
|
73
|
+
oFirst.click({ 'fnCallbackDraw': fnCallbackDraw, 'oSettings': oSettings, 'sPage': 'first' }, that.fnClickHandler);
|
74
|
+
oPrevious.click({ 'fnCallbackDraw': fnCallbackDraw, 'oSettings': oSettings, 'sPage': 'previous' }, that.fnClickHandler);
|
75
|
+
oNext.click({ 'fnCallbackDraw': fnCallbackDraw, 'oSettings': oSettings, 'sPage': 'next' }, that.fnClickHandler);
|
76
|
+
oLast.click({ 'fnCallbackDraw': fnCallbackDraw, 'oSettings': oSettings, 'sPage': 'last' }, that.fnClickHandler);
|
77
|
+
|
78
|
+
// Draw
|
79
|
+
$(nPager).append(oFirst, oPrevious, oNumbers, oNext, oLast);
|
80
|
+
},
|
81
|
+
// fnUpdate is only called once while table is rendered
|
82
|
+
'fnUpdate': function(oSettings, fnCallbackDraw) {
|
83
|
+
var oClasses = oSettings.oClasses,
|
84
|
+
that = this;
|
85
|
+
|
86
|
+
var tableWrapper = oSettings.nTableWrapper;
|
87
|
+
|
88
|
+
// Update stateful properties
|
89
|
+
this.fnUpdateState(oSettings);
|
90
|
+
|
91
|
+
if (oSettings._iCurrentPage === 1) {
|
92
|
+
$('.' + oClasses.sPageFirst, tableWrapper).attr('disabled', true);
|
93
|
+
$('.' + oClasses.sPagePrevious, tableWrapper).attr('disabled', true);
|
94
|
+
} else {
|
95
|
+
$('.' + oClasses.sPageFirst, tableWrapper).removeAttr('disabled');
|
96
|
+
$('.' + oClasses.sPagePrevious, tableWrapper).removeAttr('disabled');
|
97
|
+
}
|
98
|
+
|
99
|
+
if (oSettings._iTotalPages === 0 || oSettings._iCurrentPage === oSettings._iTotalPages) {
|
100
|
+
$('.' + oClasses.sPageNext, tableWrapper).attr('disabled', true);
|
101
|
+
$('.' + oClasses.sPageLast, tableWrapper).attr('disabled', true);
|
102
|
+
} else {
|
103
|
+
$('.' + oClasses.sPageNext, tableWrapper).removeAttr('disabled');
|
104
|
+
$('.' + oClasses.sPageLast, tableWrapper).removeAttr('disabled');
|
105
|
+
}
|
106
|
+
|
107
|
+
var i, oNumber, oNumbers = $('.' + oClasses.sPageNumbers, tableWrapper);
|
108
|
+
|
109
|
+
// Erase
|
110
|
+
oNumbers.html('');
|
111
|
+
|
112
|
+
for (i = oSettings._iFirstPage; i <= oSettings._iLastPage; i++) {
|
113
|
+
oNumber = $('<a class="' + oClasses.sPageButton + ' ' + oClasses.sPageNumber + '">' + oSettings.fnFormatNumber(i) + '</a>');
|
114
|
+
|
115
|
+
if (oSettings._iCurrentPage === i) {
|
116
|
+
oNumber.attr('active', true).attr('disabled', true);
|
117
|
+
} else {
|
118
|
+
oNumber.click({ 'fnCallbackDraw': fnCallbackDraw, 'oSettings': oSettings, 'sPage': i - 1 }, that.fnClickHandler);
|
119
|
+
}
|
120
|
+
|
121
|
+
// Draw
|
122
|
+
oNumbers.append(oNumber);
|
123
|
+
}
|
124
|
+
|
125
|
+
// Add ellipses
|
126
|
+
if (1 < oSettings._iFirstPage) {
|
127
|
+
oNumbers.prepend('<span class="' + oClasses.sPageEllipsis + '">...</span>');
|
128
|
+
}
|
129
|
+
|
130
|
+
if (oSettings._iLastPage < oSettings._iTotalPages) {
|
131
|
+
oNumbers.append('<span class="' + oClasses.sPageEllipsis + '">...</span>');
|
132
|
+
}
|
133
|
+
},
|
134
|
+
// fnUpdateState used to be part of fnUpdate
|
135
|
+
// The reason for moving is so we can access current state info before fnUpdate is called
|
136
|
+
'fnUpdateState': function(oSettings) {
|
137
|
+
var iCurrentPage = Math.ceil((oSettings._iDisplayStart + 1) / oSettings._iDisplayLength),
|
138
|
+
iTotalPages = Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength),
|
139
|
+
iFirstPage = iCurrentPage - oSettings._iShowPagesHalf,
|
140
|
+
iLastPage = iCurrentPage + oSettings._iShowPagesHalf;
|
141
|
+
|
142
|
+
if (iTotalPages < oSettings._iShowPages) {
|
143
|
+
iFirstPage = 1;
|
144
|
+
iLastPage = iTotalPages;
|
145
|
+
} else if (iFirstPage < 1) {
|
146
|
+
iFirstPage = 1;
|
147
|
+
iLastPage = oSettings._iShowPages;
|
148
|
+
} else if (iLastPage > iTotalPages) {
|
149
|
+
iFirstPage = (iTotalPages - oSettings._iShowPages) + 1;
|
150
|
+
iLastPage = iTotalPages;
|
151
|
+
}
|
152
|
+
|
153
|
+
$.extend(oSettings, {
|
154
|
+
_iCurrentPage: iCurrentPage,
|
155
|
+
_iTotalPages: iTotalPages,
|
156
|
+
_iFirstPage: iFirstPage,
|
157
|
+
_iLastPage: iLastPage
|
158
|
+
});
|
159
|
+
}
|
160
|
+
};
|
@@ -0,0 +1,137 @@
|
|
1
|
+
/**
|
2
|
+
* This pagination plug-in provides pagination controls for DataTables which
|
3
|
+
* match the style and interaction of the ExtJS library's grid component.
|
4
|
+
*
|
5
|
+
* @name ExtJS style
|
6
|
+
* @summary Pagination in the styling of ExtJS
|
7
|
+
* @author [Zach Curtis](http://zachariahtimothy.wordpress.com/)
|
8
|
+
*
|
9
|
+
* @example
|
10
|
+
* $(document).ready(function() {
|
11
|
+
* $('#example').dataTable( {
|
12
|
+
* "sPaginationType": "extStyle"
|
13
|
+
* } );
|
14
|
+
* } );
|
15
|
+
*/
|
16
|
+
|
17
|
+
$.fn.dataTableExt.oApi.fnExtStylePagingInfo = 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
|
+
$.fn.dataTableExt.oPagination.extStyle = {
|
33
|
+
|
34
|
+
|
35
|
+
"fnInit": function (oSettings, nPaging, fnCallbackDraw) {
|
36
|
+
|
37
|
+
var oPaging = oSettings.oInstance.fnExtStylePagingInfo();
|
38
|
+
|
39
|
+
nFirst = $('<span/>', { 'class': 'paginate_button first' , text : "<<" });
|
40
|
+
nPrevious = $('<span/>', { 'class': 'paginate_button previous' , text : "<" });
|
41
|
+
nNext = $('<span/>', { 'class': 'paginate_button next' , text : ">" });
|
42
|
+
nLast = $('<span/>', { 'class': 'paginate_button last' , text : ">>" });
|
43
|
+
nPageTxt = $("<span />", { text: 'Page' });
|
44
|
+
nPageNumBox = $('<input />', { type: 'text', val: 1, 'class': 'pageinate_input_box' });
|
45
|
+
nPageOf = $('<span />', { text: '/' });
|
46
|
+
nTotalPages = $('<span />', { class : "paginate_total" , text : oPaging.iTotalPages });
|
47
|
+
|
48
|
+
|
49
|
+
$(nPaging)
|
50
|
+
.append(nFirst)
|
51
|
+
.append(nPrevious)
|
52
|
+
.append(nPageTxt)
|
53
|
+
.append(nPageNumBox)
|
54
|
+
.append(nPageOf)
|
55
|
+
.append(nTotalPages)
|
56
|
+
.append(nNext)
|
57
|
+
.append(nLast);
|
58
|
+
|
59
|
+
nFirst.click(function () {
|
60
|
+
if( $(this).hasClass("disabled") )
|
61
|
+
return;
|
62
|
+
oSettings.oApi._fnPageChange(oSettings, "first");
|
63
|
+
fnCallbackDraw(oSettings);
|
64
|
+
}).bind('selectstart', function () { return false; });
|
65
|
+
|
66
|
+
nPrevious.click(function () {
|
67
|
+
if( $(this).hasClass("disabled") )
|
68
|
+
return;
|
69
|
+
oSettings.oApi._fnPageChange(oSettings, "previous");
|
70
|
+
fnCallbackDraw(oSettings);
|
71
|
+
}).bind('selectstart', function () { return false; });
|
72
|
+
|
73
|
+
nNext.click(function () {
|
74
|
+
if( $(this).hasClass("disabled") )
|
75
|
+
return;
|
76
|
+
oSettings.oApi._fnPageChange(oSettings, "next");
|
77
|
+
fnCallbackDraw(oSettings);
|
78
|
+
}).bind('selectstart', function () { return false; });
|
79
|
+
|
80
|
+
nLast.click(function () {
|
81
|
+
if( $(this).hasClass("disabled") )
|
82
|
+
return;
|
83
|
+
oSettings.oApi._fnPageChange(oSettings, "last");
|
84
|
+
fnCallbackDraw(oSettings);
|
85
|
+
}).bind('selectstart', function () { return false; });
|
86
|
+
|
87
|
+
nPageNumBox.change(function () {
|
88
|
+
var pageValue = parseInt($(this).val(), 10) - 1 ; // -1 because pages are 0 indexed, but the UI is 1
|
89
|
+
var oPaging = oSettings.oInstance.fnPagingInfo();
|
90
|
+
|
91
|
+
if(pageValue === NaN || pageValue<0 ){
|
92
|
+
pageValue = 0;
|
93
|
+
}else if(pageValue >= oPaging.iTotalPages ){
|
94
|
+
pageValue = oPaging.iTotalPages -1;
|
95
|
+
}
|
96
|
+
oSettings.oApi._fnPageChange(oSettings, pageValue);
|
97
|
+
fnCallbackDraw(oSettings);
|
98
|
+
});
|
99
|
+
|
100
|
+
},
|
101
|
+
|
102
|
+
|
103
|
+
"fnUpdate": function (oSettings, fnCallbackDraw) {
|
104
|
+
if (!oSettings.aanFeatures.p) {
|
105
|
+
return;
|
106
|
+
}
|
107
|
+
|
108
|
+
var oPaging = oSettings.oInstance.fnExtStylePagingInfo();
|
109
|
+
|
110
|
+
/* Loop over each instance of the pager */
|
111
|
+
var an = oSettings.aanFeatures.p;
|
112
|
+
|
113
|
+
$(an).find('span.paginate_total').html(oPaging.iTotalPages);
|
114
|
+
$(an).find('.pageinate_input_box').val(oPaging.iPage+1);
|
115
|
+
|
116
|
+
$(an).each(function(index,item) {
|
117
|
+
|
118
|
+
var $item = $(item);
|
119
|
+
|
120
|
+
if (oPaging.iPage == 0) {
|
121
|
+
var prev = $item.find('span.paginate_button.first').add($item.find('span.paginate_button.previous'));
|
122
|
+
prev.addClass("disabled");
|
123
|
+
}else {
|
124
|
+
var prev = $item.find('span.paginate_button.first').add($item.find('span.paginate_button.previous'));
|
125
|
+
prev.removeClass("disabled");
|
126
|
+
}
|
127
|
+
|
128
|
+
if (oPaging.iPage+1 == oPaging.iTotalPages) {
|
129
|
+
var next = $item.find('span.paginate_button.last').add($item.find('span.paginate_button.next'));
|
130
|
+
next.addClass("disabled");
|
131
|
+
}else {
|
132
|
+
var next = $item.find('span.paginate_button.last').add($item.find('span.paginate_button.next'));
|
133
|
+
next.removeClass("disabled");
|
134
|
+
}
|
135
|
+
});
|
136
|
+
}
|
137
|
+
};
|
@@ -0,0 +1,110 @@
|
|
1
|
+
/**
|
2
|
+
* The built-in pagination functions provide either two buttons (forward / back)
|
3
|
+
* or lots of buttons (forward, back, first, last and individual pages). This
|
4
|
+
* plug-in meets the two in the middle providing navigation controls for
|
5
|
+
* forward, back, first and last.
|
6
|
+
*
|
7
|
+
* DataTables has this ability built in using the `dt-string full` option of
|
8
|
+
* the `dt-init pagingType` initialisation option. As such, this plug-in is
|
9
|
+
* marked as deprecated.
|
10
|
+
*
|
11
|
+
* @name Four button navigation
|
12
|
+
* @summary Display forward, back, first and last buttons.
|
13
|
+
* @deprecated
|
14
|
+
* @author [Allan Jardine](http://sprymedia.co.uk)
|
15
|
+
*
|
16
|
+
* @example
|
17
|
+
* $(document).ready(function() {
|
18
|
+
* $('#example').dataTable( {
|
19
|
+
* "sPaginationType": "four_button"
|
20
|
+
* } );
|
21
|
+
* } );
|
22
|
+
*/
|
23
|
+
|
24
|
+
$.fn.dataTableExt.oPagination.four_button = {
|
25
|
+
"fnInit": function ( oSettings, nPaging, fnCallbackDraw )
|
26
|
+
{
|
27
|
+
var nFirst = document.createElement( 'span' );
|
28
|
+
var nPrevious = document.createElement( 'span' );
|
29
|
+
var nNext = document.createElement( 'span' );
|
30
|
+
var nLast = document.createElement( 'span' );
|
31
|
+
|
32
|
+
nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );
|
33
|
+
nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );
|
34
|
+
nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );
|
35
|
+
nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );
|
36
|
+
|
37
|
+
nFirst.className = "paginate_button first";
|
38
|
+
nPrevious.className = "paginate_button previous";
|
39
|
+
nNext.className="paginate_button next";
|
40
|
+
nLast.className = "paginate_button last";
|
41
|
+
|
42
|
+
nPaging.appendChild( nFirst );
|
43
|
+
nPaging.appendChild( nPrevious );
|
44
|
+
nPaging.appendChild( nNext );
|
45
|
+
nPaging.appendChild( nLast );
|
46
|
+
|
47
|
+
$(nFirst).click( function () {
|
48
|
+
oSettings.oApi._fnPageChange( oSettings, "first" );
|
49
|
+
fnCallbackDraw( oSettings );
|
50
|
+
} );
|
51
|
+
|
52
|
+
$(nPrevious).click( function() {
|
53
|
+
oSettings.oApi._fnPageChange( oSettings, "previous" );
|
54
|
+
fnCallbackDraw( oSettings );
|
55
|
+
} );
|
56
|
+
|
57
|
+
$(nNext).click( function() {
|
58
|
+
oSettings.oApi._fnPageChange( oSettings, "next" );
|
59
|
+
fnCallbackDraw( oSettings );
|
60
|
+
} );
|
61
|
+
|
62
|
+
$(nLast).click( function() {
|
63
|
+
oSettings.oApi._fnPageChange( oSettings, "last" );
|
64
|
+
fnCallbackDraw( oSettings );
|
65
|
+
} );
|
66
|
+
|
67
|
+
/* Disallow text selection */
|
68
|
+
$(nFirst).bind( 'selectstart', function () { return false; } );
|
69
|
+
$(nPrevious).bind( 'selectstart', function () { return false; } );
|
70
|
+
$(nNext).bind( 'selectstart', function () { return false; } );
|
71
|
+
$(nLast).bind( 'selectstart', function () { return false; } );
|
72
|
+
},
|
73
|
+
|
74
|
+
|
75
|
+
"fnUpdate": function ( oSettings, fnCallbackDraw )
|
76
|
+
{
|
77
|
+
if ( !oSettings.aanFeatures.p )
|
78
|
+
{
|
79
|
+
return;
|
80
|
+
}
|
81
|
+
|
82
|
+
/* Loop over each instance of the pager */
|
83
|
+
var an = oSettings.aanFeatures.p;
|
84
|
+
for ( var i=0, iLen=an.length ; i<iLen ; i++ )
|
85
|
+
{
|
86
|
+
var buttons = an[i].getElementsByTagName('span');
|
87
|
+
if ( oSettings._iDisplayStart === 0 )
|
88
|
+
{
|
89
|
+
buttons[0].className = "paginate_disabled_previous";
|
90
|
+
buttons[1].className = "paginate_disabled_previous";
|
91
|
+
}
|
92
|
+
else
|
93
|
+
{
|
94
|
+
buttons[0].className = "paginate_enabled_previous";
|
95
|
+
buttons[1].className = "paginate_enabled_previous";
|
96
|
+
}
|
97
|
+
|
98
|
+
if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() )
|
99
|
+
{
|
100
|
+
buttons[2].className = "paginate_disabled_next";
|
101
|
+
buttons[3].className = "paginate_disabled_next";
|
102
|
+
}
|
103
|
+
else
|
104
|
+
{
|
105
|
+
buttons[2].className = "paginate_enabled_next";
|
106
|
+
buttons[3].className = "paginate_enabled_next";
|
107
|
+
}
|
108
|
+
}
|
109
|
+
}
|
110
|
+
};
|