diff --git a/src/lib/components/Table/DarkPoolTable.svelte b/src/lib/components/Table/DarkPoolTable.svelte
index 6922f602..be87e6b0 100644
--- a/src/lib/components/Table/DarkPoolTable.svelte
+++ b/src/lib/components/Table/DarkPoolTable.svelte
@@ -4,58 +4,52 @@
import VirtualList from "svelte-tiny-virtual-list";
import HoverStockChart from "$lib/components/HoverStockChart.svelte";
- import toast from "svelte-french-toast";
export let data;
- export let optionsWatchlist;
export let displayedData = [];
export let filteredData = [];
export let rawData = [];
- let animationClass = "";
- let animationId = "";
+ function formatToNewYorkTime(isoString) {
+ const date = new Date(isoString);
- function formatTime(timeString) {
- // Split the time string into components
- const [hours, minutes, seconds] = timeString?.split(":").map(Number);
+ // Get the date components in New York time zone
+ const options = {
+ year: "numeric",
+ month: "numeric",
+ day: "numeric",
+ hour: "numeric",
+ minute: "numeric",
+ second: "numeric",
+ timeZone: "America/New_York",
+ hour12: false,
+ };
- // Determine AM or PM
- const period = hours >= 12 ? "PM" : "AM";
+ // Format date for New York timezone
+ const formatter = new Intl.DateTimeFormat("en-US", options);
+ const parts = formatter.formatToParts(date);
- // Convert hours from 24-hour to 12-hour format
- const formattedHours = hours % 12 || 12; // Converts 0 to 12 for midnight
+ const year = parts.find((p) => p.type === "year").value;
+ const day = parts.find((p) => p.type === "day").value;
+ const hour = parts.find((p) => p.type === "hour").value.padStart(2, "0");
+ const minute = parts
+ .find((p) => p.type === "minute")
+ .value.padStart(2, "0");
+ const second = parts
+ .find((p) => p.type === "second")
+ .value.padStart(2, "0");
- // Format the time string
- const formattedTimeString = `${formattedHours.toString().padStart(2, "0")}:${minutes.toString().padStart(2, "0")} ${period}`;
-
- return formattedTimeString;
- }
-
- function reformatDate(dateString) {
- return (
- dateString.substring(5, 7) +
- "/" +
- dateString.substring(8) +
- "/" +
- dateString.substring(2, 4)
- );
+ return `${day}/${year} ${hour}:${minute}:${second}`;
}
let sortOrders = {
- time: "none",
+ date: "none",
ticker: "none",
- expiry: "none",
- dte: "none",
- strike: "none",
- callPut: "none",
- sentiment: "none",
- spot: "none",
price: "none",
premium: "none",
- type: "none",
- exec: "none",
- vol: "none",
- oi: "none",
+ assetType: "none",
+ volume: "none",
+ size: "none",
};
// Generalized sorting function
@@ -83,11 +77,6 @@
}
const compareFunctions = {
- time: (a, b) => {
- const timeA = new Date("1970-01-01T" + a.time).getTime();
- const timeB = new Date("1970-01-01T" + b.time).getTime();
- return sortOrder === "asc" ? timeA - timeB : timeB - timeA;
- },
ticker: (a, b) => {
const tickerA = a.ticker.toUpperCase();
const tickerB = b.ticker.toUpperCase();
@@ -95,34 +84,19 @@
? tickerA.localeCompare(tickerB)
: tickerB.localeCompare(tickerA);
},
- expiry: (a, b) => {
- const timeA = new Date(a.date_expiration);
- const timeB = new Date(b.date_expiration);
+ date: (a, b) => {
+ const timeA = new Date(a.date);
+ const timeB = new Date(b.date);
return sortOrder === "asc" ? timeA - timeB : timeB - timeA;
},
- dte: (a, b) => {
- const timeA = new Date(a.date_expiration);
- const timeB = new Date(b.date_expiration);
- return sortOrder === "asc" ? timeA - timeB : timeB - timeA;
- },
- strike: (a, b) => {
- const strikeA = parseFloat(a.strike_price);
- const strikeB = parseFloat(b.strike_price);
- return sortOrder === "asc" ? strikeA - strikeB : strikeB - strikeA;
- },
- spot: (a, b) => {
- const spotA = parseFloat(a.underlying_price);
- const spotB = parseFloat(b.underlying_price);
- return sortOrder === "asc" ? spotA - spotB : spotB - spotA;
- },
price: (a, b) => {
const priceA = parseFloat(a.price);
const priceB = parseFloat(b.price);
return sortOrder === "asc" ? priceA - priceB : priceB - priceA;
},
premium: (a, b) => {
- const premiumA = parseFloat(a.cost_basis);
- const premiumB = parseFloat(b.cost_basis);
+ const premiumA = parseFloat(a.premium);
+ const premiumB = parseFloat(b.premium);
return sortOrder === "asc" ? premiumA - premiumB : premiumB - premiumA;
},
size: (a, b) => {
@@ -130,44 +104,27 @@
const volB = parseFloat(b?.size);
return sortOrder === "asc" ? volA - volB : volB - volA;
},
- vol: (a, b) => {
+ volume: (a, b) => {
const volA = parseFloat(a.volume);
const volB = parseFloat(b.volume);
return sortOrder === "asc" ? volA - volB : volB - volA;
},
- oi: (a, b) => {
- const oiA = parseFloat(a.open_interest);
- const oiB = parseFloat(b.open_interest);
- return sortOrder === "asc" ? oiA - oiB : oiB - oiA;
+ dailyVolume: (a, b) => {
+ const volA = parseFloat(a.dailyVolumePercentage);
+ const volB = parseFloat(b.dailyVolumePercentage);
+ return sortOrder === "asc" ? volA - volB : volB - volA;
},
- callPut: (a, b) => {
- const callPutA = a.put_call?.toUpperCase();
- const callPutB = b.put_call?.toUpperCase();
- return sortOrder === "asc"
- ? callPutA.localeCompare(callPutB)
- : callPutB.localeCompare(callPutA);
+ avgVolume: (a, b) => {
+ const volA = parseFloat(a.avgVolumePercentage);
+ const volB = parseFloat(b.avgVolumePercentage);
+ return sortOrder === "asc" ? volA - volB : volB - volA;
},
- sentiment: (a, b) => {
- const sentimentOrder = { BULLISH: 1, NEUTRAL: 2, BEARISH: 3 };
- const sentimentA = sentimentOrder[a?.sentiment?.toUpperCase()] || 4;
- const sentimentB = sentimentOrder[b?.sentiment?.toUpperCase()] || 4;
- return sortOrder === "asc"
- ? sentimentA - sentimentB
- : sentimentB - sentimentA;
- },
- type: (a, b) => {
+ assetType: (a, b) => {
const typeOrder = { SWEEP: 1, TRADE: 2 };
- const typeA = typeOrder[a.option_activity_type?.toUpperCase()] || 3;
- const typeB = typeOrder[b.option_activity_type?.toUpperCase()] || 3;
+ const typeA = typeOrder[a.assetType?.toUpperCase()] || 3;
+ const typeB = typeOrder[b.assetType?.toUpperCase()] || 3;
return sortOrder === "asc" ? typeA - typeB : typeB - typeA;
},
- exec: (a, b) => {
- const tickerA = a?.execution_estimate?.toUpperCase();
- const tickerB = b?.execution_estimate?.toUpperCase();
- return sortOrder === "asc"
- ? tickerA.localeCompare(tickerB)
- : tickerB.localeCompare(tickerA);
- },
};
// Sort using the appropriate comparison function
@@ -183,15 +140,18 @@
itemCount={displayedData.length}
itemSize={40}
>
-
+
sortData("time")}
- class="td cursor-pointer select-none bg-[#1E222D] text-slate-300 font-bold text-xs text-start uppercase"
+ on:click={() => sortData("date")}
+ class="td cursor-pointer select-none bg-[#121217] text-slate-300 font-bold text-xs text-start uppercase"
>
- Time
+ Date