import React, { useState, useEffect } from 'react' import LoadingIndicator from '../LoadingIndicator.js' import TodoCard from './todoCard.js' import constants from '../../constants.json' import styles from './todoTable.module.css' export default function TodoTable() { const [cards, setCards] = useState(null) const [columns, setColumns] = useState(null) const [categories, setCategories] = useState(null) const [userId, setUserId] = useState(null) useEffect(() => { console.info('Fetching todos') fetch(`${constants.apiUrl}todos`, { credentials: 'include', }) .then((resp) => { return resp.json() }) .then((data) => { setTodos(data) }) }, []) const setTodos = (data) => { setCards( data.todos.cards.sort((a, b) => { return b.votes.length - a.votes.length }) ) setColumns(data.todos.columns) setCategories(data.todos.categories) setUserId(data.userId) } const onCardClick = (id) => { fetch(`${constants.apiUrl}todos?id=${id}`, { credentials: 'include', }) .then((resp) => { return resp.json() }) .then((data) => { setTodos(data) }) } if (!cards || !columns || !categories) { return } return (
{Object.keys(columns).map((key) => { const category = columns[key] return (
{category.name}
{cards.map((card, i) => { if (card.state === key) { return ( ) } else { return null } })}
) })}
) }