import { LoadingPlaceholder } from "@/core/ui/LoadingWidget/LoadingWidget"; import { WgerModal } from "@/core/ui/Modals/WgerModal"; import { EmptyCard } from "@/components/Dashboard/EmptyCard"; import { Meal, MealItem, NutritionalPlan, NutritionalValuesDashboardChart, NutritionDiaryEntryForm, PlanForm, useAddDiaryEntryQuery, useFetchLastNutritionalPlanQuery } from "@/components/Nutrition"; import { SNACKBAR_AUTO_HIDE_DURATION } from "@/core/lib/consts"; import { dateTimeToLocaleHHMM } from "@/core/lib/date"; import { numberGramLocale } from "@/core/lib/numbers"; import { makeLink, WgerLink } from "@/core/lib/url"; import ExpandLessIcon from "@mui/icons-material/ExpandLess"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import HistoryEduIcon from "@mui/icons-material/HistoryEdu"; import PhotoIcon from "@mui/icons-material/Photo"; import { Alert, Avatar, Button, Collapse, IconButton, List, ListItem, ListItemAvatar, ListItemButton, ListItemIcon, ListItemText, Snackbar, } from "@mui/material"; import Tooltip from "@mui/material/Tooltip"; import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { DashboardCard } from "./DashboardCard"; export const NutritionCard = () => { const [t] = useTranslation(); const planQuery = useFetchLastNutritionalPlanQuery(); if (planQuery.isLoading) { return ; } return planQuery.data !== null ? ( ) : ( } modalTitle={t("add")} /> ); }; function NutritionCardContent(props: { plan: NutritionalPlan }) { const [t, i18n] = useTranslation(); const [openLogModal, setOpenLogModal] = React.useState(false); const handleOpenLogModal = () => setOpenLogModal(true); const handleCloseLogModal = () => setOpenLogModal(false); return ( <> } > {props.plan.meals.map((meal) => ( ))} ); } const MealListItem = (props: { meal: Meal; planId: string }) => { const [t, i18n] = useTranslation(); const addDiaryEntryQuery = useAddDiaryEntryQuery(props.planId); const [expandView, setExpandView] = useState(false); const [openSnackbar, setOpenSnackbar] = React.useState(false); const handleToggleExpand = () => setExpandView(!expandView); const handleCloseSnackbar = (event?: React.SyntheticEvent | Event, reason?: string) => { if (reason === "clickaway") { return; } setOpenSnackbar(false); }; const handleAddDiaryEntry = (item: MealItem) => { addDiaryEntryQuery.mutate(item.diaryEntry(props.planId)); setOpenSnackbar(true); }; const primaryHeader = props.meal.name ? props.meal.name : dateTimeToLocaleHHMM(props.meal.time); const secondaryHeader = props.meal.name ? dateTimeToLocaleHHMM(props.meal.time) : null; return ( <> {expandView ? : } {props.meal.items.map((item) => ( handleAddDiaryEntry(item)}> } > ))} {t("nutrition.diaryEntrySaved")} ); };