From 3b686931778a0f05152f57dbc66b8e69f9314f09 Mon Sep 17 00:00:00 2001 From: "Chen, Tai-Lin" Date: Thu, 21 Dec 2023 17:48:36 +0800 Subject: [PATCH] feat: add pagination buttons --- packages/analytics/src/controllers/commands.js | 11 +++++++---- packages/analytics/src/controllers/sessions.js | 14 +++++++------- packages/analytics/src/controllers/users.js | 9 +++++++-- packages/analytics/src/models/pagination.js | 12 ++++++++++++ packages/analytics/tests/pagination.test.js | 3 ++- packages/analytics/views/commands.handlebars | 10 +++++++--- packages/analytics/views/sessions.handlebars | 6 +++++- packages/analytics/views/users.handlebars | 6 +++++- 8 files changed, 52 insertions(+), 19 deletions(-) diff --git a/packages/analytics/src/controllers/commands.js b/packages/analytics/src/controllers/commands.js index 36d2f21..b570504 100644 --- a/packages/analytics/src/controllers/commands.js +++ b/packages/analytics/src/controllers/commands.js @@ -8,12 +8,15 @@ export async function commandListController(req, res) { const itemsPerPage = 100 try { - const payload = await errorCommands( - new Pagination(order, itemsPerPage, nextKey) - ) + const pagination = new Pagination(order, itemsPerPage, nextKey) + const payload = await errorCommands(pagination) const newNextKey = payload[payload.length - 1]?._id - res.render('commands', { errorCommands: payload, nextKey: newNextKey }) + res.render('commands', { + errorCommands: payload, + nextKey: newNextKey, + order: pagination.getOrder(), + }) } catch (error) { console.error(error) res.status(500).send('Error fetching data') diff --git a/packages/analytics/src/controllers/sessions.js b/packages/analytics/src/controllers/sessions.js index 765f1f7..a4dbe89 100644 --- a/packages/analytics/src/controllers/sessions.js +++ b/packages/analytics/src/controllers/sessions.js @@ -6,15 +6,15 @@ export async function sessionListController(req, res) { const itemsPerPage = 50 try { - // const totalSessions = await sessionCount() - // const maxPages = Math.ceil(totalSessions / itemsPerPage) - - const sessions = await sessionList( - new Pagination(order, itemsPerPage, nextKey) - ) + const pagination = new Pagination(order, itemsPerPage, nextKey) + const sessions = await sessionList(pagination) const newNextKey = sessions[sessions.length - 1]?._id - res.render('sessions', { sessions, nextKey: newNextKey }) + res.render('sessions', { + sessions, + nextKey: newNextKey, + order: pagination.getOrder(), + }) } catch (error) { console.log(error) res.status(500).send('Error fetching session data') diff --git a/packages/analytics/src/controllers/users.js b/packages/analytics/src/controllers/users.js index 96d198c..220bb3b 100644 --- a/packages/analytics/src/controllers/users.js +++ b/packages/analytics/src/controllers/users.js @@ -6,10 +6,15 @@ export async function userListController(req, res) { const itemsPerPage = 50 try { - const users = await userList(new Pagination(order, itemsPerPage, nextKey)) + const pagination = new Pagination(order, itemsPerPage, nextKey) + const users = await userList(pagination) const newNextKey = users[users.length - 1]?._id - res.render('users', { users, nextKey: newNextKey }) + res.render('users', { + users, + nextKey: newNextKey, + order: pagination.getOrder(), + }) } catch (error) { console.error(error) res.status(500).send('Error fetching user data') diff --git a/packages/analytics/src/models/pagination.js b/packages/analytics/src/models/pagination.js index d253bec..255d9fd 100644 --- a/packages/analytics/src/models/pagination.js +++ b/packages/analytics/src/models/pagination.js @@ -14,6 +14,10 @@ class Asc { getOrder() { return 1 } + + getName() { + return ASC + } } class Desc { @@ -24,6 +28,10 @@ class Desc { getOrder() { return -1 } + + getName() { + return DESC + } } export default class Pagination { @@ -59,4 +67,8 @@ export default class Pagination { limit() { return { $limit: this.itemsPerPage } } + + getOrder() { + return this.order.getName() + } } diff --git a/packages/analytics/tests/pagination.test.js b/packages/analytics/tests/pagination.test.js index 9c1db98..6d138d1 100644 --- a/packages/analytics/tests/pagination.test.js +++ b/packages/analytics/tests/pagination.test.js @@ -3,7 +3,8 @@ import Pagination, { ASC, DESC } from '../src/models/pagination.js' describe('Pagination', () => { it('should failed when not provide order', () => { - expect(() => new Pagination()).toThrow('order must be asc or desc') + expect(new Pagination('').getOrder()).toBe(DESC) + expect(() => new Pagination('Hahaha')).toThrow() }) it('should return correct limit', () => { const pagination = new Pagination(DESC, 10) diff --git a/packages/analytics/views/commands.handlebars b/packages/analytics/views/commands.handlebars index 1d7034f..f2252cd 100644 --- a/packages/analytics/views/commands.handlebars +++ b/packages/analytics/views/commands.handlebars @@ -1,6 +1,10 @@

Commands

Error commands

+ @@ -21,7 +25,7 @@ {{/each}}
Command
-
- \ No newline at end of file diff --git a/packages/analytics/views/sessions.handlebars b/packages/analytics/views/sessions.handlebars index 236795f..613435f 100644 --- a/packages/analytics/views/sessions.handlebars +++ b/packages/analytics/views/sessions.handlebars @@ -1,4 +1,8 @@

Sessions

+
@@ -26,5 +30,5 @@
\ No newline at end of file diff --git a/packages/analytics/views/users.handlebars b/packages/analytics/views/users.handlebars index 8cb407f..dde1654 100644 --- a/packages/analytics/views/users.handlebars +++ b/packages/analytics/views/users.handlebars @@ -1,4 +1,8 @@

Users List

+
@@ -22,5 +26,5 @@
\ No newline at end of file