This repository has been archived by the owner on Jan 31, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
polymer-datatables-pages.html
executable file
·86 lines (85 loc) · 2.31 KB
/
polymer-datatables-pages.html
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
<link rel="import" href="../polymer/polymer.html">
<polymer-element name="polymer-datatables-pages" attributes="pageTotal perPage paginationRange currentPage">
<template>
<div id="pages">
<template repeat="{{ page in pages}}">
<template if="{{ page.number }}">
<a number="{{page.number}}"
on-tap="{{ updatePage }}"
class="page-number {{ {current: page.isCurrent } | tokenList }}">{{page.number}}</a>
</template>
<template if="{{ page.ellipsis }}">
<span class="ellipsis">...</span>
</template>
</template>
</div>
</template>
<script>
Polymer({
publish: {
paginationRange: 5,
perPage: 10,
pages: [],
pageTotal: 1,
currentPage: 1,
},
setPageRanges: function() {
var pages = [];
var diff = Math.floor(this.paginationRange/2);
var min = this.currentPage - diff;
var max = this.currentPage + diff;
if( min < 1 ) {
max = max - min;
min = 1;
}
if( max >= this.pageTotal ) {
var adjustMin = min + this.pageTotal - max;
if( adjustMin > 0 ) min = adjustMin;
max = this.pageTotal;
}
if( min != 1 ) {
pages.push({
number: 1
});
pages.push({
ellipsis: true
});
}
for (var i = min; i < max+1; i++) {
var page = {
number: i
};
if( i == this.currentPage ) page.isCurrent = true;
pages.push(page);
}
if( max != this.pageTotal ) {
pages.push({
ellipsis: true
});
pages.push({
number: this.pageTotal
});
}
this.pages = pages;
},
updatePage: function(event, detail, sender) {
this.currentPage = Number( sender.getAttribute("number") );
},
updatePageCount: function(event, detail, sender) {
this.perPage = Number( sender.value );
},
currentPageChanged: function(oldValue,newValue) {
if( newValue ) this.setPageRanges();
},
perPageChanged: function(oldValue,newValue) {
if( newValue ) this.setPageRanges();
},
pageTotalChanged: function(oldValue,newValue) {
if( newValue ) this.setPageRanges();
},
ready: function() {
this.setPageRanges();
},
});
</script>
</polymer-element>