import { useState } from "react"; import { Button } from "react-bootstrap"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faCalendarDays, faPenToSquare } from "@fortawesome/free-solid-svg-icons"; import { MealGroup } from "../../../types"; import { formatDateString } from "../Utils"; import MealGroupForm from "./MealGroupForm"; import MealGroupDays from "./MealGroupDays"; type Props = { group: MealGroup, expanded: boolean, onToggle: () => void, onFilled: () => void, }; /** Kolik jídel skupiny daný údaj nemá — "u všech", nebo "3 z 5". */ const describeMissing = (missing: number, count: number): string => missing === count ? 'u všech' : `${missing} z ${count}`; /** * Řádek skupiny jídel (stejný název a zdroj) s přehledem chybějících údajů. * Po rozbalení nabídne formulář, kterým se údaje doplní všem jídlům skupiny, * a dny, kdy se jídlo jedlo, jako odkazy na přehled dne. */ const MealGroupRow = ({ group, expanded, onToggle, onFilled }: Readonly) => { const [daysOpen, setDaysOpen] = useState(false); return (
{group.name}
{group.source && {group.source}} {group.count}× · naposledy {formatDateString(group.lastDate)} {group.missingCaloriesCount > 0 && ( bez kalorií {describeMissing(group.missingCaloriesCount, group.count)} )} {group.missingWeightCount > 0 && ( bez gramáže {describeMissing(group.missingWeightCount, group.count)} )} {group.missingNutrientsCount > 0 && ( bez živin {describeMissing(group.missingNutrientsCount, group.count)} )}
{!expanded && ( )}
{(expanded || daysOpen) && } {expanded && onToggle()} />}
); }; export default MealGroupRow;