12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- $.define(["jQuery", "util"], "pager", function($, util) {
- var sli = { tn: "li", chs: [{ tn: "a", attrs: [{ an: "href", av: "javascript:;" }], chs: ["..."] }] };
- function li(clses, dpn, rpn) {
- return { tn: "li", attrs: [{ an: "class", av: clses }, { an: "no", av: "" + rpn }], chs: [{ tn: "a", attrs: [{ an: "href", av: "javascript:;" }], chs: ["" + dpn] }] };
- }
- function calc(data) {
- var pages = Math.ceil(data.total / data.pageSize),
- no = data.pageNo,
- i = no - 2,
- ret = [],
- clses, dpn, rpn;
- ret.push(li(no > 1 ? "active":"disabled", "«", no - 1));
- ret.push(li(no === 1 ? "curr" :"active", "1", 1));
- if(no > 4) {
- ret.push(sli);
- }
- for(i = Math.max(2, no - 2); i < no; ++i) {
- ret.push(li("active", i, i));
- }
- if(no != 1) {
- ret.push(li("curr", no, no));
- }
- i = no + 1;
- var min = Math.min(pages, no + 3);
- for(; i < min; ++i) {
- ret.push(li("active", i, i));
- }
- if(pages - no > 3) {
- ret.push(sli);
- }
- if(pages != no) {
- ret.push(li("active", pages, pages));
- }
- ret.push(li(no != pages ? "active" :"disabled", "»", no + 1));
- return ret;
- }
- return function($e) {
- var e = $e,
- h = util.noop;
- e.empty();
- return {
- paint: function(data) {
- e.empty();
- if(data.total) {
- util.appendChild(e[0], calc(data));
- e.children("li.active").on("click", function() {
- h(parseInt($(this).attr("no")));
- });
- }
- },
- onGo: function(goh) {
- if(goh) {
- h = goh;
- }
- }
- };
- };
- });
|