clean up dividend page

This commit is contained in:
MuslemRahimi 2024-08-23 12:55:43 +02:00
parent c6940ca6ae
commit 818f3f27bc
3 changed files with 10 additions and 22 deletions

View File

@ -247,7 +247,7 @@ onMount( async() => {
<Card.Root > <Card.Root >
<Card.Header class="flex flex-row items-center justify-between space-y-0 pb-2"> <Card.Header class="flex flex-row items-center justify-between space-y-0 pb-2">
<Card.Title class="text-start text-[1rem] sm:text-xl font-semibold"> <Card.Title class="text-start text-[1rem] sm:text-xl font-semibold">
<a href="/market-mover" class="sm:hover:underline">Biggest Winner</a> <a href="/market-mover" class="sm:hover:underline">Winner</a>
</Card.Title> </Card.Title>
<Crown class="h-4 w-4 shrink-0" /> <Crown class="h-4 w-4 shrink-0" />
</Card.Header> </Card.Header>
@ -268,7 +268,7 @@ onMount( async() => {
<Card.Root> <Card.Root>
<Card.Header class="flex flex-row items-center justify-between space-y-0 pb-2"> <Card.Header class="flex flex-row items-center justify-between space-y-0 pb-2">
<Card.Title class="text-start text-[1rem] sm:text-xl font-semibold"> <Card.Title class="text-start text-[1rem] sm:text-xl font-semibold">
<a href="/market-mover" class="sm:hover:underline">Biggest Loser</a> <a href="/market-mover" class="sm:hover:underline">Loser</a>
</Card.Title> </Card.Title>
<Bomb class="h-4 w-4 shrink-0" /> <Bomb class="h-4 w-4 shrink-0" />
</Card.Header> </Card.Header>

View File

@ -13,7 +13,7 @@ use([LineChart, BarChart, TooltipComponent, GridComponent, CanvasRenderer])
export let data; export let data;
let dateDistance; let dateDistance;
let stockDividends = data?.getStockDividend?.at(0); let stockDividends = data?.getStockDividend?.at(0)?.filter(item => item?.recordDate && item?.paymentDate);
let optionsDividend; let optionsDividend;
@ -26,12 +26,11 @@ let payoutRatio = 'n/a';
let dividendGrowth = 'n/a'; let dividendGrowth = 'n/a';
let dividendList = []; let dividendList = [];
let growthList = [];
let dateList = []; let dateList = [];
async function plotDividend(dividendList, growthList, dateList) { async function plotDividend(dividendList, dateList) {
const options = { const options = {
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
@ -106,10 +105,9 @@ const handleMessage = async (event) => {
payoutRatio = finalData?.payoutRatio; payoutRatio = finalData?.payoutRatio;
dateDistance = finalData?.dateDistance; dateDistance = finalData?.dateDistance;
dividendList = finalData?.dividendList; dividendList = finalData?.dividendList;
growthList = finalData?.growthList;
dateList = finalData?.dateList; dateList = finalData?.dateList;
annualDividend = finalData?.annualDividend; annualDividend = finalData?.annualDividend;
optionsDividend = await plotDividend(dividendList, growthList, dateList) optionsDividend = await plotDividend(dividendList, dateList)
//console.log('Message from worker:', chartData); //console.log('Message from worker:', chartData);
}; };

View File

@ -15,19 +15,9 @@ function plotDividend(stockDividends) {
for (let i = 0; i < reverseData?.length; i++) { for (let i = 0; i < reverseData?.length; i++) {
const currentDividend = reverseData[i]?.dividend; const currentDividend = reverseData[i]?.dividend;
const previousDividend = i === 0 ? 0 : reverseData[i - 1]?.dividend;
dateList.push(reverseData[i]?.paymentDate); dateList.push(reverseData[i]?.paymentDate);
dividendList?.push(currentDividend); 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) => { onmessage = async (event: MessageEvent) => {
const data = event.data?.message; 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 eps = data?.at(1);
const currentPrice = data?.at(2); 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 amount = stockDividends[0]?.adjDividend;
const annualDividend = (amount * payoutFrequency)?.toFixed(2) const annualDividend = (amount * payoutFrequency)?.toFixed(2)
const dividendYield = ((annualDividend / currentPrice )*100)?.toFixed(2) const dividendYield = ((annualDividend / currentPrice )*100)?.toFixed(2)
const exDividendDate = stockDividends[0]?.date const exDividendDate = stockDividends[0]?.date
const payoutRatio = ((1 - ( eps - annualDividend)/eps)*100)?.toFixed(2) 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 previousAnnualDividend = stockDividends[previousIndex]?.adjDividend * payoutFrequency;
const dividendGrowth= (( (annualDividend - previousAnnualDividend) / previousAnnualDividend ) *100)?.toFixed(2); 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 //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; 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}); postMessage({ message: 'success', finalData});
// Sending data back to the main thread // Sending data back to the main thread