Мобильный BI 26.100.0: пять закреплённых отчётов и пресеты фильтра из веб-версии
В biconnectormobile 26.100.0 появились закрепление отчётов и фильтр с пресетами, общими с веб-версией BI. Обе функции по умолчанию скрыты переключателями. Обновление пригодится тем, кто смотрит несколько постоянных отчётов с телефона или уже настроил наборы фильтров в браузере.
Новое
Закрепите до пяти отчётов
В меню отчёта появились «Закрепить» и «Открепить». Закреплённые отчёты собираются на верхнем уровне списка и отмечаются булавкой. Лимит — пять; при попытке закрепить шестой приложение показывает сообщение об ограничении. Отчёт, к которому пропал доступ, тоже можно открепить: действие доступно на экране недоступного отчёта после подтверждения.
Функцию включает опция модуля biconnector:
<?php declare(strict_types=1);
use Bitrix\Main\Config\Option;
Option::set('biconnector', 'mobile_dashboard_pinning_enabled', 'Y');
Для своих мобильных экранов добавлены действия biconnectormobile.Dashboard.pin и unpin. Они принимают ID отчёта и фильтр списка, возвращают item и pinnedDashboardIds. Превышение лимита обозначается кодом MOBILE_DASHBOARD_PIN_LIMIT_EXCEEDED. На стороне PHP закрепления обслуживает Bitrix\BIConnector\Public\Services\Dashboard\MobileDashboardPinService с методами pin(), unpin() и isPinned(); данные хранятся в пользовательской опции biconnector/mobile_pinned_dashboards.
Откройте сохранённый фильтр с телефона
Фильтр с пресетами находится в корне списка отчётов. В папках и зонах его нет. Наборы хранятся под ID того же грида, что и в веб-версии: создавать отдельный набор для телефона не нужно. Если сохранённая группа или другое условие больше не действует, приложение показывает, какие условия набора потеряны.
Для пресетов нужна опция biconnector:dashboard_filter_presets_enabled=Y. Клиентский единый фильтр дополнительно зависит от Bitrix\BIConnectorMobile\Public\Feature\UnifiedFiltersFlag, который по умолчанию следует выключенному порталовому флагу Bitrix\Mobile\Public\Feature\UnifiedFiltersFlag.
Редактирование условий пока ограничено. Поле автора сопоставлено мобильному пикеру пользователей. Четыре BI-селектора такого сопоставления не имеют: сохранённое значение видно и участвует в фильтрации, но изменить его строку с телефона нельзя. Параметры таких наборов правьте в веб-версии.
Список сам подхватывает изменения
Клиент слушает pull-событие biconnector/onDashboardListChanged с тегом superset_dashboard и обновляет список с задержкой 300 мс. После закрепления сервер отправляет это событие, если закрепление действительно изменилось. У ответа Dashboard::getListAction() появились isPinningEnabled, isFilterPresetsEnabled и staleConditions; в DashboardListFilter добавлены необязательные presetId и tmpFields.
Контроллер фильтра использует Bitrix\Mobile\Filter\FilterActionsTrait, а контекст списка реализует Bitrix\Mobile\Filter\ListContext. Это пример подключения своего мобильного списка к общему механизму фильтров. Действия общих пресетов setForAll и unsetForAll для BI не включены.
«Создание» на экране ожидания показывается только для своего отчёта в статусе N, который ещё не установлен. Остальные отчёты открываются с подписью «Открытие». Модуль использует новые сервисы biconnector и mobile напрямую, поэтому при выборочном обновлении учитывайте эти зависимости.