Filtering team members
This commit is contained in:
parent
acba2bd655
commit
8520c6e30d
3 changed files with 35 additions and 25 deletions
|
@ -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">
|
||||||
|
|
|
@ -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'>
|
||||||
|
|
|
@ -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>
|
||||||
|
@ -67,16 +91,17 @@ export default function Team(props) {
|
||||||
<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>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue