mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 18:05:03 +00:00
fix(web): keep bulk checkbox selection across post navigation (openspec change keep-bulk-checkboxes)
- Save/restore checked candidate ids in sessionStorage (vesti_bulk_candidates / vesti_bulk_selected) - Restore checks after page reload when opening a post via ?selected=N - Fix selector: checkboxes live outside <form> (form=bulk-form attribute), query input[name=ids] globally - Openspec: new capability candidates-bulk-selection, change archived
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
## Why
|
||||
|
||||
При массовом отборе кандидатов пользователь отмечает несколько постов чекбоксами, затем открывает один из них для просмотра (ссылка ?selected=N). Перезагрузка страницы сбрасывает все отмеченные чекбоксы, кроме чекбокса текущего поста, — приходится отмечать их заново, что замедляет работу с потоком кандидатов.
|
||||
|
||||
## What Changes
|
||||
|
||||
- Сохранять отмеченные чекбоксы постов при переходе по ссылке ?selected=N (открытие поста в правой панели) в списках кандидатов (/candidates) и отобранных (/selected).
|
||||
- Механизм: состояние чекбоксов хранится в sessionStorage браузера по ключу с namespace страницы (candidates/selected) и доп. параметрами фильтров; при перезагрузке страницы отмеченные чекбоксы восстанавливаются.
|
||||
- Чекбокс открытого поста остаётся отмеченным (текущее поведение сохраняется).
|
||||
- При отправке bulk-формы (Отобрать/Отклонить/Обработать и т.д.) состояние очищается, чтобы не «протухали» старые отметки.
|
||||
- Счётчик выбранных (badge sel-count) считается по фактически отмеченным чекбоксам после восстановления.
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
- `candidates-bulk-selection`: сохранение отметок массового выбора кандидатов между перезагрузками страницы при навигации по постам.
|
||||
|
||||
## Status: implemented (2026-09-17)
|
||||
|
||||
- Реализовано: скрипты сохранения/восстановления чекбоксов из sessionStorage в candidates.html и selected.html (ключи `vesti_bulk_candidates` / `vesti_bulk_selected`).
|
||||
- Проверено в браузере (Camofox): отметки 24/52 на /candidates сохранены при открытии поста 52; отметки 109/110 на /selected сохранены при открытии поста 110; изоляция страниц подтверждена; badge sel-count обновляется.
|
||||
- Выявлен и исправлен баг: чекбоксы лежат вне `<form>` (атрибут form="bulk-form"), поэтому исходный селектор `#bulk-form input[name="ids"]` не находил их; заменён на `input[name="ids"]`.
|
||||
|
||||
## Impact
|
||||
|
||||
- Файлы: web/templates/candidates.html, web/templates/selected.html (JS-скрипт восстановления чекбоксов из sessionStorage).
|
||||
- Серверный код не меняется (чистый frontend-fix, без изменения API/БД).
|
||||
- Сервис: веб VESTI на bigbox, порт 8400; рестарт не требуется (шаблоны перечитываются при перезагрузке страницы).
|
||||
Reference in New Issue
Block a user