From 58a40fdc8d8bf2ddd0f88ff4b974e0fe9fcef245 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 15 Sep 2022 16:37:31 -0700 Subject: transaction pagination --- src/routes/[username]/transactions/+page.svelte | 57 ---------------- .../transactions/[...page]/+page.server.js | 14 ++++ .../[username]/transactions/[...page]/+page.svelte | 78 ++++++++++++++++++++++ 3 files changed, 92 insertions(+), 57 deletions(-) delete mode 100644 src/routes/[username]/transactions/+page.svelte create mode 100644 src/routes/[username]/transactions/[...page]/+page.server.js create mode 100644 src/routes/[username]/transactions/[...page]/+page.svelte diff --git a/src/routes/[username]/transactions/+page.svelte b/src/routes/[username]/transactions/+page.svelte deleted file mode 100644 index 5a132394..00000000 --- a/src/routes/[username]/transactions/+page.svelte +++ /dev/null @@ -1,57 +0,0 @@ - - - - -
-

- {$t('user.transactions.header')} -

- -
-
-

{$t('user.transactions.AMOUNT')}

-

{$t('user.transactions.TYPE')}

-

{$t('user.transactions.TIME')}

-
- -
- {#if transactions.length} - {#each transactions as tx} -
-
- {tx.amount > 0 ? '+' : ''}{f(tx.amount * (tx.rate / 100000000), tx.currency)} - - - {tx.amount > 0 ? '+' : ''}{s(tx.amount)} - SAT - -
- -
- {$t('user.transactions.' + (tx.amount < 0 ? 'sent' : 'received'))} -
- -
- {new Date(tx.createdAt).toLocaleDateString(undefined, { dateStyle: 'medium' })} -
-
- {/each} - {:else} -

{$t('user.transactions.empty')}

- {/if} -
-
-
diff --git a/src/routes/[username]/transactions/[...page]/+page.server.js b/src/routes/[username]/transactions/[...page]/+page.server.js new file mode 100644 index 00000000..d84c895a --- /dev/null +++ b/src/routes/[username]/transactions/[...page]/+page.server.js @@ -0,0 +1,14 @@ +import { get, auth } from '$lib/utils'; + +let offset = 25; + +export async function load({ params, request }) { + let page = parseInt(params.page || 1); + let transactions = await get('/payments', auth(request)); + let total = transactions.length; + let pages = new Array(Math.ceil(total / offset)); + let i = (page - 1) * offset; + transactions = transactions.slice(i, i + offset); + + return { total, transactions, page, pages }; +} diff --git a/src/routes/[username]/transactions/[...page]/+page.svelte b/src/routes/[username]/transactions/[...page]/+page.svelte new file mode 100644 index 00000000..a5209ed8 --- /dev/null +++ b/src/routes/[username]/transactions/[...page]/+page.svelte @@ -0,0 +1,78 @@ + + + + +
+

+ {$t('user.transactions.header')} +

+ +
+
+ {#if pages.length > 1} + {#each pages as _, i} + +
+ {i + 1} +
+
+ {/each} + {/if} +
+
+ +
+
+

{$t('user.transactions.AMOUNT')}

+

{$t('user.transactions.TYPE')}

+

{$t('user.transactions.TIME')}

+
+ +
+ {#if transactions.length} + {#each transactions as tx} +
+
+ {tx.amount > 0 ? '+' : ''}{f(tx.amount * (tx.rate / 100000000), tx.currency)} + + + {tx.amount > 0 ? '+' : ''}{s(tx.amount)} + SAT + +
+ +
+ {$t('user.transactions.' + (tx.amount < 0 ? 'sent' : 'received'))} +
+ +
+ {new Date(tx.createdAt).toLocaleDateString(undefined, { dateStyle: 'medium' })} +
+
+ {/each} + {:else} +

{$t('user.transactions.empty')}

+ {/if} +
+
+
+ + -- cgit v1.2.3