Pagination playground
by Dominic Myers
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://mdbootstrap.com/mdbcdn/mdb.min.js"></script>
<span class="counter">0</span>
<div class="container">
<div class="row">
<div class="text-right col-md-12">
<ul class="pagination pag-circle" id="tablePagination"></ul>
</div>
</div>
</div>
CSS
@import url(//fonts.googleapis.com/icon?family=Material+Icons);
@import url(//mdbootstrap.com/mdbcdn/mdb.min.css);
.counter {
display: none;
}
JavaScript
let tablePagination = $("#tablePagination");
let buildPagination = function(target, start, hits) {
let pages = Math.ceil(hits / 10);
let pagesArray = [];
/*
* Sort out pages links
*/
if (pages < 5) {
for (let i = 0; i < pages; i++) {
let pageBubble = $("<li></li>", {
"data-start": i * 10
});
(Math.floor((i) * 10) === start) && pageBubble.addClass("active");
pageBubble.append($("<a></a>", {
"href": "#",
"text": i + 1
}));
pagesArray.push(pageBubble)
}
} else {
/*
* Show three pages, and disabled padding if required
*/
if (start === 0) {
for (let i = 0; i < 3; i++) {
let pageBubble = $("<li></li>", {
"data-start": i * 10
});
(Math.floor((i) * 10) === start) && pageBubble.addClass("active");
pageBubble.append($("<a></a>", {
"href": "#",
"text": i + 1
}));
pagesArray.push(pageBubble);
}
let pageBubble = $("<li></li>", {
"class": "disabled"
});
pageBubble.append($("<a></a>", {
"href": "#",
"text": "…"
}));
pagesArray.push(pageBubble);
} else if ((start + 10) >= hits) {
let pageBubble = $("<li></li>", {
"class": "disabled"
});
pageBubble.append($("<a></a>", {
"href": "#",
"text": "…"
}));
pagesArray.push(pageBubble);
for (let i = pages - 3; i < pages; i++) {
let pageBubble = $("<li></li>", {
"data-start": i * 10
});
(Math.floor((i) * 10) === start) && pageBubble.addClass("active");
...