bugfixing

This commit is contained in:
MuslemRahimi 2024-12-09 13:55:17 +01:00
parent 703d30b6ab
commit 671dcb3258
2 changed files with 27 additions and 17 deletions

View File

@ -330,7 +330,7 @@
return parseValue(a) - parseValue(b); return parseValue(a) - parseValue(b);
} }
async function handleChangeValue(value) { async function handleChangeValue(value, { shouldSort = true } = {}) {
// Toggle checkedItems logic // Toggle checkedItems logic
if (checkedItems.has(value)) { if (checkedItems.has(value)) {
checkedItems.delete(value); checkedItems.delete(value);
@ -358,8 +358,11 @@
const index = valueMappings[ruleName].indexOf(value); const index = valueMappings[ruleName].indexOf(value);
if (index === -1) { if (index === -1) {
valueMappings[ruleName].push(value); valueMappings[ruleName].push(value);
// Sort the array when a new value is added
// Sort the array when a new value is added, respecting shouldSort parameter
if (shouldSort) {
valueMappings[ruleName] = valueMappings[ruleName].sort(customSort); valueMappings[ruleName] = valueMappings[ruleName].sort(customSort);
}
} else { } else {
valueMappings[ruleName].splice(index, 1); valueMappings[ruleName].splice(index, 1);
} }
@ -371,8 +374,8 @@
} else if (ruleName in valueMappings) { } else if (ruleName in valueMappings) {
// For rules that require sorting (like range or numeric values) // For rules that require sorting (like range or numeric values)
if (ruleCondition[ruleName] === "between" && Array.isArray(value)) { if (ruleCondition[ruleName] === "between" && Array.isArray(value)) {
// Sort the array for between conditions // Sort the array for between conditions, respecting shouldSort parameter
valueMappings[ruleName] = value.sort(customSort); valueMappings[ruleName] = shouldSort ? value.sort(customSort) : value;
} else { } else {
// Handle non-specific rules as single values // Handle non-specific rules as single values
valueMappings[ruleName] = value; valueMappings[ruleName] = value;
@ -417,7 +420,7 @@
if (ruleCondition[ruleName] === "between") { if (ruleCondition[ruleName] === "between") {
const currentValues = valueMappings[ruleName] || ["", ""]; const currentValues = valueMappings[ruleName] || ["", ""];
currentValues[index] = newValue; currentValues[index] = newValue;
await handleChangeValue(currentValues); await handleChangeValue(currentValues, { shouldSort: false });
} else { } else {
await handleChangeValue(newValue); await handleChangeValue(newValue);
} }

View File

@ -1920,12 +1920,14 @@ const handleKeyDown = (event) => {
return parseValue(a) - parseValue(b); return parseValue(a) - parseValue(b);
} }
// Main function async function handleChangeValue(value, { shouldSort = true } = {}) {
async function handleChangeValue(value) {
if (checkedItems.has(ruleName)) { if (checkedItems.has(ruleName)) {
const itemsSet = checkedItems.get(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) const valueKey = Array.isArray(sortedValue)
? sortedValue.join("-") ? sortedValue.join("-")
: sortedValue; : sortedValue;
@ -1936,10 +1938,14 @@ const handleKeyDown = (event) => {
itemsSet?.add(valueKey); itemsSet?.add(valueKey);
} }
} else { } 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) const valueKey = Array.isArray(sortedValue)
? sortedValue.join("-") ? sortedValue.join("-")
: sortedValue; : sortedValue;
checkedItems?.set(ruleName, new Set([valueKey])); checkedItems?.set(ruleName, new Set([valueKey]));
} }
@ -1963,19 +1969,19 @@ const handleKeyDown = (event) => {
]?.includes(ruleName) ]?.includes(ruleName)
) { ) {
searchQuery = ""; searchQuery = "";
if (!Array.isArray(valueMappings[ruleName])) { if (!Array.isArray(valueMappings[ruleName])) {
valueMappings[ruleName] = []; valueMappings[ruleName] = [];
} }
const sortedValue = Array?.isArray(value) // Apply sorting only if shouldSort is true
? value?.sort(customSort) const sortedValue =
: value; shouldSort && Array?.isArray(value) ? value?.sort(customSort) : value;
const valueKey = Array?.isArray(sortedValue) const valueKey = Array?.isArray(sortedValue)
? sortedValue.join("-") ? sortedValue.join("-")
: sortedValue; : sortedValue;
const index = valueMappings[ruleName].indexOf(valueKey);
const index = valueMappings[ruleName].indexOf(valueKey);
if (index === -1) { if (index === -1) {
valueMappings[ruleName].push(valueKey); valueMappings[ruleName].push(valueKey);
} else { } else {
@ -1989,7 +1995,8 @@ const handleKeyDown = (event) => {
await updateStockScreenerData(); await updateStockScreenerData();
} else if (ruleName in valueMappings) { } else if (ruleName in valueMappings) {
if (ruleCondition[ruleName] === "between" && Array?.isArray(value)) { 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 { } else {
valueMappings[ruleName] = value; valueMappings[ruleName] = value;
} }
@ -2021,7 +2028,7 @@ const handleKeyDown = (event) => {
if (ruleCondition[ruleName] === "between") { if (ruleCondition[ruleName] === "between") {
const currentValues = valueMappings[ruleName] || ["", ""]; const currentValues = valueMappings[ruleName] || ["", ""];
currentValues[index] = newValue; currentValues[index] = newValue;
await handleChangeValue(currentValues); await handleChangeValue(currentValues, { shouldSort: false });
} else { } else {
await handleChangeValue(newValue); await handleChangeValue(newValue);
} }