import { h } from 'preact'; import styles from './GameList.module.css'; /** * List of games with filter and delete options. * @param {object} props * @param {object[]} props.games * @param {string} props.filter * @param {Function} props.setFilter * @param {Function} props.onShowGameDetail * @param {Function} props.onDeleteGame * @returns {import('preact').VNode} */ const GameList = ({ games, filter = 'all', setFilter, onShowGameDetail, onDeleteGame }) => { // Filter and sort games const filteredGames = games .filter(game => { if (filter === 'active') return game.status === 'active'; if (filter === 'completed') return game.status === 'completed'; return true; }) .sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt)); return (
{filteredGames.length === 0 ? (
Keine Spiele vorhanden
) : ( filteredGames.map(game => { const playerNames = game.player3 ? `${game.player1} vs ${game.player2} vs ${game.player3}` : `${game.player1} vs ${game.player2}`; const scores = game.player3 ? `${game.score1} - ${game.score2} - ${game.score3}` : `${game.score1} - ${game.score2}`; return (
onShowGameDetail(game.id)} role="button" tabIndex={0} aria-label={`Details für Spiel ${playerNames}`}>
{game.gameType}{game.raceTo ? ` | ${game.raceTo}` : ''}
{playerNames}
{scores}
); }) )}
); }; export default GameList;