update options widget
This commit is contained in:
parent
9018c6028a
commit
87a131180b
@ -10,8 +10,9 @@
|
|||||||
import Crown from "lucide-svelte/icons/crown";
|
import Crown from "lucide-svelte/icons/crown";
|
||||||
import Activity from "lucide-svelte/icons/activity";
|
import Activity from "lucide-svelte/icons/activity";
|
||||||
import { abbreviateNumber, formatDate } from '$lib/utils';
|
import { abbreviateNumber, formatDate } from '$lib/utils';
|
||||||
|
import * as Tabs from "$lib/components/shadcn/tabs/index.js";
|
||||||
import { numberOfUnreadNotification} from '$lib/store';
|
|
||||||
|
import { screenWidth, numberOfUnreadNotification} from '$lib/store';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
import { Chart } from 'svelte-echarts'
|
import { Chart } from 'svelte-echarts'
|
||||||
@ -28,6 +29,7 @@
|
|||||||
export let data;
|
export let data;
|
||||||
let isLoaded = false;
|
let isLoaded = false;
|
||||||
const quickInfo = data?.getDashboard?.quickInfo;
|
const quickInfo = data?.getDashboard?.quickInfo;
|
||||||
|
let optionsMode = 'premium';
|
||||||
|
|
||||||
|
|
||||||
function compareTimes(time1, time2) {
|
function compareTimes(time1, time2) {
|
||||||
@ -156,8 +158,18 @@ function latestInfoDate(inputDate) {
|
|||||||
return differenceInDays <=1;
|
return differenceInDays <=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let optionsTable = data?.getDashboard?.optionsFlow?.premium || [];
|
||||||
|
|
||||||
|
function changeTable(state) {
|
||||||
|
optionsMode = state;
|
||||||
|
if (optionsMode === 'premium') {
|
||||||
|
optionsTable = data?.getDashboard?.optionsFlow?.premium || [];
|
||||||
|
} else if (optionsMode === 'volume') {
|
||||||
|
optionsTable = data?.getDashboard?.optionsFlow?.volume || [];
|
||||||
|
} else {
|
||||||
|
optionsTable = data?.getDashboard?.optionsFlow?.openInterest || [];
|
||||||
|
}
|
||||||
|
}
|
||||||
let Feedback;
|
let Feedback;
|
||||||
|
|
||||||
onMount( async() => {
|
onMount( async() => {
|
||||||
@ -325,37 +337,44 @@ onMount( async() => {
|
|||||||
<ArrowUpRight class="hidden sm:inline-block h-4 w-4 shrink-0 -mt-1 ml-0.5" />
|
<ArrowUpRight class="hidden sm:inline-block h-4 w-4 shrink-0 -mt-1 ml-0.5" />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<Card.Description class="mt-2 text-sm sm:text-[1rem]">Recent hedge fund options with the highest premiums.</Card.Description>
|
<Card.Description class="mt-2 text-sm sm:text-[1rem]">Recent hedge fund options with the highest ...</Card.Description>
|
||||||
|
<Tabs.Root value="premium" class="w-fit mt-5 ">
|
||||||
|
<Tabs.List class="grid w-full grid-cols-3 bg-[#27272A]">
|
||||||
|
<Tabs.Trigger on:click={() => changeTable('premium')} value="premium" class="text-sm">Premium</Tabs.Trigger>
|
||||||
|
<Tabs.Trigger on:click={() => changeTable('volume')} value="volume" class="text-sm">Volume</Tabs.Trigger>
|
||||||
|
<Tabs.Trigger on:click={() => changeTable('openInterest')} value="openInterest" class="text-sm">{$screenWidth < 640 ? 'OI' : 'Open Interest'}</Tabs.Trigger>
|
||||||
|
</Tabs.List>
|
||||||
|
</Tabs.Root>
|
||||||
</div>
|
</div>
|
||||||
</Card.Header>
|
</Card.Header>
|
||||||
<Card.Content>
|
<Card.Content>
|
||||||
<Table.Root class="overflow-x-scroll w-full">
|
<Table.Root class="overflow-x-scroll w-full">
|
||||||
<Table.Header>
|
<Table.Header>
|
||||||
<Table.Row>
|
<Table.Row>
|
||||||
<Table.Head class="text-white">Symbol</Table.Head>
|
<Table.Head class="text-white font-semibold">Symbol</Table.Head>
|
||||||
<Table.Head class="text-white">Prem.</Table.Head>
|
<Table.Head class="text-white text-right font-semibold">Prem</Table.Head>
|
||||||
<Table.Head class="text-white">Strike</Table.Head>
|
<Table.Head class="text-white text-right font-semibold">Strike</Table.Head>
|
||||||
<Table.Head class="text-white">Sent.</Table.Head>
|
<Table.Head class="text-white text-right font-semibold">{optionsMode === 'openInterest' ? 'OI' : 'Vol'}</Table.Head>
|
||||||
<Table.Head class="text-white">C/P</Table.Head>
|
<Table.Head class="text-white text-right font-semibold">C/P</Table.Head>
|
||||||
<Table.Head class="text-right text-white">Expiry</Table.Head>
|
<Table.Head class="text-right text-white font-semibold">Expiry</Table.Head>
|
||||||
</Table.Row>
|
</Table.Row>
|
||||||
</Table.Header>
|
</Table.Header>
|
||||||
<Table.Body>
|
<Table.Body>
|
||||||
{#each data?.getDashboard?.optionsFlow as item}
|
{#each optionsTable as item}
|
||||||
<Table.Row>
|
<Table.Row>
|
||||||
<Table.Cell>
|
<Table.Cell>
|
||||||
<a href={item?.assetType === 'stock' ? `/stocks/${item?.ticker}` : `/etf/${item?.ticker}`} class="text-sm sm:text-[1rem] font-medium text-blue-400 sm:hover:text-white transition duration-100">{item?.ticker}</a>
|
<a href={item?.assetType === 'stock' ? `/stocks/${item?.ticker}` : `/etf/${item?.ticker}`} class="text-sm sm:text-[1rem] font-medium text-blue-400 sm:hover:text-white transition duration-100">{item?.ticker}</a>
|
||||||
</Table.Cell>
|
</Table.Cell>
|
||||||
<Table.Cell class="xl:table.-column text-sm sm:text-[1rem] {item?.put_call === 'Calls' ? 'text-[#00FC50]' : 'text-[#FC2120]'}">
|
<Table.Cell class="text-right xl:table.-column text-sm sm:text-[1rem] {item?.put_call === 'Calls' ? 'text-[#00FC50]' : 'text-[#FC2120]'}">
|
||||||
{abbreviateNumber(item?.cost_basis,true)}
|
{abbreviateNumber(item?.cost_basis,true)}
|
||||||
</Table.Cell>
|
</Table.Cell>
|
||||||
<Table.Cell class="xl:table.-column text-sm sm:text-[1rem]">
|
<Table.Cell class="text-right xl:table.-column text-sm sm:text-[1rem]">
|
||||||
${item?.strike_price}
|
${item?.strike_price}
|
||||||
</Table.Cell>
|
</Table.Cell>
|
||||||
<Table.Cell class="md:table.-cell xl:table.-column text-sm sm:text-[1rem] {item?.sentiment === 'Bullish' ? 'text-[#00FC50]' : item?.sentiment === 'Bearish' ? 'text-[#FC2120]' : 'text-[#C6A755]'}">
|
<Table.Cell class="text-right md:table.-cell xl:table.-column text-sm sm:text-[1rem] text-white">
|
||||||
{item?.sentiment}
|
{abbreviateNumber(optionsMode === 'openInterest' ? item?.open_interest : item?.volume)}
|
||||||
</Table.Cell>
|
</Table.Cell>
|
||||||
<Table.Cell class="md:table.-cell xl:table.-column text-sm sm:text-[1rem] {item?.put_call === 'Calls' ? 'text-[#00FC50]' : 'text-[#FC2120]'}">
|
<Table.Cell class="text-right md:table.-cell xl:table.-column text-sm sm:text-[1rem] {item?.put_call === 'Calls' ? 'text-[#00FC50]' : 'text-[#FC2120]'}">
|
||||||
{item?.put_call}
|
{item?.put_call}
|
||||||
</Table.Cell>
|
</Table.Cell>
|
||||||
|
|
||||||
@ -367,7 +386,7 @@ onMount( async() => {
|
|||||||
</Card.Content>
|
</Card.Content>
|
||||||
</Card.Root>
|
</Card.Root>
|
||||||
|
|
||||||
<Card.Root class="overflow-x-scroll overflow-hidden overflow-y-scroll no-scrollbar sm:max-h-[400px]">
|
<Card.Root class="overflow-x-scroll overflow-hidden overflow-y-scroll no-scrollbar sm:max-h-[470px]">
|
||||||
<Card.Header class="flex flex-row items-center">
|
<Card.Header class="flex flex-row items-center">
|
||||||
<div class="flex flex-col items-start w-full">
|
<div class="flex flex-col items-start w-full">
|
||||||
<div class="flex flex-row w-full items-center">
|
<div class="flex flex-row w-full items-center">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user