From 6b761c3e715c715140ba8afd001bb2eade831081 Mon Sep 17 00:00:00 2001 From: bill bittner <bittner.w@gmail.com> Date: Thu, 12 Oct 2017 18:55:26 -0700 Subject: [PATCH] added channel pagination --- models/index.js | 2 +- routes/serve-routes.js | 12 +++++++++--- views/channel.handlebars | 33 ++++++++++++++++++++++----------- 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/models/index.js b/models/index.js index b330fbd4..5a8f4c41 100644 --- a/models/index.js +++ b/models/index.js @@ -270,7 +270,7 @@ db['getAllChannelClaims'] = (channelId) => { return new Promise((resolve, reject) => { logger.debug(`finding all claims in channel "${channelId}"`); db - .sequelize.query(`SELECT name, claimId, outpoint, height, address, contentType, title, description, license, thumbnail FROM Claim WHERE certificateId = '${channelId}' ORDeR BY height DESC;`, { type: db.sequelize.QueryTypes.SELECT }) + .sequelize.query(`SELECT name, claimId, outpoint, height, address, contentType, title, description, license, thumbnail FROM Claim WHERE certificateId = '${channelId}' ORDER BY height DESC;`, { type: db.sequelize.QueryTypes.SELECT }) .then(result => { switch (result.length) { case 0: diff --git a/routes/serve-routes.js b/routes/serve-routes.js index 82f0222c..30e0e913 100644 --- a/routes/serve-routes.js +++ b/routes/serve-routes.js @@ -43,8 +43,14 @@ function getPage (query) { function extractPageFromClaims (claims, pageNumber) { logger.debug('claims is array?', Array.isArray(claims)); - logger.debug('pageNumber is number?', Number.isInteger(pageNumber)); - return claims.slice(pageNumber * 10, pageNumber + 10); + logger.debug(`pageNumber ${pageNumber} is number?`, Number.isInteger(pageNumber)); + const claimStartIndex = pageNumber * CLAIMS_PER_PAGE; + console.log('claim start index:', claimStartIndex); + const claimEndIndex = claimStartIndex + 10; + console.log('claim end index:', claimEndIndex); + const pageOfClaims = claims.slice(claimStartIndex, claimEndIndex); + logger.debug('page of claims:', pageOfClaims); + return pageOfClaims; } function determineTotalPages (totalClaims) { @@ -183,7 +189,7 @@ module.exports = (app) => { previousPage : determinePreviousPage(paginationPage), currentPage : paginationPage, nextPage : determineNextPage(totalPages, paginationPage), - totalPages, + totalPages : totalPages, totalResults : result.claims.length, }); } diff --git a/views/channel.handlebars b/views/channel.handlebars index 65abed39..8d77935b 100644 --- a/views/channel.handlebars +++ b/views/channel.handlebars @@ -1,13 +1,24 @@ <div class="row row--full-height"> - <h2>{{this.channelName}}<span class="h2--secondary">:{{this.longChannelId}}</span></h2> - <p>Page: {{this.currentPage}}/{{this.totalPages}}, Total Files: {{this.totalResults}}</p> - <p> - <a href="/{{this.channelName}}:{{this.longChannelId}}?p=0">First Page</a> | - <a href="/{{this.channelName}}:{{this.longChannelId}}?p={{this.previousPage}}">Last Page</a> | - <a href="/{{this.channelName}}:{{this.longChannelId}}?p={{this.nextPage}}">Next Page</a> | - <a href="/{{this.channelName}}:{{this.longChannelId}}?p={{this.totalPages}}">Last Page</a> - </p> - {{#each this.claims}} - {{> contentListItem}} - {{/each}} + <div class="column column--10 align-content-center"> + <h2>{{this.channelName}}<span class="h2--secondary">:{{this.longChannelId}}</span></h2> + </div> + <div class="column column--10 align-content-center"> + <p>Total Pages: {{this.totalPages}}, Total Files: {{this.totalResults}}</p> + </div> + <div class="row"> + {{#each this.claims}} + {{> contentListItem}} + {{/each}} + </div> + <div class="row"> + <div class="column column--3 align-content--left"> + <a href="/{{this.channelName}}:{{this.longChannelId}}?p=0">First Page [0]</a> + </div><div class="column column--4 align-content-center"> + <a href="/{{this.channelName}}:{{this.longChannelId}}?p={{this.previousPage}}">Previous Page [{{this.previousPage}}]</a> | + <a href="/{{this.channelName}}:{{this.longChannelId}}?p={{this.nextPage}}">Next Page [{{this.nextPage}}]</a> + </div><div class="column column--3 align-content-right"> + <a href="/{{this.channelName}}:{{this.longChannelId}}?p={{this.totalPages}}">Last Page [{{this.totalPages}}]</a> + </div> + </div> + </div>