From deb3edad993f03ae599b43ef025e6653b30d5395 Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Sat, 22 Feb 2025 16:47:18 +0100 Subject: [PATCH] ui fixes for dividend page --- .../etf/[tickerID]/dividends/+page.svelte | 341 ++++++------------ .../[tickerID]/dividends/+layout.svelte | 65 ++-- .../[tickerID]/dividends/+page.server.ts | 157 -------- .../stocks/[tickerID]/dividends/+page.svelte | 99 ++--- 4 files changed, 172 insertions(+), 490 deletions(-) diff --git a/src/routes/etf/[tickerID]/dividends/+page.svelte b/src/routes/etf/[tickerID]/dividends/+page.svelte index f02b51d0..61434bff 100644 --- a/src/routes/etf/[tickerID]/dividends/+page.svelte +++ b/src/routes/etf/[tickerID]/dividends/+page.svelte @@ -1,26 +1,11 @@
@@ -24,46 +18,29 @@ diff --git a/src/routes/stocks/[tickerID]/dividends/+page.server.ts b/src/routes/stocks/[tickerID]/dividends/+page.server.ts index 191e625e..b5f8e493 100644 --- a/src/routes/stocks/[tickerID]/dividends/+page.server.ts +++ b/src/routes/stocks/[tickerID]/dividends/+page.server.ts @@ -1,8 +1,3 @@ -import { error, fail, redirect } from "@sveltejs/kit"; -import { validateData } from "$lib/utils"; -import { loginUserSchema, registerUserSchema } from "$lib/schemas"; - - export const load = async ({ params, locals }) => { const getStockDividend = async () => { let newsList; @@ -33,155 +28,3 @@ export const load = async ({ params, locals }) => { getStockDividend: await getStockDividend(), }; }; - - - -export const actions = { - login: async ({ url, request, locals }) => { - - const path = url?.href?.replace("/oauth2","") - - const { formData, errors } = await validateData( - await request.formData(), - loginUserSchema, - ); - - if (errors) { - return fail(400, { - data: formData, - errors: errors.fieldErrors, - }); - } - - try { - await locals.pb - .collection("users") - .authWithPassword(formData.email, formData.password); - - /* - if (!locals.pb?.authStore?.model?.verified) { - locals.pb.authStore.clear(); - return { - notVerified: true, - }; - } - */ - } catch (err) { - console.log("Error: ", err); - error(err.status, err.message); - } - - redirect(302, path); - }, - - register: async ({ url, locals, request }) => { - const path = url?.href?.replace("/oauth2","") - - const { formData, errors } = await validateData( - await request.formData(), - registerUserSchema, - ); - - if (errors) { - return fail(400, { - data: formData, - errors: errors.fieldErrors, - }); - } - - try { - let newUser = await locals.pb.collection("users").create(formData); - /* -await locals.pb?.collection('users').update( - newUser?.id, { - 'freeTrial' : true, - 'tier': 'Pro', //Give new users a free trial for the Pro Subscription - }); -*/ - await locals.pb.collection("users")?.requestVerification(formData.email); - } catch (err) { - console.log("Error: ", err); - error(err.status, err.message); - } - - try { - await locals.pb - .collection("users") - .authWithPassword(formData.email, formData.password); - } catch (err) { - console.log("Error: ", err); - error(err.status, err.message); - } - - redirect(303, path); - }, - - oauth2: async ({ url, locals, request, cookies }) => { - - const path = url?.href?.replace("/oauth2","") - const authMethods = (await locals?.pb - ?.collection("users") - ?.listAuthMethods())?.oauth2; - - - const data = await request?.formData(); - const providerSelected = data?.get("provider"); - - if (!authMethods) { - return { - authProviderRedirect: "", - authProviderState: "", - }; - } - const redirectURL = `${url.origin}/oauth`; - - const targetItem = authMethods?.providers?.findIndex( - (item) => item?.name === providerSelected, - ); - //console.log("==================") - //console.log(authMethods.authProviders) - //console.log('target item is: ', targetItem) - - const provider = authMethods.providers[targetItem]; - const authProviderRedirect = `${provider.authUrl}${redirectURL}`; - const state = provider.state; - const verifier = provider.codeVerifier; - - - - cookies.set("state", state, { - httpOnly: true, - sameSite: "lax", - secure: true, - path: "/", - maxAge: 60 * 60, - }); - - cookies.set("verifier", verifier, { - httpOnly: true, - sameSite: "lax", - secure: true, - path: "/", - maxAge: 60 * 60, - }); - - cookies.set("provider", providerSelected, { - httpOnly: true, - sameSite: "lax", - secure: true, - path: "/", - maxAge: 60 * 60, - }); - - cookies.set("path", path, { - httpOnly: true, - sameSite: "lax", - secure: true, - path: "/", - maxAge: 60, - }); - - redirect(302, authProviderRedirect); - }, - -}; diff --git a/src/routes/stocks/[tickerID]/dividends/+page.svelte b/src/routes/stocks/[tickerID]/dividends/+page.svelte index 782a21ee..664e55e2 100644 --- a/src/routes/stocks/[tickerID]/dividends/+page.svelte +++ b/src/routes/stocks/[tickerID]/dividends/+page.svelte @@ -5,7 +5,7 @@ export let data; let dateDistance; - let rawData = data?.getStockDividend || []; + let rawData = data?.getStockDividend; let exDividendDate = rawData?.history?.at(0)?.date; let dividendYield = rawData?.dividendYield; @@ -28,20 +28,11 @@ }, ); - const payoutFrequencyText = - payoutFrequency === 4 - ? "3 months" - : payoutFrequency === 2 - ? "6 months" - : payoutFrequency === 1 - ? "12 months" - : "n/a"; - return ` - - ${$displayCompanyName} has an annual dividend of $${annualDividend} per share, with a forward yield of ${dividendYield}%. - The dividend is paid every ${payoutFrequencyText} and the last ex-dividend date was ${formattedExDividendDate}. - + + ${$stockTicker} has a dividend yield of ${dividendYield}% and paid $${annualDividend} per share in the past year. The dividend is paid once per ${payoutFrequency === "Annually" ? "year" : payoutFrequency === "Quarterly" ? "quarter" : payoutFrequency === "Weekly" ? "week" : ""} and the last ex-dividend date was ${formattedExDividendDate}. + + `; } else { const latestDividendDate = new Date(history.at(0)?.date).toLocaleString( @@ -69,25 +60,11 @@ } } - let htmlOutput = generateDividendInfoHTML(); - - $: { - if ($stockTicker) { - rawData = data?.getStockDividend || []; - exDividendDate = rawData?.history?.at(0)?.date; - dividendYield = rawData?.dividendYield; - annualDividend = rawData?.annualDividend; - payoutFrequency = rawData?.payoutFrequency; - payoutRatio = rawData?.payoutRatio; - dividendGrowth = rawData?.dividendGrowth; - - htmlOutput = generateDividendInfoHTML(); - } - } + const htmlOutput = generateDividendInfoHTML(); @@ -165,15 +142,7 @@
- {payoutFrequency === 4 - ? "Quartely" - : payoutFrequency === 2 - ? "Half-Yearly" - : payoutFrequency === 1 - ? "Annually" - : payoutFrequency > 4 - ? "Weekly" - : "n/a"} + {payoutFrequency ? payoutFrequency : "n/a"}
@@ -201,15 +170,17 @@
- {dividendGrowth !== "NaN" ? dividendGrowth + "%" : "-"} + {dividendGrowth ? dividendGrowth + "%" : "n/a"}
-

Dividends History

+

+ Dividends History +

{#if rawData?.history?.length !== 0} @@ -217,28 +188,23 @@ class="overflow-x-scroll no-scrollbar flex justify-start items-center w-full m-auto rounded-none sm:rounded-md mb-4" > - - - + + - - + - @@ -259,7 +225,22 @@ +
- Ex-Divid. Date +
+ Ex-Dividend Date + Cash Amount + + Declaration Date + Record Date + Pay Date
- {item?.adjDividend?.toFixed(3)} + ${item?.adjDividend?.toFixed(3)} + + {item?.declarationDate?.length !== 0 + ? new Date(item?.declarationDate)?.toLocaleString( + "en-US", + { + month: "short", + day: "numeric", + year: "numeric", + daySuffix: "2-digit", + }, + ) + : "n/a"}