From 56d2d3f668415c4a4a596e7c3eef1a7ec7632e7c Mon Sep 17 00:00:00 2001 From: ankiiitraj Date: Wed, 20 May 2020 01:57:21 +0530 Subject: [PATCH] fixes #326 - Improved pagination of Leaderboard --- routes/root.js | 14 ++++++++++++-- views/pages/leaderboard.hbs | 6 +++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/routes/root.js b/routes/root.js index cc19701..077027d 100644 --- a/routes/root.js +++ b/routes/root.js @@ -78,7 +78,17 @@ route.get('/leaderboard/:year?', async (req, res) => { row.isColored = true } }) - for (var i = 1; i <= lastPage; i++) pagination.push(`?page=${i}&size=${options.size}`) + for (var i = 1; i <= lastPage; i++) pagination.push({link: `?page=${i}&size=${options.size}`, index: i}) + + let newPagination = pagination.slice(Math.max(0, options.page - 3), Math.min(options.page + 2, pagination.length)); + if(newPagination[0].index != 1){ + newPagination.unshift({link: "#", index: ". . ."}); + newPagination.unshift({link: `?page=${1}&size=${options.size}`, index: 1}) + } + if(newPagination[newPagination.length -1].index != lastPage){ + newPagination.push({link: "#", index: ". . ."}); + newPagination.push({link: `?page=${lastPage}&size=${options.size}`, index: lastPage}); + } res.render('pages/leaderboard', { prevPage: options.page - 1, @@ -87,7 +97,7 @@ route.get('/leaderboard/:year?', async (req, res) => { isLastPage: options.page == lastPage, size: options.size, page: options.page, - pagination: pagination, + pagination: newPagination, userstats: rows, loggedInUser, showUserAtTop, diff --git a/views/pages/leaderboard.hbs b/views/pages/leaderboard.hbs index ab6c6f6..f14dd36 100644 --- a/views/pages/leaderboard.hbs +++ b/views/pages/leaderboard.hbs @@ -52,9 +52,9 @@ Prev {{/if}} - {{#each pagination as |link index|}} - - {{add index 1}} + {{#each pagination as |link|}} + + {{link.index}} {{/each}} {{#if isLastPage}}