diff --git a/EventHubBackSpec.md b/EventHubBackSpec.md index f6a17be..02abd4f 100644 --- a/EventHubBackSpec.md +++ b/EventHubBackSpec.md @@ -409,6 +409,9 @@ API: по `event.location`; commercial-календари — по `settings.default_location`. `radius` **опционален** (1..100 км); без ключа — без отсечения, сортировка `distance`. В ответе `distance_km`. Без координат сущность в geo-выборку не входит. +- В элементе `calendars` поле `default_location` (`address`/`lat`/`lon`, либо `null`) + возвращается всегда, если у календаря задана точка (Back#77) — вид карты в поиске + строится и без гео-запроса. `distance_km` присутствует только при `lat`+`lon` в запросе. - Пагинация результатов (`limit`, `offset`; default `limit=20`, max `100`). - Поиск должен учитывать права доступа (не показывать скрытые/заблокированные календари). diff --git a/EventHubFrontSpec.md b/EventHubFrontSpec.md index 5eef682..27a072b 100644 --- a/EventHubFrontSpec.md +++ b/EventHubFrontSpec.md @@ -224,6 +224,15 @@ cover (`.eh-discover-media--photo`); иначе mood wash + initials (`.eh-disco центр по адресу (suggest), не ручные lat/lon. Радиус опционален (пресеты 1/5/10/25/50 км и «без ограничения»). В выдаче — `distance_km`. Список, не map-first. +**Вид карты (Back#77):** у результатов segment-переключатель «Список | Карта» +(`?view=map` в URL, переживает перезагрузку). Данные — тот же `GET /v1/search` +(`useSearch`); в режиме карты пагинация списка и блок «ближайшее» скрыты. +Маркеры группируются по точке (~1 м): пин календаря с бейджем числа событий в группе, +событие с отличной точкой — отдельная малая точка; клик по маркеру → попап со списком +карточек группы (те же href `/c/:id` и `/c/:cid/e/:eid`, что в списке). Результаты без +координат не рисуются — счётчик «Без адреса: N». При активном гео-фильтре — точка центра +и круг радиуса. Тайлы OpenFreeMap (MapLibre GL, без ключа); компонент карты — lazy-chunk. + ### 5.4. Календари - Список своих: `GET /v1/calendars` - CRUD: `POST/PUT/DELETE /v1/calendars`, `GET /v1/calendars/:id` (`following`, `booking_open`)