Merge branch 'phase/55-view-state'
# Conflicts: # docs/phases/README.md
This commit is contained in:
@@ -144,3 +144,35 @@
|
||||
|
||||
Ручной `CHANGELOG.md`. Запись на пользователе в `users.json`. Вызов git из бегущего процесса.
|
||||
Бамп версии сокета. Окно внутри открытой школы.
|
||||
|
||||
## Состояние экрана
|
||||
|
||||
### Зачем
|
||||
|
||||
Менеджер — списки с фильтрами. Сейчас они живут только в RAM: F5 всегда меню, повторный вход
|
||||
сбрасывает вкладки и запросы. Игрок сравнивает людей и соискателей; потерять «ученики 5А» на
|
||||
обновлении — дырка в уже живых экранах, не новая фича.
|
||||
|
||||
### Было / Стало / Почему
|
||||
|
||||
**Было.** SPA без адреса. `GameScreen.show` и `PeoplePanel.show` обнуляют вкладки, фильтры и
|
||||
выбор. Язык уже в `localStorage`; игровые часы — на сервере.
|
||||
|
||||
**Стало.** Query URL держит *где я*: школа, обзор/управление, карта/люди, выбранные комната и
|
||||
человек. `sessionStorage` по `schoolId` держит фильтры, поиски, сорт, страницу, вкладку карточки
|
||||
и класс сетки — и последний маршрут, чтобы вход с меню поднял то же место. F5 с `?school=`
|
||||
шлёт тот же `OpenSchool`, что карточка. Вход/выход — `pushState`; смена вкладки и фильтра —
|
||||
`replaceState`, чтобы «назад» не листал каждый клик.
|
||||
|
||||
**Почему.** Сервер не знает про вкладки; класть их в сейв — лишний HTTP. `localStorage` как у
|
||||
языка держал бы «5А» через месяц. URL без фильтров остаётся коротким и копируемым.
|
||||
|
||||
### Что видит игрок
|
||||
|
||||
F5 внутри школы — та же школа, те же вкладки и фильтры. Назад — меню. Снова открыть ту же
|
||||
школу — не сброс на карту. Гость не входит в управление по ссылке. Скорость часов, пауза,
|
||||
открытый пул соискателей и мастер создания не вспоминаются.
|
||||
|
||||
### Что не входит
|
||||
|
||||
Поиск по имени в списках, где его нет. Роутер-библиотека. Состояние на сервере. Бамп протокола.
|
||||
|
||||
Reference in New Issue
Block a user