Team tests (ongoing)
This commit is contained in:
parent
f2303fb70c
commit
97509a85d7
7 changed files with 283 additions and 230 deletions
|
@ -1,127 +1,123 @@
|
|||
// MARK: Definitions
|
||||
import React, { useState, useEffect } from 'react'
|
||||
import axios from 'axios'
|
||||
import history from '../history.js'
|
||||
import config from '../config.json'
|
||||
import history from '../history.js'
|
||||
import FilterForm from '../components/FilterForm.jsx'
|
||||
import './Team.scss'
|
||||
|
||||
// teamProps, usersProps, userIdCallback
|
||||
export default function Team(props) {
|
||||
// MARK: State
|
||||
let [loading, setLoading] = useState(true)
|
||||
let [team, setTeam] = useState([])
|
||||
let [members, setMembers] = useState([])
|
||||
let [filteredMembers, setFilteredMembers] = useState([])
|
||||
// MARK: State
|
||||
let [team, setTeam] = useState([])
|
||||
let [members, setMembers] = useState([])
|
||||
let [filteredMembers, setFilteredMembers] = useState([])
|
||||
|
||||
// MARK: Effect
|
||||
// MARK: - Load user info from Tempo backend on initialization
|
||||
useEffect(() => {
|
||||
let fetchData = async() => {
|
||||
setLoading(true)
|
||||
try {
|
||||
let result = await axios(config.api + '/team/' + props.teamProps.id)
|
||||
if (result.data) {
|
||||
setTeam(result.data)
|
||||
// MARK: Effect
|
||||
// MARK: - Load user info from Tempo backend on initialization
|
||||
useEffect(() => {
|
||||
let fetchData = async () => {
|
||||
try {
|
||||
let result = await axios(props.url)
|
||||
if (result.data) {
|
||||
setTeam(result.data)
|
||||
|
||||
result.data.members.map(memberId => {
|
||||
let arr = props.usersProps.filter(el => el.id === memberId)
|
||||
if (arr[0] !== undefined) {
|
||||
let tupple = {
|
||||
name: arr[0].name,
|
||||
id: memberId
|
||||
}
|
||||
setMembers(t => [...t, tupple])
|
||||
setFilteredMembers(t => [...t, tupple])
|
||||
}
|
||||
else {
|
||||
history.push('/')
|
||||
}
|
||||
result.data.members.map(memberId => {
|
||||
let arr = props.users.filter(el => el.id === memberId)
|
||||
if (arr[0] !== undefined) {
|
||||
let tupple = {
|
||||
name: arr[0].name,
|
||||
id: memberId
|
||||
}
|
||||
setMembers(t => [...t, tupple])
|
||||
setFilteredMembers(t => [...t, tupple])
|
||||
} else {
|
||||
history.push('/')
|
||||
}
|
||||
|
||||
return null
|
||||
})
|
||||
}
|
||||
else {
|
||||
history.push('/')
|
||||
}
|
||||
setLoading(false)
|
||||
}
|
||||
catch(err) {
|
||||
setLoading(false)
|
||||
console.log('Fetch data error: ' + err)
|
||||
}
|
||||
}
|
||||
return null
|
||||
})
|
||||
} else {
|
||||
history.push('/')
|
||||
}
|
||||
} catch (err) {
|
||||
console.log('Fetch data error: ' + err)
|
||||
}
|
||||
}
|
||||
|
||||
fetchData()
|
||||
}, [props])
|
||||
fetchData()
|
||||
}, [props])
|
||||
|
||||
// MARK: Helpers
|
||||
let userData = (userId) => {
|
||||
let arr = props.usersProps.filter(el => el.id === userId)
|
||||
if (arr[0] !== undefined) {
|
||||
return arr[0].name
|
||||
}
|
||||
else {
|
||||
history.push('/')
|
||||
}
|
||||
}
|
||||
// MARK: Helpers
|
||||
let userData = userId => {
|
||||
if (props.users === undefined) {
|
||||
history.push('/')
|
||||
} else {
|
||||
let arr = props.users.filter(el => el.id === userId)
|
||||
|
||||
let selectUser = (id) => {
|
||||
props.userIdCallback(id)
|
||||
history.push('/member')
|
||||
}
|
||||
if (arr[0] !== undefined) {
|
||||
return arr[0].name
|
||||
} else {
|
||||
history.push('/')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let filterCallback = (e) => {
|
||||
let filtered = members.filter(member => {
|
||||
return member.name.toUpperCase().includes(e.target.value.toUpperCase())
|
||||
})
|
||||
let selectUser = id => {
|
||||
props.cb(id)
|
||||
history.push('/member')
|
||||
}
|
||||
|
||||
setFilteredMembers(filtered)
|
||||
}
|
||||
let filterCallback = e => {
|
||||
let filtered = members.filter(member => {
|
||||
return member.name.toUpperCase().includes(e.target.value.toUpperCase())
|
||||
})
|
||||
|
||||
let navBack = () => {
|
||||
history.push('/')
|
||||
}
|
||||
setFilteredMembers(filtered)
|
||||
}
|
||||
|
||||
// MARK: Return
|
||||
return (
|
||||
<div className='team'>
|
||||
let navBack = () => {
|
||||
history.push('/')
|
||||
}
|
||||
|
||||
{props.teamProps !== undefined &&
|
||||
<div className='header'>
|
||||
<h1>Team {props.teamProps.name}</h1>
|
||||
</div>
|
||||
}
|
||||
// MARK: Return
|
||||
return (
|
||||
<div className="team">
|
||||
{props.team !== undefined && (
|
||||
<div className="header">
|
||||
<h1>Team {props.team.name}</h1>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className='back'>
|
||||
<button className='back-btn' onClick={navBack}>{`< Back to teams`}</button>
|
||||
</div>
|
||||
<div className="back">
|
||||
<button className="back-btn" onClick={navBack}>{`< Back to teams`}</button>
|
||||
</div>
|
||||
|
||||
<FilterForm filterCallback = { filterCallback } />
|
||||
<FilterForm filterCallback={filterCallback} />
|
||||
|
||||
{loading ? (<div>Loading...</div>) : (
|
||||
team !== undefined &&
|
||||
<div>
|
||||
<h2>Team lead</h2>
|
||||
{team.length == 0 ? (
|
||||
<div data-testId="loading">Loading...</div>
|
||||
) : (
|
||||
team !== undefined && (
|
||||
<div>
|
||||
<h2>Team lead</h2>
|
||||
|
||||
<button className='selector-btn' onClick={() => selectUser(team.lead)}>
|
||||
{userData(team.lead)}
|
||||
</button>
|
||||
<button data-testId="resolved" className="selector-btn" onClick={() => selectUser(team.lead)}>
|
||||
{userData(team.lead)}
|
||||
</button>
|
||||
|
||||
<h2>Team members</h2>
|
||||
<h2>Team members</h2>
|
||||
|
||||
<ul className='list'>
|
||||
{filteredMembers.map((member, index) => (
|
||||
<li className = 'list-item' key={index}>
|
||||
<button className='selector-btn' onClick={() => selectUser(member.id)}>
|
||||
{member.name}
|
||||
</button>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
)}
|
||||
|
||||
</div>
|
||||
)
|
||||
<ul className="list">
|
||||
{filteredMembers.map((member, index) => (
|
||||
<li className="list-item" key={index}>
|
||||
<button className="selector-btn" onClick={() => selectUser(member.id)}>
|
||||
{member.name}
|
||||
</button>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
)
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue