From a6da1129c9b3ba64afaa40fe70a90580a222f293 Mon Sep 17 00:00:00 2001 From: kilyabin <65072190+kilyabin@users.noreply.github.com> Date: Thu, 5 Mar 2026 12:32:48 +0400 Subject: [PATCH] fix(schedule): hide empty days and lessons, update design and fonts --- src/app/parser/schedule.ts | 8 +++++++- src/pages/teacher/[teacher].tsx | 26 +------------------------- 2 files changed, 8 insertions(+), 26 deletions(-) diff --git a/src/app/parser/schedule.ts b/src/app/parser/schedule.ts index 709cc24..12c4dc8 100644 --- a/src/app/parser/schedule.ts +++ b/src/app/parser/schedule.ts @@ -525,6 +525,9 @@ function parseTeacherSchedule( subject: subject || groupShort || group || roomText, } + // Если нет предмета и группы, это пустая пара + if (!subject && !groupShort && !group) continue + if (location || roomText) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error — расширяем union тип за счет наличия place @@ -545,6 +548,9 @@ function parseTeacherSchedule( }) } + // Фильтруем пустые дни для преподавателей + const filteredDays = days.filter(day => day.lessons.length > 0) + // Извлекаем wk из URL const currentUrl = url || document.location?.href || '' const wkMatch = currentUrl.match(/[?&]wk=(\d+)/) @@ -570,7 +576,7 @@ function parseTeacherSchedule( } return { - days, + days: filteredDays, currentWk, availableWeeks, } diff --git a/src/pages/teacher/[teacher].tsx b/src/pages/teacher/[teacher].tsx index faab4e0..7042326 100644 --- a/src/pages/teacher/[teacher].tsx +++ b/src/pages/teacher/[teacher].tsx @@ -53,31 +53,7 @@ export default function TeacherPage(props: NextSerialized) { if ('scrollRestoration' in history) { history.scrollRestoration = 'auto' } - - let attempts = 0 - const MAX_ATTEMPTS = 50 // Максимум 5 секунд (50 * 100ms) - - const interval = setInterval(() => { - attempts++ - const today = getDayOfWeek(new Date()) - const todayBlock = document.getElementById(today) - - if (todayBlock) { - const GAP = 48 - const HEADER_HEIGHT = 64 - window.scrollTo({ top: todayBlock.offsetTop - GAP - HEADER_HEIGHT, behavior: 'smooth' }) - clearInterval(interval) - } else if (attempts >= MAX_ATTEMPTS) { - // Прекращаем попытки после максимального количества - clearInterval(interval) - } - }, 100) - - // Cleanup функция для очистки интервала при размонтировании - return () => { - clearInterval(interval) - } - }, [schedule, error]) + }, [error]) return ( <>