import {Handle, NodeToolbar, Position} from '@xyflow/react'; import '@xyflow/react/dist/style.css'; import styles from '../../VisProg.module.css'; import useFlowStore from "../VisProgStores.tsx"; // Contains the datatypes for the data inside our NodeTypes // this has to be improved or adapted to suit our implementation for computing the graph // into a format that is useful for the Control Backend type defaultNodeData = { label: string; }; type startNodeData = defaultNodeData; type endNodeData = defaultNodeData; type normNodeData = defaultNodeData; type phaseNodeData = defaultNodeData & { number: number; }; export type nodeData = defaultNodeData | startNodeData | phaseNodeData | endNodeData; // Node Toolbar definition, contains node delete functionality type ToolbarProps = { nodeId: string; allowDelete: boolean; }; export function Toolbar({nodeId, allowDelete}: ToolbarProps) { const {deleteNode} = useFlowStore(); const deleteParentNode = ()=> { deleteNode(nodeId); } return ( ); } // Definitions of Nodes // Start Node definition: type StartNodeProps = { id: string; data: startNodeData; }; export const StartNode = ({id, data}: StartNodeProps) => { return ( <>
data test {data.label}
); }; // End node definition: type EndNodeProps = { id: string; data: endNodeData; }; export const EndNode = ({id, data}: EndNodeProps) => { return ( <>
{data.label}
); }; // Phase node definition: type PhaseNodeProps = { id: string; data: phaseNodeData; }; export const PhaseNode = ({id, data}: PhaseNodeProps) => { return ( <>
phase {data.number} {data.label}
); }; // Norm node definition: type NormNodeProps = { id: string; data: normNodeData; }; export const NormNode = ({id, data}: NormNodeProps) => { return ( <>
Norm {data.label}
); };