Skip to content

Commit

Permalink
Not triggering page if it only one is fixed (issue #136)
Browse files Browse the repository at this point in the history
  • Loading branch information
Eugene Simakin committed Sep 28, 2016
1 parent 6359000 commit 5bc875b
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 77 deletions.
2 changes: 1 addition & 1 deletion examples/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
</div>
<script type="text/javascript">
$(function () {
var obj = $('#pagination').twbsPagination({
window.pagObj = $('#pagination').twbsPagination({
totalPages: 35,
visiblePages: 10,
onPageClick: function (event, page) {
Expand Down
12 changes: 7 additions & 5 deletions jquery.twbsPagination.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,20 @@
throw new Error('Visible pages option is not correct!');
}

if (this.options.onPageClick instanceof Function) {
this.$element.first().on('page', this.options.onPageClick);
}

// hide if only one page exists
if (this.options.totalPages == 1) {
if (this.options.hideOnlyOnePage && this.options.totalPages == 1) {
this.$element.trigger('page', 1);
return this;
}

if (this.options.totalPages < this.options.visiblePages) {
this.options.visiblePages = this.options.totalPages;
}

if (this.options.onPageClick instanceof Function) {
this.$element.first().on('page', this.options.onPageClick);
}

if (this.options.href) {
this.options.startPage = this.getPageFromQueryString();
if (!this.options.startPage) {
Expand Down Expand Up @@ -282,6 +283,7 @@
startPage: 1,
visiblePages: 5,
initiateStartPageClick: true,
hideOnlyOnePage: false,
href: false,
pageVariable: '{{page}}',
totalPagesVariable: '{{total_pages}}',
Expand Down
5 changes: 3 additions & 2 deletions tests/run-test-jquery-1.8.1.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
<meta charset="utf-8">
<title>Tests</title>

<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.13.0.css">
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-2.0.1.css">

<script src="http://code.jquery.com/jquery-1.8.1.min.js" type="text/javascript"></script>
<script src="//code.jquery.com/jquery-2.0.3.min.js" type="text/javascript"></script>
<script src="https://code.jquery.com/qunit/qunit-2.0.1.js" type="text/javascript"></script>
<script src="../jquery.twbsPagination.js" type="text/javascript"></script>

</head>
Expand Down
131 changes: 62 additions & 69 deletions tests/test.js
Original file line number Diff line number Diff line change
@@ -1,89 +1,66 @@
(function ($) {

var pag1 = $('#pagination');
var pag1 = $('#pagination'),
destroyAndCreateWithOpts = function(elem, opts) {
elem.twbsPagination('destroy');
elem.twbsPagination(opts);
};

QUnit.test("Test destroy called before initialization", function () {
ok(pag1.twbsPagination('destroy'));
});

QUnit.test("Test 'getPages' method (EVEN visible pages number)", function () {
pag1.twbsPagination('destroy');
pag1.twbsPagination({
destroyAndCreateWithOpts(pag1, {
totalPages: 30
});

var expected1 = {currentPage: 1, numeric: [1, 2, 3, 4, 5]};
deepEqual(pag1.twbsPagination('getPages', 1), expected1);
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);
deepEqual(pag1.twbsPagination('getPages', 1), {currentPage: 1, numeric: [1, 2, 3, 4, 5]});
deepEqual(pag1.twbsPagination('getPages', 2), {currentPage: 2, numeric: [1, 2, 3, 4, 5]});
deepEqual(pag1.twbsPagination('getPages', 3), {currentPage: 3, numeric: [1, 2, 3, 4, 5]});

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

deepEqual(pag1.twbsPagination('getPages', 27), {currentPage: 27, numeric: [25, 26, 27, 28, 29]});
deepEqual(pag1.twbsPagination('getPages', 28), {currentPage: 28, numeric: [26, 27, 28, 29, 30]});
deepEqual(pag1.twbsPagination('getPages', 29), {currentPage: 29, numeric: [26, 27, 28, 29, 30]});
deepEqual(pag1.twbsPagination('getPages', 30), {currentPage: 30, numeric: [26, 27, 28, 29, 30]});
});

QUnit.test("Test 'getPages' method (ODD visible pages number)", function () {
pag1.twbsPagination('destroy');
pag1.twbsPagination({
destroyAndCreateWithOpts(pag1, {
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);
deepEqual(pag1.twbsPagination('getPages', 1), {currentPage: 1, numeric: [1, 2, 3, 4, 5, 6]});
deepEqual(pag1.twbsPagination('getPages', 2), {currentPage: 2, numeric: [1, 2, 3, 4, 5, 6]});
deepEqual(pag1.twbsPagination('getPages', 3), {currentPage: 3, numeric: [1, 2, 3, 4, 5, 6]});

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

deepEqual(pag1.twbsPagination('getPages', 27), {currentPage: 27, numeric: [25, 26, 27, 28, 29, 30]});
deepEqual(pag1.twbsPagination('getPages', 28), {currentPage: 28, numeric: [25, 26, 27, 28, 29, 30]});
deepEqual(pag1.twbsPagination('getPages', 29), {currentPage: 29, numeric: [25, 26, 27, 28, 29, 30]});
deepEqual(pag1.twbsPagination('getPages', 30), {currentPage: 30, numeric: [25, 26, 27, 28, 29, 30]});
});

QUnit.test("Test 'getPages' method (total < visible)", function () {
pag1.twbsPagination('destroy');
pag1.twbsPagination({
destroyAndCreateWithOpts(pag1, {
totalPages: 3,
visiblePages: 5
});
var exp1 = {currentPage: 1, numeric: [1, 2, 3]};
deepEqual(pag1.twbsPagination('getPages', 1), exp1);
var exp2 = {currentPage: 2, numeric: [1, 2, 3]};
deepEqual(pag1.twbsPagination('getPages', 2), exp2);
var exp3 = {currentPage: 3, numeric: [1, 2, 3]};
deepEqual(pag1.twbsPagination('getPages', 3), exp3);
deepEqual(pag1.twbsPagination('getPages', 1), {currentPage: 1, numeric: [1, 2, 3]});
deepEqual(pag1.twbsPagination('getPages', 2), {currentPage: 2, numeric: [1, 2, 3]});
deepEqual(pag1.twbsPagination('getPages', 3), {currentPage: 3, numeric: [1, 2, 3]});
});

QUnit.test("Test classes appended for pagination", function () {
pag1.twbsPagination('destroy');
pag1.twbsPagination({
destroyAndCreateWithOpts(pag1, {
totalPages: 3,
visiblePages: 5
});
Expand All @@ -98,8 +75,7 @@
});

QUnit.test("Test custom classes appended for pagination", function () {
pag1.twbsPagination('destroy');
pag1.twbsPagination({
destroyAndCreateWithOpts(pag1, {
totalPages: 10,
visiblePages: 5,
pageClass: 'my-page',
Expand All @@ -121,8 +97,7 @@
});

QUnit.test("Test page numbers text", function () {
pag1.twbsPagination('destroy');
pag1.twbsPagination({
destroyAndCreateWithOpts(pag1, {
totalPages: 2
});
equal(pag1.find('.page-item:eq(2)').text(), '1');
Expand All @@ -133,8 +108,7 @@
});

QUnit.test("Test custom texts", function () {
pag1.twbsPagination('destroy');
pag1.twbsPagination({
destroyAndCreateWithOpts(pag1, {
totalPages: 2,
page: '[{{page}}]',
first: '(first)',
Expand All @@ -150,8 +124,7 @@
});

QUnit.test("Test 'getPageFromQueryString' method", function () {
pag1.twbsPagination('destroy');
pag1.twbsPagination({pageVariable: 'page'});
destroyAndCreateWithOpts(pag1, {pageVariable: 'page'});
equal(pag1.twbsPagination('getPageFromQueryString', '?page=1'), 1);
equal(pag1.twbsPagination('getPageFromQueryString', '?page='), null);
equal(pag1.twbsPagination('getPageFromQueryString', '?page'), null);
Expand All @@ -166,8 +139,7 @@
});

QUnit.test("Test 'generateQueryString' method", function () {
pag1.twbsPagination('destroy');
pag1.twbsPagination({pageVariable: 'page'});
destroyAndCreateWithOpts(pag1, {pageVariable: 'page'});
equal(pag1.twbsPagination('generateQueryString', 1, '?page=1'), '?page=1');
equal(pag1.twbsPagination('generateQueryString', 1, '?page='), '?page=1');
equal(pag1.twbsPagination('generateQueryString', 1, '?page'), '?page=1');
Expand All @@ -181,4 +153,25 @@
equal(pag1.twbsPagination('generateQueryString', 6, '?ID=1&keyWord=net&page=50'), '?ID=1&keyWord=net&page=6');
});

QUnit.test("Test 'totalPages' option", function (assert) {
var page = null;

destroyAndCreateWithOpts(pag1, {onPageClick: function (evt, p) {
page = p;
}});
assert.equal(pag1.find('li'), 1, 'Default options values');
assert.equal(page, 1);
page = null;

destroyAndCreateWithOpts(pag1, {
hideOnlyOnePage: true,
onPageClick: function (evt, p) {
page = p;
}
});
assert.equal(pag1.find('li').length, 0, 'Hide one page is corresponding option set as true');
assert.equal(page, 1);
page = null;
});

})(window.jQuery);

0 comments on commit 5bc875b

Please sign in to comment.