feat: исправление мобильной версии и улучшение UX

- Исправлена мобильная версия: добавлена горизонтальная прокрутка навигации,
  оптимизированы отступы и размеры элементов для touch-интерфейсов
- Устранено зависание на мобильных: удален бесконечный цикл в date-serializer.ts
- Улучшена читаемость: сделаны светлее описание пар, дни недели и текст
  последнего обновления (текущий день остается выделенным)
- Добавлена автоматическая прокрутка до текущего дня при загрузке страницы
- Добавлено отображение 'Пары нет' для отмененных пар при замене
- Оптимизированы скрипты установки: добавлена проверка зависимостей перед
  установкой для ускорения повторных запусков
- Исправлено отображение адреса и аудитории на мобильных устройствах
- Улучшены диалоги и touch-цели для мобильных устройств
This commit is contained in:
kilyabin
2025-11-23 00:13:51 +04:00
parent 66bc7136a3
commit 808d577964
16 changed files with 307 additions and 117 deletions

View File

@@ -26,23 +26,17 @@ export default function HomePage(props: NextSerialized<PageProps>) {
const { schedule, group, cacheAvailableFor, parsedAt } = nextDeserialized<PageProps>(props)
React.useEffect(() => {
if (typeof window !== 'undefined') {
if ('scrollRestoration' in history) {
history.scrollRestoration = 'manual'
}
const interval = setInterval(async () => {
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 })
clearInterval(interval)
}
await new Promise(resolve => setTimeout(resolve, 100))
})
if (typeof window === 'undefined') return
// Используем 'auto' для нормальной работы обновления страницы
if ('scrollRestoration' in history) {
history.scrollRestoration = 'auto'
}
}, [schedule])
// Отключаем автоматическую прокрутку на мобильных, чтобы избежать зависаний
// Пользователь может прокрутить страницу вручную
// Автоматическая прокрутка может блокировать рендеринг и вызывать зависания
}, [])
return (
<>