Filter teams

This commit is contained in:
Rodrigo Pedroso 2019-06-26 16:41:49 -04:00
commit c83200cd1c
3 changed files with 41 additions and 9 deletions

View file

@ -0,0 +1,18 @@
import React from 'react'
export default function FilterForm({ filterCallback }) {
let updateInput = (e) => {
e.preventDefault()
console.log(JSON.stringify(e, 0, 2))
filterCallback(e)
}
return (
<form>
<div className="form-group">
<label htmlFor="title">Filter </label>
<input onChange={filterCallback} />
</div>
</form>
)
}

View file

@ -6,9 +6,11 @@ export default function Team({ teams, users, selectTeam, selectUser }) {
<ul className='list'> <ul className='list'>
{teams.map(team => ( {teams.map(team => (
<li className = 'list-item' key={team.id}> <li className = 'list-item' key={team.id}>
<button onClick={() => selectTeam(team.name)}> <div>
{ team.name } <button onClick={() => selectTeam(team.name)}>
</button> { team.name }
</button>
</div>
</li> </li>
))} ))}
</ul> </ul>

View file

@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react'
import axios from 'axios' import axios from 'axios'
import config from '../config.json' import config from '../config.json'
import Team from '../components/Team.jsx' import Team from '../components/Team.jsx'
import FilterForm from '../components/FilterForm.jsx'
export default function Home() { export default function Home() {
// MARK: State // MARK: State
@ -11,18 +12,19 @@ export default function Home() {
let [teams, setTeams] = useState([]) let [teams, setTeams] = useState([])
let [users, setUsers] = useState([]) let [users, setUsers] = useState([])
let [teamDetails, setTeamDetails] = useState([]) let [teamDetails, setTeamDetails] = useState([])
let [filteredTeams, setFilteredTeams] = useState([])
// MARK: Effects // MARK: Effects
// MARK: - Load teams from Tempo backend on initialization // MARK: - Load teams
useEffect(() => { useEffect(() => {
let fetchData = async() => { let fetchData = async() => {
setLoading(true) setLoading(true)
try { try {
let result = await axios(config.api + '/team/') let result = await axios(config.api + '/team/')
if (result.data) { if (result.data) {
console.log('teams fetched')
setTeams(result.data) setTeams(result.data)
setFilteredTeams(result.data)
} }
setLoading(false) setLoading(false)
} }
@ -97,18 +99,28 @@ export default function Home() {
console.log('Selected user ' + selectedUser) console.log('Selected user ' + selectedUser)
} }
let filterCallback = (e) => {
let filtered = teams.filter(team => {
return team.name.toUpperCase().includes(e.target.value.toUpperCase())
})
setFilteredTeams(filtered)
}
// MARK: Return // MARK: Return
return ( return (
<div className='home'> <div className='home'>
<h1>Tempo</h1> <h1>Tempo</h1>
<FilterForm filterCallback = { filterCallback } />
{loading || loadingUsers ? (<div>Loading...</div>) : ( {loading || loadingUsers ? (<div>Loading...</div>) : (
teams !== undefined && teams !== undefined &&
<Team <Team
teams = {teams} teams = { filteredTeams }
users = {users} users = { users }
selectTeam = {selectTeam} selectTeam = { selectTeam }
selectUser = {selectUser} selectUser = { selectUser }
/> />
)} )}