diff --git a/src/routes/home/+page.svelte b/src/routes/home/+page.svelte index 247a0012..6db0963e 100644 --- a/src/routes/home/+page.svelte +++ b/src/routes/home/+page.svelte @@ -247,7 +247,7 @@ onMount( async() => { - Biggest Winner + Winner @@ -268,7 +268,7 @@ onMount( async() => { - Biggest Loser + Loser diff --git a/src/routes/stocks/[tickerID]/dividends/+page.svelte b/src/routes/stocks/[tickerID]/dividends/+page.svelte index d1f2dd71..e515f334 100644 --- a/src/routes/stocks/[tickerID]/dividends/+page.svelte +++ b/src/routes/stocks/[tickerID]/dividends/+page.svelte @@ -13,7 +13,7 @@ use([LineChart, BarChart, TooltipComponent, GridComponent, CanvasRenderer]) export let data; let dateDistance; -let stockDividends = data?.getStockDividend?.at(0); +let stockDividends = data?.getStockDividend?.at(0)?.filter(item => item?.recordDate && item?.paymentDate); let optionsDividend; @@ -26,12 +26,11 @@ let payoutRatio = 'n/a'; let dividendGrowth = 'n/a'; let dividendList = []; -let growthList = []; let dateList = []; -async function plotDividend(dividendList, growthList, dateList) { +async function plotDividend(dividendList, dateList) { const options = { tooltip: { trigger: 'axis', @@ -106,10 +105,9 @@ const handleMessage = async (event) => { payoutRatio = finalData?.payoutRatio; dateDistance = finalData?.dateDistance; dividendList = finalData?.dividendList; - growthList = finalData?.growthList; dateList = finalData?.dateList; annualDividend = finalData?.annualDividend; - optionsDividend = await plotDividend(dividendList, growthList, dateList) + optionsDividend = await plotDividend(dividendList, dateList) //console.log('Message from worker:', chartData); }; diff --git a/src/routes/stocks/[tickerID]/dividends/workers/dividendWorker.ts b/src/routes/stocks/[tickerID]/dividends/workers/dividendWorker.ts index 233fc55f..3f33c00f 100644 --- a/src/routes/stocks/[tickerID]/dividends/workers/dividendWorker.ts +++ b/src/routes/stocks/[tickerID]/dividends/workers/dividendWorker.ts @@ -15,19 +15,9 @@ function plotDividend(stockDividends) { for (let i = 0; i < reverseData?.length; i++) { const currentDividend = reverseData[i]?.dividend; - const previousDividend = i === 0 ? 0 : reverseData[i - 1]?.dividend; dateList.push(reverseData[i]?.paymentDate); dividendList?.push(currentDividend); - - - if (currentDividend !== null && previousDividend !== null && previousDividend !== 0) { - const growthRate = (((currentDividend - previousDividend) / previousDividend) * 100 )?.toFixed(2); - growthList?.push(growthRate); - } else { - growthList?.push(0); // Pushing null if the growth calculation is not possible - } - } @@ -36,29 +26,29 @@ function plotDividend(stockDividends) { onmessage = async (event: MessageEvent) => { const data = event.data?.message; - const stockDividends = data?.at(0); + const stockDividends = data?.at(0)?.filter(item => item?.recordDate && item?.paymentDate); const eps = data?.at(1); const currentPrice = data?.at(2); - const payoutFrequency = stockDividends?.filter(entry => entry.date.includes('2022'))?.length; + const payoutFrequency = stockDividends?.filter(entry => entry.date.includes('2023'))?.length; const amount = stockDividends[0]?.adjDividend; const annualDividend = (amount * payoutFrequency)?.toFixed(2) const dividendYield = ((annualDividend / currentPrice )*100)?.toFixed(2) const exDividendDate = stockDividends[0]?.date const payoutRatio = ((1 - ( eps - annualDividend)/eps)*100)?.toFixed(2) - const previousIndex = stockDividends?.findIndex(entry => entry.date.includes('2022')); + const previousIndex = stockDividends?.findIndex(entry => entry.date.includes('2023')); const previousAnnualDividend = stockDividends[previousIndex]?.adjDividend * payoutFrequency; const dividendGrowth= (( (annualDividend - previousAnnualDividend) / previousAnnualDividend ) *100)?.toFixed(2); - const {dividendList, growthList, dateList} = plotDividend(stockDividends) + const {dividendList, dateList} = plotDividend(stockDividends) //Check if the last dividend is older than 12 months const dateDistance = new Date(stockDividends?.at(0)?.date) < new Date(new Date().setFullYear(new Date().getFullYear() - 1)) ? true : false; - let finalData = { annualDividend, payoutFrequency, exDividendDate, dividendYield, dividendGrowth, payoutRatio , dateDistance, dividendList, growthList, dateList}; + let finalData = { annualDividend, payoutFrequency, exDividendDate, dividendYield, dividendGrowth, payoutRatio , dateDistance, dividendList, dateList}; postMessage({ message: 'success', finalData}); // Sending data back to the main thread