diff --git a/Data/WebUI/src/App.js b/Data/WebUI/src/App.js index 87576be..2605e49 100644 --- a/Data/WebUI/src/App.js +++ b/Data/WebUI/src/App.js @@ -1,118 +1,139 @@ import React from "react"; import FlowEditor from "./components/FlowEditor"; import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; - import { - AppBar, - Toolbar, - Typography, - Box, - Menu, - MenuItem, - Button, - CssBaseline, - ThemeProvider, - createTheme + AppBar, + Toolbar, + Typography, + Box, + Menu, + MenuItem, + Button, + CssBaseline, + ThemeProvider, + createTheme } from "@mui/material"; const darkTheme = createTheme({ - palette: { - mode: "dark", - background: { - default: "#121212", - paper: "#1e1e1e" - }, - text: { - primary: "#ffffff" - } + palette: { + mode: "dark", + background: { + default: "#121212", + paper: "#1e1e1e" + }, + text: { + primary: "#ffffff" } + } }); export default function App() { - // Separate menu state for each dropdown - const [workflowsAnchorEl, setWorkflowsAnchorEl] = React.useState(null); - const [aboutAnchorEl, setAboutAnchorEl] = React.useState(null); + const [workflowsAnchorEl, setWorkflowsAnchorEl] = React.useState(null); + const [aboutAnchorEl, setAboutAnchorEl] = React.useState(null); - const handleWorkflowsMenuOpen = (event) => { - setWorkflowsAnchorEl(event.currentTarget); - }; + const handleWorkflowsMenuOpen = (event) => { + setWorkflowsAnchorEl(event.currentTarget); + }; - const handleAboutMenuOpen = (event) => { - setAboutAnchorEl(event.currentTarget); - }; + const handleAboutMenuOpen = (event) => { + setAboutAnchorEl(event.currentTarget); + }; - const handleWorkflowsMenuClose = () => { - setWorkflowsAnchorEl(null); - }; + const handleWorkflowsMenuClose = () => { + setWorkflowsAnchorEl(null); + }; - const handleAboutMenuClose = () => { - setAboutAnchorEl(null); - }; + const handleAboutMenuClose = () => { + setAboutAnchorEl(null); + }; - return ( - - - - {/* Top Menu Bar */} - - - - Borealis - Workflow Automation Tool - + return ( + + + {/* + Main container that: + - fills 100% viewport height + - organizes content with flexbox (vertical) + */} + + {/* --- TOP BAR --- */} + + + + Borealis - Workflow Automation Tool + - {/* Workflows Menu */} - - - Save Workflow - Load Workflow - Close Workflow - + {/* Workflows Menu */} + + + Save Workflow + Load Workflow + Close Workflow + - {/* About Menu */} - - - Gitea Project - Credits - - - + {/* About Menu */} + + + Gitea Project + Credits + + + - {/* Main Content - React Flow */} - - { - document.getElementById("nodeCount").innerText = count; - }} /> - + {/* --- REACT FLOW EDITOR --- */} + {/* + flexGrow={1} ⇒ This box expands to fill remaining vertical space + overflow="hidden" ⇒ No scroll bars, so React Flow does internal panning + mt: 1 ⇒ Add top margin so the gradient starts closer to the AppBar. + */} + + { + document.getElementById("nodeCount").innerText = count; + }} + /> + - {/* Status Bar */} - - Nodes: 0 | Update Rate: 500ms | Flask API Server: - http://127.0.0.1:5000/data - - - - ); + {/* --- STATUS BAR at BOTTOM --- */} + + Nodes: 0 | Update Rate: 500ms | Flask API Server:{" "} + + http://127.0.0.1:5000/data + + + + + ); }