From 8520c6e30d8ca485b22cf4120e5c9c7a823d65a4 Mon Sep 17 00:00:00 2001 From: Rodrigo Pedroso <> Date: Thu, 27 Jun 2019 18:23:50 -0400 Subject: [PATCH] Filtering team members --- src/components/FilterForm.jsx | 6 ------ src/views/Member.jsx | 17 ++++------------ src/views/Team.jsx | 37 +++++++++++++++++++++++++++++------ 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/src/components/FilterForm.jsx b/src/components/FilterForm.jsx index 1da1866..f3ce5b8 100644 --- a/src/components/FilterForm.jsx +++ b/src/components/FilterForm.jsx @@ -1,12 +1,6 @@ import React from 'react' export default function FilterForm({ filterCallback }) { - let updateInput = (e) => { - e.preventDefault() - console.log(JSON.stringify(e, 0, 2)) - filterCallback(e) - } - return (
diff --git a/src/views/Member.jsx b/src/views/Member.jsx index 924b8f0..12838cd 100644 --- a/src/views/Member.jsx +++ b/src/views/Member.jsx @@ -20,9 +20,12 @@ export default function Member(props) { let result = await axios(config.api + '/user/' + props.userId) if (result.data) { setUser(result.data) + result.data.member_teams.map(teamId => { let arr = props.teams.filter(el => el.id === teamId) setTeamNames(t => [...t, arr[0].name]) + + return null }) } setLoading(false) @@ -36,25 +39,13 @@ export default function Member(props) { fetchData() }, [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 - let teamData = (teamId) => { - let arr = props.teams.filter(el => el.id === teamId) - return arr[0].name - } - let navBack = () => { history.push('/team') } + // MARK: Return return (
diff --git a/src/views/Team.jsx b/src/views/Team.jsx index a14b08a..d867eb6 100644 --- a/src/views/Team.jsx +++ b/src/views/Team.jsx @@ -10,7 +10,8 @@ export default function Team(props) { // MARK: State let [loading, setLoading] = useState(true) let [team, setTeam] = useState([]) - let [filteredTeams, setFilteredTeams] = useState([]) + let [members, setMembers] = useState([]) + let [filteredMembers, setFilteredMembers] = useState([]) // MARK: Effect // 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) if (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) } @@ -44,6 +57,14 @@ export default function Team(props) { history.push('/member') } + let filterCallback = (e) => { + let filtered = members.filter(member => { + return member.name.toUpperCase().includes(e.target.value.toUpperCase()) + }) + + setFilteredMembers(filtered) + } + let navBack = () => { history.push('/') } @@ -51,12 +72,15 @@ export default function Team(props) { // MARK: Return return (
+ {props.teamProps !== undefined && -

{props.teamProps.name}

+

{props.teamProps.name}

} + + {loading ? (
Loading...
) : ( team !== undefined &&
@@ -65,18 +89,19 @@ export default function Team(props) {

{ userData(team.lead) }

Team members

- +
    - {team.members.map((member, index) => ( + {filteredMembers.map((member, index) => (
  • -
  • ))}
)} +
) }