Files
Atomizer/dashboard/start_dashboard.py
Anto01 1dab9d638d feat: Add professional web-based optimization dashboard
Complete dashboard UI for controlling and monitoring optimization runs.

Backend API (Flask):
- RESTful endpoints for study management
- Start/stop/resume optimization runs
- Real-time status monitoring
- Configuration management
- Visualization data endpoints

Frontend (HTML/CSS/JS + Chart.js):
- Modern gradient design with cards and charts
- Study list sidebar with metadata
- Active optimizations monitoring (5s polling)
- Interactive charts (progress, design vars, constraints)
- Trial history table
- New optimization modal
- Resume/delete study actions

Features:
- List all studies with trial counts
- View detailed study results
- Start new optimizations from UI
- Resume existing studies with additional trials
- Real-time progress monitoring
- Delete unwanted studies
- Chart.js visualizations (progress, DVs, constraints)
- Configuration file selection
- Study metadata tracking

Usage:
  python dashboard/start_dashboard.py
  # Opens browser to http://localhost:5000

Dependencies:
  flask, flask-cors (auto-installed)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-15 13:37:33 -05:00

46 lines
1.1 KiB
Python

"""
Atomizer Dashboard Launcher
Simple script to start the dashboard server and open the browser.
"""
import sys
import webbrowser
import time
from pathlib import Path
import subprocess
def main():
dashboard_dir = Path(__file__).parent
api_script = dashboard_dir / 'api' / 'app.py'
print("="*60)
print("ATOMIZER DASHBOARD LAUNCHER")
print("="*60)
print(f"\nStarting dashboard server...")
print(f"Dashboard will open at: http://localhost:5000")
print("\nPress Ctrl+C to stop the server")
print("="*60)
# Give user a moment to read
time.sleep(2)
# Open browser after a short delay
def open_browser():
time.sleep(3) # Wait for server to start
webbrowser.open('http://localhost:5000')
import threading
browser_thread = threading.Thread(target=open_browser, daemon=True)
browser_thread.start()
# Start the Flask server
try:
subprocess.run([sys.executable, str(api_script)], cwd=str(dashboard_dir))
except KeyboardInterrupt:
print("\n\nShutting down dashboard server...")
print("Goodbye!")
if __name__ == '__main__':
main()