PageRenderTime 40ms CodeModel.GetById 7ms RepoModel.GetById 0ms app.codeStats 0ms

/arms/ui/arms.ui.include/inc/tableSorter/inc/jquery.tablesorter.pager.js

http://mbideasproject.googlecode.com/
JavaScript | 195 lines | 142 code | 40 blank | 13 comment | 11 complexity | 8b690694d17357cdfe126df0c9a3d692 MD5 | raw file
Possible License(s): GPL-2.0
  1. /*******************************************************************************
  2. jquery.mb.components
  3. Copyright (c) 2001-2010. Matteo Bicocchi (Pupunzi); Open lab srl, Firenze - Italy
  4. email: mbicocchi@open-lab.com
  5. site: http://pupunzi.com
  6. Licences: MIT, GPL
  7. http://www.opensource.org/licenses/mit-license.php
  8. http://www.gnu.org/licenses/gpl.html
  9. ******************************************************************************/
  10. (function($) {
  11. $.extend({
  12. tablesorterPager: new function() {
  13. function updatePageDisplay(c) {
  14. var s = $(c.cssPageDisplay,c.container).val((c.page+1) + c.seperator + c.totalPages);
  15. }
  16. function setPageSize(table,size) {
  17. var c = table.config;
  18. c.size = size;
  19. c.totalPages = Math.ceil(c.totalRows / c.size);
  20. c.pagerPositionSet = false;
  21. moveToPage(table);
  22. fixPosition(table);
  23. }
  24. function fixPosition(table) {
  25. var c = table.config;
  26. if(!c.pagerPositionSet && c.positionFixed) {
  27. var c = table.config, o = $(table);
  28. if(o.offset) {
  29. c.container.css({
  30. top: o.offset().top + o.height() + 'px',
  31. position: 'absolute'
  32. });
  33. }
  34. c.pagerPositionSet = true;
  35. }
  36. }
  37. function moveToFirstPage(table) {
  38. var c = table.config;
  39. c.page = 0;
  40. moveToPage(table);
  41. }
  42. function moveToLastPage(table) {
  43. var c = table.config;
  44. c.page = (c.totalPages-1);
  45. moveToPage(table);
  46. }
  47. function moveToNextPage(table) {
  48. var c = table.config;
  49. c.page++;
  50. if(c.page >= (c.totalPages-1)) {
  51. c.page = (c.totalPages-1);
  52. }
  53. moveToPage(table);
  54. }
  55. function moveToPrevPage(table) {
  56. var c = table.config;
  57. c.page--;
  58. if(c.page <= 0) {
  59. c.page = 0;
  60. }
  61. moveToPage(table);
  62. }
  63. function moveToPage(table) {
  64. var c = table.config;
  65. if(c.page < 0 || c.page > (c.totalPages-1)) {
  66. c.page = 0;
  67. }
  68. renderTable(table,c.rowsCopy);
  69. }
  70. function renderTable(table,rows) {
  71. var c = table.config;
  72. var l = rows.length;
  73. var s = (c.page * c.size);
  74. var e = (s + c.size);
  75. if(e > rows.length ) {
  76. e = rows.length;
  77. }
  78. var tableBody = $(table.tBodies[0]);
  79. // clear the table body
  80. $.tablesorter.clearTableBody(table);
  81. for(var i = s; i < e; i++) {
  82. //tableBody.append(rows[i]);
  83. var o = rows[i];
  84. var l = o.length;
  85. for(var j=0; j < l; j++) {
  86. tableBody[0].appendChild(o[j]);
  87. }
  88. }
  89. fixPosition(table,tableBody);
  90. $(table).trigger("applyWidgets");
  91. if( c.page >= c.totalPages ) {
  92. moveToLastPage(table);
  93. }
  94. updatePageDisplay(c);
  95. }
  96. this.appender = function(table,rows) {
  97. var c = table.config;
  98. c.rowsCopy = rows;
  99. c.totalRows = rows.length;
  100. c.totalPages = Math.ceil(c.totalRows / c.size);
  101. renderTable(table,rows);
  102. };
  103. this.defaults = {
  104. size: 10,
  105. offset: 0,
  106. page: 0,
  107. totalRows: 0,
  108. totalPages: 0,
  109. container: null,
  110. cssNext: '.next',
  111. cssPrev: '.prev',
  112. cssFirst: '.first',
  113. cssLast: '.last',
  114. cssPageDisplay: '.pagedisplay',
  115. cssPageSize: '.pagesize',
  116. seperator: "/",
  117. positionFixed: false,
  118. appender: this.appender
  119. };
  120. this.construct = function(settings) {
  121. return this.each(function() {
  122. config = $.extend(this.config, $.tablesorterPager.defaults, settings);
  123. var table = this, pager = config.container;
  124. $(this).trigger("appendCache");
  125. config.size = parseInt($(".pagesize",pager).val());
  126. $(config.cssFirst,pager).click(function() {
  127. moveToFirstPage(table);
  128. return false;
  129. });
  130. $(config.cssNext,pager).click(function() {
  131. moveToNextPage(table);
  132. return false;
  133. });
  134. $(config.cssPrev,pager).click(function() {
  135. moveToPrevPage(table);
  136. return false;
  137. });
  138. $(config.cssLast,pager).click(function() {
  139. moveToLastPage(table);
  140. return false;
  141. });
  142. $(config.cssPageSize,pager).change(function() {
  143. setPageSize(table,parseInt($(this).val()));
  144. return false;
  145. });
  146. });
  147. };
  148. }
  149. });
  150. // extend plugin scope
  151. $.fn.extend({
  152. tablesorterPager: $.tablesorterPager.construct
  153. });
  154. })(jQuery);