From 1af431052aaf85cec34a1a83805781763e9537a8 Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Wed, 4 Dec 2024 22:37:39 +0100 Subject: [PATCH] update cramer tracker --- src/routes/cramer-tracker/+page.svelte | 115 +++++++++---------------- 1 file changed, 41 insertions(+), 74 deletions(-) diff --git a/src/routes/cramer-tracker/+page.svelte b/src/routes/cramer-tracker/+page.svelte index d7836541..d74e227a 100644 --- a/src/routes/cramer-tracker/+page.svelte +++ b/src/routes/cramer-tracker/+page.svelte @@ -29,31 +29,40 @@ const tickerMap = new Map(); data.forEach((item) => { - const { ticker } = item; + const { ticker, returnSince } = item; if (!ticker) return; // Skip if ticker is not defined if (!tickerMap.has(ticker)) { - // Add the item and initialize count - tickerMap.set(ticker, { ...item, ratings: 1 }); + // Add the item, initialize count, and initialize sum of returnSince + tickerMap.set(ticker, { + ...item, + ratings: 1, + totalReturn: returnSince || 0, + }); } else { const existing = tickerMap.get(ticker); - // Increment the ratings count + // Increment the ratings count and add to totalReturn existing.ratings += 1; + existing.totalReturn += returnSince || 0; // Keep the item with the latest date if (new Date(item?.date) > new Date(existing?.date)) { tickerMap.set(ticker, { ...item, ratings: existing?.ratings, + totalReturn: existing?.totalReturn, // Keep the accumulated return }); } } }); - // Convert the Map back to an array - return Array?.from(tickerMap?.values()); + // Convert the Map back to an array with avgReturn computed + return Array.from(tickerMap.values()).map((item) => ({ + ...item, + avgReturn: (item.totalReturn / item.ratings)?.toFixed(2), // Compute average return + })); } onMount(() => { @@ -71,8 +80,10 @@ : []), { key: "ticker", label: "Symbol", align: "left" }, { key: "name", label: "Name", align: "left" }, + { key: "price", label: "Price", align: "right" }, + { key: "changesPercentage", label: "% Change", align: "right" }, { key: "sentiment", label: "Sentiment", align: "right" }, - { key: "returnSince", label: "Return Since", align: "right" }, + { key: "avgReturn", label: "Avg Return", align: "right" }, { key: "ratings", label: "Ratings", align: "right" }, { key: "date", label: "Date", align: "right" }, ]; @@ -82,8 +93,10 @@ date: { order: "none", type: "date" }, ticker: { order: "none", type: "string" }, name: { order: "none", type: "string" }, + price: { order: "none", type: "number" }, + changesPercentage: { order: "none", type: "number" }, sentiment: { order: "none", type: "string" }, - returnSince: { order: "none", type: "number" }, + avgReturn: { order: "none", type: "number" }, ratings: { order: "none", type: "number" }, }; @@ -200,7 +213,7 @@
-
+

Jim Cramer Tracker @@ -277,6 +290,21 @@ : item?.name} + + {item?.price} + + + + {item?.changesPercentage}% + + = 0 - ? 'text-[#00FC50]' + class="text-sm sm:text-[1rem] {item?.avgReturn >= 0 + ? "text-[#00FC50] before:content-['+'] " : 'text-[#FF2F1F]'} text-end" > - {item?.returnSince > 0 ? "+" : ""}{item?.returnSince}% + {item?.avgReturn}% {#if checkedSymbol === item?.ticker}
@@ -356,67 +384,6 @@

- -