update screener page
This commit is contained in:
parent
9589d7262c
commit
180856bd8c
@ -22,10 +22,10 @@
|
|||||||
let searchQuery = '';
|
let searchQuery = '';
|
||||||
$: testList = [];
|
$: testList = [];
|
||||||
|
|
||||||
let ruleOfList = data?.getStrategy?.rules ?? [];
|
|
||||||
|
|
||||||
let strategyList = data?.getAllStrategies;
|
let strategyList = data?.getAllStrategies;
|
||||||
let selectedStrategy = strategyList?.at(0)?.id ?? '';
|
let selectedStrategy = strategyList?.at(0)?.id ?? '';
|
||||||
|
let ruleOfList = strategyList?.at(0)?.rules ?? [];
|
||||||
|
|
||||||
let displayRules = [];
|
let displayRules = [];
|
||||||
let selectedPopularStrategy = '';
|
let selectedPopularStrategy = '';
|
||||||
@ -238,8 +238,19 @@ async function handleDeleteStrategy() {
|
|||||||
toast.success('Strategy deleted successfully!', {
|
toast.success('Strategy deleted successfully!', {
|
||||||
style: 'border-radius: 200px; background: #333; color: #fff;'});
|
style: 'border-radius: 200px; background: #333; color: #fff;'});
|
||||||
|
|
||||||
strategyList= strategyList?.filter(item => item?.id !== selectedStrategy);
|
strategyList= strategyList?.filter(item => item?.id !== selectedStrategy) ?? [];
|
||||||
selectedStrategy = strategyList?.at(0)?.id ?? '';
|
selectedStrategy = strategyList?.at(0)?.id ?? '';
|
||||||
|
ruleOfList = strategyList?.find(item => item.id === selectedStrategy)?.rules ?? []
|
||||||
|
ruleOfList.forEach(rule => {
|
||||||
|
ruleCondition[rule.name] = rule.condition || allRules[rule.name].defaultCondition;
|
||||||
|
valueMappings[rule.name] = rule.value || allRules[rule.name].defaultValue;
|
||||||
|
});
|
||||||
|
if(ruleOfList?.length === 0) {
|
||||||
|
filteredData = [];
|
||||||
|
displayResults = [];
|
||||||
|
}
|
||||||
|
checkedItems = new Set(ruleOfList.flatMap(rule => rule.value));
|
||||||
|
await updateStockScreenerData();
|
||||||
}
|
}
|
||||||
else if ( output === 'failure')
|
else if ( output === 'failure')
|
||||||
{
|
{
|
||||||
@ -299,8 +310,11 @@ async function createStrategy(event)
|
|||||||
const closePopup = document.getElementById("addStrategy");
|
const closePopup = document.getElementById("addStrategy");
|
||||||
closePopup?.dispatchEvent(new MouseEvent('click'))
|
closePopup?.dispatchEvent(new MouseEvent('click'))
|
||||||
selectedStrategy = output?.id;
|
selectedStrategy = output?.id;
|
||||||
ruleOfList = [];
|
if(strategyList?.length !== 0) {
|
||||||
|
ruleOfList = []
|
||||||
|
}
|
||||||
strategyList?.unshift(output);
|
strategyList?.unshift(output);
|
||||||
|
selectedPopularStrategy = '';
|
||||||
} else {
|
} else {
|
||||||
toast.error('Something went wrong. Please try again later!', {
|
toast.error('Something went wrong. Please try again later!', {
|
||||||
style: 'border-radius: 200px; background: #333; color: #fff;'});
|
style: 'border-radius: 200px; background: #333; color: #fff;'});
|
||||||
@ -310,6 +324,24 @@ async function createStrategy(event)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function switchStrategy(item) {
|
||||||
|
displayTableTab = 'general';
|
||||||
|
ruleName = '';
|
||||||
|
selectedPopularStrategy = '';
|
||||||
|
selectedStrategy = item?.id ?? ''
|
||||||
|
ruleOfList = strategyList?.find(item => item.id === selectedStrategy)?.rules ?? []
|
||||||
|
ruleOfList.forEach(rule => {
|
||||||
|
ruleCondition[rule.name] = rule.condition || allRules[rule.name].defaultCondition;
|
||||||
|
valueMappings[rule.name] = rule.value || allRules[rule.name].defaultValue;
|
||||||
|
});
|
||||||
|
if(ruleOfList?.length === 0) {
|
||||||
|
filteredData = [];
|
||||||
|
displayResults = [];
|
||||||
|
}
|
||||||
|
checkedItems = new Set(ruleOfList.flatMap(rule => rule.value));
|
||||||
|
await updateStockScreenerData();
|
||||||
|
}
|
||||||
|
|
||||||
function changeRule(state: string)
|
function changeRule(state: string)
|
||||||
{
|
{
|
||||||
searchTerm = '';
|
searchTerm = '';
|
||||||
@ -506,7 +538,9 @@ async function handleSave(printToast) {
|
|||||||
if(data?.user)
|
if(data?.user)
|
||||||
{
|
{
|
||||||
if(isSaved === false)
|
if(isSaved === false)
|
||||||
{
|
{
|
||||||
|
strategyList.find(item => item.id === selectedStrategy).rules = ruleOfList;
|
||||||
|
|
||||||
const postData = {'strategyId': selectedStrategy, 'rules': ruleOfList}
|
const postData = {'strategyId': selectedStrategy, 'rules': ruleOfList}
|
||||||
|
|
||||||
const response = await fetch(data?.fastifyURL+'/save-strategy', {
|
const response = await fetch(data?.fastifyURL+'/save-strategy', {
|
||||||
@ -898,8 +932,8 @@ function handleInput(event) {
|
|||||||
<DropdownMenu.Separator />
|
<DropdownMenu.Separator />
|
||||||
<DropdownMenu.Group>
|
<DropdownMenu.Group>
|
||||||
{#each strategyList as item}
|
{#each strategyList as item}
|
||||||
<DropdownMenu.Item on:click={() => selectedStrategy = item?.id} class="cursor-pointer sm:hover:bg-[#27272A]">
|
<DropdownMenu.Item on:click={() => switchStrategy(item)} class="{item?.id === selectedStrategy ? 'bg-[#27272A]' : ''} cursor-pointer sm:hover:bg-[#27272A]">
|
||||||
{item?.title}
|
{item?.title} ({item?.rules?.length})
|
||||||
</DropdownMenu.Item>
|
</DropdownMenu.Item>
|
||||||
{/each}
|
{/each}
|
||||||
</DropdownMenu.Group>
|
</DropdownMenu.Group>
|
||||||
@ -936,12 +970,13 @@ function handleInput(event) {
|
|||||||
</svg>
|
</svg>
|
||||||
<div>Add Filters</div>
|
<div>Add Filters</div>
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
|
{#if data?.user && selectedStrategy?.length !== 0}
|
||||||
<label for={!data?.user ? 'userLogin' : ''} on:click={() => handleSave(true)} class="sm:ml-3 cursor-pointer inline-flex items-center justify-center space-x-1 whitespace-nowrap rounded-md border border-transparent bg-blue-brand_light py-2 pl-3 pr-4 text-base font-semibold text-white shadow-sm bg-[#000] sm:hover:bg-[#09090B]/60 ease-out focus:outline-none focus:ring-2 focus:ring-blue-500 sm:text-smaller">
|
<label for={!data?.user ? 'userLogin' : ''} on:click={() => handleSave(true)} class="sm:ml-3 cursor-pointer inline-flex items-center justify-center space-x-1 whitespace-nowrap rounded-md border border-transparent bg-blue-brand_light py-2 pl-3 pr-4 text-base font-semibold text-white shadow-sm bg-[#000] sm:hover:bg-[#09090B]/60 ease-out focus:outline-none focus:ring-2 focus:ring-blue-500 sm:text-smaller">
|
||||||
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="#fff" d="M5 5v22h22V9.594l-.281-.313l-4-4L22.406 5zm2 2h3v6h12V7.437l3 3V25h-2v-9H9v9H7zm5 0h4v2h2V7h2v4h-8zm-1 11h10v7H11z"/></svg>
|
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="#fff" d="M5 5v22h22V9.594l-.281-.313l-4-4L22.406 5zm2 2h3v6h12V7.437l3 3V25h-2v-9H9v9H7zm5 0h4v2h2V7h2v4h-8zm-1 11h10v7H11z"/></svg>
|
||||||
<div>Save</div>
|
<div>Save</div>
|
||||||
</label>
|
</label>
|
||||||
{#if data?.user && selectedStrategy?.length !== 0}
|
|
||||||
<label for="deleteStrategy" class="sm:ml-3 cursor-pointer inline-flex items-center justify-center space-x-1 whitespace-nowrap rounded-md border border-transparent bg-blue-brand_light py-2 pl-3 pr-4 text-base font-semibold text-white shadow-sm bg-[#000] sm:hover:bg-[#09090B]/60 ease-out sm:hover:text-red-500 focus:outline-none focus:ring-2 focus:ring-blue-500 sm:text-smaller">
|
<label for="deleteStrategy" class="sm:ml-3 cursor-pointer inline-flex items-center justify-center space-x-1 whitespace-nowrap rounded-md border border-transparent bg-blue-brand_light py-2 pl-3 pr-4 text-base font-semibold text-white shadow-sm bg-[#000] sm:hover:bg-[#09090B]/60 ease-out sm:hover:text-red-500 focus:outline-none focus:ring-2 focus:ring-blue-500 sm:text-smaller">
|
||||||
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><path fill="currentColor" d="M360 184h-8c4.4 0 8-3.6 8-8zh304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32M731.3 840H292.7l-24.2-512h487z"/></svg>
|
<svg class="h-5 w-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><path fill="currentColor" d="M360 184h-8c4.4 0 8-3.6 8-8zh304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32M731.3 840H292.7l-24.2-512h487z"/></svg>
|
||||||
<div>Delete</div>
|
<div>Delete</div>
|
||||||
|
|||||||
@ -16,13 +16,9 @@ const ensureAllEmaParameters = (params) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const load = async ({ parent, params }) => {
|
export const load = async ({ parent }) => {
|
||||||
const { apiURL, apiKey, fastifyURL, user } = await parent();
|
const { apiURL, apiKey, fastifyURL, user } = await parent();
|
||||||
|
|
||||||
const getStrategyId = async () => {
|
|
||||||
return params.strategyId;
|
|
||||||
};
|
|
||||||
|
|
||||||
const getAllStrategies = async () => {
|
const getAllStrategies = async () => {
|
||||||
const postData = { userId: user?.id };
|
const postData = { userId: user?.id };
|
||||||
const response = await fetch(fastifyURL + "/all-strategies", {
|
const response = await fetch(fastifyURL + "/all-strategies", {
|
||||||
@ -42,29 +38,11 @@ export const load = async ({ parent, params }) => {
|
|||||||
return output;
|
return output;
|
||||||
};
|
};
|
||||||
|
|
||||||
const getStrategy = async (strategyId) => {
|
|
||||||
let output;
|
|
||||||
|
|
||||||
// make the POST request to the endpoint
|
|
||||||
const postData = { strategyId: strategyId };
|
|
||||||
const response = await fetch(fastifyURL + "/get-strategy", {
|
|
||||||
method: "POST",
|
|
||||||
headers: {
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
},
|
|
||||||
body: JSON.stringify(postData),
|
|
||||||
});
|
|
||||||
|
|
||||||
output = (await response.json())?.items;
|
|
||||||
|
|
||||||
return output;
|
|
||||||
};
|
|
||||||
|
|
||||||
const getStockScreenerData = async () => {
|
const getStockScreenerData = async () => {
|
||||||
let output;
|
let output;
|
||||||
const strategyList = await getAllStrategies();
|
const strategyList = await getAllStrategies();
|
||||||
|
|
||||||
const strategy = await getStrategy(strategyList?.at(0)?.id);
|
const strategy = strategyList?.at(0);
|
||||||
let getRuleOfList = strategy?.rules?.map((item) => item?.name) || [];
|
let getRuleOfList = strategy?.rules?.map((item) => item?.name) || [];
|
||||||
|
|
||||||
// Ensure all required EMA parameters are included
|
// Ensure all required EMA parameters are included
|
||||||
@ -100,8 +78,6 @@ export const load = async ({ parent, params }) => {
|
|||||||
// Make sure to return a promise
|
// Make sure to return a promise
|
||||||
return {
|
return {
|
||||||
getStockScreenerData: await getStockScreenerData(),
|
getStockScreenerData: await getStockScreenerData(),
|
||||||
getStrategy: await getStrategy(),
|
|
||||||
getStrategyId: await getStrategyId(),
|
|
||||||
getAllStrategies: await getAllStrategies(),
|
getAllStrategies: await getAllStrategies(),
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user