85 lines
2.2 KiB
JavaScript
85 lines
2.2 KiB
JavaScript
import React from 'react';
|
|
import Templates from 'config/templates';
|
|
import House from './../../models/house';
|
|
import PowerDatum from './../../models/power_datum';
|
|
import {RouteHelper} from './../routes';
|
|
|
|
class LayoutComponent extends React.Component {
|
|
|
|
constructor(props, context){
|
|
super(props, context);
|
|
this.renders = 0;
|
|
this.state = {
|
|
houses: null,
|
|
house: null,
|
|
requesting_data: true
|
|
};
|
|
}
|
|
|
|
componentDidMount() {
|
|
var layout = this;
|
|
House.ensureHouses().then((houses)=>{
|
|
var house = null;
|
|
if (layout.props.params.house_id != undefined){
|
|
house = houses.find((h)=>{ return h.data.id == layout.props.params.house_id; });
|
|
var route_helper = new RouteHelper(house, layout.props);
|
|
if (route_helper.paramsHaveDateState()) route_helper.updateHouseToParams();
|
|
}
|
|
layout.setState({
|
|
houses: houses,
|
|
requesting_data: false,
|
|
house: house });
|
|
});
|
|
}
|
|
|
|
setHouse(event){
|
|
var layout = this,
|
|
house_id = event.target.value,
|
|
old_house = layout.state.house,
|
|
house = layout.state.houses.find((house)=>{ return house.data.id == house_id });
|
|
if (!old_house || old_house.id != house_id){
|
|
var route_helper = new RouteHelper(house, layout.props);
|
|
route_helper.updateHouseToParams();
|
|
layout.setState({house: house}, ()=>{
|
|
if (layout.renders < 10){
|
|
layout.context.router.push(route_helper.newRoute());
|
|
layout.renders += 1
|
|
}
|
|
if (old_house) old_house.closeDb();
|
|
});
|
|
}
|
|
}
|
|
|
|
refreshData(){
|
|
var layout = this,
|
|
houses = layout.state.houses,
|
|
all = [];
|
|
houses.forEach((house)=>{
|
|
all.push(house.clearData());
|
|
});
|
|
Promise.all(all)
|
|
.then(()=>{
|
|
window.location.reload();
|
|
});
|
|
}
|
|
|
|
getChildContext(){
|
|
var layout = this;
|
|
return {house: layout.state.house};
|
|
}
|
|
|
|
render() {
|
|
var layoutRt = Templates.forComponent('layout');
|
|
return layoutRt.call(this);
|
|
}
|
|
}
|
|
|
|
LayoutComponent.contextTypes = {
|
|
router: React.PropTypes.object.isRequired
|
|
};
|
|
|
|
LayoutComponent.childContextTypes = {
|
|
house: React.PropTypes.instanceOf(House)
|
|
};
|
|
export default LayoutComponent;
|