summaryrefslogtreecommitdiff
path: root/client/components/LoggedInView.jsx
blob: 5c7a69054f4ee655f20a76741b8d269ce6677a31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import React from 'react'
import ModalDialog from './ModalDialog.jsx'
import UserList from './UserList.jsx'
import MealList from './MealList.jsx'

import client from '../client'

export default class LoggedInView extends React.Component {
  constructor(props) {
    super()
    this.state = {
      user: Object.assign({}, props.user),
      mode: 'meals',
    }
    this.updateUser = this.updateUser.bind(this)
    this.toggleMode = this.toggleMode.bind(this)
  }
  toggleMode(){
    this.state.mode = this.state.mode == 'meals' ? 'users' : 'meals'
  }
  updateUser(user) {
    this.setState({
      user: user
    })
  }
  render() {
    let activity = null
    if (this.state.mode == 'meals') {
      activity = (<MealList user={this.state.user} currentUser={this.props.user} />)
    }
    else {
      activity = (<UserList user={this.state.user} currentUser={this.props.user} updateUser={this.updateUser} />)
    }
    return (
      <div>
        <Menu mode={this.state.mode}
              user={this.state.user}
              toggleMode={this.toggleMode}
              currentUser={this.props.user}
              updateUser={this.updateUser} />
        {activity}
      </div>
    )
  }
}


class Menu extends React.Component {
  constructor() {
    super()
    this.setGoal = this.setGoal.bind(this)
    this.logout = this.logout.bind(this)
  }
  setGoal() {
    const goal = Math.abs(parseInt(prompt('Please enter your calorie goal', this.props.user.goal)))
    if (goal) {
      client.service('users').patch(this.props.user.id, {
        goal: goal,
        token: client.get('token'),
      }).then((user) => {
        this.props.updateUser(user)
      })
    }
  }
  logout() {
    client.logout().then(() => {
      window.location.reload()
    })
  }
  render() {
    const user = this.props.user
    const items = []
    items.push( <li key='hello'>Hello {user.email}</li> )
    items.push( <li key='goal'><a href='#' onClick={this.setGoal}>Goal</a>: {user.goal}</li> )
    switch (user.role) {
      case 'admin':
        if (this.props.user.id !== this.props.currentUser.id) {
          items.push( <li key='resetUser'><a href='#' onClick={this.resetUser}>Reset User</a></li> )
        }
        items.push( <li key='userlist'><a href='#' onClick={this.props.toggleMode}>Users</a></li> )
        items.push( <li key='userlist'><a href='#' onClick={this.props.toggleMode}>Meals</a></li> )
        break
      case 'manager':
        items.push( <li key='userlist'><a href='#' onClick={this.props.toggleMode}>Users</a></li> )
        items.push( <li key='userlist'><a href='#' onClick={this.props.toggleMode}>Meals</a></li> )
      case 'user':
        break
    }
    items.push( <li key='logout'><a href='#' onClick={this.logout}>Logout</a></li> )

    return (
      <div>
        <ul className='menu'>
          {items}
        </ul>
      </div>
    )
    // <ProfileModal user={user} visible={false} onClose={() => {}} />
  }
}


// class ProfileModal extends React.Component {
//   render() {
//     return (
//       <ModalDialog visible={this.props.visible} onClose={this.props.onClose}>
//       </ModalDialog>
//     )
//   }
// }