2019-06-26 18:25:30 -04:00
|
|
|
// MARK: Definitions
|
|
|
|
import React, { useState, useEffect } from 'react'
|
|
|
|
import axios from 'axios'
|
2019-06-27 17:07:02 -04:00
|
|
|
import history from '../history.js'
|
2019-06-26 18:25:30 -04:00
|
|
|
import config from '../config.json'
|
|
|
|
import FilterForm from '../components/FilterForm.jsx'
|
|
|
|
|
2019-06-27 17:07:02 -04:00
|
|
|
// teamProps, usersProps, userIdCallback
|
|
|
|
export default function Team(props) {
|
2019-06-26 18:25:30 -04:00
|
|
|
// MARK: State
|
|
|
|
let [loading, setLoading] = useState(true)
|
|
|
|
let [team, setTeam] = useState([])
|
|
|
|
let [filteredTeams, setFilteredTeams] = useState([])
|
|
|
|
|
|
|
|
// MARK: Effect
|
|
|
|
// MARK: - Load user info from Tempo backend on initialization
|
|
|
|
useEffect(() => {
|
|
|
|
let fetchData = async() => {
|
|
|
|
setLoading(true)
|
|
|
|
try {
|
2019-06-27 17:07:02 -04:00
|
|
|
let result = await axios(config.api + '/team/' + props.teamProps.id)
|
2019-06-26 18:25:30 -04:00
|
|
|
if (result.data) {
|
|
|
|
setTeam(result.data)
|
|
|
|
}
|
|
|
|
setLoading(false)
|
|
|
|
}
|
|
|
|
catch(err) {
|
|
|
|
setLoading(false)
|
|
|
|
console.log('Fetch data error: ' + err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fetchData()
|
2019-06-27 17:07:02 -04:00
|
|
|
}, [props])
|
2019-06-26 18:25:30 -04:00
|
|
|
|
2019-06-27 17:07:02 -04:00
|
|
|
// MARK: Helpers
|
|
|
|
let userData = (userId) => {
|
|
|
|
let arr = props.usersProps.filter(el => el.id === userId)
|
|
|
|
return arr[0].name
|
|
|
|
}
|
2019-06-26 18:25:30 -04:00
|
|
|
|
2019-06-27 17:07:02 -04:00
|
|
|
let selectUser = (id) => {
|
|
|
|
props.userIdCallback(id)
|
|
|
|
history.push('/member')
|
|
|
|
}
|
|
|
|
|
|
|
|
let navBack = () => {
|
|
|
|
history.push('/')
|
|
|
|
}
|
2019-06-26 18:25:30 -04:00
|
|
|
|
|
|
|
// MARK: Return
|
|
|
|
return (
|
|
|
|
<div className='user'>
|
2019-06-27 17:07:02 -04:00
|
|
|
<button onClick={navBack}>Back</button>
|
2019-06-26 18:25:30 -04:00
|
|
|
|
2019-06-27 17:07:02 -04:00
|
|
|
{props.teamProps !== undefined &&
|
|
|
|
<h1>{props.teamProps.name}</h1>
|
2019-06-26 18:25:30 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
{loading ? (<div>Loading...</div>) : (
|
|
|
|
team !== undefined &&
|
2019-06-27 17:07:02 -04:00
|
|
|
<div>
|
|
|
|
<h2>Team lead</h2>
|
|
|
|
|
|
|
|
<p>{ userData(team.lead) }</p>
|
|
|
|
|
|
|
|
<h2>Team members</h2>
|
|
|
|
|
|
|
|
<ul className='list'>
|
|
|
|
{team.members.map((member, index) => (
|
|
|
|
<li className = 'list-item' key={index}>
|
|
|
|
<button onClick={() => selectUser(member)}>
|
|
|
|
{ userData(member) }
|
|
|
|
</button>
|
|
|
|
</li>
|
|
|
|
))}
|
|
|
|
</ul>
|
|
|
|
</div>
|
2019-06-26 18:25:30 -04:00
|
|
|
)}
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|