Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
New 'getPages' method (shifted pages) and tests
  • Loading branch information
Eugene Simakin committed Jan 6, 2014
1 parent dcd7c65 commit cbc924d
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 21 deletions.
25 changes: 16 additions & 9 deletions jquery.twbsPagination.js
Expand Up @@ -141,17 +141,24 @@
getPages: function (currentPage) {
var pages = [];

var startPage;
var section = parseInt(currentPage / this.options.visiblePages, 10);
if (currentPage % this.options.visiblePages === 0) {
startPage = (section - 1) * this.options.visiblePages + 1;
} else {
startPage = section * this.options.visiblePages + 1;
var half = Math.floor(this.options.visiblePages / 2);
var start = currentPage - half + 1 - this.options.visiblePages % 2;
var end = currentPage + half;

// handle boundary case
if (start <= 0) {
start = 1;
end = this.options.visiblePages;
}
if (end > this.options.totalPages) {
start = this.options.totalPages - this.options.visiblePages + 1;
end = this.options.totalPages;
}

var endPage = Math.min(this.options.totalPages, (startPage + this.options.visiblePages) - 1);
for (var i = startPage; i <= endPage; i++) {
pages.push(i);
var itPage = start;
while (itPage <= end) {
pages.push(itPage);
itPage++;
}

return {"currentPage": currentPage, "numeric": pages};
Expand Down
61 changes: 49 additions & 12 deletions tests/test.js
Expand Up @@ -2,9 +2,7 @@

var pag1 = $('#pagination');
pag1.twbsPagination({
totalPages: 30,
startPage: 4,
visiblePages: 5
totalPages: 30
});

test("Test 'equals' method", function () {
Expand All @@ -18,16 +16,55 @@
ok(!pag1.twbsPagination('equals', b, real), "Dirty test");
});

test( "Test 'getPages' method", function() {
pag1.twbsPagination('init', {totalPages: 50, visiblePages: 10});
var expected1 = {currentPage: 1, numeric: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};
test( "Test 'getPages' method (EVEN visible pages number)", function() {
var expected1 = {currentPage: 1, numeric: [1, 2, 3, 4, 5]};
deepEqual(pag1.twbsPagination('getPages', 1), expected1);
var expected2 = {currentPage: 10, numeric: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]};
deepEqual(pag1.twbsPagination('getPages', 10), expected2);
var expected3 = {currentPage: 11, numeric: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]};
deepEqual(pag1.twbsPagination('getPages', 11), expected3);
var expected4 = {currentPage: 45, numeric: [41, 42, 43, 44, 45, 46, 47, 48, 49, 50]};
deepEqual(pag1.twbsPagination('getPages', 45), expected4);
var expected2 = {currentPage: 2, numeric: [1, 2, 3, 4, 5]};
deepEqual(pag1.twbsPagination('getPages', 2), expected2);
var expected3 = {currentPage: 3, numeric: [1, 2, 3, 4, 5]};
deepEqual(pag1.twbsPagination('getPages', 3), expected3);

var expected4 = {currentPage: 4, numeric: [2, 3, 4, 5, 6]};
deepEqual(pag1.twbsPagination('getPages', 4), expected4);
var expected5 = {currentPage: 5, numeric: [3, 4, 5, 6, 7]};
deepEqual(pag1.twbsPagination('getPages', 5), expected5);
var expected20 = {currentPage: 20, numeric: [18, 19, 20, 21, 22]};
deepEqual(pag1.twbsPagination('getPages', 20), expected20);

var expected27 = {currentPage: 27, numeric: [25, 26, 27, 28, 29]};
deepEqual(pag1.twbsPagination('getPages', 27), expected27);
var expected28 = {currentPage: 28, numeric: [26, 27, 28, 29, 30]};
deepEqual(pag1.twbsPagination('getPages', 28), expected28);
var expected29 = {currentPage: 29, numeric: [26, 27, 28, 29, 30]};
deepEqual(pag1.twbsPagination('getPages', 29), expected29);
var expected30 = {currentPage: 30, numeric: [26, 27, 28, 29, 30]};
deepEqual(pag1.twbsPagination('getPages', 30), expected30);
});

test( "Test 'getPages' method (ODD visible pages number)", function() {
pag1.twbsPagination('init', {totalPages: 30, visiblePages: 6});
var expected1 = {currentPage: 1, numeric: [1, 2, 3, 4, 5, 6]};
deepEqual(pag1.twbsPagination('getPages', 1), expected1);
var expected2 = {currentPage: 2, numeric: [1, 2, 3, 4, 5, 6]};
deepEqual(pag1.twbsPagination('getPages', 2), expected2);
var expected3 = {currentPage: 3, numeric: [1, 2, 3, 4, 5, 6]};
deepEqual(pag1.twbsPagination('getPages', 3), expected3);

var expected4 = {currentPage: 4, numeric: [2, 3, 4, 5, 6, 7]};
deepEqual(pag1.twbsPagination('getPages', 4), expected4);
var expected5 = {currentPage: 5, numeric: [3, 4, 5, 6, 7, 8]};
deepEqual(pag1.twbsPagination('getPages', 5), expected5);
var expected20 = {currentPage: 20, numeric: [18, 19, 20, 21, 22, 23]};
deepEqual(pag1.twbsPagination('getPages', 20), expected20);

var expected27 = {currentPage: 27, numeric: [25, 26, 27, 28, 29, 30]};
deepEqual(pag1.twbsPagination('getPages', 27), expected27);
var expected28 = {currentPage: 28, numeric: [25, 26, 27, 28, 29, 30]};
deepEqual(pag1.twbsPagination('getPages', 28), expected28);
var expected29 = {currentPage: 29, numeric: [25, 26, 27, 28, 29, 30]};
deepEqual(pag1.twbsPagination('getPages', 29), expected29);
var expected30 = {currentPage: 30, numeric: [25, 26, 27, 28, 29, 30]};
deepEqual(pag1.twbsPagination('getPages', 30), expected30);
});

})();

0 comments on commit cbc924d

Please sign in to comment.