add more rules
This commit is contained in:
parent
bfa13794c4
commit
fbd2bd152f
@ -29,7 +29,8 @@ const allRules = {
|
|||||||
sentiment: { label: 'Sentiment', step: ["Bullish","Neutral", "Bearish"], defaultValue: 'any' },
|
sentiment: { label: 'Sentiment', step: ["Bullish","Neutral", "Bearish"], defaultValue: 'any' },
|
||||||
execution_estimate: { label: 'Execution', step: ["At Ask","At Bid", "Below Ask", "Below Bid"], defaultValue: 'any' },
|
execution_estimate: { label: 'Execution', step: ["At Ask","At Bid", "Below Ask", "Below Bid"], defaultValue: 'any' },
|
||||||
option_activity_type: { label: 'Option Type', step: ["Sweep","Trade"], defaultValue: 'any' },
|
option_activity_type: { label: 'Option Type', step: ["Sweep","Trade"], defaultValue: 'any' },
|
||||||
date_expiration: { label: 'Date Expiration', step: ["Today", "1 day","1 Week","2 Weeks","1 Month","3 Months","6 Months","1 Year","3 Years"], defaultValue: 'any' },
|
date_expiration: { label: 'Date Expiration', step: ["Same Day", "1 day","1 Week","2 Weeks","1 Month","3 Months","6 Months","1 Year","3 Years"], defaultValue: 'any' },
|
||||||
|
underlying_type: { label: 'Asset Type', step: ["Stock", "ETF"], defaultValue: 'any' },
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -115,6 +116,7 @@ function handleAddRule() {
|
|||||||
case "execution_estimate":
|
case "execution_estimate":
|
||||||
case "option_activity_type":
|
case "option_activity_type":
|
||||||
case "date_expiration":
|
case "date_expiration":
|
||||||
|
case "underlying_type":
|
||||||
newRule = { name: ruleName, value: Array.isArray(valueMappings[ruleName]) ? valueMappings[ruleName] : [valueMappings[ruleName]] }; // Ensure value is an array
|
newRule = { name: ruleName, value: Array.isArray(valueMappings[ruleName]) ? valueMappings[ruleName] : [valueMappings[ruleName]] }; // Ensure value is an array
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -188,7 +190,7 @@ async function handleChangeValue(value) {
|
|||||||
} else {
|
} else {
|
||||||
checkedItems.add(value);
|
checkedItems.add(value);
|
||||||
}
|
}
|
||||||
if (["put_call","sentiment","execution_estimate","option_activity_type","date_expiration"]?.includes(ruleName)) {
|
if (["put_call","sentiment","execution_estimate","option_activity_type","date_expiration","underlying_type"]?.includes(ruleName)) {
|
||||||
// Ensure valueMappings[ruleName] is initialized as an array
|
// Ensure valueMappings[ruleName] is initialized as an array
|
||||||
if (!Array.isArray(valueMappings[ruleName])) {
|
if (!Array.isArray(valueMappings[ruleName])) {
|
||||||
valueMappings[ruleName] = []; // Initialize as an empty array if not already
|
valueMappings[ruleName] = []; // Initialize as an empty array if not already
|
||||||
@ -372,7 +374,6 @@ function handleViewData(optionData) {
|
|||||||
|
|
||||||
if(ruleOfList?.length !== 0 || filterQuery?.length !== 0) {
|
if(ruleOfList?.length !== 0 || filterQuery?.length !== 0) {
|
||||||
shouldLoadWorker.set(true)
|
shouldLoadWorker.set(true)
|
||||||
console.log('yes')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (previousCallVolume !== displayCallVolume && !muted) {
|
if (previousCallVolume !== displayCallVolume && !muted) {
|
||||||
@ -774,7 +775,7 @@ const debouncedHandleInput = debounce(handleInput, 300);
|
|||||||
</Button>
|
</Button>
|
||||||
</DropdownMenu.Trigger>
|
</DropdownMenu.Trigger>
|
||||||
<DropdownMenu.Content class="w-56 h-fit max-h-72 overflow-y-auto scroller">
|
<DropdownMenu.Content class="w-56 h-fit max-h-72 overflow-y-auto scroller">
|
||||||
{#if !['put_call',"sentiment", "execution_estimate","option_activity_type","date_expiration"]?.includes(row?.rule)}
|
{#if !['put_call',"sentiment", "execution_estimate","option_activity_type","date_expiration","underlying_type"]?.includes(row?.rule)}
|
||||||
<DropdownMenu.Label class="absolute mt-2 h-11 border-gray-800 border-b -top-1 z-20 fixed sticky bg-[#09090B]">
|
<DropdownMenu.Label class="absolute mt-2 h-11 border-gray-800 border-b -top-1 z-20 fixed sticky bg-[#09090B]">
|
||||||
<div class="flex items-center justify-start gap-x-1">
|
<div class="flex items-center justify-start gap-x-1">
|
||||||
<div class="relative inline-block flex flex-row items-center justify-center">
|
<div class="relative inline-block flex flex-row items-center justify-center">
|
||||||
@ -798,7 +799,7 @@ const debouncedHandleInput = debounce(handleInput, 300);
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
<DropdownMenu.Group class="min-h-10 mt-2">
|
<DropdownMenu.Group class="min-h-10 mt-2">
|
||||||
{#if !['put_call',"sentiment", "execution_estimate","option_activity_type","date_expiration"]?.includes(row?.rule)}
|
{#if !['put_call',"sentiment", "execution_estimate","option_activity_type","date_expiration","underlying_type"]?.includes(row?.rule)}
|
||||||
{#each row?.step as newValue}
|
{#each row?.step as newValue}
|
||||||
<DropdownMenu.Item class="sm:hover:bg-[#27272A]">
|
<DropdownMenu.Item class="sm:hover:bg-[#27272A]">
|
||||||
|
|
||||||
@ -807,7 +808,7 @@ const debouncedHandleInput = debounce(handleInput, 300);
|
|||||||
</button>
|
</button>
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
{/each}
|
{/each}
|
||||||
{:else if ['put_call',"sentiment", "execution_estimate","option_activity_type","date_expiration"]?.includes(row?.rule)}
|
{:else if ['put_call',"sentiment", "execution_estimate","option_activity_type","date_expiration","underlying_type"]?.includes(row?.rule)}
|
||||||
{#each row?.step as item}
|
{#each row?.step as item}
|
||||||
<DropdownMenu.Item class="sm:hover:bg-[#27272A]">
|
<DropdownMenu.Item class="sm:hover:bg-[#27272A]">
|
||||||
<div class="flex items-center" on:click|capture={(event) => event.preventDefault()}>
|
<div class="flex items-center" on:click|capture={(event) => event.preventDefault()}>
|
||||||
@ -1062,7 +1063,7 @@ const debouncedHandleInput = debounce(handleInput, 300);
|
|||||||
{formatTime(displayedData[index]?.time)}
|
{formatTime(displayedData[index]?.time)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div on:click|stopPropagation={() => assetSelector(displayedData[index]?.ticker, displayedData[index]?.assetType)} style="justify-content: center;" class="td text-sm sm:hover:text-white sm:text-[1rem] text-blue-400 font-normal">
|
<div on:click|stopPropagation={() => assetSelector(displayedData[index]?.ticker, displayedData[index]?.underlying_type)} style="justify-content: center;" class="td text-sm sm:hover:text-white sm:text-[1rem] text-blue-400 font-normal">
|
||||||
{displayedData[index]?.ticker}
|
{displayedData[index]?.ticker}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -1151,7 +1152,7 @@ const debouncedHandleInput = debounce(handleInput, 300);
|
|||||||
|
|
||||||
|
|
||||||
<dialog id="ruleModal" class="modal modal-bottom sm:modal-middle cursor-pointer ">
|
<dialog id="ruleModal" class="modal modal-bottom sm:modal-middle cursor-pointer ">
|
||||||
<div class="modal-box w-full bg-[#141417] sm:bg-[#09090B] border-t sm:border border-gray-600 h-auto">
|
<div class="modal-box w-full bg-[#141417] sm:bg-[#09090B] border-t sm:border border-gray-800 h-auto">
|
||||||
<form method="dialog" class="modal-backdrop backdrop-blur-[4px]">
|
<form method="dialog" class="modal-backdrop backdrop-blur-[4px]">
|
||||||
<button class="cursor-pointer absolute right-0 top-0 text-[1.8rem] text-white">
|
<button class="cursor-pointer absolute right-0 top-0 text-[1.8rem] text-white">
|
||||||
<svg class="w-8 h-8" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="white" d="m6.4 18.308l-.708-.708l5.6-5.6l-5.6-5.6l.708-.708l5.6 5.6l5.6-5.6l.708.708l-5.6 5.6l5.6 5.6l-.708.708l-5.6-5.6z"/>
|
<svg class="w-8 h-8" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="white" d="m6.4 18.308l-.708-.708l5.6-5.6l-5.6-5.6l.708-.708l5.6 5.6l5.6-5.6l.708.708l-5.6 5.6l5.6 5.6l-.708.708l-5.6-5.6z"/>
|
||||||
|
|||||||
@ -23,6 +23,8 @@ function convertUnitToValue(
|
|||||||
"below ask",
|
"below ask",
|
||||||
"sweep",
|
"sweep",
|
||||||
"trade",
|
"trade",
|
||||||
|
"stock",
|
||||||
|
"etf",
|
||||||
...[
|
...[
|
||||||
"1 day",
|
"1 day",
|
||||||
"1 Week",
|
"1 Week",
|
||||||
@ -78,7 +80,7 @@ function isDateWithinRange(dateString: string, range: string): boolean {
|
|||||||
const daysDiff = timeDiff / (1000 * 60 * 60 * 24);
|
const daysDiff = timeDiff / (1000 * 60 * 60 * 24);
|
||||||
|
|
||||||
switch (range.toLowerCase()) {
|
switch (range.toLowerCase()) {
|
||||||
case "today":
|
case "same day":
|
||||||
// Check if the current date and expiration date are the same
|
// Check if the current date and expiration date are the same
|
||||||
return isSameDay(now, expirationDate);
|
return isSameDay(now, expirationDate);
|
||||||
case "1 day":
|
case "1 day":
|
||||||
@ -126,17 +128,31 @@ async function filterRawData(rawData, ruleOfList, filterQuery) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Handle categorical data like analyst ratings, sector, country
|
// Handle categorical data like analyst ratings, sector, country
|
||||||
if (
|
else if (
|
||||||
[
|
[
|
||||||
"put_call",
|
"put_call",
|
||||||
"sentiment",
|
"sentiment",
|
||||||
"execution_estimate",
|
"execution_estimate",
|
||||||
"option_activity_type",
|
"option_activity_type",
|
||||||
|
"underlying_type",
|
||||||
].includes(ruleName)
|
].includes(ruleName)
|
||||||
) {
|
) {
|
||||||
if (isAny(ruleValue)) return true;
|
if (isAny(ruleValue)) return true;
|
||||||
if (Array.isArray(ruleValue)) return ruleValue.includes(itemValue);
|
|
||||||
return itemValue === ruleValue;
|
// Ensure itemValue is not null/undefined and is a string
|
||||||
|
if (itemValue === null || itemValue === undefined) return false;
|
||||||
|
|
||||||
|
const lowerItemValue = itemValue.toString().toLowerCase();
|
||||||
|
|
||||||
|
if (Array.isArray(ruleValue)) {
|
||||||
|
// Make sure ruleValue items are also treated case-insensitively
|
||||||
|
return ruleValue.some(
|
||||||
|
(value) => lowerItemValue === value.toLowerCase()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compare case-insensitively
|
||||||
|
return lowerItemValue === ruleValue.toString().toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default numeric or string comparison
|
// Default numeric or string comparison
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user