diff --git a/src/routes/changelog/+page.svelte b/src/routes/changelog/+page.svelte index 68077a2f..1d8b296f 100644 --- a/src/routes/changelog/+page.svelte +++ b/src/routes/changelog/+page.svelte @@ -86,6 +86,9 @@ export let data;
    +
  1. + New Feature: Add Jim Cramer Tracker. +
  2. New Feature: Add Swap data for stocks.
  3. diff --git a/src/routes/cramer-tracker/+page.svelte b/src/routes/cramer-tracker/+page.svelte new file mode 100644 index 00000000..6bbf393a --- /dev/null +++ b/src/routes/cramer-tracker/+page.svelte @@ -0,0 +1,369 @@ + + + + + + + {$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ''} Jim Carmer Tracker · stocknear + + + + + + + + + + + + + + + + + + + +
    + + + +
    + +
    +
    +
    + +
    +
    + + +
    +
    +

    + Jim Cramer Tracker +

    +
    + + + Track the stock recommendations and performance of CNBC's Jim Cramer + + + +
    + + + + + +
    + + + + +
    + + {#if isLoaded} + + + +
    + + +
    + + + + + + + + + + + + + {#each displayList as item, index} + + goto(`/stocks/${item?.symbol}`)} class="sm:hover:bg-[#245073] sm:hover:bg-opacity-[0.2] odd:bg-[#27272A] {index+1 === displayList?.length && data?.user?.tier !== 'Pro' ? 'opacity-[0.1]' : ''} cursor-pointer"> + + + + + + + + + + + + + + + + + {/each} + +
    + Symbol + + Date + + Sentiment + + Return Since + + Sector +
    +
    + {item?.ticker} + + {item?.name?.length > charNumber ? item?.name?.slice(0,charNumber) + "..." : item?.name} + +
    +
    + {new Date(item?.date)?.toLocaleString('en-US', { month: 'short', day: 'numeric', year: 'numeric', daySuffix: '2-digit' })} + + {item?.sentiment} + + {item?.returnSince} + + {item?.sector} +
    +
    + + + +
    + + {:else} +
    +
    + +
    +
    + {/if} + + +
    +
    +
    + + +
    + + + +
    + + \ No newline at end of file diff --git a/src/routes/cramer-tracker/+page.ts b/src/routes/cramer-tracker/+page.ts new file mode 100644 index 00000000..dab00ecb --- /dev/null +++ b/src/routes/cramer-tracker/+page.ts @@ -0,0 +1,56 @@ +import { userRegion, getCache, setCache } from '$lib/store'; + + +const usRegion = ['cle1','iad1','pdx1','sfo1']; + +let apiURL; +let apiKey = import.meta.env.VITE_STOCKNEAR_API_KEY; + + +userRegion.subscribe(value => { + + if (usRegion.includes(value)) { + apiURL = import.meta.env.VITE_USEAST_API_URL; + } else { + apiURL = import.meta.env.VITE_EU_API_URL; + } +}); + + +export const load = async ({parent}) => { + + const getCramerTracker = async () => { + let output; + const data = await parent(); + + const cachedData = getCache('', 'getCramerTracker'); + if (cachedData) { + output = cachedData; + } else { + // make the POST request to the endpoint + const response = await fetch(apiURL + '/cramer-tracker', { + method: 'GET', + headers: { + "Content-Type": "application/json", "X-API-KEY": apiKey + }, + }); + + output = await response.json(); + + setCache('', output, 'getCramerTracker'); + + } + + output = data?.user?.tier !== 'Pro' ? output?.slice(0,6) : output; + + console.log(output) + + + return output; + }; + + // Make sure to return a promise + return { + getCramerTracker: await getCramerTracker() + }; +}; \ No newline at end of file diff --git a/src/routes/home/+page.svelte b/src/routes/home/+page.svelte index 42441039..04b38315 100644 --- a/src/routes/home/+page.svelte +++ b/src/routes/home/+page.svelte @@ -79,11 +79,25 @@ onMount( async() => {
    + + +

    Dashboard

    + +
    diff --git a/src/routes/sitemap.xml/+server.ts b/src/routes/sitemap.xml/+server.ts index b558c124..f5dd8746 100644 --- a/src/routes/sitemap.xml/+server.ts +++ b/src/routes/sitemap.xml/+server.ts @@ -20,6 +20,7 @@ export const config = { const pages = [ {title: "/"}, + {title: "/cramer-tracker"}, {title: "/most-shorted-stocks"}, {title: "/stocks"}, {title: "/etf"},