jquery-datatables 1.10.18 → 1.10.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/FixedHeader/dataTables.fixedHeader.js +3 -3
- 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/Responsive/dataTables.responsive.js +3 -3
- 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/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 +99 -61
- 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/dataTables.foundation.scss +5 -5
- data/app/assets/stylesheets/datatables/dataTables.material.scss +1 -1
- 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/app/assets/stylesheets/datatables/jquery.dataTables.scss +5 -5
- data/jquery-datatables.gemspec +0 -3
- data/lib/generators/jquery/datatables/templates/stylesheets/foundation.scss.tt +0 -18
- data/lib/generators/jquery/datatables/templates/stylesheets/regular.scss.tt +0 -18
- data/lib/generators/jquery/datatables/templates/views/index.html.haml +6 -6
- data/lib/generators/jquery/datatables/templates/views/index.html.slim +2 -2
- data/lib/generators/jquery/datatables/templates/views/index.json.jbuilder +2 -2
- data/lib/jquery-datatables/engine.rb +0 -2
- data/lib/jquery-datatables/version.rb +1 -1
- data/lib/jquery-datatables.rb +3 -8
- metadata +31 -40
- data/app/assets/javascripts/datatables/dataTables.bootstrap2.js +0 -162
- data/app/assets/stylesheets/datatables/dataTables.bootstrap2.scss +0 -178
- /data/app/assets/javascripts/datatables/extensions/ColReorder/{colReorder.semanicui.js → colReorder.semanticui.js} +0 -0
- /data/app/assets/javascripts/datatables/extensions/FixedColumns/{fixedColumns.semanicui.js → fixedColumns.semanticui.js} +0 -0
- /data/app/assets/javascripts/datatables/extensions/FixedHeader/{fixedHeader.semanicui.js → fixedHeader.semanticui.js} +0 -0
- /data/app/assets/javascripts/datatables/extensions/KeyTable/{keyTable.semanicui.js → keyTable.semanticui.js} +0 -0
- /data/app/assets/javascripts/datatables/extensions/RowGroup/{rowGroup.semanicui.js → rowGroup.semanticui.js} +0 -0
- /data/app/assets/javascripts/datatables/extensions/RowReorder/{rowReorder.semanicui.js → rowReorder.semanticui.js} +0 -0
|
@@ -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
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plug-in offers the same functionality as `full_numbers` pagination type
|
|
3
|
+
* (see `pagingType` option) but without ellipses.
|
|
4
|
+
*
|
|
5
|
+
* See [example](http://www.gyrocode.com/articles/jquery-datatables-pagination-without-ellipses) for demonstration.
|
|
6
|
+
*
|
|
7
|
+
* @name Full Numbers - No Ellipses
|
|
8
|
+
* @summary Same pagination as 'full_numbers' but without ellipses
|
|
9
|
+
* @author [Michael Ryvkin](http://www.gyrocode.com)
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* $(document).ready(function() {
|
|
13
|
+
* $('#example').dataTable( {
|
|
14
|
+
* "pagingType": "full_numbers_no_ellipses"
|
|
15
|
+
* } );
|
|
16
|
+
* } );
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
$.fn.DataTable.ext.pager.full_numbers_no_ellipses = function(page, pages){
|
|
20
|
+
var numbers = [];
|
|
21
|
+
var buttons = $.fn.DataTable.ext.pager.numbers_length;
|
|
22
|
+
var half = Math.floor( buttons / 2 );
|
|
23
|
+
|
|
24
|
+
var _range = function ( len, start ){
|
|
25
|
+
var end;
|
|
26
|
+
|
|
27
|
+
if ( typeof start === "undefined" ){
|
|
28
|
+
start = 0;
|
|
29
|
+
end = len;
|
|
30
|
+
|
|
31
|
+
} else {
|
|
32
|
+
end = start;
|
|
33
|
+
start = len;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var out = [];
|
|
37
|
+
for ( var i = start ; i < end; i++ ){ out.push(i); }
|
|
38
|
+
|
|
39
|
+
return out;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
if ( pages <= buttons ) {
|
|
44
|
+
numbers = _range( 0, pages );
|
|
45
|
+
|
|
46
|
+
} else if ( page <= half ) {
|
|
47
|
+
numbers = _range( 0, buttons);
|
|
48
|
+
|
|
49
|
+
} else if ( page >= pages - 1 - half ) {
|
|
50
|
+
numbers = _range( pages - buttons, pages );
|
|
51
|
+
|
|
52
|
+
} else {
|
|
53
|
+
numbers = _range( page - half, page + half + 1);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
numbers.DT_el = 'span';
|
|
57
|
+
|
|
58
|
+
return [ 'first', 'previous', numbers, 'next', 'last' ];
|
|
59
|
+
};
|
|
@@ -54,9 +54,9 @@
|
|
|
54
54
|
var lastClassName = 'last';
|
|
55
55
|
|
|
56
56
|
var paginateClassName = 'paginate';
|
|
57
|
-
var paginateOfClassName = 'paginate_of';
|
|
58
57
|
var paginatePageClassName = 'paginate_page';
|
|
59
58
|
var paginateInputClassName = 'paginate_input';
|
|
59
|
+
var paginateTotalClassName = 'paginate_total';
|
|
60
60
|
|
|
61
61
|
$.fn.dataTableExt.oPagination.input = {
|
|
62
62
|
'fnInit': function (oSettings, nPaging, fnCallbackDraw) {
|
|
@@ -65,11 +65,12 @@
|
|
|
65
65
|
var nNext = document.createElement('span');
|
|
66
66
|
var nLast = document.createElement('span');
|
|
67
67
|
var nInput = document.createElement('input');
|
|
68
|
-
var
|
|
69
|
-
var
|
|
68
|
+
var nTotal = document.createElement('span');
|
|
69
|
+
var nInfo = document.createElement('span');
|
|
70
70
|
|
|
71
71
|
var language = oSettings.oLanguage.oPaginate;
|
|
72
72
|
var classes = oSettings.oClasses;
|
|
73
|
+
var info = language.info || 'Page _INPUT_ of _TOTAL_';
|
|
73
74
|
|
|
74
75
|
nFirst.innerHTML = language.sFirst;
|
|
75
76
|
nPrevious.innerHTML = language.sPrevious;
|
|
@@ -81,9 +82,8 @@
|
|
|
81
82
|
nNext.className = nextClassName + ' ' + classes.sPageButton;
|
|
82
83
|
nLast.className = lastClassName + ' ' + classes.sPageButton;
|
|
83
84
|
|
|
84
|
-
nOf.className = paginateOfClassName;
|
|
85
|
-
nPage.className = paginatePageClassName;
|
|
86
85
|
nInput.className = paginateInputClassName;
|
|
86
|
+
nTotal.className = paginateTotalClassName;
|
|
87
87
|
|
|
88
88
|
if (oSettings.sTableId !== '') {
|
|
89
89
|
nPaging.setAttribute('id', oSettings.sTableId + '_' + paginateClassName);
|
|
@@ -94,17 +94,20 @@
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
nInput.type = 'text';
|
|
97
|
-
|
|
97
|
+
|
|
98
|
+
info = info.replace(/_INPUT_/g, '</span>' + nInput.outerHTML + '<span>');
|
|
99
|
+
info = info.replace(/_TOTAL_/g, '</span>' + nTotal.outerHTML + '<span>');
|
|
100
|
+
nInfo.innerHTML = '<span>' + info + '</span>';
|
|
98
101
|
|
|
99
102
|
nPaging.appendChild(nFirst);
|
|
100
103
|
nPaging.appendChild(nPrevious);
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
+
$(nInfo).children().each(function (i, n) {
|
|
105
|
+
nPaging.appendChild(n);
|
|
106
|
+
});
|
|
104
107
|
nPaging.appendChild(nNext);
|
|
105
108
|
nPaging.appendChild(nLast);
|
|
106
109
|
|
|
107
|
-
$(nFirst).click(function() {
|
|
110
|
+
$(nFirst).click(function () {
|
|
108
111
|
var iCurrentPage = calcCurrentPage(oSettings);
|
|
109
112
|
if (iCurrentPage !== 1) {
|
|
110
113
|
oSettings.oApi._fnPageChange(oSettings, 'first');
|
|
@@ -112,7 +115,7 @@
|
|
|
112
115
|
}
|
|
113
116
|
});
|
|
114
117
|
|
|
115
|
-
$(nPrevious).click(function() {
|
|
118
|
+
$(nPrevious).click(function () {
|
|
116
119
|
var iCurrentPage = calcCurrentPage(oSettings);
|
|
117
120
|
if (iCurrentPage !== 1) {
|
|
118
121
|
oSettings.oApi._fnPageChange(oSettings, 'previous');
|
|
@@ -120,7 +123,7 @@
|
|
|
120
123
|
}
|
|
121
124
|
});
|
|
122
125
|
|
|
123
|
-
$(nNext).click(function() {
|
|
126
|
+
$(nNext).click(function () {
|
|
124
127
|
var iCurrentPage = calcCurrentPage(oSettings);
|
|
125
128
|
if (iCurrentPage !== calcPages(oSettings)) {
|
|
126
129
|
oSettings.oApi._fnPageChange(oSettings, 'next');
|
|
@@ -128,7 +131,7 @@
|
|
|
128
131
|
}
|
|
129
132
|
});
|
|
130
133
|
|
|
131
|
-
$(nLast).click(function() {
|
|
134
|
+
$(nLast).click(function () {
|
|
132
135
|
var iCurrentPage = calcCurrentPage(oSettings);
|
|
133
136
|
if (iCurrentPage !== calcPages(oSettings)) {
|
|
134
137
|
oSettings.oApi._fnPageChange(oSettings, 'last');
|
|
@@ -136,7 +139,7 @@
|
|
|
136
139
|
}
|
|
137
140
|
});
|
|
138
141
|
|
|
139
|
-
$(
|
|
142
|
+
$(nPaging).find('.' + paginateInputClassName).keyup(function (e) {
|
|
140
143
|
// 38 = up arrow, 39 = right arrow
|
|
141
144
|
if (e.which === 38 || e.which === 39) {
|
|
142
145
|
this.value++;
|
|
@@ -166,7 +169,7 @@
|
|
|
166
169
|
|
|
167
170
|
// Take the brutal approach to cancelling text selection.
|
|
168
171
|
$('span', nPaging).bind('mousedown', function () { return false; });
|
|
169
|
-
$('span', nPaging).bind('selectstart', function() { return false; });
|
|
172
|
+
$('span', nPaging).bind('selectstart', function () { return false; });
|
|
170
173
|
|
|
171
174
|
// If we can't page anyway, might as well not show it.
|
|
172
175
|
var iPages = calcPages(oSettings);
|
|
@@ -215,10 +218,10 @@
|
|
|
215
218
|
.addClass(disableClasses[lastClassName]);
|
|
216
219
|
|
|
217
220
|
// Paginate of N pages text
|
|
218
|
-
$(an).
|
|
221
|
+
$(an).find('.' + paginateTotalClassName).html(iPages);
|
|
219
222
|
|
|
220
|
-
// Current page
|
|
221
|
-
$(an).
|
|
223
|
+
// Current page number input value
|
|
224
|
+
$(an).find('.' + paginateInputClassName).val(iCurrentPage);
|
|
222
225
|
}
|
|
223
226
|
};
|
|
224
|
-
})(jQuery);
|
|
227
|
+
})(jQuery);
|