Pager/Paging view logic
Three parameters are given:
- Current page
- Total pages
- Total # of links to display
HTML
<ul id="pager"></ul>
JavaScript
var render = function(total, current, limit) {
if (total < current || total <= 0 || limit <= 0) {
return;
}
var pager = [], // list of page links
index = current; // find the index of current page link
// curent page link should be in there right?
pager.push(index);
// create a deviation off the current index
// and add if they satisfy the limit condition
for (var dev = 1; pager.length < limit; dev++) {
var left = index - dev,
right = index + dev;
if (left > 0 && pager.length < limit) {
pager.push(left);
}
if (right <= total && pager.length < limit) {
pager.push(right);
}
if (dev >= total) {
break;
}
}
return pager.sort(function(a, b) { return a >b; });
};
// test
var totalPages = 10;
for (var current = 1; current <= totalPages; current++) {
console.log(current, render(totalPages, current, 5));
}