4.1.6.1. Подключение Хаба к приложению¶
Added in version 1.28.0.
Разметка Навигационного хаба описана в справочнике разметки представлений — назначение фреймов, их атрибуты, обязательность, допустимые значения и умолчания смотрите на страницах:
desktop — атрибут
hubSelectionName;navigationHub — фрейм выборки-хаба (тайл-компоненты);
tiles (контрол секции) — связь ролей секций с выборками;
tiles (фрейм выборки тайлов) — тайлы;
tilesGroups — группы тайлов.
Эта страница описывает то, чего на страницах справочника нет: как выборки Хаба связаны между собой и по каким правилам сервер интерпретирует их данные.
4.1.6.1.1. Схема связей¶
Подключение строится на трёх видах выборок — главной выборке приложения, выборке-хабе
и выборках тайлов и групп, — связанных по именам в формате имя#представление:
Главная выборка приложения
<desktop hubSelectionName="Module_NavigationHub#List"/>
│
▼
Module_NavigationHub#List — выборка-хаб, фрейм <navigationHub>
├─ <tiles role="favorites" selectionName="Module_NavHubPinned#List"
│ groupsSelectionName="Module_NavHubPinnedGroups#List"/>
│ │ └──▶ Module_NavHubPinnedGroups#List — фрейм <tilesGroups>
│ └──────────────────────────▶ Module_NavHubPinned#List — фрейм <tiles>
├─ <tiles role="popular" selectionName="Module_NavHubHistory#Popular"/>
└─ <tiles role="latest" selectionName="Module_NavHubHistory#Latest"/>
4.1.6.1.2. Семантика наполнения¶
Сервер открывает выборки Хаба как дочерние от главной выборки приложения при её инициализации, без построения GUI, и читает их данные целиком. Описание Хаба сервер формирует при инициализации приложения; начальная гидрация клиента выполняется асинхронно при создании главного меню.
Секция “Закрепленное” наполняется объединением проектного описания (данные выборок Хаба) и пользовательских настроек, которые сервер хранит отдельно для каждого пользователя. Секции “Часто используемое” и “Недавно закрытые” наполняются только проектными данными истории; их накопление описано на странице Наполнение секций истории.
Секция наполняется, только если есть и запись с её ролью в данных выборки-хаба, и контрол
<tiles>с той же ролью в разметке<navigationHub>.Тайлы, не ссылающиеся ни на какую группу или ссылающиеся на несуществующую, попадают в группу “по умолчанию” — при необходимости сервер создаёт её сам.
Дубли тайлов по паре (тип действия, значение действия) в пределах тайл-компонента схлопываются: в секции остаётся один тайл. У тайлов с действием-выборкой в сравнение входят и параметры открытия: тайлы одной выборки с разными параметрами — разные тайлы. Параметры сравниваются как набор пар «имя — значение» без учёта порядка ключей; значения приводятся к строкам, поэтому
1и"1"совпадают.
4.1.6.1.3. Параметры открытия выборки¶
Тайл с действием-выборкой может открывать не выборку целиком, а конкретный объект —
например, карточку записи или список с заданным фильтром. Для этого в выборке тайлов
заводится колонка с параметрами открытия, а её имя указывается в необязательном
атрибуте actionParamsAttr фрейма <tiles>; формат значения описан в справочнике.
При клике сервер открывает выборку, передавая параметры форме так же, как параметры URI-ссылки на выборку или вызова
openFormEx: сервер имена параметров не интерпретирует и не проверяет по метаданным выборки.Если форма той же выборки с теми же параметрами уже открыта, повторный клик активирует её, а не открывает вторую. Исключение — параметры открытия на создание или копирование (
CREATINGMODE,EDITINGTYPEсо значением, отличным отEdit): с ними форма всегда открывается заново. Тайл без параметров, как и любая форма, открытая без параметров, при каждом клике открывает новую форму.При закреплении тайла из секций истории параметры переносятся в закреплённый тайл и сохраняются в пользовательских настройках.
4.1.6.1.4. Диагностика подключения¶
Ошибки наполнения Хаба не прерывают инициализацию приложения: проектные данные проблемной секции не загружаются, а причина в большинстве случаев фиксируется в серверном логе. Секция “Закрепленное” при этом не обязательно пуста: закрепления, сохранённые в пользовательских настройках, выводятся и без проектных данных.
Для поиска причины определите, какой из случаев возник.
Секция пуста, записей в логе нет. Проверьте, что в
<desktop>главной выборки задан атрибутhubSelectionNameи что в данных выборки-хаба есть запись с ролью секции. Секция может быть пустой и штатно — если выборка тайлов не вернула данных.В логе есть ошибка наполнения секции. Проверьте, что выборка существует, доступна и содержит в представлении нужный фрейм: без него сопоставление колонок неизвестно. Роль записи в данных выборки-хаба должна совпадать с ролью контрола
<tiles>в разметке<navigationHub>. Сообщение в логе содержит роль проблемной секции.Тайл не отображается. Проверьте параметры открытия: если они заданы, значение должно быть JSON-объектом без
null, вложенных объектов и массивов. Тайл с некорректными параметрами не выводится — он открыл бы не тот объект. Причина с идентификатором тайла фиксируется в логе при чтении выборки тайлов.Тайл отображается, но клик не выполняет действие. Проверьте значение действия: оно не должно быть пустым, значение действия-выборки должно содержать разделитель
#, а операция должна присутствовать в меню главной выборки. Такие ошибки обнаруживаются только при клике: действие пропускается, причина фиксируется в логе.
See also