Перейти к содержанию

Гриды — Администрирование

Обзор

Домен grids охватывает настройку табличного представления задач: индикаторы (тикеры), избранное группы, общие параметры табличного вида и пользовательские настройки колонок/фильтров. Администрирование использует:

  • Автоадминка (dbadmin) -- 1 форма (настройки табличного вида)
  • Кастомные SPA-страницы -- 2 формы (тикеры, избранное) -- зарегистрированы в дереве автоадминки, но открывают собственные SPA-страницы
  • Admin API -- 1 контроллер (управление группами/папками избранного)

Механизмы администрирования

Автоадминка (dbadmin)

Alias формы Название Таблица БД Полей Секций Deps Папка
user-task-only-settings Общие настройки табличного вида dbo.UserTaskOnlySettings 6 1 0 Устаревшее

Кастомные SPA-страницы (в дереве автоадминки)

Alias формы Название Url Таблица БД Папка
tickers Индикаторы /administration/tickers dbo.MenuItemTicker Пользовательский интерфейс
favourites Избранное группы /administration/favorites-groups dbo.UserLinks Пользовательский интерфейс

Admin API контроллеры

Контроллер Маршрут Методы Назначение
FavoritesAdminController /api/admin/favorites/groups GET, POST, PUT, DELETE Управление группами, папками и ссылками избранного

Ключевые настройки

Где настраивается: SPA-страница /administration/tickers (пункт tickers в дереве автоадминки) Таблица БД: dbo.MenuItemTicker

11 полей, определяющих цветовые/числовые индикаторы в навигационном меню:

Группа полей Что контролирует
Имя, описание Идентификация тикера
Тип индикатора Числовой / цветовой
Источник данных SQL-запрос или предопределённый источник
Цвет, иконка Визуальное оформление в меню
Привязка к пункту К какому разделу меню привязан тикер

Эффект в runtime: тикеры обновляются периодически через SignalR, значения вычисляются TickerService.

Где настраивается: SPA-страница /administration/favorites-groups (пункт favourites в дереве автоадминки) / Admin API -> FavoritesAdminController Таблица БД: dbo.UserLinks

18 полей: структура ссылок и папок блока «Избранное группы». Администратор настраивает набор ссылок для группы, которые отображаются у всех пользователей группы.

Группа полей Что контролирует
Группа, папка Привязка к группе и иерархия
URL, название Содержание ссылки
Тип ссылки Задача / категория / пространство / внешняя
Порядок Сортировка в блоке избранного

Редактирование структуры

В редакторе блока «Избранное группы» поддерживается drag-and-drop для перестроения дерева элементов. Администратор может:

  • перемещать ссылку в другую папку;
  • перемещать папку внутрь другой папки;
  • менять порядок ссылок и папок на одном уровне.

После перетаскивания элемент должен сразу отображаться в новом месте в дереве, до сохранения страницы. Это позволяет сразу проверить, что ссылка или папка попала в нужный раздел и заняла корректную позицию.

При изменении структуры важно различать два сценария: перенос элемента в папку и перестановка элементов на одном уровне. Если требуется вложить ссылку или папку внутрь другой папки, нужно перетащить элемент именно в узел папки. Если требуется только изменить порядок, элемент нужно переместить между соседними элементами одного уровня.

Эффект в runtime: блок «Избранное группы» формируется в навигационной панели через UserLinksService.

Общие настройки табличного вида (UserTaskOnlySettings)

Где настраивается: автоадминка -> форма user-task-only-settings Таблица БД: dbo.UserTaskOnlySettings

6 полей: глобальные параметры табличного представления задач.

Примечание: форма находится в папке «Устаревшее», основные настройки табличного вида теперь задаются через пользовательские колонки и фильтры.

Пользовательские настройки колонок (runtime)

Где настраивается: Runtime API -> /api-core/datasource/{type}/columns/save|reset Таблицы БД: dbo.DataSources, dbo.DataSourceColumns

Пользователь сохраняет видимость, порядок и ширину колонок per-user. Настройки сбрасываются через columns/reset.

Сохранённые фильтры (runtime)

Где настраивается: Runtime API -> /api-core/datasource/{type}/filters Таблица БД: dbo.DataSourceFilters

Сохранённые фильтры и сценарии выбора. Фильтрация задач использует ColumnFilterService, фильтрация табличных ДП -- ColumnTableFilterService.

Условное форматирование колонок табличных ДП (v2.268)

Где настраивается: Admin API -> ExtParamFormattingAdminController Таблица БД: dbo.ExtParamTableColumnFormattingRules

Условное форматирование позволяет задать правила подсветки ячеек в табличных ДП по значению — аналогично условному форматированию в Excel. Правила настраиваются per-колонка через Admin API.

API endpoints:

Метод Маршрут Назначение
GET /api/admin/ext-params/formatting/rules/{epId} Список правил форматирования для ДП
POST /api/admin/ext-params/formatting/rules Создание правила
PUT /api/admin/ext-params/formatting/rules/{ruleId} Обновление правила
DELETE /api/admin/ext-params/formatting/rules/{ruleId} Удаление правила

Модель правила (EpTableColumnFormattingRuleDto):

Поле Тип Описание
RuleType enum EpTableFormattingRuleType Тип правила (пороговые значения, диапазоны, точное совпадение и др.)
ColumnId int Колонка табличного ДП
Condition string Условие (оператор + значение)
BackgroundColor string Цвет фона ячейки
TextColor string Цвет текста
Priority int Приоритет правила (при пересечении условий)

