ui fix
This commit is contained in:
parent
62cd585393
commit
c4d950f168
@ -178,7 +178,7 @@
|
|||||||
<div class="w-auto lg:w-full flex flex-col m-auto pb-14 sm:pb-10">
|
<div class="w-auto lg:w-full flex flex-col m-auto pb-14 sm:pb-10">
|
||||||
<h2 class="mb-2 text-2xl text-white font-semibold">Analyst Forecast</h2>
|
<h2 class="mb-2 text-2xl text-white font-semibold">Analyst Forecast</h2>
|
||||||
<p class="text-gray-200">
|
<p class="text-gray-200">
|
||||||
According to {numOfAnalyst} analysts, the average rating for {$stockTicker}
|
According to {numOfAnalyst} analyst ratings, the average rating for {$stockTicker}
|
||||||
stock is "{consensusRating}." The 12-month stock price forecast is ${priceTarget},
|
stock is "{consensusRating}." The 12-month stock price forecast is ${priceTarget},
|
||||||
which is {changesPercentage > 0 ? "an increase" : "a decrease"} of {changesPercentage}%
|
which is {changesPercentage > 0 ? "an increase" : "a decrease"} of {changesPercentage}%
|
||||||
from the latest price.
|
from the latest price.
|
||||||
|
|||||||
@ -30,7 +30,6 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
let activeIdx = 0;
|
let activeIdx = 0;
|
||||||
|
|
||||||
function changeTab(index) {
|
function changeTab(index) {
|
||||||
activeIdx = index;
|
activeIdx = index;
|
||||||
|
|
||||||
@ -52,14 +51,72 @@
|
|||||||
)?.toFixed(2)
|
)?.toFixed(2)
|
||||||
: "-";
|
: "-";
|
||||||
}
|
}
|
||||||
if (activeIdx === 1) {
|
|
||||||
rawData = data?.getAnalystTickerHistory?.filter(
|
const now = new Date();
|
||||||
|
const oneYearAgo = new Date(now);
|
||||||
|
oneYearAgo.setFullYear(now.getFullYear() - 1);
|
||||||
|
|
||||||
|
rawData =
|
||||||
|
data?.getAnalystTickerHistory?.filter(
|
||||||
(item) => item?.analystScore >= 4,
|
(item) => item?.analystScore >= 4,
|
||||||
);
|
) ?? [];
|
||||||
historyList = rawData?.slice(0, 30);
|
|
||||||
|
if (activeIdx === 1) {
|
||||||
|
const recentData = rawData?.filter((item) => {
|
||||||
|
const date = new Date(item?.date);
|
||||||
|
return date >= oneYearAgo;
|
||||||
|
});
|
||||||
|
|
||||||
|
const filteredAnalystCount = recentData.length;
|
||||||
|
const priceTargets = recentData
|
||||||
|
?.map((item) => parseFloat(item.adjusted_pt_current))
|
||||||
|
?.filter((pt) => !isNaN(pt));
|
||||||
|
const medianPriceTarget = priceTargets?.length
|
||||||
|
? priceTargets?.sort((a, b) => a - b)[
|
||||||
|
Math.floor(priceTargets?.length / 2)
|
||||||
|
]
|
||||||
|
: "-";
|
||||||
|
|
||||||
|
numOfAnalyst = filteredAnalystCount;
|
||||||
|
priceTarget = medianPriceTarget;
|
||||||
|
changesPercentage =
|
||||||
|
medianPriceTarget !== "-" && data?.getStockQuote?.price != null
|
||||||
|
? ((medianPriceTarget / data.getStockQuote.price - 1) * 100).toFixed(
|
||||||
|
2,
|
||||||
|
)
|
||||||
|
: "-";
|
||||||
|
|
||||||
|
// Consensus rating calculation based on rating_current
|
||||||
|
const ratingScores = {
|
||||||
|
"Strong Buy": 5,
|
||||||
|
Buy: 4,
|
||||||
|
Hold: 3,
|
||||||
|
Sell: 2,
|
||||||
|
"Strong Sell": 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
const totalRatingScore = recentData
|
||||||
|
.map((item) => ratingScores[item.rating_current] || 0)
|
||||||
|
.reduce((sum, score) => sum + score, 0);
|
||||||
|
|
||||||
|
const averageRatingScore = filteredAnalystCount
|
||||||
|
? totalRatingScore / filteredAnalystCount
|
||||||
|
: 0;
|
||||||
|
|
||||||
|
consensusRating =
|
||||||
|
averageRatingScore >= 4.5
|
||||||
|
? "Strong Buy"
|
||||||
|
: averageRatingScore >= 3.5
|
||||||
|
? "Buy"
|
||||||
|
: averageRatingScore >= 2.5
|
||||||
|
? "Hold"
|
||||||
|
: averageRatingScore >= 1.5
|
||||||
|
? "Sell"
|
||||||
|
: "Strong Sell";
|
||||||
|
|
||||||
|
historyList = recentData.slice(0, 30);
|
||||||
} else {
|
} else {
|
||||||
rawData = data?.getAnalystTickerHistory ?? [];
|
historyList = rawData.slice(0, 30);
|
||||||
historyList = rawData?.slice(0, 30);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user