1 import * as React from 'react';
\r
2 import { HashRouter as Router, Route, Redirect, Switch } from 'react-router-dom';
\r
4 import { withStyles, WithStyles, createStyles, Theme } from '@material-ui/core/styles';
\r
5 import { faHome, faAddressBook, faSignInAlt } from '@fortawesome/free-solid-svg-icons';
\r
7 import AppFrame from '../components/routing/appFrame';
\r
8 import TitleBar from '../components/titleBar';
\r
9 import Menu from '../components/navigationMenu';
\r
10 import ErrorDisplay from '../components/errorDisplay';
\r
11 import SnackDisplay from '../components/material-ui/snackDisplay';
\r
13 import Home from '../views/home';
\r
14 import Login from '../views/login';
\r
15 import About from '../views/about';
\r
16 import Test from '../views/test';
\r
18 import applicationService from '../services/applicationManager';
\r
19 import { SnackbarProvider } from 'notistack';
\r
21 const styles = (theme: Theme) => createStyles({
\r
27 position: 'relative',
\r
33 flexDirection: "column",
\r
34 backgroundColor: theme.palette.background.default,
\r
35 padding: theme.spacing.unit * 3,
\r
36 minWidth: 0, // So the Typography noWrap works
\r
38 toolbar: theme.mixins.toolbar
\r
41 export const Frame = withStyles(styles)(({ classes }: WithStyles<typeof styles>) => {
\r
42 const registrations = applicationService.applications;
\r
44 <SnackbarProvider maxSnack={3}>
\r
46 <div className={ classes.root }>
\r
51 <main className={ classes.content }>
\r
52 <div className={ classes.toolbar } />
\r
54 <Route exact path="/" component={ () => (
\r
55 <AppFrame title={ "Home" } icon={ faHome } >
\r
59 <Route path="/about" component={ () => (
\r
60 <AppFrame title={ "About" } icon={ faAddressBook } >
\r
64 { process.env.NODE_ENV === "development" ? <Route path="/test" component={() => (
\r
65 <AppFrame title={"Test"} icon={faAddressBook} >
\r
69 <Route path="/login" component={ () => (
\r
70 <AppFrame title={ "Login" } icon={ faSignInAlt } >
\r
74 { Object.keys(registrations).map(p => {
\r
75 const application = registrations[p];
\r
76 return (<Route key={ application.name } path={ application.path || `/${ application.name }` } component={ () => (
\r
77 <AppFrame title={ application.title || (typeof application.menuEntry === 'string' && application.menuEntry) || application.name } icon={ application.icon } appId={application.name} >
\r
78 <application.rootComponent />
\r
91 export default Frame;
\r