No Description

pager.js 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. $.define(["jQuery", "util"], "pager", function($, util) {
  2. var sli = { tn: "li", chs: [{ tn: "a", attrs: [{ an: "href", av: "javascript:;" }], chs: ["..."] }] };
  3. function li(clses, dpn, rpn) {
  4. return { tn: "li", attrs: [{ an: "class", av: clses }, { an: "no", av: "" + rpn }], chs: [{ tn: "a", attrs: [{ an: "href", av: "javascript:;" }], chs: ["" + dpn] }] };
  5. }
  6. function calc(data) {
  7. var pages = Math.ceil(data.total / data.pageSize),
  8. no = data.pageNo,
  9. i = no - 2,
  10. ret = [],
  11. clses, dpn, rpn;
  12. ret.push(li(no > 1 ? "active":"disabled", "«", no - 1));
  13. ret.push(li(no === 1 ? "curr" :"active", "1", 1));
  14. if(no > 4) {
  15. ret.push(sli);
  16. }
  17. for(i = Math.max(2, no - 2); i < no; ++i) {
  18. ret.push(li("active", i, i));
  19. }
  20. if(no != 1) {
  21. ret.push(li("curr", no, no));
  22. }
  23. i = no + 1;
  24. var min = Math.min(pages, no + 3);
  25. for(; i < min; ++i) {
  26. ret.push(li("active", i, i));
  27. }
  28. if(pages - no > 3) {
  29. ret.push(sli);
  30. }
  31. if(pages != no) {
  32. ret.push(li("active", pages, pages));
  33. }
  34. ret.push(li(no != pages ? "active" :"disabled", "»", no + 1));
  35. return ret;
  36. }
  37. return function($e) {
  38. var e = $e,
  39. h = util.noop;
  40. e.empty();
  41. return {
  42. paint: function(data) {
  43. e.empty();
  44. if(data.total) {
  45. util.appendChild(e[0], calc(data));
  46. e.children("li.active").on("click", function() {
  47. h(parseInt($(this).attr("no")));
  48. });
  49. }
  50. },
  51. onGo: function(goh) {
  52. if(goh) {
  53. h = goh;
  54. }
  55. }
  56. };
  57. };
  58. });