import React, {Component} from 'react'; import DevicePanel from "../components/dashboard/DevicePanel"; import Navbar from './Navbar' import MyHeader from '../components/HeaderController' import { call } from '../client_server'; import { Grid, Responsive } from 'semantic-ui-react' /* rooms -> actual rooms activeItem -> the current room in view devices -> current device in current room view id of Home is -1 */ export default class Dashboard extends Component{ constructor(props) { super(props); this.state = { rooms: [], activeItem: -1, devices: [], tkn: this.props.tkn, }; this.addRoom = this.addRoom.bind(this); this.deleteRoom = this.deleteRoom.bind(this); this.updateRoom = this.updateRoom.bind(this); this.addDevice = this.addDevice.bind(this); this.handleItemClick = this.handleItemClick.bind(this); } getDevices() { if (this.state.activeItem === -1) { call.getAllDevices() .then(res => { if ( res.status === 200) { console.log(res.data) this.setState({ devices: res.data }); } }).catch(err => { console.log(err); }); } else { call.getAllDevicesByRoom(this.state.activeItem) .then(res => { if (res.status === 200) { this.setState({ devices: res.data }); } }).catch(err => { }); } } getRooms() { call.getAllRooms(this.props.tkn) .then(res => { this.setState({ rooms: res.data }) }).catch(err => { }); } componentDidMount() { this.getRooms(); this.getDevices(); } addRoom(data) { call.createRoom(data) .then(res => { if (res.status === 200 && res.data) { this.getRooms(); } }).catch(err => { console.log(err); }); }; deleteRoom() { let data = { id : this.state.activeItem } call.deleteRoom(data) .then(res => { //remove room in state.rooms this.getRooms(); }).catch(err => { console.log(err); }); } updateRoom(data) { data.id = this.state.activeItem; call.updateRoom(data) .then(res => { if (res.status === 200 && res.data) { this.getRooms(); this.forceUpdate(); } }).catch(err => { }) } handleItemClick(id) { // el -> obj of name and id //da fare richiesta get della room e settare activeItem this.setState({ activeItem: id }); if ( id === -1) { call.getAllDevices(this.props.tkn) .then(res => { if ( res.status === 200) { this.setState({ devices: res.data }); } }).catch(err => { console.log(err); }); } else { call.getAllDevicesByRoom(id, this.props.tkn) .then(res => { if (res.status === 200) { this.setState({ devices: res.data }); this.forceUpdate(); } }).catch(err => { console.log(err); }); } } addDevice(data) { data.params["roomId"] = this.state.activeItem; call.devicePost(data, this.props.tkn) .then(res => { this.setState(state => ({ devices: state.devices.concat([res.data]) })); return this.state.devices; }).catch(err => { }); } render () { return(
) } }