99 lines
2.6 KiB
React
Raw Normal View History

2016-04-19 21:45:49 -04:00
import React from 'react';
2016-04-29 23:59:13 -04:00
import {browserHistory} from 'react-router';
2016-04-19 21:45:49 -04:00
import Header from './components/Header.jsx';
import Sidebar from './components/Sidebar.jsx';
import Footer from './components/Footer.jsx';
import HiddenSidebar from './components/HiddenSidebar.jsx';
class App extends React.Component {
constructor(props) {
super(props);
this.facServStatus = this.facServStatus.bind(this);
this.getSaves = this.getSaves.bind(this);
this.getStatus = this.getStatus.bind(this);
this.state = {
serverRunning: "stopped",
serverStatus: {},
saves: [],
2016-04-29 23:59:13 -04:00
loggedIn: true,
}
}
// Check if state.loggedIn is true, if so continue, else redirect to /login page.
componentWillMount() {
if (!this.state.loggedIn) {
browserHistory.push("/login");
}
}
facServStatus() {
$.ajax({
url: "/api/server/status",
dataType: "json",
success: (data) => {
this.setState({serverRunning: data.data.status})
}
})
}
getSaves() {
$.ajax({
url: "/api/saves/list",
dataType: "json",
success: (data) => {
this.setState({saves: data.data})
},
error: (xhr, status, err) => {
console.log('api/mods/list', status, err.toString());
}
})
2016-04-19 21:45:49 -04:00
}
getStatus() {
$.ajax({
url: "/api/server/status",
dataType: "json",
success: (data) => {
this.setState({serverStatus: data.data})
},
error: (xhr, status, err) => {
console.log('api/server/status', status, err.toString());
}
})
}
2016-04-19 21:45:49 -04:00
render() {
return(
<div className="wrapper" style={{height: "100%"}}>
2016-04-19 21:45:49 -04:00
<Header />
<Sidebar
serverStatus={this.facServStatus}
serverRunning={this.state.serverRunning}
/>
{React.cloneElement(
this.props.children,
{message: "",
facServStatus: this.facServStatus,
serverStatus: this.state.serverStatus,
getStatus: this.getStatus,
saves: this.state.saves,
getSaves: this.getSaves}
)}
2016-04-19 21:45:49 -04:00
<Footer />
<HiddenSidebar
serverStatus={this.state.serverStatus}
/>
2016-04-19 21:45:49 -04:00
</div>
)
}
}
export default App