feat(foundry): refine map application controls

This commit is contained in:
Codex
2026-08-09 14:24:18 +03:00
parent 7025fd20b5
commit beb84f6de6
18 changed files with 633 additions and 186 deletions
+25 -7
View File
@@ -43,6 +43,11 @@ profile; renderer не содержит provider-specific условий.
Кнопка `Объекты` открывает вверх текстовый dropdown из Application bindings. Выбор строки открывает или фокусирует отдельное canonical `WorkspaceWindow`, а его универсальное содержимое строится из presentation profile/facets. Несколько binding-окон могут быть открыты одновременно; stable identity всегда `bindingId`, поэтому пользовательское переименование не ломает сохранённый layout.
Соседняя кнопка `Слои карты` открывает вверх dropdown той же ширины,
map-glass поверхности и row geometry, что `Объекты`. Terrain, 3D buildings,
planetary grid и cache policy больше не создают отдельное draggable-окно и не
занимают место в bounded window stack.
Клик по pin или его label открывает второе canonical `WorkspaceWindow` — карточку
выбранного объекта. Её вкладки и поля задаёт versioned provider-neutral
`subjectDetailProfile`, а не renderer и не provider payload. Базовый профиль
@@ -74,7 +79,7 @@ MMAP/AIS: сохраняет `heading`, `pitch`, `roll` и смещение ка
центра viewport; длительность перелёта для текущего канонического workflow —
`0.45 s`.
Кнопка поиска разворачивает центральный Toolbar симметрично, оставляя три
Кнопка поиска разворачивает центральный Toolbar симметрично, оставляя четыре
системных действия слева и открывая единое поле справа. Поиск не знает Gelios,
OSM или Cesium: он строит локальный индекс по всем подключённым map subjects.
Для primary binding индексируются стабильный `sourceId`, label fields
@@ -118,10 +123,22 @@ graticule используется тот же глобальный адреса
кнопка `Деактивировать сектор` выполняют одну операцию: снимают selection и
очищают transient sector-фильтры.
Настройки карты, слои, окно сектора, binding-окна и карточка subject используют
один application-owned workspace stack. Pointer/focus поднимает выбранное окно
выше остальных независимо от его типа; ни одно из этих map-stage окон не
рендерится в глобальный viewport overlay.
Клик по точечному subject, его elevated spike, label или HGeoZone меняет
`map.selection` и открывает карточку, но не снимает активный grid sector.
Сектор деактивируется только явным background/grid selection либо одним из
двух действий деактивации выше.
Окно сектора, binding-окна и карточка subject используют один
application-owned workspace stack. Pointer/focus поднимает выбранное окно выше
остальных независимо от его типа; ни одно из этих map-stage окон не рендерится
в глобальный viewport overlay. Настройки карты находятся уровнем выше в
`ApplicationSidePanel`: она выезжает справа налево, занимает отдельную колонку
`ApplicationShell` и сжимает центральный content вместе с картой. Settings и
Toolbar являются theme-aware actions в header `ApplicationPanel`: активное
состояние использует белую canonical surface, неактивное — panel surface с
обводкой. Панель закрывается повторным Settings action либо собственным Close;
клик по карте её не закрывает. Слои остаются коротким portal-dropdown нижнего
toolbar.
## Platform reference layers
@@ -165,8 +182,9 @@ Layout получают зарегистрированные reference bindings
их файл не переписывается до явного сохранения пользователем.
Тот же Page Layout хранит `inspectorOpenSections`. В текущем single-open
Inspector это пустой список либо id ровно одной раскрытой секции. Поэтому
закрытие окна настроек и повторное открытие не сбрасывает аккордеон, а общая
`Inspector variant="panel"` это пустой список либо id ровно одной раскрытой
секции. Поэтому закрытие правой панели настроек и повторное открытие не
сбрасывает аккордеон, а общая
кнопка Application Save сохраняет его вместе с камерой и остальным layout.
Cesium adapter рендерит elevated targets и label plates как единый overlay над