From 671dcb3258efa0b92e474d24397ad5749290c96a Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Mon, 9 Dec 2024 13:55:17 +0100 Subject: [PATCH] bugfixing --- src/routes/options-flow/+page.svelte | 15 +++++++------ src/routes/stock-screener/+page.svelte | 29 ++++++++++++++++---------- 2 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/routes/options-flow/+page.svelte b/src/routes/options-flow/+page.svelte index 26102ffa..1264fc94 100644 --- a/src/routes/options-flow/+page.svelte +++ b/src/routes/options-flow/+page.svelte @@ -330,7 +330,7 @@ return parseValue(a) - parseValue(b); } - async function handleChangeValue(value) { + async function handleChangeValue(value, { shouldSort = true } = {}) { // Toggle checkedItems logic if (checkedItems.has(value)) { checkedItems.delete(value); @@ -358,8 +358,11 @@ const index = valueMappings[ruleName].indexOf(value); if (index === -1) { valueMappings[ruleName].push(value); - // Sort the array when a new value is added - valueMappings[ruleName] = valueMappings[ruleName].sort(customSort); + + // Sort the array when a new value is added, respecting shouldSort parameter + if (shouldSort) { + valueMappings[ruleName] = valueMappings[ruleName].sort(customSort); + } } else { valueMappings[ruleName].splice(index, 1); } @@ -371,8 +374,8 @@ } else if (ruleName in valueMappings) { // For rules that require sorting (like range or numeric values) if (ruleCondition[ruleName] === "between" && Array.isArray(value)) { - // Sort the array for between conditions - valueMappings[ruleName] = value.sort(customSort); + // Sort the array for between conditions, respecting shouldSort parameter + valueMappings[ruleName] = shouldSort ? value.sort(customSort) : value; } else { // Handle non-specific rules as single values valueMappings[ruleName] = value; @@ -417,7 +420,7 @@ if (ruleCondition[ruleName] === "between") { const currentValues = valueMappings[ruleName] || ["", ""]; currentValues[index] = newValue; - await handleChangeValue(currentValues); + await handleChangeValue(currentValues, { shouldSort: false }); } else { await handleChangeValue(newValue); } diff --git a/src/routes/stock-screener/+page.svelte b/src/routes/stock-screener/+page.svelte index 06215767..aa57c246 100644 --- a/src/routes/stock-screener/+page.svelte +++ b/src/routes/stock-screener/+page.svelte @@ -1920,12 +1920,14 @@ const handleKeyDown = (event) => { return parseValue(a) - parseValue(b); } - // Main function - async function handleChangeValue(value) { + async function handleChangeValue(value, { shouldSort = true } = {}) { if (checkedItems.has(ruleName)) { const itemsSet = checkedItems.get(ruleName); - const sortedValue = Array.isArray(value) ? value.sort(customSort) : value; + // Apply sorting only if shouldSort is true + const sortedValue = + shouldSort && Array.isArray(value) ? value.sort(customSort) : value; + const valueKey = Array.isArray(sortedValue) ? sortedValue.join("-") : sortedValue; @@ -1936,10 +1938,14 @@ const handleKeyDown = (event) => { itemsSet?.add(valueKey); } } else { - const sortedValue = Array.isArray(value) ? value.sort(customSort) : value; + // Apply sorting only if shouldSort is true + const sortedValue = + shouldSort && Array.isArray(value) ? value.sort(customSort) : value; + const valueKey = Array.isArray(sortedValue) ? sortedValue.join("-") : sortedValue; + checkedItems?.set(ruleName, new Set([valueKey])); } @@ -1963,19 +1969,19 @@ const handleKeyDown = (event) => { ]?.includes(ruleName) ) { searchQuery = ""; - if (!Array.isArray(valueMappings[ruleName])) { valueMappings[ruleName] = []; } - const sortedValue = Array?.isArray(value) - ? value?.sort(customSort) - : value; + // Apply sorting only if shouldSort is true + const sortedValue = + shouldSort && Array?.isArray(value) ? value?.sort(customSort) : value; + const valueKey = Array?.isArray(sortedValue) ? sortedValue.join("-") : sortedValue; - const index = valueMappings[ruleName].indexOf(valueKey); + const index = valueMappings[ruleName].indexOf(valueKey); if (index === -1) { valueMappings[ruleName].push(valueKey); } else { @@ -1989,7 +1995,8 @@ const handleKeyDown = (event) => { await updateStockScreenerData(); } else if (ruleName in valueMappings) { if (ruleCondition[ruleName] === "between" && Array?.isArray(value)) { - valueMappings[ruleName] = value?.sort(customSort); + // Apply sorting only if shouldSort is true + valueMappings[ruleName] = shouldSort ? value?.sort(customSort) : value; } else { valueMappings[ruleName] = value; } @@ -2021,7 +2028,7 @@ const handleKeyDown = (event) => { if (ruleCondition[ruleName] === "between") { const currentValues = valueMappings[ruleName] || ["", ""]; currentValues[index] = newValue; - await handleChangeValue(currentValues); + await handleChangeValue(currentValues, { shouldSort: false }); } else { await handleChangeValue(newValue); }