From 9bae61ff292197f118cf80101cad9f727da80a38 Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Wed, 25 Dec 2024 01:26:02 +0100 Subject: [PATCH] update dark pool flow page --- src/lib/components/Table/DarkPoolTable.svelte | 597 ++++++++++++++++++ src/lib/utils.ts | 31 +- src/routes/+layout.svelte | 38 +- src/routes/dark-pool-flow/+page.svelte | 4 +- 4 files changed, 658 insertions(+), 12 deletions(-) create mode 100644 src/lib/components/Table/DarkPoolTable.svelte diff --git a/src/lib/components/Table/DarkPoolTable.svelte b/src/lib/components/Table/DarkPoolTable.svelte new file mode 100644 index 00000000..6922f602 --- /dev/null +++ b/src/lib/components/Table/DarkPoolTable.svelte @@ -0,0 +1,597 @@ + + +
+
+ +
+ +
sortData("time")} + class="td cursor-pointer select-none bg-[#1E222D] text-slate-300 font-bold text-xs text-start uppercase" + > + Time + +
+
sortData("ticker")} + class="td cursor-pointer select-none bg-[#1E222D] font-bold text-slate-300 text-xs text-start uppercase" + > + Symbol + +
+ +
sortData("price")} + class="td cursor-pointer select-none bg-[#1E222D] text-slate-300 font-bold text-xs text-start uppercase" + > + Price + +
+
sortData("premium")} + class="td cursor-pointer select-none bg-[#1E222D] text-slate-300 font-bold text-xs text-start uppercase" + > + Premium + +
+ +
sortData("size")} + class="td cursor-pointer select-none bg-[#1E222D] text-slate-300 font-bold text-xs text-start uppercase" + > + Size + +
+
sortData("vol")} + class="td cursor-pointer select-none bg-[#1E222D] text-slate-300 font-bold text-xs text-start uppercase" + > + Volume + +
+ +
sortData("vol")} + class="td cursor-pointer select-none bg-[#1E222D] text-slate-300 font-bold text-xs text-start uppercase" + > + % Daily Volume + +
+ +
sortData("vol")} + class="td cursor-pointer select-none bg-[#1E222D] text-slate-300 font-bold text-xs text-start uppercase" + > + % 30D Volume + +
+ +
sortData("vol")} + class="td cursor-pointer select-none bg-[#1E222D] text-slate-300 font-bold text-xs text-start uppercase" + > + Sector + +
+ +
sortData("vol")} + class="td cursor-pointer select-none bg-[#1E222D] text-slate-300 font-bold text-xs text-start uppercase" + > + Issue Type + +
+
+ +
+ + +
+ {reformatDate(displayedData[index]?.date_expiration)} +
+
+ +
+ +
+ {displayedData[index]?.price} +
+ +
+ {@html abbreviateNumber(displayedData[index]?.cost_basis, true, true)} +
+ +
+ {new Intl.NumberFormat("en", { + minimumFractionDigits: 0, + maximumFractionDigits: 0, + }).format(displayedData[index]?.size)} +
+ +
+ {new Intl.NumberFormat("en", { + minimumFractionDigits: 0, + maximumFractionDigits: 0, + }).format(displayedData[index]?.volume)} +
+ +
+ {new Intl.NumberFormat("en", { + minimumFractionDigits: 0, + maximumFractionDigits: 0, + }).format(displayedData[index]?.volume)} +
+ +
+ {new Intl.NumberFormat("en", { + minimumFractionDigits: 0, + maximumFractionDigits: 0, + }).format(displayedData[index]?.volume)} +
+ +
+ Healthcare +
+ +
+ Stock +
+
+
+
+
+ + diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 078a5448..d71120c7 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -608,7 +608,7 @@ export function formatString(inputString) { return formattedString; } -export function abbreviateNumber(number, addDollarSign = false) { +export function abbreviateNumber(number, addDollarSign = false, color = false) { // Check if number is null or undefined, return "-" if true if (number == null) { return "-"; @@ -618,13 +618,14 @@ export function abbreviateNumber(number, addDollarSign = false) { // Handle special case for exactly 1000 if (Math.abs(number) === 1000) { + const suffix = color ? 'K' : 'K'; return addDollarSign ? negative - ? "-$1K" - : "$1K" + ? `-\$1${suffix}` + : `\$1${suffix}` : negative - ? "-1K" - : "1K"; + ? `-1${suffix}` + : `1${suffix}`; } if (Math.abs(number) !== 0 && Math.abs(number) > 1000) { @@ -652,21 +653,33 @@ export function abbreviateNumber(number, addDollarSign = false) { minimumFractionDigits: 2, }); - const formattedNumber = abbreviation + suffixes[index]; + let suffix = suffixes[index]; + + if (color) { + if (suffix === "K") { + suffix = 'K'; + } else if (suffix === "M") { + suffix = 'M'; + } else if (suffix === "B") { + suffix = 'B'; + } + } + + const formattedNumber = abbreviation + suffix; return addDollarSign - ? (negative ? "-$" : "$") + formattedNumber + ? (negative ? "-\$" : "\$") + formattedNumber : negative ? "-" + formattedNumber : formattedNumber; } else if (Math.abs(number) >= 0 && Math.abs(number) < 1000) { return addDollarSign - ? (negative ? "-$" : "$") + Math.abs(number) + ? (negative ? "-\$" : "\$") + Math.abs(number) : negative ? "-" + Math.abs(number) : number.toString(); } else { - return addDollarSign ? "$0" : "0"; + return addDollarSign ? "\$0" : "0"; } } diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 41661e67..4f4a7796 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -33,7 +33,6 @@ } from "$lib/store"; import { Button } from "$lib/components/shadcn/button/index.ts"; - import * as Card from "$lib/components/shadcn/card/index.ts"; import * as DropdownMenu from "$lib/components/shadcn/dropdown-menu/index.ts"; import * as Sheet from "$lib/components/shadcn/sheet/index.ts"; import * as Accordion from "$lib/components/shadcn/accordion/index.js"; @@ -49,6 +48,7 @@ import Newspaper from "lucide-svelte/icons/newspaper"; import AudioLine from "lucide-svelte/icons/audio-lines"; import Gem from "lucide-svelte/icons/gem"; + import Moon from "lucide-svelte/icons/moon-star"; import stocknear_logo from "$lib/images/stocknear_logo.png"; /* import { @@ -724,6 +724,30 @@ + + + +