Merging dev into main #49
@@ -17,13 +17,14 @@ type phaseNodeData = defaultNodeData & {
|
|||||||
|
|
||||||
export type nodeData = defaultNodeData | startNodeData | phaseNodeData | endNodeData;
|
export type nodeData = defaultNodeData | startNodeData | phaseNodeData | endNodeData;
|
||||||
|
|
||||||
// Node Toolbar definition
|
// Node Toolbar definition, contains node delete functionality
|
||||||
|
|
||||||
type ToolbarProps= {
|
type ToolbarProps= {
|
||||||
nodeId: string;
|
nodeId: string;
|
||||||
|
allowDelete: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export function Toolbar({nodeId}:ToolbarProps) {
|
export function Toolbar({nodeId, allowDelete}:ToolbarProps) {
|
||||||
const { setNodes, setEdges } = useReactFlow();
|
const { setNodes, setEdges } = useReactFlow();
|
||||||
|
|
||||||
const handleDelete = () => {
|
const handleDelete = () => {
|
||||||
@@ -32,13 +33,15 @@ export function Toolbar({nodeId}:ToolbarProps) {
|
|||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<NodeToolbar >
|
<NodeToolbar >
|
||||||
<button className="Node-toolbar__deletebutton" onClick={handleDelete}>delete</button>
|
<button className="Node-toolbar__deletebutton" onClick={handleDelete} disabled={!allowDelete}>delete</button>
|
||||||
</NodeToolbar>);
|
</NodeToolbar>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Definitions of Nodes
|
// Definitions of Nodes
|
||||||
|
|
||||||
|
// Start Node definition:
|
||||||
|
|
||||||
type StartNodeProps = {
|
type StartNodeProps = {
|
||||||
id: string;
|
id: string;
|
||||||
data: startNodeData;
|
data: startNodeData;
|
||||||
@@ -47,7 +50,7 @@ type StartNodeProps = {
|
|||||||
export const StartNode= ({ id, data }: StartNodeProps) => {
|
export const StartNode= ({ id, data }: StartNodeProps) => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Toolbar nodeId={id} />
|
<Toolbar nodeId={id} allowDelete={false}/>
|
||||||
<div className="default-node__start">
|
<div className="default-node__start">
|
||||||
<div> data test {data.label} </div>
|
<div> data test {data.label} </div>
|
||||||
<Handle type="source" position={Position.Right} id="start" />
|
<Handle type="source" position={Position.Right} id="start" />
|
||||||
@@ -56,6 +59,9 @@ export const StartNode= ({ id, data }: StartNodeProps) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// End node definition:
|
||||||
|
|
||||||
type EndNodeProps = {
|
type EndNodeProps = {
|
||||||
id: string;
|
id: string;
|
||||||
data: endNodeData;
|
data: endNodeData;
|
||||||
@@ -64,7 +70,7 @@ type EndNodeProps = {
|
|||||||
export const EndNode= ({ id, data }: EndNodeProps) => {
|
export const EndNode= ({ id, data }: EndNodeProps) => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Toolbar nodeId={id}/>
|
<Toolbar nodeId={id} allowDelete={false}/>
|
||||||
<div className="default-node__end">
|
<div className="default-node__end">
|
||||||
<div> {data.label} </div>
|
<div> {data.label} </div>
|
||||||
<Handle type="target" position={Position.Left} id="end" />
|
<Handle type="target" position={Position.Left} id="end" />
|
||||||
@@ -74,6 +80,8 @@ export const EndNode= ({ id, data }: EndNodeProps) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Phase node definition:
|
||||||
|
|
||||||
type PhaseNodeProps = {
|
type PhaseNodeProps = {
|
||||||
id: string;
|
id: string;
|
||||||
data: phaseNodeData;
|
data: phaseNodeData;
|
||||||
@@ -82,7 +90,7 @@ type PhaseNodeProps = {
|
|||||||
export const PhaseNode= ({ id, data }: PhaseNodeProps) => {
|
export const PhaseNode= ({ id, data }: PhaseNodeProps) => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Toolbar nodeId={id}/>
|
<Toolbar nodeId={id} allowDelete={true}/>
|
||||||
<div className="default-node__phase">
|
<div className="default-node__phase">
|
||||||
<div> phase {data.number} {data.label} </div>
|
<div> phase {data.number} {data.label} </div>
|
||||||
<Handle type="target" position={Position.Left} id="target" />
|
<Handle type="target" position={Position.Left} id="target" />
|
||||||
@@ -93,6 +101,9 @@ export const PhaseNode= ({ id, data }: PhaseNodeProps) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Norm node definition:
|
||||||
|
|
||||||
type NormNodeProps = {
|
type NormNodeProps = {
|
||||||
id: string;
|
id: string;
|
||||||
data: normNodeData;
|
data: normNodeData;
|
||||||
@@ -101,7 +112,7 @@ type NormNodeProps = {
|
|||||||
export const NormNode= ({ id, data }: NormNodeProps) => {
|
export const NormNode= ({ id, data }: NormNodeProps) => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Toolbar nodeId={id} />
|
<Toolbar nodeId={id} allowDelete={true}/>
|
||||||
<div className="default-node__norm">
|
<div className="default-node__norm">
|
||||||
<div> Norm {data.label} </div>
|
<div> Norm {data.label} </div>
|
||||||
<Handle type="source" position={Position.Right} id="NormSource" />
|
<Handle type="source" position={Position.Right} id="NormSource" />
|
||||||
|
|||||||
Reference in New Issue
Block a user