meeting code 7/8

pull/33/head
Khwaja 3 months ago
parent 6262047671
commit a463b8eb76

@ -189,12 +189,10 @@ const onAddPlantOutput = (plantName: string, productName: string) => {
const plant = prevData.plants[plantName]; const plant = prevData.plants[plantName];
if (!plant) return prevData; if (!plant) return prevData;
// Build a new array of outputs, avoiding duplicates
const newOutputs = plant.outputs.includes(productName) const newOutputs = plant.outputs.includes(productName)
? plant.outputs ? plant.outputs
: [...plant.outputs, productName]; : [...plant.outputs, productName];
// Return updated state with outputs as an array
return { return {
...prevData, ...prevData,
plants: { plants: {
@ -289,6 +287,56 @@ const onAddCenterOutput = (centerName: string, productName: string) => {
}); });
}; };
const onRenamePlant = (prevName: string, newName: string) => {
setCircularData(prev => {
const oldPlant = prev.plants[prevName];
if (!oldPlant) return prev;
const updatedData: CircularData = {
...prev,
plants: {
...prev.plants,
[prevName]: {...oldPlant, name: newName}
}
};
});
};
const onRenameProduct = (prevName: string, newName: string) => {
setCircularData(prev => {
const oldProduct = prev.products[prevName];
if (!oldProduct) return prev;
const updatedData: CircularData = {
...prev,
products: {
...prev.products,
[newName]: oldProduct,
}
};
delete updatedData.products[prevName];
return updatedData;
});
};
const onRenameCenter = (prevName: string, newName: string) => {
setCircularData(prev => {
const oldCenter = prev.centers[prevName];
if (!oldCenter) return prev;
const updatedData: CircularData = {
...prev,
centers: {
...prev.centers,
[newName]: oldCenter,
}
};
delete updatedData.centers[prevName];
return updatedData;
});
};
return ( return (
<div> <div>
<Header onClear={onClear} onSave={onSave} onLoad={onLoad} /> <Header onClear={onClear} onSave={onSave} onLoad={onLoad} />
@ -312,6 +360,9 @@ const onAddCenterOutput = (centerName: string, productName: string) => {
onRemovePlant={onRemovePlant} onRemovePlant={onRemovePlant}
onRemoveProduct={onRemoveProduct} onRemoveProduct={onRemoveProduct}
onRemoveCenter={onRemoveCenter} onRemoveCenter={onRemoveCenter}
onRenamePlant = {onRenamePlant}
onRenameProduct = {onRenameProduct}
onRenameCenter = {onRenameCenter}
/> />
</div> </div>
</div> </div>

@ -30,6 +30,9 @@ interface PipelineBlockProps {
onRemovePlant: (id: string) => void; onRemovePlant: (id: string) => void;
onRemoveProduct: (id: string) => void; onRemoveProduct: (id: string) => void;
onRemoveCenter: (id: string) => void; onRemoveCenter: (id: string) => void;
onRenameProduct: (prevName: string, newName: string) => void;
onRenamePlant: (prevName: string, newName: string) => void;
onRenameCenter: (prevName: string, newName: string) => void;
products: Record<string, CircularProduct>; products: Record<string, CircularProduct>;
plants: Record<string, CircularPlant>; plants: Record<string, CircularPlant>;
centers: Record<string, CircularCenter>; centers: Record<string, CircularCenter>;
@ -169,6 +172,21 @@ const PipelineBlock: React.FC<PipelineBlockProps> = props => {
[props] [props]
); );
const onNodeDoubleClick = (ev: React.MouseEvent, node: Node<CustomNodeData>) => {
const oldName = node.data.label;
const newName = window.prompt("Enter new name", oldName);
if (!newName|| newName.trim().length === 0) return;
if (newName in mapNameToType) return;
if (node.data.type === "plant") {
props.onRenamePlant(oldName, newName);
} else if (node.data.type === "product") {
props.onRenameProduct(oldName, newName);
}
else if (node.data.type === "center") {
props.onRenameCenter(oldName, newName);
}
};
const onLayout = () => { const onLayout = () => {
const { nodes: ln, edges: le } = getLayoutedNodesAndEdges(nodes, edges); const { nodes: ln, edges: le } = getLayoutedNodesAndEdges(nodes, edges);
ln.forEach(n => { ln.forEach(n => {
@ -182,7 +200,7 @@ const PipelineBlock: React.FC<PipelineBlockProps> = props => {
useEffect(() => { useEffect(() => {
if (hasNullPositions) onLayout(); if (hasNullPositions) onLayout();
}, [hasNullPositions]); }, [hasNullPositions]);
return ( return (
<> <>
<Section title="Pipeline" /> <Section title="Pipeline" />
@ -192,6 +210,7 @@ const PipelineBlock: React.FC<PipelineBlockProps> = props => {
nodes={nodes} nodes={nodes}
edges={edges} edges={edges}
onConnect={onConnect} onConnect={onConnect}
onNodeDoubleClick={onNodeDoubleClick}
onNodeDragStop={onNodeDragStop} onNodeDragStop={onNodeDragStop}
onNodesDelete={handleNodesDelete} onNodesDelete={handleNodesDelete}
deleteKeyCode="delete" deleteKeyCode="delete"

Loading…
Cancel
Save