Newer
Older
import {
Button,
import KSZKlogo from './images/kszk_logo.svg';
import { Link } from 'react-router-dom';
import { connect } from 'react-redux';
// Objects that will be converted to menu items in the render method
const menuItems = [
{
text: 'Főoldal',
to: '/home',
prefix: (
<Image size="mini" src={KSZKlogo} style={{ marginRight: '1.5em' }} />
),
},
{
text: 'Hírek',
to: '/news',
prefix: '',
},
{
text: 'Köreink',
to: '/groups',
prefix: '',
},
{
text: 'Ütemterv',
to: '/schedule',
prefix: '',
{
text: 'Mentorok',
to: '/mentors',
prefix: '',
{
text: 'Statisztika',
to: '/statistics',
prefix: '',
},
{
text: 'Jelentkezések',
to: '/applications',
prefix: '',
permissionLevel: 3,
{
text: 'Házi feladatok',
to: '/homework',
prefix: '',
class Header extends Component {
constructor(props) {
super(props);
this.state = {
handleOpen = () => {
this.setState({ isOpen: true });
handleClose = () => {
this.setState({ isOpen: false });
renderHeader(inHeader) {
let renderedItemNum = 0;
let current = 0;
let maxNum = 0;
if (this.props.user.id) {
maxNum = menuItems.filter(
(item) => this.props.user.permission >= item.permissionLevel
).length;
if (item.permissionLevel === 0) {
<Menu.Item key={Math.random()} as={Link} to={item.to}>
{item.prefix}
{item.text}
</Menu.Item>
);
{/* After default menu items */}
{menuItems.map((item, i) => {
if (
this.props.user.permission >= item.permissionLevel &&
item.permissionLevel > 0 &&
renderedItemNum < inHeader &&
current < i
) {
<Menu.Item key={Math.random()} as={Link} to={item.to}>
{item.prefix}
{item.text}
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
{this.props.user.id && current + 1 < maxNum ? (
<Popup
flowing
hoverable
inverted
trigger={
<Menu.Item>
<Icon name="angle down" size="large" />
</Menu.Item>
}
position="top center"
>
<Menu inverted secondary size="large">
{menuItems.map((item, i) =>
this.props.user.permission >= item.permissionLevel &&
item.permissionLevel > 0 &&
current < i ? (
<Menu.Item key={Math.random()} as={Link} to={item.to}>
{item.prefix}
{item.text}
</Menu.Item>
) : null
)}
</Menu>
</Popup>
) : null}
<Menu.Item position="right">
{this.props.user.id ? (
<Button.Group>
<Button inverted as={Link} to="/profile">
Profilom
</Button>
<Button as="a" href="/api/v1/logout/" icon="sign out" />
</Button.Group>
) : (
<Button as="a" href="/api/v1/login/authsch/" inverted>
Bejelentkezés
</Button>
)}
</Menu.Item>
</Menu>
</Container>
</Segment>
render() {
<div>
<Responsive minWidth={600} maxWidth={700}>
{this.renderHeader(3)}
</Responsive>
<Responsive minWidth={701} maxWidth={800}>
{this.renderHeader(4)}
</Responsive>
<Responsive minWidth={801} maxWidth={1000}>
{this.renderHeader(5)}
</Responsive>
<Responsive minWidth={1001} maxWidth={1100}>
{this.renderHeader(6)}
</Responsive>
<Responsive minWidth={1101} maxWidth={1200}>
{this.renderHeader(7)}
</Responsive>
<Responsive minWidth={1201}>{this.renderHeader(8)}</Responsive>
{/* kszk logo + home link */}
<Menu.Item as={Link} to={menuItems[0].to}>
{menuItems[0].prefix}
{menuItems[0].text}
</Menu.Item>
trigger={
<Menu.Item onClick={this.handleClose} position="right">
<Icon name="bars" size="large" />
<Menu vertical inverted secondary size="large">
{menuItems.map((item, i) =>
(this.props.user.permission >= item.permissionLevel ||
item.permissionLevel === 0) &&
i > 0 ? (
<Menu.Item
onClick={this.handleClose}
key={Math.random()}
as={Link}
to={item.to}
>
{item.prefix}
{item.text}
</Menu.Item>
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
{this.props.user.id ? (
<Button.Group>
<Button
onClick={this.handleClose}
inverted
as={Link}
to="/profile"
>
Profilom
</Button>
<Button
onClick={this.handleClose}
as="a"
href="/api/v1/logout/"
icon="sign out"
/>
</Button.Group>
) : (
<Button
onClick={this.handleClose}
as="a"
href="/api/v1/login/authsch/"
inverted
>
Bejelentkezés
</Button>
)}
</Segment>
</div>
);
}
}
const mapStateToProps = ({ user }) => ({
user,
});
export default connect(mapStateToProps, { getUserData })(Header);