diff --git a/Data/WebUI/src/App.js b/Data/WebUI/src/App.js index 255a7b8..0e60f10 100644 --- a/Data/WebUI/src/App.js +++ b/Data/WebUI/src/App.js @@ -1,17 +1,70 @@ -import logo from './logo.svg'; -import './App.css'; +import React from "react"; +import FlowEditor from "./components/FlowEditor"; +import { AppBar, Toolbar, Typography, Box, Menu, MenuItem, Button, CssBaseline, ThemeProvider, createTheme } from "@mui/material"; -function App() { - return ( -
-
- logo -

- Borealis Workflow Automation Tool -

-
-
- ); +const darkTheme = createTheme({ + palette: { + mode: "dark", + background: { + default: "#121212", + paper: "#1e1e1e" + }, + text: { + primary: "#ffffff" + } + } +}); + +export default function App() { + const [anchorEl, setAnchorEl] = React.useState(null); + + const handleMenuOpen = (event) => { + setAnchorEl(event.currentTarget); + }; + + const handleMenuClose = () => { + setAnchorEl(null); + }; + + return ( + + + + {/* Top Menu Bar */} + + + + Borealis - Workflow Automation Tool + + + + Save Workflow + Load Workflow + Close Workflow + + + + + {/* Main Content - React Flow */} + + { + document.getElementById("nodeCount").innerText = count; + }} /> + + + {/* Status Bar */} + + Nodes: 0 | Update Rate: 500ms | Flask API Server: + http://127.0.0.1:5000/data + + + + ); } - -export default App; diff --git a/Launch-Borealis.ps1 b/Launch-Borealis.ps1 index 22b4522..f264d3e 100644 --- a/Launch-Borealis.ps1 +++ b/Launch-Borealis.ps1 @@ -2,6 +2,10 @@ # Run this script with: # Set-ExecutionPolicy Unrestricted -Scope Process; .\Start_Windows -WebServer.ps1 +Write-Output " =============================== " +Write-Output " Deploying Borealis " +Write-Output " =============================== " + # --- Check for Node.js --- if (-not (Get-Command node -ErrorAction SilentlyContinue)) { Write-Error "Node.js is not installed. Please install Node.js and try again." @@ -17,26 +21,26 @@ $webUIDestination = "$venvFolder\web-interface" # Destination f # --- Create virtual environment if needed --- if (!(Test-Path "$venvFolder\Scripts\Activate")) { - Write-Output "Creating virtual environment in '$venvFolder'..." + Write-Output "Creating Virtual Python Environment in '$venvFolder'..." python -m venv $venvFolder } # --- Copy Data folder (includes server.py) --- if (Test-Path $dataSource) { - Write-Output "Copying Data folder into virtual environment..." + Write-Output "Copying Borealis Server Data into Virtual Environment..." if (Test-Path $dataDestination) { Remove-Item -Recurse -Force $dataDestination } New-Item -Path $dataDestination -ItemType Directory -Force | Out-Null Copy-Item -Path "$dataSource\*" -Destination $dataDestination -Recurse } else { - Write-Output "Warning: Data folder not found, skipping copy." + Write-Output "Warning: Data folder not found, skipping copy. Fix whatever you broke." } # --- React UI Deployment --- # Check if the React UI folder exists in the virtual environment root. if (-not (Test-Path $webUIDestination)) { - Write-Output "React UI folder '$webUIDestination' not found. Generating default ReactJS app there..." + Write-Output "ReactJS App Not Found. Generating Default ReactJS App..." npx create-react-app $webUIDestination } else { Write-Output "React UI folder '$webUIDestination' already exists." @@ -44,19 +48,19 @@ if (-not (Test-Path $webUIDestination)) { # If a custom UI folder exists at \Data\WebUI, copy its contents over (overwrite defaults). if (Test-Path $customUIPath) { - Write-Output "Custom UI folder found at '$customUIPath'. Overwriting default React app with Borealis-related files..." + Write-Output "Borealis ReactJS Data Found at '$customUIPath'. Overwriting ReactJS App Files..." Copy-Item -Path "$customUIPath\*" -Destination $webUIDestination -Recurse -Force } else { Write-Output "No custom UI folder found at '$customUIPath'. Using default ReactJS app." } # --- Activate virtual environment --- -Write-Output "Activating virtual environment..." +Write-Output "Activating Virtual Python Environment..." . "$venvFolder\Scripts\Activate" # --- Install Python dependencies --- if (Test-Path "requirements.txt") { - Write-Output "Installing Python dependencies..." + Write-Output "Installing Python Dependencies..." pip install -q -r requirements.txt } else { Write-Output "No requirements.txt found, skipping Python dependency installation." @@ -69,12 +73,19 @@ if (-not (Test-Path $buildFolder)) { if (Test-Path $packageJsonPath) { Write-Output "React UI build not found in '$webUIDestination'. Installing dependencies and building the React app..." Push-Location $webUIDestination + Write-Output " =============================== " + Write-Output " Installing NPM Packages " + Write-Output " =============================== " npm install --no-fund --audit=false # Ensure react-flow-renderer is installed Write-Output "Installing React Flow..." npm install reactflow --no-fund --audit=false + # Install Material UI Library + Write-Output "Installing Material UI Library..." + npm install @mui/material @emotion/react @emotion/styled --no-fund --audit=false + npm run build Pop-Location } @@ -92,6 +103,9 @@ $expectedBuildPath = Join-Path (Get-Location) "web-interface\build" Write-Output "Looking for build folder at: $expectedBuildPath" # --- Start the Flask server (server.py is inside Borealis folder) --- +Write-Output " =============================== " +Write-Output " Launching Borealis " +Write-Output " =============================== " Write-Output "Starting the Flask server..." python "Borealis\server.py" diff --git a/Rebuild_ReactJS_App.ps1 b/Rebuild_ReactJS_App.ps1 new file mode 100644 index 0000000..37064f7 --- /dev/null +++ b/Rebuild_ReactJS_App.ps1 @@ -0,0 +1,78 @@ +# Start_Windows - WebServer.ps1 +# Run this script with: +# Set-ExecutionPolicy Unrestricted -Scope Process; .\Start_Windows -WebServer.ps1 + +Write-Output " =============================== " +Write-Output " Re-Building ReactJS App " +Write-Output " =============================== " + +# --- Define paths --- +$venvFolder = "Borealis-Workflow-Automation-Tool" # Virtual environment root. +$dataSource = "Data" # Contains server.py and optionally WebUI. +$dataDestination = "$venvFolder\Borealis" # Data folder copy destination in the venv. +$customUIPath = "$dataSource\WebUI" # Custom UI folder source in the project root. +$webUIDestination = "$venvFolder\web-interface" # Destination for the React UI in the venv. + +# If a custom UI folder exists at \Data\WebUI, copy its contents over (overwrite defaults). +if (Test-Path $customUIPath) { + Write-Output "Borealis ReactJS Data Found at '$customUIPath'. Overwriting ReactJS App Files..." + Copy-Item -Path "$customUIPath\*" -Destination $webUIDestination -Recurse -Force +} else { + Write-Output "No custom UI folder found at '$customUIPath'. Using default ReactJS app." +} + +# --- Activate virtual environment --- +Write-Output "Activating Virtual Python Environment..." +. "$venvFolder\Scripts\Activate" + +# --- Remove Existing / Previous ReactJS App Build folder --- +if (Test-Path $dataDestination) { + Remove-Item -Recurse -Force $venvFolder\web-interface\build +} + +# --- Build the React (UI) app in the web-interface folder if needed --- +$packageJsonPath = Join-Path $webUIDestination "package.json" +$buildFolder = Join-Path $webUIDestination "build" +if (-not (Test-Path $buildFolder)) { + if (Test-Path $packageJsonPath) { + Write-Output "React UI build not found in '$webUIDestination'. Installing dependencies and building the React app..." + Push-Location $webUIDestination + Write-Output " =============================== " + Write-Output " Installing NPM Packages " + Write-Output " =============================== " + npm install --no-fund --audit=false + + # Ensure react-flow-renderer is installed + Write-Output "Installing React Flow..." + npm install reactflow --no-fund --audit=false + + # Install Material UI Library + Write-Output "Installing Material UI Library..." + npm install @mui/material @emotion/react @emotion/styled --no-fund --audit=false + + npm run build + Pop-Location + } + else { + Write-Output "No package.json found in '$webUIDestination'; skipping npm install/build." + } +} else { + Write-Output "React UI build found. Skipping npm install/build." +} + +# --- Change directory to the virtual environment root --- +Push-Location $venvFolder +Write-Output "Current working directory: $(Get-Location)" +$expectedBuildPath = Join-Path (Get-Location) "web-interface\build" +Write-Output "Looking for build folder at: $expectedBuildPath" + +# --- Start the Flask server (server.py is inside Borealis folder) --- +Write-Output " =============================== " +Write-Output " Launching Borealis " +Write-Output " =============================== " +Write-Output "Starting the Flask server..." +python "Borealis\server.py" + +# --- Return to original directory and deactivate virtual environment --- +Pop-Location +deactivate