"use client" import { useState, useEffect } from "react" import { useParams, useHistory, useLocation } from "react-router-dom" import HeaderNav from "../components/HeaderNav" import BottomNavigation from "../components/BottomNavigation" import { connect } from "../confconnect" import { getRouteExerciseByIndex } from "../shared/consts/router" import { ArrowIcon } from "../components/icons/ArrowIcon" import type { Course } from "../pages/Courses" export interface CourseExercises { id: number id_course: number id_exercise: number exercise: Exercise day: number position: number repeats: number time: string DeletedAt: string | null } interface Exercise { id: number title: string } export const CourseExercises = () => { const history = useHistory() const { id } = useParams<{ id: string }>() const location = useLocation<{ course?: Course }>() const course = location.state?.course const [course_exercises, setExercises] = useState([]) const [selectedDay, setSelectedDay] = useState(null) const token = localStorage.getItem("authToken") useEffect(() => { console.log(token) if (!token) { console.log("Токен не найден") return } connect .get(`/pacient/${id}`, { headers: { Authorization: `Bearer ${token}`, "Content-Type": "application/json", }, }) .then((response) => { console.log("Данные упражнения курса:", response.data.course_exercises) setExercises(response.data.course_exercises) }) .catch((error) => { if (error.response) { console.error("Ошибка ответа сервера:", error.response.status, error.response.data) } else if (error.request) { console.error("Нет ответа от сервера:", error.request) } else { console.error("Ошибка при настройке запроса:", error.message) } }) }, []) useEffect(() => { if (course_exercises.length > 0 && selectedDay === null) { setSelectedDay(course_exercises[0].day) } }, [course_exercises]) const uniqueDays = Array.from(new Set(course_exercises.map((ex) => ex.day))).sort((a, b) => a - b) const dayMap: { [key: number]: number } = {} uniqueDays.forEach((day, index) => { dayMap[day] = index + 1 }) console.log('Уникальные дни', uniqueDays) const daysNav = uniqueDays.map((day) => dayMap[day]) const days = Array.from(new Set(course_exercises.map((ex) => ex.day))).sort((a, b) => a - b) const filteredExercises = selectedDay !== null ? course_exercises.filter((ex) => ex.day === selectedDay) : course_exercises console.log("отфильтрованный список по дням", filteredExercises) return (

Упражнения

Количество упражнений: {course_exercises.length}
{days.length > 1 && (
{days.map((day, index) => ( ))}
)}
{filteredExercises.length > 0 ? ( filteredExercises.map((item, index) => (
{ history.push( getRouteExerciseByIndex( item.id_course.toString(), index, // Используем индекс из отфильтрованного массива selectedDay || undefined, // Передаем выбранный день для контекста ), ) }} className="p-4 mb-4 cursor-pointer hover:scale-105 transition duration-300 glass-morphism rounded-3xl border border-white/50 shadow-2xl overflow-hidden backdrop-blur-2xl relative" >

Упражнение {index + 1}

{item.exercise.title}

Повторений: {item.repeats}

Время выполнения: {item.time}

)) ) : (

Нет упражнений для отображения

)}
) }