176 lines
4.5 KiB
JavaScript
176 lines
4.5 KiB
JavaScript
function pagination(id, callback = null) {
|
|
|
|
return {
|
|
|
|
currentPage: 1,
|
|
|
|
total: 1,
|
|
|
|
paginationTemplate: $(id).html(),
|
|
|
|
init: function() {
|
|
this.initPagination()
|
|
},
|
|
|
|
fetchHistory: function() {
|
|
this.initPagination()
|
|
},
|
|
|
|
getPaginationTemplate: function(index) {
|
|
|
|
let li = document.createElement('a');
|
|
|
|
li.id = `pagination${index}`;
|
|
|
|
li.text = index;
|
|
|
|
if (index === "moreStart" || index === "moreEnd") {
|
|
li.text = "...";
|
|
}
|
|
|
|
li.onclick = function() {
|
|
|
|
this.changePagination(index);
|
|
|
|
callback && callback();
|
|
|
|
|
|
}.bind(this);
|
|
|
|
li.setAttribute("href", 'javascript:void(0)');
|
|
|
|
li.setAttribute("class", 'yb-reward-history__pagination');
|
|
|
|
return li;
|
|
},
|
|
//上一页
|
|
changePagination: function(index) {
|
|
|
|
if (index === "1" && this.currentPage !== 1) {
|
|
|
|
this.currentPage--;
|
|
|
|
} else if (index === "1" && this.currentPage !== this.total) {
|
|
|
|
this.currentPage++;
|
|
|
|
} else if (index === "moreStart") {
|
|
|
|
if (this.currentPage - 3 > 1) {
|
|
|
|
this.currentPage -= 3;
|
|
|
|
}
|
|
} else if (index === "moreEnd") {
|
|
|
|
if (this.currentPage + 3 < this.total) {
|
|
|
|
if (this.currentPage === 1) {
|
|
this.currentPage = 6;
|
|
} else {
|
|
this.currentPage += 3;
|
|
}
|
|
|
|
}
|
|
|
|
} else if (parseInt(index)) {
|
|
|
|
this.currentPage = index;
|
|
}
|
|
|
|
this.initPagination();
|
|
|
|
},
|
|
initPagination: function() {
|
|
|
|
let element = document.querySelector(id);
|
|
|
|
$(id).html("");
|
|
|
|
let fragment = document.createDocumentFragment();
|
|
|
|
let active = 'yb-reward-history__pagination yb-reward-history__pagination-active';
|
|
|
|
if (this.total > 1) {
|
|
|
|
if (this.total > 5) {
|
|
|
|
// let li = this.getPaginationTemplate("上一页");
|
|
|
|
// fragment.appendChild(li);
|
|
|
|
if (this.currentPage <= 5) {
|
|
|
|
for (let i = 1; i <= 5; i++) {
|
|
|
|
let li = this.getPaginationTemplate(i);
|
|
|
|
fragment.appendChild(li);
|
|
|
|
if (i === this.currentPage) {
|
|
li.setAttribute("class", active);
|
|
}
|
|
}
|
|
|
|
} else {
|
|
|
|
let li = this.getPaginationTemplate("moreStart");
|
|
|
|
fragment.appendChild(li);
|
|
|
|
for (let i = this.currentPage - 2; i <= this.currentPage + 2 && i < this.total; i++) {
|
|
|
|
let li = this.getPaginationTemplate(i);
|
|
|
|
fragment.appendChild(li);
|
|
|
|
if (i === this.currentPage) {
|
|
li.setAttribute("class", active);
|
|
}
|
|
|
|
}
|
|
}
|
|
if (this.currentPage === 1 || this.currentPage + 3 !== this.total && this.currentPage + 2 !== this.total && this.currentPage + 1 !== this.total && this.currentPage !== this.total) {
|
|
|
|
|
|
fragment.appendChild(this.getPaginationTemplate("moreEnd"));
|
|
|
|
fragment.appendChild(this.getPaginationTemplate(this.total));
|
|
|
|
} else {
|
|
|
|
let li = this.getPaginationTemplate(this.total);
|
|
|
|
if (this.currentPage === this.total) {
|
|
|
|
li.setAttribute("class", active)
|
|
|
|
}
|
|
|
|
fragment.appendChild(li);
|
|
|
|
}
|
|
|
|
// fragment.appendChild(this.getPaginationTemplate("下一页"));
|
|
|
|
} else {
|
|
|
|
for (let i = 1; i <= this.total; i++) {
|
|
|
|
let li = this.getPaginationTemplate(i);
|
|
|
|
fragment.appendChild(li);
|
|
|
|
if (i === this.currentPage) {
|
|
li.setAttribute("class", 'yb-reward-history__pagination yb-reward-history__pagination-active')
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
element.appendChild(fragment)
|
|
}
|
|
},
|
|
}
|
|
|
|
} |