diff options
author | Michael Leibman <michael.leibman@gmail.com> | 2012-01-20 17:25:03 -0800 |
---|---|---|
committer | Michael Leibman <mleibman@google.com> | 2012-01-20 17:25:03 -0800 |
commit | 75d396d167845bb802f4f48ca0816a44cbd3fb6d (patch) | |
tree | ae681f424e4f0ba038ac9b0923867efa176933ef | |
parent | 81276a2a5b25b6a9d4407ae8d2ffbf3e59aab967 (diff) | |
download | SlickGrid-75d396d167845bb802f4f48ca0816a44cbd3fb6d.zip SlickGrid-75d396d167845bb802f4f48ca0816a44cbd3fb6d.tar.gz SlickGrid-75d396d167845bb802f4f48ca0816a44cbd3fb6d.tar.bz2 |
Fixed issue #142 - incorrect "total pages" calculation in the pager control.
-rw-r--r-- | controls/slick.pager.js | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/controls/slick.pager.js b/controls/slick.pager.js index 5da5c25..c953b37 100644 --- a/controls/slick.pager.js +++ b/controls/slick.pager.js @@ -14,49 +14,52 @@ function getNavState() { var cannotLeaveEditMode = !Slick.GlobalEditorLock.commitCurrentEdit(); var pagingInfo = dataView.getPagingInfo(); - var lastPage = Math.floor(pagingInfo.totalRows / pagingInfo.pageSize); + var lastPage = Math.ceil(pagingInfo.totalRows / pagingInfo.pageSize) - 1; + if (lastPage < 0) { + lastPage = 0; + } return { - canGotoFirst:!cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum > 0, - canGotoLast:!cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum != lastPage, - canGotoPrev:!cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum > 0, - canGotoNext:!cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum < lastPage, - pagingInfo:pagingInfo, - lastPage:lastPage + canGotoFirst: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum > 0, + canGotoLast: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum != lastPage, + canGotoPrev: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum > 0, + canGotoNext: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum < lastPage, + pagingInfo: pagingInfo, + lastPage: lastPage } } function setPageSize(n) { dataView.setRefreshHints({ - isFilterUnchanged:true + isFilterUnchanged: true }); - dataView.setPagingOptions({pageSize:n}); + dataView.setPagingOptions({pageSize: n}); } function gotoFirst() { if (getNavState().canGotoFirst) { - dataView.setPagingOptions({pageNum:0}); + dataView.setPagingOptions({pageNum: 0}); } } function gotoLast() { var state = getNavState(); if (state.canGotoLast) { - dataView.setPagingOptions({pageNum:state.lastPage}); + dataView.setPagingOptions({pageNum: state.lastPage}); } } function gotoPrev() { var state = getNavState(); if (state.canGotoPrev) { - dataView.setPagingOptions({pageNum:state.pagingInfo.pageNum - 1}); + dataView.setPagingOptions({pageNum: state.pagingInfo.pageNum - 1}); } } function gotoNext() { var state = getNavState(); if (state.canGotoNext) { - dataView.setPagingOptions({pageNum:state.pagingInfo.pageNum + 1}); + dataView.setPagingOptions({pageNum: state.pagingInfo.pageNum + 1}); } } @@ -76,8 +79,7 @@ if (pagesize == -1) { var vp = grid.getViewport(); setPageSize(vp.bottom - vp.top); - } - else { + } else { setPageSize(parseInt(pagesize)); } } @@ -134,12 +136,10 @@ $container.find(".ui-icon-seek-prev").addClass("ui-state-disabled"); } - if (pagingInfo.pageSize == 0) { $status.text("Showing all " + pagingInfo.totalRows + " rows"); - } - else { - $status.text("Showing page " + (pagingInfo.pageNum + 1) + " of " + (Math.floor(pagingInfo.totalRows / pagingInfo.pageSize) + 1)); + } else { + $status.text("Showing page " + (pagingInfo.pageNum + 1) + " of " + (state.lastPage + 1)); } } |