diff --git a/src/visualProgrammingUI/components/NodeDefinitions.tsx b/src/visualProgrammingUI/components/NodeDefinitions.tsx index 99ad1da..7463e84 100644 --- a/src/visualProgrammingUI/components/NodeDefinitions.tsx +++ b/src/visualProgrammingUI/components/NodeDefinitions.tsx @@ -1,7 +1,8 @@ -import { Handle, Position } from '@xyflow/react'; +import {Handle, NodeToolbar, Position, useReactFlow} from '@xyflow/react'; import '@xyflow/react/dist/style.css'; import '../VisProgUI.css'; + // Datatypes for NodeTypes type defaultNodeData = { @@ -16,12 +17,38 @@ type phaseNodeData = defaultNodeData & { export type nodeData = defaultNodeData | startNodeData | phaseNodeData | endNodeData; + +// Node Toolbar definition + +type ToolbarProps= { + nodeId: string; +}; + +export function Toolbar({nodeId}:ToolbarProps) { + const { setNodes, setEdges } = useReactFlow(); + + const handleDelete = () => { + setNodes((nds) => nds.filter((n) => n.id !== nodeId)); + setEdges((eds) => eds.filter((e) => e.source !== nodeId && e.target !== nodeId)); + }; + return ( + + + ); +} + + // Definitions of Nodes +type StartNodeProps = { + id: string; + data: startNodeData; +}; -export const StartNode= ({ data } : {data : startNodeData}) => { +export const StartNode= ({ id, data }: StartNodeProps) => { return ( <> +
data test {data.label}
@@ -30,10 +57,15 @@ export const StartNode= ({ data } : {data : startNodeData}) => { ); }; +type EndNodeProps = { + id: string; + data: endNodeData; +}; -export const EndNode= ({ data } : {data : endNodeData}) => { +export const EndNode= ({ id, data }: EndNodeProps) => { return ( <> +
{data.label}
@@ -42,9 +74,16 @@ export const EndNode= ({ data } : {data : endNodeData}) => { ); }; -export const PhaseNode= ({ data } : {data : phaseNodeData}) => { + +type PhaseNodeProps = { + id: string; + data: phaseNodeData; +}; + +export const PhaseNode= ({ id, data }: PhaseNodeProps) => { return ( <> +
phase {data.number} {data.label}
@@ -53,3 +92,4 @@ export const PhaseNode= ({ data } : {data : phaseNodeData}) => { ); }; +