From bfd5c1a68cbbd6347baee6471338076040aa79ea Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Wed, 18 Sep 2024 00:55:56 +0200 Subject: [PATCH] add dividend announcement component --- .../components/DividendAnnouncement.svelte | 85 +++++++++++++++++++ src/lib/components/EarningsSurprise.svelte | 4 +- src/lib/components/NextEarnings.svelte | 4 +- .../stocks/[tickerID]/+layout.server.ts | 7 +- src/routes/stocks/[tickerID]/+page.svelte | 5 ++ 5 files changed, 97 insertions(+), 8 deletions(-) create mode 100644 src/lib/components/DividendAnnouncement.svelte diff --git a/src/lib/components/DividendAnnouncement.svelte b/src/lib/components/DividendAnnouncement.svelte new file mode 100644 index 00000000..1f9df38f --- /dev/null +++ b/src/lib/components/DividendAnnouncement.svelte @@ -0,0 +1,85 @@ + + + +{#if Object?.keys(rawData)?.length !== 0} + +
+ +
+ +
+
+ +
+ + +
+ +
+
+ +
+
{$displayCompanyName} has announced its upcoming dividend details on {new Date(rawData?.date)?.toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })}:
+ +
  • + Dividend: ${rawData?.dividend} per share ({(rawData?.dividend/rawData?.dividendPrior-1) > 0 ? '+' :''}{((rawData?.dividend/rawData?.dividendPrior-1)*100)?.toFixed(2)}% YoY) +
  • +
  • + Dividend Yield: {rawData?.dividendYield?.toFixed(2)}% +
  • +
  • + Ex-Dividend Date: {new Date(rawData?.exDividendDate)?.toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} +
  • + +
  • + Payable Date: {new Date(rawData?.payableDate)?.toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} +
  • + +
  • + Record Date: {new Date(rawData?.recordDate)?.toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} +
  • +
    + +
    + + +
    +{/if} \ No newline at end of file diff --git a/src/lib/components/EarningsSurprise.svelte b/src/lib/components/EarningsSurprise.svelte index 49b49ec9..96d1867b 100644 --- a/src/lib/components/EarningsSurprise.svelte +++ b/src/lib/components/EarningsSurprise.svelte @@ -39,7 +39,7 @@ $: {
    -
    +
    @@ -56,7 +56,7 @@ $: {
    -
    +
    {$displayCompanyName} has released their quartely earnings on {new Date(rawData?.date)?.toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })}:
  • diff --git a/src/lib/components/NextEarnings.svelte b/src/lib/components/NextEarnings.svelte index 0b0c9f02..e739fce0 100644 --- a/src/lib/components/NextEarnings.svelte +++ b/src/lib/components/NextEarnings.svelte @@ -37,7 +37,7 @@ $: {
    -
    +
    @@ -54,7 +54,7 @@ $: {
    -
    +
    {$displayCompanyName} is scheduled to release its earnings on {new Date(rawData?.date ?? null)?.toLocaleString('en-US', { month: 'short', day: 'numeric', diff --git a/src/routes/stocks/[tickerID]/+layout.server.ts b/src/routes/stocks/[tickerID]/+layout.server.ts index 6c333ff7..83732917 100644 --- a/src/routes/stocks/[tickerID]/+layout.server.ts +++ b/src/routes/stocks/[tickerID]/+layout.server.ts @@ -1,7 +1,3 @@ -export const config = { - runtime: "nodejs20.x", -}; - const cleanString = (input) => { const substringsToRemove = [ "Depositary", @@ -79,6 +75,7 @@ export const load = async ({ params, locals, cookies, setHeaders }) => { "/one-day-price", "/next-earnings", "/earnings-surprise", + "/dividend-announcement", ]; const promises = [ @@ -101,6 +98,7 @@ export const load = async ({ params, locals, cookies, setHeaders }) => { getOneDayPrice, getNextEarnings, getEarningsSurprise, + getDividendAnnouncement, getUserWatchlist, getCommunitySentiment, ] = await Promise.all(promises); @@ -118,6 +116,7 @@ export const load = async ({ params, locals, cookies, setHeaders }) => { getOneDayPrice, getNextEarnings, getEarningsSurprise, + getDividendAnnouncement, getUserWatchlist, getCommunitySentiment, companyName: cleanString(getStockDeck?.at(0)?.companyName), diff --git a/src/routes/stocks/[tickerID]/+page.svelte b/src/routes/stocks/[tickerID]/+page.svelte index b7bd6dcf..012238e2 100644 --- a/src/routes/stocks/[tickerID]/+page.svelte +++ b/src/routes/stocks/[tickerID]/+page.svelte @@ -38,6 +38,7 @@ import BullBearSay from "$lib/components/BullBearSay.svelte"; import NextEarnings from "$lib/components/NextEarnings.svelte"; import EarningsSurprise from "$lib/components/EarningsSurprise.svelte"; + import DividendAnnouncement from "$lib/components/DividendAnnouncement.svelte"; import CommunitySentiment from "$lib/components/CommunitySentiment.svelte"; import Lazy from "$lib/components/Lazy.svelte"; @@ -1072,6 +1073,10 @@ async function exportData(timePeriod:string) {
    +
    + +
    +