125 lines
5.2 KiB
TypeScript
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;
|