From 64aecddecac9caf16e55820454bb696925e42330 Mon Sep 17 00:00:00 2001 From: anovazzi1 Date: Tue, 13 Aug 2024 14:37:33 -0300 Subject: [PATCH] refactor: add components for node name, description, and status (#3248) * remove repeated code * refactor: remove useless code * feat: sort input parameters in GenericNode renderInputParameter * refactor: remove unused code in GenericNode component * refactor: add NodeName component for displaying and editing node names * refactor: add NodeDescription component for displaying and editing node descriptions * fix import and add autofocus on nodeName * feat: add NodeStatus component for displaying and managing node status * [autofix.ci] apply automated fixes * refactor: remove unused code in GenericNode component * fix bugs on minimize * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> --- .../components/NodeDescription/index.tsx | 100 ++++ .../GenericNode/components/NodeName/index.tsx | 78 +++ .../components/NodeStatus/index.tsx | 190 ++++++ .../src/CustomNodes/GenericNode/index.tsx | 550 +++--------------- src/frontend/src/utils/reactflowUtils.ts | 2 +- 5 files changed, 457 insertions(+), 463 deletions(-) create mode 100644 src/frontend/src/CustomNodes/GenericNode/components/NodeDescription/index.tsx create mode 100644 src/frontend/src/CustomNodes/GenericNode/components/NodeName/index.tsx create mode 100644 src/frontend/src/CustomNodes/GenericNode/components/NodeStatus/index.tsx diff --git a/src/frontend/src/CustomNodes/GenericNode/components/NodeDescription/index.tsx b/src/frontend/src/CustomNodes/GenericNode/components/NodeDescription/index.tsx new file mode 100644 index 000000000..81d334b19 --- /dev/null +++ b/src/frontend/src/CustomNodes/GenericNode/components/NodeDescription/index.tsx @@ -0,0 +1,100 @@ +import { Textarea } from "@/components/ui/textarea"; +import useFlowsManagerStore from "@/stores/flowsManagerStore"; +import useFlowStore from "@/stores/flowStore"; +import { handleKeyDown } from "@/utils/reactflowUtils"; +import { cn } from "@/utils/utils"; +import { useEffect, useState } from "react"; +import Markdown from "react-markdown"; + +export default function NodeDescription({ + description, + selected, + nodeId, +}: { + description?: string; + selected: boolean; + nodeId: string; +}) { + const [inputDescription, setInputDescription] = useState(false); + const [nodeDescription, setNodeDescription] = useState(description); + const takeSnapshot = useFlowsManagerStore((state) => state.takeSnapshot); + const setNode = useFlowStore((state) => state.setNode); + + useEffect(() => { + if (!selected) { + setInputDescription(false); + } + }, [selected]); + + useEffect(() => { + setNodeDescription(description); + }, [description]); + + return ( +
+ {inputDescription ? ( +