From cf38fd48ed31eed9e8ac4a76c6c1309a4a79f63f Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Mon, 25 Nov 2024 22:20:24 +0100 Subject: [PATCH] add websocket to table of watchlist --- src/routes/stocks/[tickerID]/+layout.svelte | 1 - src/routes/watchlist/+layout.ts | 54 ++++++++++ src/routes/watchlist/stocks/+page.svelte | 107 +++++++++++++++++++- 3 files changed, 157 insertions(+), 5 deletions(-) create mode 100644 src/routes/watchlist/+layout.ts diff --git a/src/routes/stocks/[tickerID]/+layout.svelte b/src/routes/stocks/[tickerID]/+layout.svelte index 6b68cba9..c881ddfc 100644 --- a/src/routes/stocks/[tickerID]/+layout.svelte +++ b/src/routes/stocks/[tickerID]/+layout.svelte @@ -213,7 +213,6 @@ } if ($isOpen) { - //&& currentDateTime > startTime && currentDateTime < endTime await websocketRealtimeData(); } }); diff --git a/src/routes/watchlist/+layout.ts b/src/routes/watchlist/+layout.ts new file mode 100644 index 00000000..e5b0929c --- /dev/null +++ b/src/routes/watchlist/+layout.ts @@ -0,0 +1,54 @@ +import { + isOpen, + isAfterMarketClose, + isBeforeMarketOpen, + isWeekend, +} from "$lib/store"; + +const checkMarketHour = async () => { + const holidays = [ + "2024-01-01", + "2024-01-15", + "2024-02-19", + "2024-03-29", + "2024-05-27", + "2024-06-19", + "2024-07-04", + "2024-09-02", + "2024-11-28", + "2024-12-25", + ]; + const currentDate = new Date().toISOString().split("T")[0]; + + // Get the current time in the ET time zone + const etTimeZone = "America/New_York"; + const currentTime = new Date().toLocaleString("en-US", { + timeZone: etTimeZone, + }); + + // Determine if the NYSE is currently open or closed + const currentHour = new Date(currentTime).getHours(); + const isWeekendValue = + new Date(currentTime).getDay() === 6 || + new Date(currentTime).getDay() === 0; + const isBeforeMarketOpenValue = + currentHour < 9 || + (currentHour === 9 && new Date(currentTime).getMinutes() < 30); + const isAfterMarketCloseValue = currentHour >= 16; + + isOpen.set( + !( + isWeekendValue || + isBeforeMarketOpenValue || + isAfterMarketCloseValue || + holidays?.includes(currentDate) + ), + ); + isWeekend.set(isWeekendValue); + isBeforeMarketOpen.set(isBeforeMarketOpenValue); + isAfterMarketClose.set(isAfterMarketCloseValue); +}; + +export const load = async ({ params, data }) => { + await checkMarketHour(); +}; \ No newline at end of file diff --git a/src/routes/watchlist/stocks/+page.svelte b/src/routes/watchlist/stocks/+page.svelte index 4e03e9bc..7b438b2b 100644 --- a/src/routes/watchlist/stocks/+page.svelte +++ b/src/routes/watchlist/stocks/+page.svelte @@ -1,9 +1,8 @@