jquery.pagination.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. /**
  2. * jQuery EasyUI 1.4.4
  3. *
  4. * Copyright (c) 2009-2015 www.jeasyui.com. All rights reserved.
  5. *
  6. * Licensed under the freeware license: http://www.jeasyui.com/license_freeware.php
  7. * To use it on other terms please contact us: info@jeasyui.com
  8. *
  9. */
  10. (function($){
  11. function _1(_2){
  12. var _3=$.data(_2,"pagination");
  13. var _4=_3.options;
  14. var bb=_3.bb={};
  15. var _5=$(_2).addClass("pagination").html("<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tr></tr></table>");
  16. var tr=_5.find("tr");
  17. var aa=$.extend([],_4.layout);
  18. if(!_4.showPageList){
  19. _6(aa,"list");
  20. }
  21. if(!_4.showRefresh){
  22. _6(aa,"refresh");
  23. }
  24. if(aa[0]=="sep"){
  25. aa.shift();
  26. }
  27. if(aa[aa.length-1]=="sep"){
  28. aa.pop();
  29. }
  30. for(var _7=0;_7<aa.length;_7++){
  31. var _8=aa[_7];
  32. if(_8=="list"){
  33. var ps=$("<select class=\"pagination-page-list\"></select>");
  34. ps.bind("change",function(){
  35. _4.pageSize=parseInt($(this).val());
  36. _4.onChangePageSize.call(_2,_4.pageSize);
  37. _10(_2,_4.pageNumber);
  38. });
  39. for(var i=0;i<_4.pageList.length;i++){
  40. $("<option></option>").text(_4.pageList[i]).appendTo(ps);
  41. }
  42. $("<td></td>").append(ps).appendTo(tr);
  43. }else{
  44. if(_8=="sep"){
  45. $("<td><div class=\"pagination-btn-separator\"></div></td>").appendTo(tr);
  46. }else{
  47. if(_8=="first"){
  48. bb.first=_9("first");
  49. }else{
  50. if(_8=="prev"){
  51. bb.prev=_9("prev");
  52. }else{
  53. if(_8=="next"){
  54. bb.next=_9("next");
  55. }else{
  56. if(_8=="last"){
  57. bb.last=_9("last");
  58. }else{
  59. if(_8=="manual"){
  60. $("<span style=\"padding-left:6px;\"></span>").html(_4.beforePageText).appendTo(tr).wrap("<td></td>");
  61. bb.num=$("<input class=\"pagination-num\" type=\"text\" value=\"1\" size=\"2\">").appendTo(tr).wrap("<td></td>");
  62. bb.num.unbind(".pagination").bind("keydown.pagination",function(e){
  63. if(e.keyCode==13){
  64. var _a=parseInt($(this).val())||1;
  65. _10(_2,_a);
  66. return false;
  67. }
  68. });
  69. bb.after=$("<span style=\"padding-right:6px;\"></span>").appendTo(tr).wrap("<td></td>");
  70. }else{
  71. if(_8=="refresh"){
  72. bb.refresh=_9("refresh");
  73. }else{
  74. if(_8=="links"){
  75. $("<td class=\"pagination-links\"></td>").appendTo(tr);
  76. }
  77. }
  78. }
  79. }
  80. }
  81. }
  82. }
  83. }
  84. }
  85. }
  86. if(_4.buttons){
  87. $("<td><div class=\"pagination-btn-separator\"></div></td>").appendTo(tr);
  88. if($.isArray(_4.buttons)){
  89. for(var i=0;i<_4.buttons.length;i++){
  90. var _b=_4.buttons[i];
  91. if(_b=="-"){
  92. $("<td><div class=\"pagination-btn-separator\"></div></td>").appendTo(tr);
  93. }else{
  94. var td=$("<td></td>").appendTo(tr);
  95. var a=$("<a href=\"javascript:void(0)\"></a>").appendTo(td);
  96. a[0].onclick=eval(_b.handler||function(){
  97. });
  98. a.linkbutton($.extend({},_b,{plain:true}));
  99. }
  100. }
  101. }else{
  102. var td=$("<td></td>").appendTo(tr);
  103. $(_4.buttons).appendTo(td).show();
  104. }
  105. }
  106. $("<div class=\"pagination-info\"></div>").appendTo(_5);
  107. $("<div style=\"clear:both;\"></div>").appendTo(_5);
  108. function _9(_c){
  109. var _d=_4.nav[_c];
  110. var a=$("<a href=\"javascript:void(0)\"></a>").appendTo(tr);
  111. a.wrap("<td></td>");
  112. a.linkbutton({iconCls:_d.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){
  113. _d.handler.call(_2);
  114. });
  115. return a;
  116. };
  117. function _6(aa,_e){
  118. var _f=$.inArray(_e,aa);
  119. if(_f>=0){
  120. aa.splice(_f,1);
  121. }
  122. return aa;
  123. };
  124. };
  125. function _10(_11,_12){
  126. var _13=$.data(_11,"pagination").options;
  127. _14(_11,{pageNumber:_12});
  128. _13.onSelectPage.call(_11,_13.pageNumber,_13.pageSize);
  129. };
  130. function _14(_15,_16){
  131. var _17=$.data(_15,"pagination");
  132. var _18=_17.options;
  133. var bb=_17.bb;
  134. $.extend(_18,_16||{});
  135. var ps=$(_15).find("select.pagination-page-list");
  136. if(ps.length){
  137. ps.val(_18.pageSize+"");
  138. _18.pageSize=parseInt(ps.val());
  139. }
  140. var _19=Math.ceil(_18.total/_18.pageSize)||1;
  141. if(_18.pageNumber<1){
  142. _18.pageNumber=1;
  143. }
  144. if(_18.pageNumber>_19){
  145. _18.pageNumber=_19;
  146. }
  147. if(_18.total==0){
  148. _18.pageNumber=0;
  149. _19=0;
  150. }
  151. if(bb.num){
  152. bb.num.val(_18.pageNumber);
  153. }
  154. if(bb.after){
  155. bb.after.html(_18.afterPageText.replace(/{pages}/,_19));
  156. }
  157. var td=$(_15).find("td.pagination-links");
  158. if(td.length){
  159. td.empty();
  160. var _1a=_18.pageNumber-Math.floor(_18.links/2);
  161. if(_1a<1){
  162. _1a=1;
  163. }
  164. var _1b=_1a+_18.links-1;
  165. if(_1b>_19){
  166. _1b=_19;
  167. }
  168. _1a=_1b-_18.links+1;
  169. if(_1a<1){
  170. _1a=1;
  171. }
  172. for(var i=_1a;i<=_1b;i++){
  173. var a=$("<a class=\"pagination-link\" href=\"javascript:void(0)\"></a>").appendTo(td);
  174. a.linkbutton({plain:true,text:i});
  175. if(i==_18.pageNumber){
  176. a.linkbutton("select");
  177. }else{
  178. a.unbind(".pagination").bind("click.pagination",{pageNumber:i},function(e){
  179. _10(_15,e.data.pageNumber);
  180. });
  181. }
  182. }
  183. }
  184. var _1c=_18.displayMsg;
  185. _1c=_1c.replace(/{from}/,_18.total==0?0:_18.pageSize*(_18.pageNumber-1)+1);
  186. _1c=_1c.replace(/{to}/,Math.min(_18.pageSize*(_18.pageNumber),_18.total));
  187. _1c=_1c.replace(/{total}/,_18.total);
  188. $(_15).find("div.pagination-info").html(_1c);
  189. if(bb.first){
  190. bb.first.linkbutton({disabled:((!_18.total)||_18.pageNumber==1)});
  191. }
  192. if(bb.prev){
  193. bb.prev.linkbutton({disabled:((!_18.total)||_18.pageNumber==1)});
  194. }
  195. if(bb.next){
  196. bb.next.linkbutton({disabled:(_18.pageNumber==_19)});
  197. }
  198. if(bb.last){
  199. bb.last.linkbutton({disabled:(_18.pageNumber==_19)});
  200. }
  201. _1d(_15,_18.loading);
  202. };
  203. function _1d(_1e,_1f){
  204. var _20=$.data(_1e,"pagination");
  205. var _21=_20.options;
  206. _21.loading=_1f;
  207. if(_21.showRefresh&&_20.bb.refresh){
  208. _20.bb.refresh.linkbutton({iconCls:(_21.loading?"pagination-loading":"pagination-load")});
  209. }
  210. };
  211. $.fn.pagination=function(_22,_23){
  212. if(typeof _22=="string"){
  213. return $.fn.pagination.methods[_22](this,_23);
  214. }
  215. _22=_22||{};
  216. return this.each(function(){
  217. var _24;
  218. var _25=$.data(this,"pagination");
  219. if(_25){
  220. _24=$.extend(_25.options,_22);
  221. }else{
  222. _24=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_22);
  223. $.data(this,"pagination",{options:_24});
  224. }
  225. _1(this);
  226. _14(this);
  227. });
  228. };
  229. $.fn.pagination.methods={options:function(jq){
  230. return $.data(jq[0],"pagination").options;
  231. },loading:function(jq){
  232. return jq.each(function(){
  233. _1d(this,true);
  234. });
  235. },loaded:function(jq){
  236. return jq.each(function(){
  237. _1d(this,false);
  238. });
  239. },refresh:function(jq,_26){
  240. return jq.each(function(){
  241. _14(this,_26);
  242. });
  243. },select:function(jq,_27){
  244. return jq.each(function(){
  245. _10(this,_27);
  246. });
  247. }};
  248. $.fn.pagination.parseOptions=function(_28){
  249. var t=$(_28);
  250. return $.extend({},$.parser.parseOptions(_28,[{total:"number",pageSize:"number",pageNumber:"number",links:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)});
  251. };
  252. $.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,links:10,layout:["list","sep","first","prev","sep","manual","sep","next","last","sep","refresh"],onSelectPage:function(_29,_2a){
  253. },onBeforeRefresh:function(_2b,_2c){
  254. },onRefresh:function(_2d,_2e){
  255. },onChangePageSize:function(_2f){
  256. },beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){
  257. var _30=$(this).pagination("options");
  258. if(_30.pageNumber>1){
  259. $(this).pagination("select",1);
  260. }
  261. }},prev:{iconCls:"pagination-prev",handler:function(){
  262. var _31=$(this).pagination("options");
  263. if(_31.pageNumber>1){
  264. $(this).pagination("select",_31.pageNumber-1);
  265. }
  266. }},next:{iconCls:"pagination-next",handler:function(){
  267. var _32=$(this).pagination("options");
  268. var _33=Math.ceil(_32.total/_32.pageSize);
  269. if(_32.pageNumber<_33){
  270. $(this).pagination("select",_32.pageNumber+1);
  271. }
  272. }},last:{iconCls:"pagination-last",handler:function(){
  273. var _34=$(this).pagination("options");
  274. var _35=Math.ceil(_34.total/_34.pageSize);
  275. if(_34.pageNumber<_35){
  276. $(this).pagination("select",_35);
  277. }
  278. }},refresh:{iconCls:"pagination-refresh",handler:function(){
  279. var _36=$(this).pagination("options");
  280. if(_36.onBeforeRefresh.call(this,_36.pageNumber,_36.pageSize)!=false){
  281. $(this).pagination("select",_36.pageNumber);
  282. _36.onRefresh.call(this,_36.pageNumber,_36.pageSize);
  283. }
  284. }}}};
  285. })(jQuery);