From 878934e2463d6a848b00dbf9301f05f1bf6241af Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Fri, 10 Jan 2025 11:38:59 +0100 Subject: [PATCH] update options page for etf --- .../etf/[tickerID]/options/+layout.svelte | 11 +++ .../etf/[tickerID]/options/oi/+layout.svelte | 83 +++++++++++++++++++ .../etf/[tickerID]/options/oi/+page.server.ts | 34 ++++++++ .../etf/[tickerID]/options/oi/+page.svelte | 71 ++++++++++++++++ .../options/oi/expiry/+page.server.ts | 34 ++++++++ .../[tickerID]/options/oi/expiry/+page.svelte | 70 ++++++++++++++++ 6 files changed, 303 insertions(+) create mode 100644 src/routes/etf/[tickerID]/options/oi/+layout.svelte create mode 100644 src/routes/etf/[tickerID]/options/oi/+page.server.ts create mode 100644 src/routes/etf/[tickerID]/options/oi/+page.svelte create mode 100644 src/routes/etf/[tickerID]/options/oi/expiry/+page.server.ts create mode 100644 src/routes/etf/[tickerID]/options/oi/expiry/+page.svelte diff --git a/src/routes/etf/[tickerID]/options/+layout.svelte b/src/routes/etf/[tickerID]/options/+layout.svelte index 95c83e60..abb96dc0 100644 --- a/src/routes/etf/[tickerID]/options/+layout.svelte +++ b/src/routes/etf/[tickerID]/options/+layout.svelte @@ -13,6 +13,7 @@ "hottest-contracts": "/options/hottest-contracts", gex: "/options/gex", dex: "/options/dex", + oi: "/options/oi", }; if (state !== "overview" && subSectionMap[state]) { @@ -32,6 +33,7 @@ "hottest-contracts": "hottest-contracts", gex: "gex", dex: "dex", + oi: "oi", }; const foundSection = parts?.find((part) => @@ -77,6 +79,15 @@ > Hottest Contracts + changeSubSection("oi")} + class="p-2 px-5 cursor-pointer {displaySubSection === 'oi' + ? 'text-white bg-primary sm:hover:bg-opacity-[0.95]' + : 'text-gray-400 sm:hover:text-white sm:hover:bg-primary sm:hover:bg-opacity-[0.95]'}" + > + OI + changeSubSection("gex")} diff --git a/src/routes/etf/[tickerID]/options/oi/+layout.svelte b/src/routes/etf/[tickerID]/options/oi/+layout.svelte new file mode 100644 index 00000000..c74d732a --- /dev/null +++ b/src/routes/etf/[tickerID]/options/oi/+layout.svelte @@ -0,0 +1,83 @@ + + +
+ +
diff --git a/src/routes/etf/[tickerID]/options/oi/+page.server.ts b/src/routes/etf/[tickerID]/options/oi/+page.server.ts new file mode 100644 index 00000000..da373752 --- /dev/null +++ b/src/routes/etf/[tickerID]/options/oi/+page.server.ts @@ -0,0 +1,34 @@ + + +export const load = async ({ locals, params }) => { + const { apiKey, apiURL, user } = locals; + + const getData = async () => { + const postData = { + params: params.tickerID, + category: "strike" + }; + + const response = await fetch(apiURL + "/options-oi", { + method: "POST", + headers: { + "Content-Type": "application/json", + "X-API-KEY": apiKey, + }, + body: JSON.stringify(postData), + }); + const output = await response.json(); + return output; + }; + + + + + + // Make sure to return a promise + return { + getData: await getData(), + }; +}; + + diff --git a/src/routes/etf/[tickerID]/options/oi/+page.svelte b/src/routes/etf/[tickerID]/options/oi/+page.svelte new file mode 100644 index 00000000..238eb526 --- /dev/null +++ b/src/routes/etf/[tickerID]/options/oi/+page.svelte @@ -0,0 +1,71 @@ + + + + + + + {$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} + {$displayCompanyName} ({$etfTicker}) Open Interet by Strike Price · + Stocknear + + + + + + + + + + + + + + + + +
+
+
+ {#if data?.getData?.length > 0} + + {:else} +
+
+ +
+
+ {/if} +
+
+
diff --git a/src/routes/etf/[tickerID]/options/oi/expiry/+page.server.ts b/src/routes/etf/[tickerID]/options/oi/expiry/+page.server.ts new file mode 100644 index 00000000..f43ab639 --- /dev/null +++ b/src/routes/etf/[tickerID]/options/oi/expiry/+page.server.ts @@ -0,0 +1,34 @@ + + +export const load = async ({ locals, params }) => { + const { apiKey, apiURL } = locals; + + const getData = async () => { + const postData = { + params: params.tickerID, + category: "expiry" + }; + + const response = await fetch(apiURL + "/options-oi", { + method: "POST", + headers: { + "Content-Type": "application/json", + "X-API-KEY": apiKey, + }, + body: JSON.stringify(postData), + }); + const output = await response.json(); + return output; + }; + + + + + + // Make sure to return a promise + return { + getData: await getData(), + }; +}; + + diff --git a/src/routes/etf/[tickerID]/options/oi/expiry/+page.svelte b/src/routes/etf/[tickerID]/options/oi/expiry/+page.svelte new file mode 100644 index 00000000..06e02f5d --- /dev/null +++ b/src/routes/etf/[tickerID]/options/oi/expiry/+page.svelte @@ -0,0 +1,70 @@ + + + + + + + {$numberOfUnreadNotification > 0 ? `(${$numberOfUnreadNotification})` : ""} + {$displayCompanyName} ({$etfTicker}) OpenInterest by Expiry · Stocknear + + + + + + + + + + + + + + + + +
+
+
+ {#if rawData?.length > 0} + + {:else} +
+
+ +
+
+ {/if} +
+
+