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.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +1 -0
  3. data/README.md +28 -1
  4. data/app/assets/javascripts/datatables/dataTables.uikit.js +2 -2
  5. data/app/assets/javascripts/datatables/extensions/AutoFill/dataTables.autoFill.js +42 -29
  6. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.bootstrap.js +1 -1
  7. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.bootstrap4.js +8 -2
  8. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.colVis.js +6 -3
  9. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.foundation.js +5 -4
  10. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.html5.js +58 -6
  11. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.print.js +16 -5
  12. data/app/assets/javascripts/datatables/extensions/Buttons/buttons.semanticui.js +1 -1
  13. data/app/assets/javascripts/datatables/extensions/Buttons/dataTables.buttons.js +267 -152
  14. data/app/assets/javascripts/datatables/extensions/ColReorder/colReorder.foundation.js +1 -1
  15. data/app/assets/javascripts/datatables/extensions/ColReorder/dataTables.colReorder.js +121 -52
  16. data/app/assets/javascripts/datatables/extensions/FixedColumns/dataTables.fixedColumns.js +32 -5
  17. data/app/assets/javascripts/datatables/extensions/FixedHeader/dataTables.fixedHeader.js +3 -3
  18. data/app/assets/javascripts/datatables/extensions/KeyTable/dataTables.keyTable.js +166 -63
  19. data/app/assets/javascripts/datatables/extensions/KeyTable/keyTable.foundation.js +1 -1
  20. data/app/assets/javascripts/datatables/extensions/Responsive/dataTables.responsive.js +3 -3
  21. data/app/assets/javascripts/datatables/extensions/RowGroup/dataTables.rowGroup.js +105 -53
  22. data/app/assets/javascripts/datatables/extensions/RowGroup/rowGroup.foundation.js +1 -1
  23. data/app/assets/javascripts/datatables/extensions/RowReorder/dataTables.rowReorder.js +10 -9
  24. data/app/assets/javascripts/datatables/extensions/RowReorder/rowReorder.foundation.js +1 -1
  25. data/app/assets/javascripts/datatables/extensions/Scroller/dataTables.scroller.js +519 -636
  26. data/app/assets/javascripts/datatables/extensions/Scroller/scroller.foundation.js +1 -1
  27. data/app/assets/javascripts/datatables/extensions/Select/dataTables.select.js +49 -18
  28. data/app/assets/javascripts/datatables/extensions/Select/select.foundation.js +1 -1
  29. data/app/assets/javascripts/datatables/jquery.dataTables.js +99 -61
  30. data/app/assets/javascripts/datatables/plugins/api/average.js +7 -6
  31. data/app/assets/javascripts/datatables/plugins/api/sum.js +7 -6
  32. data/app/assets/javascripts/datatables/plugins/pagination/ellipses.js +160 -0
  33. data/app/assets/javascripts/datatables/plugins/pagination/extjs.js +137 -0
  34. data/app/assets/javascripts/datatables/plugins/pagination/four_button.js +110 -0
  35. data/app/assets/javascripts/datatables/plugins/pagination/full_numbers_no_ellipses.js +59 -0
  36. data/app/assets/javascripts/datatables/plugins/pagination/input.js +22 -19
  37. data/app/assets/javascripts/datatables/plugins/pagination/scrolling.js +130 -0
  38. data/app/assets/javascripts/datatables/plugins/pagination/select.js +97 -0
  39. data/app/assets/javascripts/datatables/plugins/pagination/simple_incremental_bootstrap.js +154 -0
  40. data/app/assets/javascripts/datatables/plugins/pagination/simple_numbers_no_ellipses.js +59 -0
  41. data/app/assets/javascripts/datatables/plugins/search/dataTables.alphabetSearch.js +440 -399
  42. data/app/assets/javascripts/datatables/plugins/sorting/enum.js +51 -0
  43. data/app/assets/javascripts/datatables/plugins/type-detection/date-dd-MMM-yyyy.js +63 -0
  44. data/app/assets/javascripts/datatables/plugins/type-detection/date-de.js +125 -0
  45. data/app/assets/javascripts/datatables/plugins/type-detection/date-eu.js +64 -0
  46. data/app/assets/javascripts/datatables/plugins/type-detection/date-euro.js +48 -0
  47. data/app/assets/javascripts/datatables/plugins/type-detection/date-uk.js +35 -12
  48. data/app/assets/javascripts/datatables/plugins/type-detection/datetime-moment.js +74 -0
  49. data/app/assets/javascripts/datatables/plugins/type-detection/datetime-us.js +86 -0
  50. data/app/assets/javascripts/datatables/plugins/type-detection/file-size.js +37 -13
  51. data/app/assets/javascripts/datatables/plugins/type-detection/ip-address.js +113 -11
  52. data/app/assets/javascripts/datatables/plugins/type-detection/numString.js +63 -0
  53. data/app/assets/javascripts/datatables/plugins/type-detection/percent.js +34 -0
  54. data/app/assets/javascripts/datatables/plugins/type-detection/time-elapsed-dhms.js +42 -0
  55. data/app/assets/javascripts/datatables/plugins/type-detection/time.js +56 -0
  56. data/app/assets/javascripts/datatables/plugins/type-detection/title-numeric.js +40 -0
  57. data/app/assets/javascripts/datatables/plugins/type-detection/title-string.js +36 -0
  58. data/app/assets/stylesheets/datatables/dataTables.foundation.scss +5 -5
  59. data/app/assets/stylesheets/datatables/dataTables.material.scss +1 -1
  60. data/app/assets/stylesheets/datatables/extensions/AutoFill/autoFill.dataTables.scss +10 -3
  61. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.bootstrap.scss +12 -3
  62. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.bootstrap4.scss +13 -6
  63. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.dataTables.scss +2 -0
  64. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.foundation.scss +5 -1
  65. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.jqueryui.scss +1 -0
  66. data/app/assets/stylesheets/datatables/extensions/Buttons/buttons.semanticui.scss +2 -1
  67. data/app/assets/stylesheets/datatables/extensions/Buttons/common.scss +10 -0
  68. data/app/assets/stylesheets/datatables/extensions/Buttons/mixins.scss +42 -30
  69. data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.bootstrap.scss +11 -7
  70. data/app/assets/stylesheets/datatables/extensions/FixedColumns/fixedColumns.foundation.scss +1 -0
  71. data/app/assets/stylesheets/datatables/extensions/KeyTable/keyTable.dataTables.scss +13 -5
  72. data/app/assets/stylesheets/datatables/extensions/RowGroup/rowGroup.dataTables.scss +20 -2
  73. data/app/assets/stylesheets/datatables/extensions/Scroller/scroller.dataTables.scss +15 -2
  74. data/app/assets/stylesheets/datatables/jquery.dataTables.scss +5 -5
  75. data/jquery-datatables.gemspec +0 -3
  76. data/lib/generators/jquery/datatables/templates/stylesheets/foundation.scss.tt +0 -18
  77. data/lib/generators/jquery/datatables/templates/stylesheets/regular.scss.tt +0 -18
  78. data/lib/generators/jquery/datatables/templates/views/index.html.haml +6 -6
  79. data/lib/generators/jquery/datatables/templates/views/index.html.slim +2 -2
  80. data/lib/generators/jquery/datatables/templates/views/index.json.jbuilder +2 -2
  81. data/lib/jquery-datatables/engine.rb +0 -2
  82. data/lib/jquery-datatables/version.rb +1 -1
  83. data/lib/jquery-datatables.rb +3 -8
  84. metadata +31 -40
  85. data/app/assets/javascripts/datatables/dataTables.bootstrap2.js +0 -162
  86. data/app/assets/stylesheets/datatables/dataTables.bootstrap2.scss +0 -178
  87. /data/app/assets/javascripts/datatables/extensions/ColReorder/{colReorder.semanicui.js → colReorder.semanticui.js} +0 -0
  88. /data/app/assets/javascripts/datatables/extensions/FixedColumns/{fixedColumns.semanicui.js → fixedColumns.semanticui.js} +0 -0
  89. /data/app/assets/javascripts/datatables/extensions/FixedHeader/{fixedHeader.semanicui.js → fixedHeader.semanticui.js} +0 -0
  90. /data/app/assets/javascripts/datatables/extensions/KeyTable/{keyTable.semanicui.js → keyTable.semanticui.js} +0 -0
  91. /data/app/assets/javascripts/datatables/extensions/RowGroup/{rowGroup.semanicui.js → rowGroup.semanticui.js} +0 -0
  92. /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 nPage = document.createElement('span');
69
- var nOf = document.createElement('span');
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
- nPage.innerHTML = 'Page ';
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
- nPaging.appendChild(nPage);
102
- nPaging.appendChild(nInput);
103
- nPaging.appendChild(nOf);
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
- $(nInput).keyup(function (e) {
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).children('.' + paginateOfClassName).html(' of ' + iPages);
221
+ $(an).find('.' + paginateTotalClassName).html(iPages);
219
222
 
220
- // Current page numer input value
221
- $(an).children('.' + paginateInputClassName).val(iCurrentPage);
223
+ // Current page number input value
224
+ $(an).find('.' + paginateInputClassName).val(iCurrentPage);
222
225
  }
223
226
  };
224
- })(jQuery);
227
+ })(jQuery);