2018-04-12 21:57:16 -04:00
|
|
|
import * as _ from 'lodash';
|
|
|
|
import { Component } from 'inferno';
|
2018-04-03 15:19:45 -04:00
|
|
|
import { BrowserRouter, Link, NavLink } from 'inferno-router';
|
2018-04-12 21:57:16 -04:00
|
|
|
import { Loader } from './components';
|
2018-04-03 15:19:45 -04:00
|
|
|
import {
|
2018-04-03 21:47:41 -04:00
|
|
|
Container,
|
2018-04-03 15:19:45 -04:00
|
|
|
Nav,
|
|
|
|
Navbar,
|
|
|
|
NavbarBrand,
|
|
|
|
NavItem,
|
|
|
|
} from './components/Bootstrap';
|
2018-04-03 14:13:16 -04:00
|
|
|
import { Routes } from './Routes';
|
2018-03-30 21:30:22 -04:00
|
|
|
|
2018-04-12 21:57:16 -04:00
|
|
|
export class App extends Component {
|
|
|
|
constructor (props) {
|
|
|
|
super(props);
|
|
|
|
|
|
|
|
this.state = {
|
|
|
|
webSocketLoaded: false,
|
|
|
|
};
|
|
|
|
|
|
|
|
_.bindAll(this, [
|
|
|
|
'onWebSocketOpen',
|
|
|
|
'onWebSocketClose',
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
componentDidMount () {
|
2018-04-17 14:12:55 -04:00
|
|
|
window.clientWS = new WebSocket('ws://localhost:65432/');
|
2018-04-12 21:57:16 -04:00
|
|
|
|
|
|
|
window.clientWS.addEventListener('open', this.onWebSocketOpen);
|
|
|
|
window.clientWS.addEventListener('message', console);
|
|
|
|
window.clientWS.addEventListener('close', this.onWebSocketClose);
|
|
|
|
}
|
|
|
|
|
|
|
|
componentWillUnmount () {
|
|
|
|
if (window.clientWS) {
|
|
|
|
window.clientWS.close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
onWebSocketOpen () {
|
|
|
|
this.setState({
|
|
|
|
webSocketLoaded: true,
|
|
|
|
});
|
|
|
|
|
2018-04-13 23:28:55 -04:00
|
|
|
window.clientWS.onmessage = message => {
|
|
|
|
console.info(JSON.parse(message.data));
|
|
|
|
};
|
2018-04-12 21:57:16 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
onWebSocketClose () {
|
|
|
|
console.log('WebSocket closed');
|
|
|
|
}
|
|
|
|
|
|
|
|
render () {
|
|
|
|
return (
|
|
|
|
<BrowserRouter>
|
|
|
|
<Container className="full-height" tag="bs-container">
|
|
|
|
<Navbar className="static-top" color="dark" dark expandable="sm">
|
|
|
|
<NavbarBrand to="/" tag={Link}>Film Exif</NavbarBrand>
|
|
|
|
<Nav fill pills>
|
|
|
|
<NavItem>
|
|
|
|
<NavLink className="nav-link" to="/camera/list">Cameras</NavLink>
|
|
|
|
</NavItem>
|
|
|
|
<NavItem>
|
|
|
|
<NavLink className="nav-link" to="/film/add">Films</NavLink>
|
|
|
|
</NavItem>
|
|
|
|
<NavItem>
|
|
|
|
<NavLink className="nav-link" to="/oops">Oops</NavLink>
|
|
|
|
</NavItem>
|
|
|
|
</Nav>
|
|
|
|
</Navbar>
|
|
|
|
<Routes />
|
|
|
|
<Loader title="Connecting to WebSocket" hidden={this.state.webSocketLoaded} />
|
|
|
|
</Container>
|
|
|
|
</BrowserRouter>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|