flowviz
Version:
A framework which provides seamless integration with other phylogenetic tools and frameworks, while allowing workflow scheduling and execution, through the Apache Airflow workflow system.
105 lines (100 loc) • 3.65 kB
JavaScript
import { ThemeProvider } from "@mui/material/styles";
import React from "react";
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
import NavBar from "./component/navbar/navBar";
import Config from "./config/dev-config.json";
import { Theme } from "./config/theme";
import useNavBar from "./hooks/useNavBar";
import About from "./page/about";
import Documentation from "./page/documentation";
import ErrorPage from "./page/errorPage";
import Home from "./page/home";
import Login from "./page/login";
import PostTool from "./page/postTool";
import Profile from "./page/profile";
import Register from "./page/register";
import Submission from "./page/submission";
import ToolPage from "./page/toolPage";
import Whiteboard from "./page/whiteboard";
import Workflow from "./page/workflow";
import WorkflowList from "./page/workflowList";
import AuthService from "./service/authService";
import ToolService from "./service/toolService";
import WorkflowService from "./service/workflowService";
import PrivateRoute from "./util/privateRoute";
export default function App() {
// Custom hook for pages with side drawer
const [drawerList, setDrawerList] = useNavBar();
const config = Config.server;
const apiBaseUrl = `${config.appProtocol}://${config.address}:${config.port}/flowapi`;
// Services
const authService = new AuthService(apiBaseUrl);
const workflowService = new WorkflowService(apiBaseUrl);
const toolService = new ToolService(apiBaseUrl);
return (
<ThemeProvider theme={Theme}>
<Router basename="/flowviz">
<NavBar drawerList={drawerList}>
<Routes>
<Route exact path={"/"} element={<Home />} />
<Route path={"/about"} element={<About />} />
<Route
exact
path={"/documentation"}
element={<Documentation toolService={toolService} />}
/>
<Route
exact
path={"/documentation/:toolName"}
element={<ToolPage toolService={toolService} />}
/>
<Route
path={"/tool"}
element={<PostTool toolService={toolService} />}
/>
<Route
path={"/login"}
element={<Login authService={authService} />}
/>
<Route
path={"/register"}
element={<Register authService={authService} />}
/>
<Route element={<PrivateRoute />}>
<Route
path="/profile"
element={<Profile authService={authService} />}
/>
<Route
path="/workflow"
element={<WorkflowList workflowService={workflowService} />}
/>
<Route
path="/workflow/:name"
element={<Workflow workflowService={workflowService} />}
/>
<Route
path={"/whiteboard"}
element={
<Whiteboard
toolService={toolService}
workflowService={workflowService}
setDrawerList={setDrawerList}
/>
}
/>
</Route>
<Route path="/submission" element={<Submission />} />
<Route
path="*"
element={
<ErrorPage statusCode={404} errorText="Page not found!" />
}
/>
</Routes>
{/* <Copyright sx={{ mt: 8, mb: 4 }} /> */}
</NavBar>
</Router>
</ThemeProvider>
);
}