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")}
>
);
};