From b3d2921b099c6748990bb38fec4bea52e8786535 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 23 May 2023 20:31:13 -0700 Subject: payment totals --- src/locales/en.json | 5 +++- src/routes/(app)/[username]/(profile)/+page.svelte | 14 +++++++++-- .../[username]/payments/[...page]/+page.server.js | 6 ++--- .../[username]/payments/[...page]/+page.svelte | 29 ++++++++++++++++------ src/routes/(app)/register/+page.server.js | 3 +++ 5 files changed, 43 insertions(+), 14 deletions(-) diff --git a/src/locales/en.json b/src/locales/en.json index 8f824e6f..c7d38583 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -174,7 +174,7 @@ }, "send": { "contacts": "Contacts", - "scan": "Scan", + "scan": "Scan QR", "paste": "Paste", "next": "Next", "placeholder": "Paste a bitcoin address, lightning invoice or coinos username" @@ -234,6 +234,9 @@ } }, "payments": { + "total": "Total", + "gainLoss": "Gain/Loss", + "presentValue": "Present Value", "amount": "Amount", "date": "Date", "id": "Transaction ID", diff --git a/src/routes/(app)/[username]/(profile)/+page.svelte b/src/routes/(app)/[username]/(profile)/+page.svelte index f228defc..7b81b797 100644 --- a/src/routes/(app)/[username]/(profile)/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/+page.svelte @@ -96,14 +96,24 @@
+ + + {#if user.eligible} diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.server.js b/src/routes/(app)/[username]/payments/[...page]/+page.server.js index adc6dac8..cb94d71d 100644 --- a/src/routes/(app)/[username]/payments/[...page]/+page.server.js +++ b/src/routes/(app)/[username]/payments/[...page]/+page.server.js @@ -17,8 +17,8 @@ export async function load({ cookies, params, request }) { let url = `/payments?start=${start * 1000}&limit=${limit}&offset=${offset}`; if (end) url += `&end=${end * 1000}`; - let { total, payments } = await get(url, auth(cookies)); - let pages = new Array(Math.ceil(total / limit)); + let { count, payments, totals } = await get(url, auth(cookies)); + let pages = new Array(Math.ceil(count / limit)); - return { total, payments, page, pages, start, end }; + return { payments, page, pages, start, end, totals }; } diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.svelte b/src/routes/(app)/[username]/payments/[...page]/+page.svelte index bdfcbb04..adfaf680 100644 --- a/src/routes/(app)/[username]/payments/[...page]/+page.svelte +++ b/src/routes/(app)/[username]/payments/[...page]/+page.svelte @@ -19,7 +19,8 @@ classic: 'classic' }; - let { start, end, user } = data; + let { start, end, user, rates } = data; + let change = ({ target: { value } }) => goto(value); let link = (p) => { if (p.pot) return `/pot/${p.pot}`; @@ -39,9 +40,9 @@ : 0; let p, - total, + totals, pages = []; - $: data && ({ page: p, pages, start, end, total, payments: $payments } = data); + $: data && ({ page: p, pages, start, end, totals, payments: $payments } = data); $: $page && ($newPayment = false); $: $newPayment && invalidate(`/users/${user.username}`); @@ -166,11 +167,7 @@
- Pot + Pot
Pot
@@ -225,6 +222,22 @@

{$t('payments.empty')}

{/each}
+ +
+ {$t('payments.total')} + {$t('payments.presentValue')} + {$t('payments.gainLoss')} + + {#each Object.keys(totals) as c} + {@const total = totals[c]['fiat']} + {@const pv = (totals[c]['sats'] * rates[c]) / sats} + {@const gain = (pv * 100) / total - 100} + {f(total, c)} + {f(pv, c)} + {Math.abs(gain).toFixed(2)}% + {/each} +
+