Filtering team members

This commit is contained in:
Rodrigo Pedroso 2019-06-27 18:23:50 -04:00
commit 8520c6e30d
3 changed files with 35 additions and 25 deletions

View file

@ -1,12 +1,6 @@
import React from 'react' import React from 'react'
export default function FilterForm({ filterCallback }) { export default function FilterForm({ filterCallback }) {
let updateInput = (e) => {
e.preventDefault()
console.log(JSON.stringify(e, 0, 2))
filterCallback(e)
}
return ( return (
<form> <form>
<div className="form-group"> <div className="form-group">

View file

@ -20,9 +20,12 @@ export default function Member(props) {
let result = await axios(config.api + '/user/' + props.userId) let result = await axios(config.api + '/user/' + props.userId)
if (result.data) { if (result.data) {
setUser(result.data) setUser(result.data)
result.data.member_teams.map(teamId => { result.data.member_teams.map(teamId => {
let arr = props.teams.filter(el => el.id === teamId) let arr = props.teams.filter(el => el.id === teamId)
setTeamNames(t => [...t, arr[0].name]) setTeamNames(t => [...t, arr[0].name])
return null
}) })
} }
setLoading(false) setLoading(false)
@ -36,25 +39,13 @@ export default function Member(props) {
fetchData() fetchData()
}, [props]) }, [props])
// useEffect(() => {
// user.member_teams.map(teamId => {
// let arr = props.teams.filter(el => el.id === teamId)
// setTeamNames(t => [...t, arr[0].name])
// return null
// })
// }, [props, user])
// MARK: Helpers // MARK: Helpers
let teamData = (teamId) => {
let arr = props.teams.filter(el => el.id === teamId)
return arr[0].name
}
let navBack = () => { let navBack = () => {
history.push('/team') history.push('/team')
} }
// MARK: Return // MARK: Return
return ( return (
<div className='user'> <div className='user'>

View file

@ -10,7 +10,8 @@ export default function Team(props) {
// MARK: State // MARK: State
let [loading, setLoading] = useState(true) let [loading, setLoading] = useState(true)
let [team, setTeam] = useState([]) let [team, setTeam] = useState([])
let [filteredTeams, setFilteredTeams] = useState([]) let [members, setMembers] = useState([])
let [filteredMembers, setFilteredMembers] = useState([])
// MARK: Effect // MARK: Effect
// MARK: - Load user info from Tempo backend on initialization // MARK: - Load user info from Tempo backend on initialization
@ -21,6 +22,18 @@ export default function Team(props) {
let result = await axios(config.api + '/team/' + props.teamProps.id) let result = await axios(config.api + '/team/' + props.teamProps.id)
if (result.data) { if (result.data) {
setTeam(result.data) setTeam(result.data)
result.data.members.map(memberId => {
let arr = props.usersProps.filter(el => el.id === memberId)
let tupple = {
name: arr[0].name,
id: memberId
}
setMembers(t => [...t, tupple])
setFilteredMembers(t => [...t, tupple])
return null
})
} }
setLoading(false) setLoading(false)
} }
@ -44,6 +57,14 @@ export default function Team(props) {
history.push('/member') history.push('/member')
} }
let filterCallback = (e) => {
let filtered = members.filter(member => {
return member.name.toUpperCase().includes(e.target.value.toUpperCase())
})
setFilteredMembers(filtered)
}
let navBack = () => { let navBack = () => {
history.push('/') history.push('/')
} }
@ -51,12 +72,15 @@ export default function Team(props) {
// MARK: Return // MARK: Return
return ( return (
<div className='user'> <div className='user'>
<button onClick={navBack}>Back</button> <button onClick={navBack}>Back</button>
{props.teamProps !== undefined && {props.teamProps !== undefined &&
<h1>{props.teamProps.name}</h1> <h1>{props.teamProps.name}</h1>
} }
<FilterForm filterCallback = { filterCallback } />
{loading ? (<div>Loading...</div>) : ( {loading ? (<div>Loading...</div>) : (
team !== undefined && team !== undefined &&
<div> <div>
@ -65,18 +89,19 @@ export default function Team(props) {
<p>{ userData(team.lead) }</p> <p>{ userData(team.lead) }</p>
<h2>Team members</h2> <h2>Team members</h2>
<ul className='list'> <ul className='list'>
{team.members.map((member, index) => ( {filteredMembers.map((member, index) => (
<li className = 'list-item' key={index}> <li className = 'list-item' key={index}>
<button onClick={() => selectUser(member)}> <button onClick={() => selectUser(member.id)}>
{ userData(member) } {member.name}
</button> </button>
</li> </li>
))} ))}
</ul> </ul>
</div> </div>
)} )}
</div> </div>
) )
} }