From 6d75a6039bb73ac1e26ef30e500fa147d63c6a7c Mon Sep 17 00:00:00 2001 From: Khwaja Date: Mon, 16 Jun 2025 11:20:13 -0500 Subject: [PATCH] Added functions for circular UI --- .../components/CaseBuilder/CaseBuilder.tsx | 55 +++++++++++++++++++ .../components/CaseBuilder/CircularData.ts | 2 - 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/web/src/components/CaseBuilder/CaseBuilder.tsx b/web/src/components/CaseBuilder/CaseBuilder.tsx index 214ffdf..be7b1d4 100644 --- a/web/src/components/CaseBuilder/CaseBuilder.tsx +++ b/web/src/components/CaseBuilder/CaseBuilder.tsx @@ -9,12 +9,67 @@ import Header from "./Header"; import "tabulator-tables/dist/css/tabulator.min.css"; import "../Common/Forms/Tables.css"; import Footer from "./Footer"; +import React, { useState } from "react"; +import {CircularData} from "./CircularData.ts"; + +declare global { + interface Window { + nextX: number; + nextY: number; + } + } const CaseBuilder = () => { + const [circularData, setCircularData] = useState ( { + plants: {}, + products: {} + +}); const onClear = () => {}; const onSave = () => {}; const onLoad = () => {}; + + + const randomPosition = (): [number,number] => { + if (window.nextX === undefined) window.nextX = 15; + if (window.nextY === undefined) window.nextY = 15; + + window.nextY +=60; + if (window.nextY >=500) { + window.nextY = 15; + window.nextX += 150; + + } + return [window.nextX, window.nextY] + + } + + const promptName = (prevData:CircularData): string | undefined => { + const name = prompt("Name"); + if (!name || name.length ===0) return; + if (name in prevData.products || name in prevData.plants) return; + return name; + + }; + + const onAddPlant = () => { + setCircularData((prevData) => { + const id = promptName(prevData); + if (id ==undefined) return prevData; + const newData = { ...prevData}; + const [x,y] = randomPosition(); + newData.plants[id] = { + ...defaultPlant, + x: x, + y: y, + + }; + onSave(newData); + return newData; + }); + } + return (
diff --git a/web/src/components/CaseBuilder/CircularData.ts b/web/src/components/CaseBuilder/CircularData.ts index ad569d7..785f933 100644 --- a/web/src/components/CaseBuilder/CircularData.ts +++ b/web/src/components/CaseBuilder/CircularData.ts @@ -3,7 +3,6 @@ export interface CircularPlant { x: number; y: number; - input?: string; // optional product name } @@ -18,6 +17,5 @@ export interface CircularData { products: Record; - parameters: Record; // Any parameters, ex: simulation years, costs } \ No newline at end of file