diff --git a/Data/WebUI/src/App.jsx b/Data/WebUI/src/App.jsx index 5ee2ecd..4fa1dbd 100644 --- a/Data/WebUI/src/App.jsx +++ b/Data/WebUI/src/App.jsx @@ -21,6 +21,8 @@ import { Divider } from "@mui/material"; +import DragIndicatorIcon from "@mui/icons-material/DragIndicator"; +import Tooltip from "@mui/material/Tooltip"; import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; @@ -52,8 +54,7 @@ nodeContext.keys().forEach((path) => { if (!categorizedNodes[category]) { categorizedNodes[category] = []; } - categorizedNodes[category].push({ type, label }); - + categorizedNodes[category].push(mod.default); // includes type, label, component, defaultContent nodeTypes[type] = component; }); @@ -85,7 +86,7 @@ function FlowEditor({ nodes, edges, setNodes, setEdges, nodeTypes }) { position, data: { label: nodeMeta?.label || type, - content: nodeMeta?.label || "Node" + content: nodeMeta?.defaultContent } }; @@ -286,7 +287,7 @@ export default function App() { } sx={accordionHeaderStyle}> Workflows - + @@ -299,16 +300,17 @@ export default function App() { {Object.entries(categorizedNodes).map(([category, items]) => ( - + {items.map(({ type, label }) => ( - + + + ))} ))} @@ -400,7 +404,11 @@ const sidebarBtnStyle = { backgroundColor: "#232323", justifyContent: "flex-start", pl: 2, - fontSize: "0.9rem" + fontSize: "0.9rem", + textTransform: "none", + "&:hover": { + backgroundColor: "#2a2a2a" + } }; const accordionHeaderStyle = { diff --git a/Data/WebUI/src/Borealis.css b/Data/WebUI/src/Borealis.css index 9341699..94ff3aa 100644 --- a/Data/WebUI/src/Borealis.css +++ b/Data/WebUI/src/Borealis.css @@ -20,4 +20,11 @@ rgba(9, 44, 68, 0.7) 100% /* Deep blue at the bottom */ ); z-index: -1; /* Ensures it stays behind the React Flow elements */ -} \ No newline at end of file +} + +/* Emphasize Drag & Drop Node Functionality */ +.sidebar-button:hover { + background-color: #2a2a2a !important; + box-shadow: 0 0 5px rgba(88, 166, 255, 0.3); + cursor: grab; +} diff --git a/Data/WebUI/src/nodes/Experimental/Experimental_Node.jsx b/Data/WebUI/src/nodes/Experimental/Experimental_Node.jsx index 27aa7da..4e2e26f 100644 --- a/Data/WebUI/src/nodes/Experimental/Experimental_Node.jsx +++ b/Data/WebUI/src/nodes/Experimental/Experimental_Node.jsx @@ -52,7 +52,7 @@ const experimentalNode = ({ data }) => { {data.label || "Experimental Node"}
- {data.content || "Experimental Node"} + {data.content || "Placeholder Experimental Content"}
); @@ -61,5 +61,6 @@ const experimentalNode = ({ data }) => { export default { type: "experimentalNode", // Must match the type used in nodeTypes label: "Experimental Node", + defaultContent: "Placeholder Node", component: experimentalNode }; diff --git a/Data/WebUI/src/nodes/Flyff Universe/Flyff_Node.jsx b/Data/WebUI/src/nodes/Flyff Universe/Flyff_Node.jsx index c6dce2d..3313d1f 100644 --- a/Data/WebUI/src/nodes/Flyff Universe/Flyff_Node.jsx +++ b/Data/WebUI/src/nodes/Flyff Universe/Flyff_Node.jsx @@ -52,7 +52,7 @@ const flyffNode = ({ data }) => { {data.label || "Flyff Node"}
- {data.content || "Flyff Node"} + {data.content || "Placeholder Flyff Content"}
); @@ -61,5 +61,6 @@ const flyffNode = ({ data }) => { export default { type: "flyffNode", // Must match the type used in nodeTypes label: "Flyff Node", + defaultContent: "Placeholder Node", component: flyffNode }; diff --git a/Data/WebUI/src/nodes/General Purpose/Data_Node.jsx b/Data/WebUI/src/nodes/General Purpose/Data_Node.jsx index 6217563..1af247f 100644 --- a/Data/WebUI/src/nodes/General Purpose/Data_Node.jsx +++ b/Data/WebUI/src/nodes/General Purpose/Data_Node.jsx @@ -52,7 +52,7 @@ const dataNode = ({ data }) => { {data.label || "Data Node"}
- {data.content || "Data Node"} + {data.content || "Placeholder Data Content"}
); @@ -61,5 +61,6 @@ const dataNode = ({ data }) => { export default { type: "dataNode", // Must match the type used in nodeTypes label: "Data Node", + defaultContent: "Placeholder Node", component: dataNode }; diff --git a/Data/WebUI/src/nodes/Organization/Node_Group_Box.jsx b/Data/WebUI/src/nodes/Organization/Node_Group_Box.jsx index 33f7dd7..6a0da51 100644 --- a/Data/WebUI/src/nodes/Organization/Node_Group_Box.jsx +++ b/Data/WebUI/src/nodes/Organization/Node_Group_Box.jsx @@ -52,7 +52,7 @@ const nodeGroupBox = ({ data }) => { {data.label || "Node Group Box"}
- {data.content || "Node Group Box"} + {data.content || "Placeholder Group Box Content"}
); @@ -61,5 +61,6 @@ const nodeGroupBox = ({ data }) => { export default { type: "nodeGroupBox", // Must match the type used in nodeTypes label: "Node Group Box", + defaultContent: "Placeholder Node", component: nodeGroupBox }; diff --git a/Data/WebUI/src/nodes/Reporting/Export_to_CSV.jsx b/Data/WebUI/src/nodes/Reporting/Export_to_CSV.jsx index f06d480..7bce0ed 100644 --- a/Data/WebUI/src/nodes/Reporting/Export_to_CSV.jsx +++ b/Data/WebUI/src/nodes/Reporting/Export_to_CSV.jsx @@ -52,7 +52,7 @@ const ExportToCSVNode = ({ data }) => { {data.label || "Export to CSV"}
- {data.content || "Export to CSV"} + {data.content || "Placeholder CSV Content"}
); @@ -61,5 +61,6 @@ const ExportToCSVNode = ({ data }) => { export default { type: "ExportToCSVNode", // Must match the type used in nodeTypes label: "Export to CSV", + defaultContent: "Placeholder Node", component: ExportToCSVNode };