"use client" import { useEffect, useState } from "react"; import { useHistory } from "react-router-dom"; import { CalendarIcon } from "../components/icons/CalendarIcon"; import { DumbbellIcon } from "../components/icons/DumbbellIcon"; import HeaderNav from "../components/HeaderNav"; import BottomNavigation from "../components/BottomNavigation"; import CircularProgressDisplay from "../components/CircularProgressDisplay"; import { StatCardHome } from "../components/cards/StatCardHome"; import { WorkoutCardHome } from "../components/cards/WorkoutCardHome"; import { connect } from '../confconnect'; import { getRouteExercise } from "../shared/consts/router"; import { getRouteCourses } from "../shared/consts/router"; import { getRouteCourseExercises } from "../shared/consts/router"; import type { Course, User, CoursesApiResponse } from "../types/course"; //НАЧАЛО // export default function Home() { const history = useHistory(); const [currentDate, setCurrentDate] = useState(""); const [, setError] = useState(''); const [courses, setCourses] = useState([]); const [loading, setLoading] = useState(true); const token = localStorage.getItem('authToken'); const exerciseProgress = localStorage.getItem('exerciseProgress'); const currentProgress = localStorage.getItem('currentProgress') useEffect(() => { console.log(token) if (!token) { setError('Токен не найден'); setLoading(false); return; } setCurrentDate( new Date().toLocaleDateString("ru-RU", { year: "numeric", month: "long", day: "numeric", }), ) setLoading(true) connect .get("/pacient/courses") .then((response) => { console.log("Response data:", response.data) const users = response.data.courses || [] const allCourses: Course[] = [] users.forEach((user: User) => { if (user.Courses && Array.isArray(user.Courses)) { user.Courses.forEach((course) => { allCourses.push({ ID: course.ID, title: course.title, desc: course.desc, url_file_img: course.url_file_img, course_exercises: course.course_exercises, }) }) } }) setCourses(allCourses) setError("") }) .catch((error) => { if (error.response) { console.error("Ошибка ответа сервера:", error.response.status, error.response.data) setError(`Ошибка сервера: ${error.response.status}`) } else if (error.request) { console.error("Нет ответа от сервера:", error.request) setError("Нет ответа от сервера") } else { console.error("Ошибка при настройке запроса:", error.message) setError(`Ошибка: ${error.message}`) } }) .finally(() => { setLoading(false) }) }, [token]) // Расчет статистики / выполненные где брать??? const totalCourses = courses.length const totalExercises = courses.reduce((sum, course) => { if (course.course_exercises && Array.isArray(course.course_exercises)) { return sum + course.course_exercises.length } return sum + Math.floor(Math.random() * 10) + 5 }, 0) const overallProgress = courses.length > 0 ? Math.floor(Math.random() * 100) : 0 const handleWorkoutClick = () => { history.push(getRouteExercise()) } const handleBackClick = () => { history.goBack() } const handleCoursesClick = () => { history.push(getRouteCourses()) } const handleExercisesClick = () => { if (courses.length > 0) { history.push(getRouteCourseExercises(courses[0].ID.toString())) } else { history.push(getRouteCourses()) } } if (loading) { return (
Загрузка данных...
) } return (
Все курсы
{totalCourses}/?
Все упражнения
{totalExercises}/?
{/* Текущее упражнение */} {/* Quick Stats (Total Exercises & Total Courses) */}

Взяли из локального хранилища:

надо считать прогресс исходя из выполненных/ вопрос: то есть, если выполнено, то как его исключить / как флаг проставлять?== все курсы мы вяли из ручки курсов, назначенные по роутингу (пути в router.ts) надо достать текущий курс. который не выполнен. как узнать, что курс выполнен?== мы берем данные для текущей тренировки, которые записываются с помощью post, --оттуда достаем данные для текущего упражнения, которое записано (1 строка в БД всегда), а потом переходим на это упражнение. и еще - мы считаем по индексу отображение, это же не повлияет на вывод итоговый на домашней странице, например?

exerciseProgress:{exerciseProgress}

currentProgress{currentProgress}

) }