diff --git a/Data/Server/WebUI/src/nodes/General Purpose/Node_Logical_Operators.jsx b/Data/Server/WebUI/src/nodes/General Purpose/Node_Logical_Operators.jsx index 018de9b..55542d4 100644 --- a/Data/Server/WebUI/src/nodes/General Purpose/Node_Logical_Operators.jsx +++ b/Data/Server/WebUI/src/nodes/General Purpose/Node_Logical_Operators.jsx @@ -20,7 +20,10 @@ const ComparisonNode = ({ id, data }) => { const runNodeLogic = () => { let inputType = data?.inputType || "Number"; let operator = data?.operator || "Equal (==)"; + let rangeStart = data?.rangeStart; + let rangeEnd = data?.rangeEnd; + // String mode disables all but equality ops if (inputType === "String" && !["Equal (==)", "Not Equal (!=)"].includes(operator)) { operator = "Equal (==)"; setNodes(nds => @@ -44,16 +47,33 @@ const ComparisonNode = ({ id, data }) => { const a = extractValues(edgeInputsA); const b = extractValues(edgeInputsB); - const resultMap = { - "Equal (==)": a === b, - "Not Equal (!=)": a !== b, - "Greater Than (>)": a > b, - "Less Than (<)": a < b, - "Greater Than or Equal (>=)": a >= b, - "Less Than or Equal (<=)": a <= b - }; - - const result = resultMap[operator] ? "1" : "0"; + let result = "0"; + if (operator === "Within Range") { + // Only valid for Number mode + const aNum = parseFloat(a); + const startNum = parseFloat(rangeStart); + const endNum = parseFloat(rangeEnd); + if ( + !isNaN(aNum) && + !isNaN(startNum) && + !isNaN(endNum) && + startNum <= endNum + ) { + result = (aNum >= startNum && aNum <= endNum) ? "1" : "0"; + } else { + result = "0"; + } + } else { + const resultMap = { + "Equal (==)": a === b, + "Not Equal (!=)": a !== b, + "Greater Than (>)": a > b, + "Less Than (<)": a < b, + "Greater Than or Equal (>=)": a >= b, + "Less Than or Equal (<=)": a <= b + }; + result = resultMap[operator] ? "1" : "0"; + } valueRef.current = result; setRenderValue(result); @@ -81,7 +101,7 @@ const ComparisonNode = ({ id, data }) => { clearInterval(intervalId); clearInterval(monitor); }; - }, [id, edges, data?.inputType, data?.operator, setNodes]); + }, [id, edges, data?.inputType, data?.operator, data?.rangeStart, data?.rangeEnd, setNodes]); return (