fix(schedule): hide empty days and lessons, update design and fonts
This commit is contained in:
@@ -525,6 +525,9 @@ function parseTeacherSchedule(
|
|||||||
subject: subject || groupShort || group || roomText,
|
subject: subject || groupShort || group || roomText,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Если нет предмета и группы, это пустая пара
|
||||||
|
if (!subject && !groupShort && !group) continue
|
||||||
|
|
||||||
if (location || roomText) {
|
if (location || roomText) {
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-expect-error — расширяем union тип за счет наличия place
|
// @ts-expect-error — расширяем union тип за счет наличия place
|
||||||
@@ -545,6 +548,9 @@ function parseTeacherSchedule(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Фильтруем пустые дни для преподавателей
|
||||||
|
const filteredDays = days.filter(day => day.lessons.length > 0)
|
||||||
|
|
||||||
// Извлекаем wk из URL
|
// Извлекаем wk из URL
|
||||||
const currentUrl = url || document.location?.href || ''
|
const currentUrl = url || document.location?.href || ''
|
||||||
const wkMatch = currentUrl.match(/[?&]wk=(\d+)/)
|
const wkMatch = currentUrl.match(/[?&]wk=(\d+)/)
|
||||||
@@ -570,7 +576,7 @@ function parseTeacherSchedule(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
days,
|
days: filteredDays,
|
||||||
currentWk,
|
currentWk,
|
||||||
availableWeeks,
|
availableWeeks,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,31 +53,7 @@ export default function TeacherPage(props: NextSerialized<PageProps>) {
|
|||||||
if ('scrollRestoration' in history) {
|
if ('scrollRestoration' in history) {
|
||||||
history.scrollRestoration = 'auto'
|
history.scrollRestoration = 'auto'
|
||||||
}
|
}
|
||||||
|
}, [error])
|
||||||
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])
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
Reference in New Issue
Block a user