Dashboard sipadu mbip
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. /**
  2. * Sometimes for quick navigation, it can be useful to allow an end user to
  3. * enter which page they wish to jump to manually. This paging control uses a
  4. * text input box to accept new paging numbers (arrow keys are also allowed
  5. * for), and four standard navigation buttons are also presented to the end
  6. * user.
  7. *
  8. * @name Navigation with text input
  9. * @summary Shows an input element into which the user can type a page number
  10. * @author [Allan Jardine](http://sprymedia.co.uk)
  11. * @author [Gordey Doronin](http://github.com/GDoronin)
  12. *
  13. * @example
  14. * $(document).ready(function() {
  15. * $('#example').dataTable( {
  16. * "pagingType": "input"
  17. * } );
  18. * } );
  19. */
  20. (function ($) {
  21. function calcDisableClasses(oSettings) {
  22. var start = oSettings._iDisplayStart;
  23. var length = oSettings._iDisplayLength;
  24. var visibleRecords = oSettings.fnRecordsDisplay();
  25. var all = length === -1;
  26. // Gordey Doronin: Re-used this code from main jQuery.dataTables source code. To be consistent.
  27. var page = all ? 0 : Math.ceil(start / length);
  28. var pages = all ? 1 : Math.ceil(visibleRecords / length);
  29. var disableFirstPrevClass = (page > 0 ? '' : oSettings.oClasses.sPageButtonDisabled);
  30. var disableNextLastClass = (page < pages - 1 ? '' : oSettings.oClasses.sPageButtonDisabled);
  31. return {
  32. 'first': disableFirstPrevClass,
  33. 'previous': disableFirstPrevClass,
  34. 'next': disableNextLastClass,
  35. 'last': disableNextLastClass
  36. };
  37. }
  38. function calcCurrentPage(oSettings) {
  39. return Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
  40. }
  41. function calcPages(oSettings) {
  42. return Math.ceil(oSettings.fnRecordsDisplay() / oSettings._iDisplayLength);
  43. }
  44. var firstClassName = 'first';
  45. var previousClassName = 'previous';
  46. var nextClassName = 'next';
  47. var lastClassName = 'last';
  48. var paginateClassName = 'paginate';
  49. var paginateOfClassName = 'paginate_of';
  50. var paginatePageClassName = 'paginate_page';
  51. var paginateInputClassName = 'paginate_input';
  52. $.fn.dataTableExt.oPagination.input = {
  53. 'fnInit': function (oSettings, nPaging, fnCallbackDraw) {
  54. var nFirst = document.createElement('span');
  55. var nPrevious = document.createElement('span');
  56. var nNext = document.createElement('span');
  57. var nLast = document.createElement('span');
  58. var nInput = document.createElement('input');
  59. var nPage = document.createElement('span');
  60. var nOf = document.createElement('span');
  61. var language = oSettings.oLanguage.oPaginate;
  62. var classes = oSettings.oClasses;
  63. nFirst.innerHTML = language.sFirst;
  64. nPrevious.innerHTML = language.sPrevious;
  65. nNext.innerHTML = language.sNext;
  66. nLast.innerHTML = language.sLast;
  67. nFirst.className = firstClassName + ' ' + classes.sPageButton;
  68. nPrevious.className = previousClassName + ' ' + classes.sPageButton;
  69. nNext.className = nextClassName + ' ' + classes.sPageButton;
  70. nLast.className = lastClassName + ' ' + classes.sPageButton;
  71. nOf.className = paginateOfClassName;
  72. nPage.className = paginatePageClassName;
  73. nInput.className = paginateInputClassName;
  74. if (oSettings.sTableId !== '') {
  75. nPaging.setAttribute('id', oSettings.sTableId + '_' + paginateClassName);
  76. nFirst.setAttribute('id', oSettings.sTableId + '_' + firstClassName);
  77. nPrevious.setAttribute('id', oSettings.sTableId + '_' + previousClassName);
  78. nNext.setAttribute('id', oSettings.sTableId + '_' + nextClassName);
  79. nLast.setAttribute('id', oSettings.sTableId + '_' + lastClassName);
  80. }
  81. nInput.type = 'text';
  82. nPage.innerHTML = 'Page ';
  83. nPaging.appendChild(nFirst);
  84. nPaging.appendChild(nPrevious);
  85. nPaging.appendChild(nPage);
  86. nPaging.appendChild(nInput);
  87. nPaging.appendChild(nOf);
  88. nPaging.appendChild(nNext);
  89. nPaging.appendChild(nLast);
  90. $(nFirst).click(function() {
  91. var iCurrentPage = calcCurrentPage(oSettings);
  92. if (iCurrentPage !== 1) {
  93. oSettings.oApi._fnPageChange(oSettings, 'first');
  94. fnCallbackDraw(oSettings);
  95. }
  96. });
  97. $(nPrevious).click(function() {
  98. var iCurrentPage = calcCurrentPage(oSettings);
  99. if (iCurrentPage !== 1) {
  100. oSettings.oApi._fnPageChange(oSettings, 'previous');
  101. fnCallbackDraw(oSettings);
  102. }
  103. });
  104. $(nNext).click(function() {
  105. var iCurrentPage = calcCurrentPage(oSettings);
  106. if (iCurrentPage !== calcPages(oSettings)) {
  107. oSettings.oApi._fnPageChange(oSettings, 'next');
  108. fnCallbackDraw(oSettings);
  109. }
  110. });
  111. $(nLast).click(function() {
  112. var iCurrentPage = calcCurrentPage(oSettings);
  113. if (iCurrentPage !== calcPages(oSettings)) {
  114. oSettings.oApi._fnPageChange(oSettings, 'last');
  115. fnCallbackDraw(oSettings);
  116. }
  117. });
  118. $(nInput).keyup(function (e) {
  119. // 38 = up arrow, 39 = right arrow
  120. if (e.which === 38 || e.which === 39) {
  121. this.value++;
  122. }
  123. // 37 = left arrow, 40 = down arrow
  124. else if ((e.which === 37 || e.which === 40) && this.value > 1) {
  125. this.value--;
  126. }
  127. if (this.value === '' || this.value.match(/[^0-9]/)) {
  128. /* Nothing entered or non-numeric character */
  129. this.value = this.value.replace(/[^\d]/g, ''); // don't even allow anything but digits
  130. return;
  131. }
  132. var iNewStart = oSettings._iDisplayLength * (this.value - 1);
  133. if (iNewStart < 0) {
  134. iNewStart = 0;
  135. }
  136. if (iNewStart >= oSettings.fnRecordsDisplay()) {
  137. iNewStart = (Math.ceil((oSettings.fnRecordsDisplay() - 1) / oSettings._iDisplayLength) - 1) * oSettings._iDisplayLength;
  138. }
  139. oSettings._iDisplayStart = iNewStart;
  140. fnCallbackDraw(oSettings);
  141. });
  142. // Take the brutal approach to cancelling text selection.
  143. $('span', nPaging).bind('mousedown', function () { return false; });
  144. $('span', nPaging).bind('selectstart', function() { return false; });
  145. // If we can't page anyway, might as well not show it.
  146. var iPages = calcPages(oSettings);
  147. if (iPages <= 1) {
  148. $(nPaging).hide();
  149. }
  150. },
  151. 'fnUpdate': function (oSettings) {
  152. if (!oSettings.aanFeatures.p) {
  153. return;
  154. }
  155. var iPages = calcPages(oSettings);
  156. var iCurrentPage = calcCurrentPage(oSettings);
  157. var an = oSettings.aanFeatures.p;
  158. if (iPages <= 1) // hide paging when we can't page
  159. {
  160. $(an).hide();
  161. return;
  162. }
  163. var disableClasses = calcDisableClasses(oSettings);
  164. $(an).show();
  165. // Enable/Disable `first` button.
  166. $(an).children('.' + firstClassName)
  167. .removeClass(oSettings.oClasses.sPageButtonDisabled)
  168. .addClass(disableClasses[firstClassName]);
  169. // Enable/Disable `prev` button.
  170. $(an).children('.' + previousClassName)
  171. .removeClass(oSettings.oClasses.sPageButtonDisabled)
  172. .addClass(disableClasses[previousClassName]);
  173. // Enable/Disable `next` button.
  174. $(an).children('.' + nextClassName)
  175. .removeClass(oSettings.oClasses.sPageButtonDisabled)
  176. .addClass(disableClasses[nextClassName]);
  177. // Enable/Disable `last` button.
  178. $(an).children('.' + lastClassName)
  179. .removeClass(oSettings.oClasses.sPageButtonDisabled)
  180. .addClass(disableClasses[lastClassName]);
  181. // Paginate of N pages text
  182. $(an).children('.' + paginateOfClassName).html(' of ' + iPages);
  183. // Current page numer input value
  184. $(an).children('.' + paginateInputClassName).val(iCurrentPage);
  185. }
  186. };
  187. })(jQuery);