Files
rustytorch/demos/ui/src/App.tsx
T
2026-03-04 00:08:42 +00:00

125 lines
5.2 KiB
TypeScript

/**
* RustyTorch++ Demo Application
*
* Landing page with routing to individual demos
*/
import { useState } from "react";
import { LandingPage } from "./pages/LandingPage";
import { HemodynamicsDemo } from "./pages/demos/HemodynamicsDemo";
import { MreDemo } from "./pages/demos/MreDemo";
import { ThermalAblationDemo } from "./pages/demos/ThermalAblationDemo";
import { SlidescopeDemo } from "./pages/demos/SlidescopeDemo";
import { NeuroDemo } from "./pages/demos/NeuroDemo";
import { NeuralOperatorDemo } from "./pages/demos/NeuralOperatorDemo";
import { PIDDMDemo } from "./pages/demos/PIDDMDemo";
import { DigitalTwinDemo } from "./pages/demos/DigitalTwinDemo";
import { FNOBenchmarkDemo } from "./pages/demos/FNOBenchmarkDemo";
import { ImageClassifierDemo } from "./pages/demos/ImageClassifierDemo";
import { TimeSeriesForecastDemo } from "./pages/demos/TimeSeriesForecastDemo";
import { PortfolioOptimizerDemo } from "./pages/demos/PortfolioOptimizerDemo";
import { RiskAnalyzerDemo } from "./pages/demos/RiskAnalyzerDemo";
import { PINNBenchmarkDemo } from "./pages/demos/PINNBenchmarkDemo";
import { InferenceProfilerDemo } from "./pages/demos/InferenceProfilerDemo";
import { ObjectDetectorDemo } from "./pages/demos/ObjectDetectorDemo";
import { ModelZooDemo } from "./pages/demos/ModelZooDemo";
import { SegmentationDemo } from "./pages/demos/SegmentationDemo";
/** Available demo views */
type AppView = 'landing' | 'hemodynamics' | 'mre-elastography' | 'heat-transfer' | 'slidescope' | 'neuro' | 'neural-operator' | 'piddm' | 'digital-twin' | 'fno-benchmark' | 'image-classifier' | 'timeseries-forecast' | 'portfolio-optimizer' | 'risk-analyzer' | 'pinn-benchmark' | 'inference-profiler' | 'object-detector' | 'model-zoo' | 'segmentation';
function App() {
const [currentView, setCurrentView] = useState<AppView>('landing');
// Handle demo selection from landing page
const handleSelectDemo = (demoId: string) => {
if (demoId === 'hemodynamics') {
setCurrentView('hemodynamics');
} else if (demoId === 'mre-elastography') {
setCurrentView('mre-elastography');
} else if (demoId === 'heat-transfer') {
setCurrentView('heat-transfer');
} else if (demoId === 'slidescope') {
setCurrentView('slidescope');
} else if (demoId === 'neuro') {
setCurrentView('neuro');
} else if (demoId === 'neural-operator') {
setCurrentView('neural-operator');
} else if (demoId === 'piddm') {
setCurrentView('piddm');
} else if (demoId === 'digital-twin') {
setCurrentView('digital-twin');
} else if (demoId === 'fno-benchmark') {
setCurrentView('fno-benchmark');
} else if (demoId === 'image-classifier') {
setCurrentView('image-classifier');
} else if (demoId === 'timeseries-forecast') {
setCurrentView('timeseries-forecast');
} else if (demoId === 'portfolio-optimizer') {
setCurrentView('portfolio-optimizer');
} else if (demoId === 'risk-analyzer') {
setCurrentView('risk-analyzer');
} else if (demoId === 'pinn-benchmark') {
setCurrentView('pinn-benchmark');
} else if (demoId === 'inference-profiler') {
setCurrentView('inference-profiler');
} else if (demoId === 'object-detector') {
setCurrentView('object-detector');
} else if (demoId === 'model-zoo') {
setCurrentView('model-zoo');
} else if (demoId === 'segmentation') {
setCurrentView('segmentation');
}
};
// Handle back navigation to landing
const handleBackToLanding = () => {
setCurrentView('landing');
};
// Render current view
switch (currentView) {
case 'hemodynamics':
return <HemodynamicsDemo onBack={handleBackToLanding} />;
case 'mre-elastography':
return <MreDemo onBack={handleBackToLanding} />;
case 'heat-transfer':
return <ThermalAblationDemo onBack={handleBackToLanding} />;
case 'slidescope':
return <SlidescopeDemo onBack={handleBackToLanding} />;
case 'neuro':
return <NeuroDemo onBack={handleBackToLanding} />;
case 'neural-operator':
return <NeuralOperatorDemo onBack={handleBackToLanding} />;
case 'piddm':
return <PIDDMDemo onBack={handleBackToLanding} />;
case 'digital-twin':
return <DigitalTwinDemo onBack={handleBackToLanding} />;
case 'fno-benchmark':
return <FNOBenchmarkDemo onBack={handleBackToLanding} />;
case 'image-classifier':
return <ImageClassifierDemo onBack={handleBackToLanding} />;
case 'timeseries-forecast':
return <TimeSeriesForecastDemo onBack={handleBackToLanding} />;
case 'portfolio-optimizer':
return <PortfolioOptimizerDemo onBack={handleBackToLanding} />;
case 'risk-analyzer':
return <RiskAnalyzerDemo onBack={handleBackToLanding} />;
case 'pinn-benchmark':
return <PINNBenchmarkDemo onBack={handleBackToLanding} />;
case 'inference-profiler':
return <InferenceProfilerDemo onBack={handleBackToLanding} />;
case 'object-detector':
return <ObjectDetectorDemo onBack={handleBackToLanding} />;
case 'model-zoo':
return <ModelZooDemo onBack={handleBackToLanding} />;
case 'segmentation':
return <SegmentationDemo onBack={handleBackToLanding} />;
case 'landing':
default:
return <LandingPage onSelectDemo={handleSelectDemo} />;
}
}
export default App;