Используйте NocoBase для создания связанной оперативной информационной панели.
В этой статье в качестве примера используется панель управления «системы заказов на работу», чтобы показать, как использовать блок диаграммы NocoBase, блок фильтров и блок JS в сочетании для создания информационной панели данных, которая поддерживает связывание фильтров, детализацию диаграммы и пользовательские стили.
Хотя примеры взяты из сценариев заказов на работу, эти методы также применимы к таким бизнес-системам, как CRM, эксплуатация оборудования, управление проектами, поток утверждений, успех клиентов и т. д.
В этой статье речь идет не о том, «как использовать блоки JS для написания большого экрана», а о том, как объединить возможности собственных блоков NocoBase и блоков JS: пусть собственные блоки отвечают за стандартные возможности, а блоки JS дополняют персонализированный опыт.

цель сцены
Мы надеемся создать панель управления операциями, которая поможет команде эксплуатации или обслуживания быстро определить текущую рабочую нагрузку:
- Сколько открытых заказов на работу сейчас?
- Какие рабочие задания подвержены риску в соответствии с соглашением об уровне обслуживания?
- Какова тенденция новых заказов на работу?
- Каков статус и приоритетность заказов на выполнение работ?
- Нажав на график, вы можете просмотреть соответствующие детали.
Страницу можно условно разделить на четыре слоя:
- Верхняя область фильтра: время, группа услуг, тип запроса, приоритет, статус SLA.
- Область статистики KPI: открытый журнал невыполненных задач, неназначенные, предупреждение SLA и т. д.
- Область анализа диаграммы: тренд, статус, SLA, приоритетное распределение.
- Область детализации: щелкните диаграмму, чтобы отобразить соответствующие записи.
Сначала проясним идею конструкции
Когда многие люди создают информационные панели данных, они склонны рассматривать проблему как один из двух вариантов:
Либо используйте все собственные блоки NocoBase, которые легко настроить, но беспокойтесь о том, что стиль и взаимодействие недостаточно гибки; или просто напишите большой блок JS и самостоятельно управляйте запросами, диаграммами, фильтрацией и детализацией, но при этом потеряется удобство, обеспеч иваемое конфигурацией с низким кодом.
На самом деле, более рекомендуемый способ — объединить эти два способа.
В этой информационной панели Operations мы не записывали всю страницу в виде большого JS-экрана, а разделили ее по обязанностям:
- Верхняя фильтрация использует фильтрующий блок, входящий в комплект системы NocoBase;
- Диаграммы трендов, распределение статусов и распределение SLA используют собственные блоки диаграмм;
- Карты KPI и подробные сведения используют блоки JS;
- Блоки фильтров влияют как на блоки диаграмм, так и на блоки JS;
- После щелчка по диаграмме условия детализации передаются в блок подробностей JS ниже.
Преимущество этого заключается в том, что стандартная статистика и фильтрация по-прежнему сохраняют возможности настройки NocoBase, а персонализированное отображение и сложные взаимодействия дополняются блоками JS. Страница не является ни «только настраиваемой», ни «весь кодом», но конфигурация и код выполняют свои собственные функции.
1. Как настроить стиль блока диаграммы

Блок диаграмм NocoBase может сначала использовать построитель запросов для определения статистического калибра, а затем использовать пользовательскую опцию ECharts для настройки стиля.
Взяв в качестве примера «статистику статуса рабочего задания», построитель запросов можно настроить следующим образом:
- Технический паспорт: билеты
- Метрики: количество идентификаторов, псевдоним TicketCount.
- Размеры: статус
Ключевым моментом является то, что при настройке стиля вам не нужно переписывать запрос, вам нужно только обработать отображение диаграммы на основе ctx.data.objects.
Эта строка кода считывает результаты запроса диаграммы. Затем определите метки состояния и цвета:
Рекомендуется, чтобы весь видимый копирайтинг использовал ctx.t(), чтобы облегчить последующую многоязычную поддержку.
При создании данных диаграммы вы можете прикрепить подробную информацию к каждой точке данных диаграммы:
Самое критичное здесь — ticketingDrilldown. Это не стандартное поле ECharts, а бизнес-контекст, который мы закладываем сами и который будет использоваться при нажатии на диаграмму позже.
Наконец, вернитесь к опции ECharts:
Основная идея этой части:
- Конструктор запросов отвечает за статистику;
- Пользовательская опция отвечает за визуальное выражение;
- Пользовательские поля отвечают за передачу контекста детализации.
2. Пусть блок системного фильтра станет областью наблюдения всей страницы.

Область фильтров в оперативной панели не должна представлять собой изолированную форму. Он представляет текущий диаметр наблюдения всей страницы.
Например, если пользователь выбирает группу услуг, тип запроса и время создания, то ключевые показатели эффективности, диаграммы тенденций, распределение статусов и подробные сведения должны отображаться на основе одного и того же набора условий. В противном случае числа в разных блоках на странице будут бороться друг с другом, и пользователям будет сложно судить, какие данные являются результатом в текущем диапазоне.
Здесь мы напрямую используем блок фильтрации, поставляемый в комплекте с системой NocoBase, вместо того, чтобы писать компонент фильтрации самостоятельно. Собственные блоки фильтров можно естественным образом привязать к блокам диаграммы, что позволяет блоку диаграммы продолжать использовать п остроитель запросов, разрешения, механизмы обновления и фильтрации.
Top Dashboard scope может настроить следующие элементы фильтра:
- Created at
- Service group
- Request type
- Priority
- SLA status
Для блоков JS вам нужно всего лишь прочитать один и тот же набор условий фильтра в коде, а затем преобразовать их в фильтры запроса. Таким образом, ключевые показатели эффективности и подробные сведения также могут соответствовать исходной диаграмме.
Комбинацию условий фильтра можно инкапсулировать в небольшую функцию:
Посчитать по фильтру:
Ключевыми моментами здесь являются:
Блок JS запрашивает бизнес-данные через ресурсы вместо прямого написания SQL. Это упрощает обеспечение согласованности разрешений NocoBase, источников данных и времени выполнения страниц.
3. Используйте блоки JS для отображения карточек KPI.

Ключевые показатели эффективности лучше подходят для использования блоков JS. Потому что KPI обычно представляет собой не один запрос, а комбинацию нескольких бизнес-уровней: незавершенный, неназначенный, предупреждение SLA, нарушение SLA, новое, решенное и т. д.
Блок JS может запрашивать данные на основе текущего диапазона фильтрации и отображать их в статис тическую карту.

