frontend/smart-hut/src/views/Navbar.js

189 lines
6.2 KiB
JavaScript
Raw Normal View History

2020-03-13 14:21:33 +00:00
import React, { Component } from 'react';
2020-03-22 16:58:27 +00:00
import { Menu, Grid, Icon, Responsive, Segment, Dropdown } from "semantic-ui-react";
2020-03-13 14:21:33 +00:00
import {editButtonStyle} from "../components/dashboard/devices/styleComponents";
import ModalWindow from "../components/modalform";
class Navbar extends Component {
constructor(props) {
super(props);
this.state = {
2020-03-19 10:49:00 +00:00
activeItemName: 'Home',
2020-03-22 16:58:27 +00:00
activeItem: -1,
edited: "",
editMode : false
2020-03-13 14:21:33 +00:00
}
}
2020-03-18 16:12:29 +00:00
editModeController = (e) => this.setState((prevState) => ({ editMode: !prevState.editMode }));
2020-03-13 14:21:33 +00:00
2020-03-19 10:49:00 +00:00
handleClick = (e, {id, name}) => {
2020-03-19 10:52:13 +00:00
let obj = undefined;
this.props.rooms.forEach((e) => {
if (e.id === id) {
obj = e;
}
});
2020-03-22 16:58:27 +00:00
this.setState({
activeItem: id,
activeRoom: obj,
activeItemName: name
});
2020-03-18 11:46:28 +00:00
this.props.handleItemClick(id)
2020-03-13 14:21:33 +00:00
}
render(){
2020-03-18 11:46:28 +00:00
//const { activeItem } = this.state
2020-03-13 14:21:33 +00:00
return (
2020-03-23 12:22:30 +00:00
<div style={{background: '#1b1c1d!important'}}>
2020-03-13 14:21:33 +00:00
<Segment.Group>
2020-03-18 16:12:29 +00:00
<Responsive as={Segment} minWidth={768}>
2020-03-13 14:21:33 +00:00
<Grid>
2020-03-14 14:25:55 +00:00
<Grid.Row color='black'>
2020-03-13 14:21:33 +00:00
<button style={editButtonStyle} onClick={this.editModeController}>Edit</button>
</Grid.Row>
2020-03-14 14:25:55 +00:00
<Grid.Row color='black'>
2020-03-13 14:21:33 +00:00
<Menu inverted fluid vertical>
<Menu.Item
2020-03-18 11:46:28 +00:00
key={-1}
2020-03-19 10:52:13 +00:00
id={-1}
2020-03-13 14:21:33 +00:00
name='Home'
2020-03-22 16:58:27 +00:00
active={this.state.activeItem === -1}
2020-03-13 14:21:33 +00:00
onClick={this.handleClick}
>
<Grid>
<Grid.Row>
<Grid.Column>
<Icon name="home" size="small"/>
</Grid.Column>
<Grid.Column>
HOME
2020-03-13 14:21:33 +00:00
</Grid.Column>
</Grid.Row>
</Grid>
</ Menu.Item>
{this.props.rooms ?
this.props.rooms.map((e, i) => {
return (
<Menu.Item
2020-03-14 14:25:55 +00:00
id={e.id}
2020-03-13 14:21:33 +00:00
key={i}
name={e.name}
2020-03-18 11:46:28 +00:00
active={this.state.activeItem === e.id}
2020-03-13 14:21:33 +00:00
onClick={this.handleClick}
>
<Grid>
<Grid.Row>
<Grid.Column>
2020-03-14 14:25:55 +00:00
<Icon name={e.icon} size="small"/>
2020-03-13 14:21:33 +00:00
</Grid.Column>
<Grid.Column width={8}>
2020-03-13 14:21:33 +00:00
{e.name}
</Grid.Column>
<Grid.Column floated="right">
2020-03-22 16:58:27 +00:00
{this.state.editMode ?
<ModalWindow type="modify" idRoom={e} updateRoom={this.props.updateRoom} deleteRoom={this.props.deleteRoom}/>
: null
}
2020-03-13 14:21:33 +00:00
</Grid.Column>
</Grid.Row>
</Grid>
</ Menu.Item>
)
}) : null
}
<Menu.Item
name='newM'
2020-03-18 11:46:28 +00:00
active={this.state.activeItem === 'newM'}
2020-03-13 14:21:33 +00:00
>
<Grid>
<Grid.Row centered name='new'>
2020-03-14 14:25:55 +00:00
<ModalWindow type="new" addRoom={this.props.addRoom}/>
2020-03-13 14:21:33 +00:00
</Grid.Row>
</Grid>
</ Menu.Item>
</Menu>
</Grid.Row>
</Grid>
</Responsive>
2020-03-18 16:12:29 +00:00
2020-03-13 14:21:33 +00:00
<Responsive as={Segment} maxWidth={768}>
2020-03-18 16:12:29 +00:00
<Menu inverted>
2020-03-19 10:49:00 +00:00
<Dropdown item fluid text={this.state.activeItemName}>
2020-03-18 16:12:29 +00:00
<Dropdown.Menu>
<Dropdown.Item
key={-1}
2020-03-23 01:17:13 +00:00
id={-1}
2020-03-18 16:12:29 +00:00
name='Home'
active={this.state.activeItem === 'Home'}
onClick={this.handleClick}>
<Grid>
<Grid.Row>
<Grid.Column>
<Icon name="home" size="small"/>
</Grid.Column>
<Grid.Column>
Home
</Grid.Column>
</Grid.Row>
</Grid>
</Dropdown.Item>
{this.props.rooms ?
this.props.rooms.map((e, i) => {
return (
<Dropdown.Item
id={e.id}
key={i}
name={e.name}
active={this.state.activeItem === e.id}
onClick={this.handleClick}
>
<Grid>
<Grid.Row>
<Grid.Column width={1}>
<Icon name={e.icon} size="small"/>
</Grid.Column>
<Grid.Column>
{e.name}
</Grid.Column>
</Grid.Row>
</Grid>
</ Dropdown.Item>
)
}) : null
}
</Dropdown.Menu>
</Dropdown>
2020-03-23 12:22:30 +00:00
</Menu >
<Grid inverted>
2020-03-22 16:58:27 +00:00
<Grid.Row>
<Grid.Column width={8}>
2020-03-23 12:22:30 +00:00
<ModalWindow type="new" addRoom={this.props.addRoom} />
2020-03-22 16:58:27 +00:00
</Grid.Column>
2020-03-23 12:22:30 +00:00
{
this.state.activeItem !== -1 ?
<Grid.Column width={8}>
<ModalWindow type="modify" idRoom={this.state.activeRoom} updateRoom={this.props.updateRoom} deleteRoom={this.props.deleteRoom}/>
</Grid.Column>
: null
}
2020-03-22 16:58:27 +00:00
</Grid.Row>
</Grid>
2020-03-13 14:21:33 +00:00
</Responsive>
2020-03-21 11:33:01 +00:00
2020-03-13 14:21:33 +00:00
</Segment.Group>
</div>
);
}
}
export default Navbar;