2.5 KiB
Часть Вне очереди. Соседей по папке не читать, если задача не про них.
Состояние экрана
Зачем
Менеджер — списки с фильтрами. Сейчас они живут только в RAM: F5 всегда меню, повторный вход сбрасывает вкладки и запросы. Игрок сравнивает людей и соискателей; потерять «ученики 5А» на обновлении — дырка в уже живых экранах, не новая фича.
Было / Стало / Почему
Было. SPA без адреса. GameScreen.show и PeoplePanel.show обнуляют вкладки, фильтры и
выбор. Язык уже в localStorage; игровые часы — на сервере.
Стало. Query URL держит где я: школа, обзор/управление, карта/люди, выбранные комната и
человек. sessionStorage по schoolId держит фильтры, поиски, сорт, страницу, вкладку карточки
и класс сетки — и последний маршрут, чтобы вход с меню поднял то же место. F5 с ?school=
шлёт тот же OpenSchool, что карточка. Вход/выход — pushState; смена вкладки и фильтра —
replaceState, чтобы «назад» не листал каждый клик.
Почему. Сервер не знает про вкладки; класть их в сейв — лишний HTTP. localStorage как у
языка держал бы «5А» через месяц. URL без фильтров остаётся коротким и копируемым.
Что видит игрок
F5 внутри школы — та же школа, те же вкладки и фильтры. Назад — меню. Снова открыть ту же школу — не сброс на карту. Гость не входит в управление по ссылке. Скорость часов, пауза, открытый пул соискателей и мастер создания не вспоминаются.
Что не входит
Поиск по имени в списках, где его нет. Роутер-библиотека. Состояние на сервере. Бамп протокола.