-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathclasses.js
More file actions
119 lines (90 loc) · 3.01 KB
/
classes.js
File metadata and controls
119 lines (90 loc) · 3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
exports.PaginationUtil = function PaginationUtil(args) {
var pg = {};
var xx = {
page: parseInt(args.page),
size: parseInt(args.size),
total: parseInt(args.total),
navLength: parseInt(args.navLength),
defaultSize: 20,
pageCount: 0
};
for (var x in xx) {
pg[x] = xx[x];
}
pg.size = pg.size < 1 ? pg.defaultSize : pg.size;
pg.total = pg.total < 0 ? 0 : pg.total;
pg.pageCount = parseInt(((pg.total % pg.size == 0) ? (pg.total / pg.size) : (pg.total / pg.size) + 1));
pg.page = pg.page < 1 ? 1
: pg.page > pg.pageCount ? pg.pageCount
: pg.page;
var $this;
return $this = {
pg: pg,
getPage: function () {
return pg.page;
}.bind($this),
getSize: function () {
return pg.size;
},
hasPrev: function (p) {
if (!p) return pg.page > 1;
p = parseInt(p);
if (!!p) {
return p > 1;
}
},
hasNext: function (p) {
if (!p) return pg.page < pg.pageCount;
p = parseInt(p);
if (!!p) return p < pg.pageCount;
},
isFirst: function (p) {
if (!p) return pg.page <= $this.first();
p = parseInt(p);
if (!!p) return p <= $this.first();
}.bind($this),
isLast: function (p) {
if (!p) return pg.page >= $this.last();
p = parseInt(p);
if (!!p)return p >= $this.last();
}.bind($this),
isCurrentPage: function (aPage) {
aPage = parseInt(aPage);
return pg.page == parseInt(aPage);
},
next: function (pageTo) {
if (!pageTo) return pg.page < pg.pageCount ? pg.page + 1 : pg.pageCount;
pageTo = parseInt(pageTo);
if (!!pageTo) return pageTo < pg.pageCount ? pageTo + 1 : pg.pageCount;
},
prev: function (pageFrom) {
if (!pageFrom) return pg.page > 1 ? pg.page - 1 : 1;
pageFrom = parseInt(pageFrom);
if (!!pageFrom) return pageFrom > 1 ? pageFrom - 1 : 1;
},
first: function () {
return 1;
},
last: function () {
return pg.pageCount;
},
nav: function (navLength) {
var builder = [];
navLength = navLength || pg.navLength;
navLength = navLength < 2 ? 2 : navLength;
var nvLen = navLength > pg.pageCount ? pg.pageCount : navLength;
if (nvLen == 1) {
builder.push(pg.page);
return builder;
}
var mid = (nvLen % 2 === 0) ? (nvLen / 2) : ((nvLen - 1) / 2);
var trk = pg.page - mid;
trk = trk < 1 ? 1 : trk;
for (var i = 0; i < nvLen; i++) {
var track = trk + i;
if (track >= 1 && track <= pg.pageCount) builder.push(track);
}
return builder;
}
};
}