From d47fe0d33845697448be5086e54f01bd27f5fa3a Mon Sep 17 00:00:00 2001 From: Tatyana Date: Fri, 29 Aug 2025 13:36:40 +0300 Subject: [PATCH] =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D0=B9=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=B4=D0=BD=D0=B5?= =?UTF-8?q?=D0=B9=20=D0=BF=D0=BE=20=D0=BF=D0=BE=D1=80=D1=8F=D0=B4=D0=BA?= =?UTF-8?q?=D1=83,=20=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=BD=D1=8B=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/icons/test.tsx | 6 +++++ src/pages/CourseExercises.tsx | 42 ++++++++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 src/components/icons/test.tsx diff --git a/src/components/icons/test.tsx b/src/components/icons/test.tsx new file mode 100644 index 0000000..cf3a061 --- /dev/null +++ b/src/components/icons/test.tsx @@ -0,0 +1,6 @@ + const allExercises = course_exercises; + const uniqueDays = Array.from(new Set(allExercises.map(ex => ex.day))).sort((a, b) => a - b); + const dayMap: { [key: number]: number } = {}; + uniqueDays.forEach((day, index) => { + dayMap[day] = index + 1; // номера начинаются с 1 + }); \ No newline at end of file diff --git a/src/pages/CourseExercises.tsx b/src/pages/CourseExercises.tsx index ff50f12..7db2412 100644 --- a/src/pages/CourseExercises.tsx +++ b/src/pages/CourseExercises.tsx @@ -1,5 +1,7 @@ "use client" +import React from 'react'; + import { useState, useEffect } from "react"; import { useParams, useHistory, useLocation } from "react-router-dom"; @@ -12,6 +14,7 @@ import { getRouteExercise } from "../shared/consts/router"; import { ArrowIcon } from "../components/icons/ArrowIcon"; import type { Course } from "../pages/Courses"; +// import { Exercise } from "./Exercise"; export interface CourseExercises { id_course: number; @@ -21,6 +24,7 @@ export interface CourseExercises { position: number; repeats: number; time: string; + DeletedAt: string | null; } interface Exercise { @@ -64,7 +68,7 @@ export const CourseExercises = () => { }) .then(response => { console.log('Response status:', response.status); - console.log('Данные:', response.data); + console.log('Данные страницы упражнения курса:', response.data); // setPacientData(response.data); setExercises(response.data.course_exercises); @@ -92,31 +96,49 @@ export const CourseExercises = () => { }, [course_exercises]); - 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; + const allExercises = course_exercises; + const uniqueDays = Array.from(new Set(allExercises.map(ex => ex.day))).sort((a, b) => a - b); + const dayMap: { [key: number]: number } = {}; + uniqueDays.forEach((day, index) => { + dayMap[day] = index + 1; // номера начинаются с 1 + }); + +const daysNav = uniqueDays.map(day => dayMap[day]); + + const days = Array.from(new Set(course_exercises.map(ex => ex.day))).sort((a, b) => a - b); + + + + + + //тут выводим дни из БД + return ( - - -
- +
-{/* Это выражение использует оператор опциональной цепочки (?.) и оператор нулевого слияния (??). + {/* Это выражение использует оператор опциональной цепочки (?.) и оператор нулевого слияния (??). Если course не null и не undefined, то взять его свойство title, иначе — вернуть undefined*/} -
- {/* Заголовок секции */} -
+

Упражнения

Количество упражнений: {course_exercises.length}
+

{uniqueDays}

+ + {/*

{JSON.stringify(course_exercises)}

*/} + + +{daysNav} {/* Кнопки выбора дня */} {days.length > 1 && (