Правила форматирования интегрированы в настройки колонок табличного ДП (EpTableColumnSettingsDto). При загрузке настроек колонки правила включаются в ответ автоматически.

CustomSettings — экспорт, агрегаты, права на CSV

Ключ Тип / Default Назначение
MaxExcelExportRows int / 50000 Максимум строк для экспорта в Excel. При превышении — ошибка (не больше 50 000)
MaxCsvExportRows int / 50000 Максимум строк для экспорта в CSV (не больше 50 000)
ExportAgGridAsCsv bool / false Если true — кнопка «В Excel» в табличном виде категории экспортирует в CSV вместо XLSX
MaxScriptsToCombine int / 10 Лимит на объединение скриптов
CompressDSSettings bool / true Если true — настройки табличного вида хранятся в DataSourceSettings.ValueGZip (GZip). При false — в Value (JSON). Загрузка совместима с обоими режимами: сначала ValueGZip, потом Value
DataSourceAggregates JSON Включает строку итогов (sum / avg / min / max) для числовых и денежных колонок в табличном виде категории и в блоке БИ. Формат: [{"type":"subcat\|taskUsed","id":N,"gridTotalColumns":{"{column}":["sum","avg","min","max"]}}]
DSUpdateCSVPermissions JSON Управляет правом «Создание/обновление из CSV»: при отсутствии права кнопки скрываются. Формат: "UseNewExtParamsAndTaskUsed":[{"subcats":[ids],"groups":[ids]}] — категории и группы, для которых кнопки включены
DoNotSelectedTaskInSummary bool / false Если true — задачи из сводных разделов не добавляются в запрос
CSVImportMaxThreadsCount int Количество потоков для импорта задач из CSV. Увеличение ускоряет, но возможна ошибка Specified argument was out of the range. Рекомендация — 1
UseNewGrid JSON-массив правил Включает новый грид (таблицу задач) для выбранных пользователей в выбранных контекстах. Применяется покомпонентно: каждое правило независимо, может быть задано несколько. См. структуру ниже

Кастомные настройки задаются на странице «Настройки приложения» → «Пользовательские ключи». Источник: dbo.SettingsCustom.

UseNewGrid — структура правил

Каждый объект массива:

Поле Тип / Default Назначение
subcats int[] ID категорий, для которых включается новый грид. Игнорируется при allSubcats=true
users int[] ID пользователей, к которым применяется правило
allUsers bool / false Применить ко всем пользователям
allSubcats bool / false Новый грид для всех категорий
myTasks bool / false Включить в разделе «Мои задачи»
tickers bool / false Включить для тикеров (индикаторов)

Логика применения: правило срабатывает для пользователя, если users содержит его ID или allUsers=true. При наличии хотя бы одного подходящего правила с allSubcats=true — новый грид включается для всех категорий; иначе — объединяются subcats из всех подходящих правил. Флаги myTasks / tickers ставятся в true, если хотя бы одно подходящее правило содержит их true.

Примеры:

Все пользователи, все категории, включая «Мои задачи» и тикеры:

[{"subcats":[],"users":[],"allUsers":true,"allSubcats":true,"myTasks":true,"tickers":true}]

Конкретные пользователи и категории:

[{"subcats":[5574],"users":[6736],"allUsers":false,"allSubcats":false,"myTasks":false,"tickers":false}]

Типичные ошибки настройки

Симптом Причина Где проверить SQL-диагностика
Пропала колонка в гриде Скрыта пользователем или убрана из схемы категории dbo.DataSourceColumns select * from dbo.DataSourceColumns where DataSourceId = {dsId} and UserId = {userId}
Фильтр работает в задачах, но не в ДП Таблица Разные pipeline фильтрации ColumnFilterService vs ColumnTableFilterService Проверить настройки фильтрации колонки табличного ДП
Избранное группы не отображается Нет ссылок для группы пользователя Форма favourites select * from dbo.UserLinks where GroupId = {groupId}
Тикер показывает неверные данные Некорректный источник данных тикера Форма tickers select * from dbo.MenuItemTicker where Id = {tickerId}
Неверный DataSourceType/entityId Грид загружает «не тот» набор данных Параметры запроса к /api-core/datasource Проверить DataSourceType и entityId в запросе
Кнопка «В Excel» отдаёт CSV ExportAgGridAsCsv=true Кастомные настройки приложения select * from dbo.SettingsCustom where Name = 'ExportAgGridAsCsv'
Экспорт обрывается на 50 000 строк Достигнут лимит MaxExcelExportRows / MaxCsvExportRows Кастомные настройки приложения См. соответствующий ключ
Нет кнопок «Создание/обновление из CSV» Нет права для текущего пользователя/категории по DSUpdateCSVPermissions Кастомные настройки приложения См. JSON-настройку выше

Связанные документы

  • docs/domains/grids/backend.md -- backend-архитектура (DataSource pipeline, фильтры, колонки)
  • docs/domains/grids/frontend.md -- frontend-архитектура (AG Grid, компоненты)
  • docs/domains/grids/data-flow.md -- E2E диагностика (загрузка данных, фильтрация)
  • docs/domains/grids/filters-reference.md -- справочник типов фильтров
  • docs/platform/backend/admin-architecture.md -- общая архитектура администрирования
  • docs/reference/database/dbadmin-forms-map.md -- карта всех форм автоадминки