add num of analysts
This commit is contained in:
parent
e8a75ef532
commit
c6940ca6ae
@ -48,7 +48,7 @@ function normalizer(value) {
|
|||||||
|
|
||||||
|
|
||||||
let tableDataActual = [];
|
let tableDataActual = [];
|
||||||
let tableDataForecast = []
|
let tableDataForecast = [];
|
||||||
|
|
||||||
const getAnalystEstimate = async (ticker) => {
|
const getAnalystEstimate = async (ticker) => {
|
||||||
// Get cached data for the specific tickerID
|
// Get cached data for the specific tickerID
|
||||||
@ -202,7 +202,7 @@ function prepareData() {
|
|||||||
filteredData?.forEach(item => {
|
filteredData?.forEach(item => {
|
||||||
|
|
||||||
tableDataActual?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': (item?.revenue)});
|
tableDataActual?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': (item?.revenue)});
|
||||||
tableDataForecast?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': (item?.estimatedRevenueAvg)});
|
tableDataForecast?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': item?.estimatedRevenueAvg, 'numOfAnalysts': item?.numOfAnalysts});
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -213,7 +213,7 @@ function prepareData() {
|
|||||||
filteredData?.forEach(item => {
|
filteredData?.forEach(item => {
|
||||||
|
|
||||||
tableDataActual?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': (item?.netIncome )});
|
tableDataActual?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': (item?.netIncome )});
|
||||||
tableDataForecast?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': (item?.estimatedNetIncomeAvg )});
|
tableDataForecast?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': item?.estimatedNetIncomeAvg, 'numOfAnalysts': item?.numOfAnalysts});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -222,7 +222,7 @@ function prepareData() {
|
|||||||
filteredData?.forEach(item => {
|
filteredData?.forEach(item => {
|
||||||
|
|
||||||
tableDataActual?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': item?.eps ?? null});
|
tableDataActual?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': item?.eps ?? null});
|
||||||
tableDataForecast?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': item?.estimatedEpsAvg});
|
tableDataForecast?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': item?.estimatedEpsAvg, 'numOfAnalysts': item?.numOfAnalysts});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -232,7 +232,7 @@ function prepareData() {
|
|||||||
filteredData?.forEach(item => {
|
filteredData?.forEach(item => {
|
||||||
|
|
||||||
tableDataActual?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': (item?.ebitda)});
|
tableDataActual?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': (item?.ebitda)});
|
||||||
tableDataForecast?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': (item?.estimatedEbitdaAvg)});
|
tableDataForecast?.push({ 'FY': Number(String(item?.date)?.slice(-2)), 'val': item?.estimatedEbitdaAvg, 'numOfAnalysts': item?.numOfAnalysts});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -358,46 +358,46 @@ $: {
|
|||||||
<tbody class="shadow-md">
|
<tbody class="shadow-md">
|
||||||
|
|
||||||
<tr class="bg-[#09090B] border-b-[#09090B]">
|
<tr class="bg-[#09090B] border-b-[#09090B]">
|
||||||
<th class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start font-medium bg-[#09090B] border-b border-[#09090B]">
|
<th class="text-white whitespace-nowrap text-sm sm:text-[1rem] text-start font-medium bg-[#09090B] border-b border-[#09090B]">
|
||||||
Forecast
|
Forecast
|
||||||
</th>
|
</th>
|
||||||
{#each tableDataForecast as item}
|
{#each tableDataForecast as item}
|
||||||
<td class="text-white text-sm sm:text-[1rem] text-center font-medium border-b border-[#09090B]">
|
<td class="text-white text-sm sm:text-[1rem] text-end font-medium border-b border-[#09090B]">
|
||||||
{(item?.val === '0.00' || item?.val === null) ? '-' : abbreviateNumber(item?.val)}
|
{(item?.val === '0.00' || item?.val === null) ? '-' : abbreviateNumber(item?.val)}
|
||||||
</td>
|
</td>
|
||||||
{/each}
|
{/each}
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr class="bg-[#27272A] text-sm sm:text-[1rem] border-b-[#27272A]">
|
<tr class="bg-[#27272A] border-b-[#27272A]">
|
||||||
<th class="bg-[#27272A] whitespace-nowrap text-white text-start font-medium bg-[#27272A] border-b border-[#27272A]">
|
<th class="bg-[#27272A] text-sm sm:text-[1rem] whitespace-nowrap text-white text-start font-medium bg-[#27272A] border-b border-[#27272A]">
|
||||||
Actual
|
Actual
|
||||||
</th>
|
</th>
|
||||||
{#each tableDataActual as item}
|
{#each tableDataActual as item}
|
||||||
<td class="text-white text-sm sm:text-[1rem] text-center font-medium bg-[#27272A]">
|
<td class="text-white text-sm sm:text-[1rem] text-end font-medium bg-[#27272A]">
|
||||||
{(item?.val === '0.00' || item?.val === null) ? '-' : abbreviateNumber(item?.val)}
|
{(item?.val === '0.00' || item?.val === null) ? '-' : abbreviateNumber(item?.val)}
|
||||||
</td>
|
</td>
|
||||||
{/each}
|
{/each}
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr class="bg-[#09090B] text-sm sm:text-[1rem] border-b-[#09090B]">
|
<tr class="bg-[#09090B] border-b-[#09090B]">
|
||||||
<th class="bg-[#09090B] whitespace-nowrap text-white text-start font-medium bg-[#09090B] border-b border-[#09090B]">
|
<th class="bg-[#09090B] whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium border-b border-[#09090B]">
|
||||||
% Change
|
% Change
|
||||||
</th>
|
</th>
|
||||||
{#each tableDataActual as item, index}
|
{#each tableDataActual as item, index}
|
||||||
<td class="text-white text-sm sm:text-[1rem] text-center font-medium bg-[#09090B]">
|
<td class="text-white text-sm sm:text-[1rem] text-end font-medium bg-[#09090B]">
|
||||||
{#if index-tableDataActual?.length === 0}
|
{#if index-tableDataActual?.length === 0}
|
||||||
-
|
-
|
||||||
{:else}
|
{:else}
|
||||||
{#if item?.val === null}
|
{#if item?.val === null}
|
||||||
{#if (tableDataForecast[index]?.val- tableDataForecast[index-1]?.val) > 0}
|
{#if (tableDataForecast[index]?.val- tableDataForecast[index-1]?.val) > 0}
|
||||||
<span class="text-orange-400">
|
<span class="text-orange-400">
|
||||||
*+{(((tableDataForecast[index]?.val-tableDataForecast[index-1]?.val) / tableDataForecast[index-1]?.val) * 100 )?.toFixed(2)}%
|
+{(((tableDataForecast[index]?.val-tableDataForecast[index-1]?.val) / tableDataForecast[index-1]?.val) * 100 )?.toFixed(2)}%*
|
||||||
</span>
|
</span>
|
||||||
{:else if (tableDataForecast[index]?.val - tableDataForecast[index-1]?.val ) < 0}
|
{:else if (tableDataForecast[index]?.val - tableDataForecast[index-1]?.val ) < 0}
|
||||||
<span class="text-orange-400">
|
<span class="text-orange-400">
|
||||||
*{(((tableDataForecast[index]?.val - tableDataForecast[index-1]?.val ) / tableDataForecast[index-1]?.val) * 100 )?.toFixed(2)}%
|
{(((tableDataForecast[index]?.val - tableDataForecast[index-1]?.val ) / tableDataForecast[index-1]?.val) * 100 )?.toFixed(2)}%*
|
||||||
</span>
|
</span>
|
||||||
{/if}
|
{/if}
|
||||||
{:else if (item?.val- tableDataActual[index-1]?.val) > 0}
|
{:else if (item?.val- tableDataActual[index-1]?.val) > 0}
|
||||||
@ -417,6 +417,18 @@ $: {
|
|||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr class="bg-[#27272A] border-b-[#27272A]">
|
||||||
|
<th class="bg-[#27272A] whitespace-nowrap text-sm sm:text-[1rem] text-white text-start font-medium bg-[#27272A] border-b border-[#27272A]">
|
||||||
|
No. Analysts
|
||||||
|
</th>
|
||||||
|
{#each tableDataForecast as item}
|
||||||
|
<td class="text-white text-sm sm:text-[1rem] text-end font-medium bg-[#27272A]">
|
||||||
|
{item?.numOfAnalysts === null ? '-' : item?.numOfAnalysts}
|
||||||
|
</td>
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user