|
|
@ -9,7 +9,7 @@ import Header from "./Header";
|
|
|
|
import "tabulator-tables/dist/css/tabulator.min.css";
|
|
|
|
import "tabulator-tables/dist/css/tabulator.min.css";
|
|
|
|
import "../Common/Forms/Tables.css";
|
|
|
|
import "../Common/Forms/Tables.css";
|
|
|
|
import Footer from "./Footer";
|
|
|
|
import Footer from "./Footer";
|
|
|
|
import React, { useState } from "react";
|
|
|
|
import React, { useState,useRef } from "react";
|
|
|
|
import {CircularData} from "./CircularData";
|
|
|
|
import {CircularData} from "./CircularData";
|
|
|
|
import { defaultPlant, defaultProduct, defaultCenter } from "./defaults";
|
|
|
|
import { defaultPlant, defaultProduct, defaultCenter } from "./defaults";
|
|
|
|
import PipelineBlock from "./PipelineBlock";
|
|
|
|
import PipelineBlock from "./PipelineBlock";
|
|
|
@ -23,15 +23,18 @@ declare global {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const CaseBuilder = () => {
|
|
|
|
const CaseBuilder = () => {
|
|
|
|
|
|
|
|
const nextUid= useRef(1);
|
|
|
|
const [circularData, setCircularData] = useState<CircularData> ( {
|
|
|
|
const [circularData, setCircularData] = useState<CircularData> ( {
|
|
|
|
plants: {},
|
|
|
|
plants: {},
|
|
|
|
products: {},
|
|
|
|
products: {},
|
|
|
|
centers: {}
|
|
|
|
centers: {},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
const onClear = () => {};
|
|
|
|
const onClear = () => {};
|
|
|
|
const onSave = () => {};
|
|
|
|
const onSave = () => {};
|
|
|
|
const onLoad = () => {};
|
|
|
|
const onLoad = () => {};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -52,24 +55,27 @@ const CaseBuilder = () => {
|
|
|
|
const promptName = (prevData:CircularData): string | undefined => {
|
|
|
|
const promptName = (prevData:CircularData): string | undefined => {
|
|
|
|
const name = prompt("Name");
|
|
|
|
const name = prompt("Name");
|
|
|
|
if (!name || name.length ===0) return;
|
|
|
|
if (!name || name.length ===0) return;
|
|
|
|
if (name in prevData.products || name in prevData.plants) return;
|
|
|
|
|
|
|
|
return name;
|
|
|
|
return name;
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const onAddPlant = () => {
|
|
|
|
const onAddPlant = () => {
|
|
|
|
setCircularData((prevData) => {
|
|
|
|
setCircularData((prevData) => {
|
|
|
|
const id = promptName(prevData);
|
|
|
|
const name = promptName(prevData);
|
|
|
|
if (id ===undefined) return prevData;
|
|
|
|
if (name ===undefined) return prevData;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const uid = `${name}-${nextUid.current++}`;
|
|
|
|
const [x,y] = randomPosition();
|
|
|
|
const [x,y] = randomPosition();
|
|
|
|
const newData: CircularData = {
|
|
|
|
const newData: CircularData = {
|
|
|
|
...prevData,
|
|
|
|
...prevData,
|
|
|
|
plants: {
|
|
|
|
plants: {
|
|
|
|
...prevData.plants,
|
|
|
|
...prevData.plants,
|
|
|
|
[id]: {
|
|
|
|
[uid]: {
|
|
|
|
...defaultPlant,
|
|
|
|
...defaultPlant,
|
|
|
|
x,
|
|
|
|
x,
|
|
|
|
y,
|
|
|
|
y,
|
|
|
|
|
|
|
|
name,
|
|
|
|
|
|
|
|
uid
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -79,17 +85,20 @@ const CaseBuilder = () => {
|
|
|
|
|
|
|
|
|
|
|
|
const onAddProduct = () => {
|
|
|
|
const onAddProduct = () => {
|
|
|
|
setCircularData((prevData) => {
|
|
|
|
setCircularData((prevData) => {
|
|
|
|
const id = promptName(prevData);
|
|
|
|
const name = promptName(prevData);
|
|
|
|
if (id ===undefined) return prevData;
|
|
|
|
if (name ===undefined) return prevData;
|
|
|
|
|
|
|
|
const uid = `${name}-${nextUid.current++}`;
|
|
|
|
const [x,y] = randomPosition();
|
|
|
|
const [x,y] = randomPosition();
|
|
|
|
const newData: CircularData = {
|
|
|
|
const newData: CircularData = {
|
|
|
|
...prevData,
|
|
|
|
...prevData,
|
|
|
|
products: {
|
|
|
|
products: {
|
|
|
|
...prevData.products,
|
|
|
|
...prevData.products,
|
|
|
|
[id]: {
|
|
|
|
[uid]: {
|
|
|
|
...defaultProduct,
|
|
|
|
...defaultProduct,
|
|
|
|
x,
|
|
|
|
x,
|
|
|
|
y,
|
|
|
|
y,
|
|
|
|
|
|
|
|
name,
|
|
|
|
|
|
|
|
uid
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -99,22 +108,26 @@ const CaseBuilder = () => {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const onAddCenter = () => {
|
|
|
|
const onAddCenter = () => {
|
|
|
|
setCircularData(prev => {
|
|
|
|
setCircularData((prevData) => {
|
|
|
|
const name = prompt("Center name");
|
|
|
|
const name = promptName(prevData);
|
|
|
|
if (!name || name in prev.centers) return prev;
|
|
|
|
if (name ===undefined) return prevData;
|
|
|
|
|
|
|
|
const uid = `${name}-${nextUid.current++}`;
|
|
|
|
const [x,y] = randomPosition();
|
|
|
|
const [x,y] = randomPosition();
|
|
|
|
const next = {
|
|
|
|
const newData: CircularData = {
|
|
|
|
...prev,
|
|
|
|
...prevData,
|
|
|
|
centers: {
|
|
|
|
centers: {
|
|
|
|
...prev.centers,
|
|
|
|
...prevData.centers,
|
|
|
|
[name]: { ...defaultCenter, id:name, x, y, outputs: []}
|
|
|
|
[uid]: {
|
|
|
|
|
|
|
|
...defaultCenter,
|
|
|
|
}
|
|
|
|
x,
|
|
|
|
};
|
|
|
|
y,
|
|
|
|
return next;
|
|
|
|
name,
|
|
|
|
|
|
|
|
uid
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
return newData;
|
|
|
|
|
|
|
|
});
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const onSetCenterInput = (centerName: string, productName: string) => {
|
|
|
|
const onSetCenterInput = (centerName: string, productName: string) => {
|
|
|
|