From c70de1e8810570cb2326e48d63825da47d538cd9 Mon Sep 17 00:00:00 2001 From: igorrCarvalho Date: Wed, 13 Sep 2023 17:23:35 -0300 Subject: [PATCH] Refactor: Minimize only works with 1 handle node and change minimized node UI --- .../components/parameterComponent/index.tsx | 12 ++--- .../src/CustomNodes/GenericNode/index.tsx | 52 +++++++++++++++---- .../components/nodeToolbarComponent/index.tsx | 17 ++++-- src/frontend/src/types/components/index.ts | 1 + 4 files changed, 61 insertions(+), 21 deletions(-) diff --git a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx index 6aeae577d..f4608a8a5 100644 --- a/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx +++ b/src/frontend/src/CustomNodes/GenericNode/components/parameterComponent/index.tsx @@ -32,7 +32,7 @@ import { } from "../../../../utils/styleUtils"; import { classNames, groupByFamily } from "../../../../utils/utils"; -export default function ParameterComponent({ +export default function ParameterComponent({ left, id, data, @@ -181,11 +181,6 @@ export default function ParameterComponent({ return ( !showNode ? ( -
- { left && (type === "str" || type === "bool" || @@ -211,7 +206,7 @@ export default function ParameterComponent({ isValidConnection(connection, reactFlowInstance!) } className={classNames( - left ? "-ml-0.5 " : "-mr-0.5 ", + left ? "-ml-0.5 my-12 " : " -mr-0.4 my-12 ", "h-3 w-3 rounded-full border-2 bg-background" )} style={{ @@ -220,8 +215,7 @@ export default function ParameterComponent({ }} > - )} - + ) ) : (
(null); const [showNode, setShowNode] = useState(true); + const [handles, setHandles] = useState([]); + let numberOfInputs: boolean[] = []; + + function countHandles(): void { + numberOfInputs = Object.keys(data.node!.template) + .filter((templateField) => templateField.charAt(0) !== "_").map((templateCamp) => { + if (!data.node?.template[templateCamp].show) return false + switch (data.node?.template[templateCamp].type) { + case "str": + return false; + case "bool": + return false; + case "float": + return false; + case "code": + return false; + case "prompt": + return false; + case "file": + return false; + case "int": + return false; + default: + return true + } + }) + setHandles(numberOfInputs) + }; + + useEffect(() => { + countHandles(); + }, []) + // State for outline color const { sseData, isBuilding } = useSSE(); useEffect(() => { @@ -51,7 +84,9 @@ export default function GenericNode({ }, }); updateFlow(flow); + console.log(myFlow) } + countHandles(); }, [data]); // New useEffect to watch for changes in sseData and update validation status @@ -73,27 +108,28 @@ export default function GenericNode({ setData={setData} deleteNode={deleteNode} setShowNode={setShowNode} + numberOfHandles={handles} >
- {data.node?.beta && ( + {data.node?.beta && showNode && (
BETA
)}
-
-
+
+
{showNode && ( @@ -112,8 +148,7 @@ export default function GenericNode({ {Object.keys(data.node!.template) .filter((templateField) => templateField.charAt(0) !== "_") .map((templateField: string, idx) => ( -
- {data.node!.template[templateField].show && + data.node!.template[templateField].show && !data.node!.template[templateField].advanced && ( - )} -
))} + )))} { + if (bool) countHandles += 1; + }); + if (countHandles > 1) return false; + return true; + } + const { paste } = useContext(TabsContext); const reactFlowInstance = useReactFlow(); return ( @@ -119,11 +129,12 @@ export default function NodeToolbarComponent({
- +