import { RenderLoadingQuery } from "@/core/ui/Widgets/RenderLoadingQuery";
import { ExerciseImageAvatar, getLanguageByShortName, Language, useLanguageQuery } from "@/components/Exercises";
import { getDayName } from "@/components/Routines/models/Day";
import { RoutineDayData } from "@/components/Routines/models/RoutineDayData";
import { SetConfigData } from "@/components/Routines/models/SetConfigData";
import { SlotData } from "@/components/Routines/models/SlotData";
import { useRoutineDetailQuery } from "@/components/Routines/queries";
import { isSameDay } from "@/core/lib/date";
import { makeLink, WgerLink } from "@/core/lib/url";
import { Addchart } from "@mui/icons-material";
import TodayIcon from '@mui/icons-material/Today';
import {
Box,
Card,
CardContent,
CardHeader,
Chip,
Container,
Divider,
IconButton,
Stack,
Typography,
useTheme
} from "@mui/material";
import Grid from '@mui/material/Grid';
import Tooltip from "@mui/material/Tooltip";
import React from "react";
import { useTranslation } from "react-i18next";
import { useParams } from "react-router-dom";
export const RoutineDetailsCard = () => {
const params = useParams<{ routineId: string }>();
const routineId = parseInt(params.routineId ?? '');
if (Number.isNaN(routineId)) {
return
Please pass an integer as the routine id.
;
}
// eslint-disable-next-line react-hooks/rules-of-hooks
const routineQuery = useRoutineDetailQuery(routineId);
return
{routineQuery.data?.description !== ''
&&
{routineQuery.data?.description}
}
{routineQuery.data!.dayDataCurrentIterationFiltered.map((dayData) =>
)}
>}
/>
;
};
export function SetConfigDataDetails(props: {
setConfigData: SetConfigData,
rowHeight?: undefined | string,
marginBottom?: undefined | string,
showExercise: boolean,
}) {
const { t, i18n } = useTranslation();
const languageQuery = useLanguageQuery();
let language: Language | undefined = undefined;
if (languageQuery.isSuccess) {
language = getLanguageByShortName(
i18n.language,
languageQuery.data!
);
}
return (
{props.showExercise && (props.setConfigData.exercise
? props.setConfigData.exercise.getTranslation(language).name
: t('routines.exerciseNotAvailable'))}
{props.setConfigData.textRepr}
{props.setConfigData.isSpecialType &&
}
{props.setConfigData.comment}
);
}
function SlotDataList(props: { slotData: SlotData }) {
return (
}>
{props.slotData.exercises.map((exercise) =>
)}
{props.slotData.setConfigs.map((setConfig, index) => {
const showExercise = index === 0 || setConfig.exerciseId !== props.slotData.setConfigs[index - 1]?.exerciseId;
return ;
})}
);
}
export const DayDetailsCard = (props: { dayData: RoutineDayData, routineId: number, readOnly?: boolean }) => {
const readOnly = (props.readOnly ?? false) || props.dayData.day === null || props.dayData.day.isRest;
const theme = useTheme();
const [t, i18n] = useTranslation();
const isToday = isSameDay(props.dayData.date, new Date());
const subheader = {props.dayData.day?.description};
return (
}
title={{getDayName(props.dayData.day)}}
avatar={isToday ? : null}
subheader={subheader}
/>
{props.dayData.slots.length > 0 &&
{props.dayData.slots.map((slotData, index) => (
))}
}
);
};