From daa6447496c865d350073e4462ea74c8b385a25e Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Sun, 29 Sep 2024 20:50:02 +0200 Subject: [PATCH] add sentiment tracker page --- src/routes/sentiment-tracker/+page.server.ts | 32 ++ src/routes/sentiment-tracker/+page.svelte | 352 +++++++++++++++++++ 2 files changed, 384 insertions(+) create mode 100644 src/routes/sentiment-tracker/+page.server.ts create mode 100644 src/routes/sentiment-tracker/+page.svelte diff --git a/src/routes/sentiment-tracker/+page.server.ts b/src/routes/sentiment-tracker/+page.server.ts new file mode 100644 index 00000000..a96920ec --- /dev/null +++ b/src/routes/sentiment-tracker/+page.server.ts @@ -0,0 +1,32 @@ +export const load = async ({ locals, setHeaders }) => { + const getSentimentTracker = async () => { + const { apiKey, apiURL, user } = locals; + + // make the POST request to the endpoint + const response = await fetch(apiURL + "/sentiment-tracker", { + method: "GET", + headers: { + "Content-Type": "application/json", + "X-API-KEY": apiKey, + }, + }); + + let output = await response.json(); + + output.twitter = + user?.tier !== "Pro" ? output?.twitter?.slice(0, 6) : output?.twitter; + output.stocktwits = + user?.tier !== "Pro" + ? output?.stocktwits?.slice(0, 6) + : output?.stocktwits; + + setHeaders({ "cache-control": "public, max-age=3000" }); + + return output; + }; + + // Make sure to return a promise + return { + getSentimentTracker: await getSentimentTracker(), + }; +}; diff --git a/src/routes/sentiment-tracker/+page.svelte b/src/routes/sentiment-tracker/+page.svelte new file mode 100644 index 00000000..eae1d766 --- /dev/null +++ b/src/routes/sentiment-tracker/+page.svelte @@ -0,0 +1,352 @@ + + + + + + + {$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ''} Sentiment Tracker ยท stocknear + + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+
+ + +
+ +
+
+ + +
+
+

+ Sentiment Tracker +

+
+ + + Find out the top stocks discussed in social media. + + + +
+ + + + + +
+ + + + +
+ + {#if isLoaded} + +
+ + We update our data every 5 minutes to provide you with the latest trends and the most bullish stocks being discussed on Twitter and StockTwits +
+ + +
+ {#each tabs as item, i} + + {/each} +
+ + +
+ + + +
+ + + + + + + + + + + + + + + + + {#each stockList as item, index} + + + + + + + + + + + + + + + + + {/each} + +
+ # + + Symbol + + Name + + Market Cap + + Price + + % Change + + Sentiment +
+ {item?.rank} + + + {item?.symbol} + + + {item?.name?.length > charNumber ? item?.name?.slice(0,charNumber) + "..." : item?.name} + + {abbreviateNumber(item?.marketCap)} + + {item?.price} + + {item?.changesPercentage > 0 ? '+' : ''}{item?.changesPercentage}% + + +
+
{item?.sentiment >= 80 ? 'Very Bullish' : item?.sentiment >= 55 ? 'Bullish' : item?.sentiment > 50 ? 'Mixed' : 'Bearish'}
+
+ {item?.sentiment} +
+
+
+
+ + +
+ + {:else} +
+
+ +
+
+ {/if} + + +
+ + + + + +
+
+ + +
+ + + +
+ + \ No newline at end of file