Filter teams
This commit is contained in:
parent
dd479ec289
commit
c83200cd1c
3 changed files with 41 additions and 9 deletions
18
src/components/FilterForm.jsx
Normal file
18
src/components/FilterForm.jsx
Normal 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>
|
||||||
|
)
|
||||||
|
}
|
|
@ -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}>
|
||||||
|
<div>
|
||||||
<button onClick={() => selectTeam(team.name)}>
|
<button onClick={() => selectTeam(team.name)}>
|
||||||
{ team.name }
|
{ team.name }
|
||||||
</button>
|
</button>
|
||||||
|
</div>
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -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 }
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue