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

Гриды — Справочник фильтров

Справочник всех реализаций IColumnFilterBuilder -- маппинг типов колонок к фильтрам.

Интерфейс

IColumnFilterBuilder
├── ApplyFilter(TasksDataSourceParameters, ...)      -- для гридов задач
└── ApplyTableFilter(ExtParamTableDataParameters, ...) -- для ДП Таблица

Базовый класс: ColumnFilterBuilderBase (Filters/ColumnFilterBuilderBase.cs).

Фильтры гридов задач

Каталог: Valhalla.Services/AgGridServices/Filters/

Текстовые и поисковые

Класс Файл Колонки ColumnFilter DTO Описание
TaskTextFilter TaskTextFilter.cs TaskText, Description TextFilter Фильтр по тексту задачи. Поддерживает contains, startsWith, endsWith, equals. Также используется для quick filter.
SubcategoryTextFilter SubcategoryTextFilter.cs SubcategoryName TextFilter Фильтр по названию категории.

Пользователи и роли

Класс Файл Колонки ColumnFilter DTO Описание
TaskOwnerFilter TaskOwnerFilter.cs Owner, OwnerName SetFilter Фильтр по заказчику задачи.
TaskPerformerFilter TaskPerformerFilter.cs Performer SetFilter Фильтр по единственному исполнителю.
TaskPerformersFilter TaskPerformersFilter.cs Performers SetFilter Фильтр по множественным исполнителям.
TaskAcceptorsFilter TaskAcceptorsFilter.cs Acceptors SetFilter Фильтр по согласующим.
SelectUsersExtParamFilters SelectUsersExtParamFilters.cs ExtParam{id} (SelectUsers type) SetFilter Фильтр для ДП "Выбор пользователей/групп".

Подзадачи и вопросы

Класс Файл Колонки ColumnFilter DTO Описание
SubtasksFilter SubtasksFilter.cs Subtasks NumberFilter Фильтр по наличию подзадач.
ActiveSubtasksFilter ActiveSubtasksFilter.cs ActiveSubtasks NumberFilter Количество активных подзадач.
TotalSubtasksFilter TotalSubtasksFilter.cs TotalSubtasks NumberFilter Общее количество подзадач.
MyQuestionsFilter MyQuestionsFilter.cs MyQuestions NumberFilter Мои вопросы в задаче.
QuestionsToMeFilter QuestionsToMeFilter.cs QuestionsToMe NumberFilter Вопросы адресованные мне.
QuestionsFromMeFilter QuestionsFromMeFilter.cs QuestionsFromMe NumberFilter Вопросы от меня.

ДП и специальные

Класс Файл Колонки ColumnFilter DTO Описание
MultiSelectFilter MultiSelectFilter.cs ExtParam{id} (MultiSelect types) SetFilter Универсальный фильтр для ДП с множественным выбором (MultiSlctSubcatTasks, MultiCheckbox, etc.).
LookupFilter LookupFilter.cs ExtParam{id} (LookUpField) SetFilter / TextFilter Фильтр для lookup ДП. Фильтрует по связанной задаче.
SmartExpressionFilter SmartExpressionFilter.cs Любая SmartFilter Фильтр через smart-выражение (ESQL).
TaskSignaturesFilters TaskSignaturesFilters.cs Signatures* SetFilter Фильтры по подписям задач.
CustomFlexFilter CustomFlexFilter.cs Custom AdvancedFilter Произвольный гибкий фильтр.
TableMultiselectFilter TableMultiselectFilter.cs Table columns SetFilter Мультивыбор строк в ДП Таблица. Реализует оба метода: ApplyFilter и ApplyTableFilter.

Утилиты

Класс Файл Описание
FilterHelpers FilterHelpers.cs Утилиты для построения дерева FilterNode, операнды, конвертация.
FilterOperand FilterOperand.cs Enum / константы операндов (AND, OR, equals, contains, etc.).
IFilterBuilder IFilterBuilder.cs Вспомогательный интерфейс.

Фильтры колонок ДП Таблица

Каталог: Valhalla.Services/AgGridServices/Filters/TableFilters/

Эти фильтры реализуют только ApplyTableFilter (не ApplyFilter).

Класс Файл Тип колонки ColumnFilter DTO Описание
LookupColumnFilter LookupColumnFilter.cs Lookup-колонка в таблице SetFilter Фильтр по lookup-связи внутри ДП Таблица. Зависит от LookupParamSettings.
VirtualColumnFilter VirtualColumnFilter.cs Виртуальная (вычисляемая) колонка TextFilter / NumberFilter Фильтр по вычисляемому значению. Может не поддерживать все операции.
SelectUsersColumnFilter SelectUsersColumnFilter.cs "Выбор пользователей" в таблице SetFilter Фильтр по пользователям/группам внутри ДП Таблица.

Маппинг: тип ДП → фильтр

ExtParamType Грид задач (ApplyFilter) ДП Таблица (ApplyTableFilter) Примечание
String, MultiLineString TaskTextFilter (или base) base ColumnFilterBuilderBase Текстовый
Number, Decimal, Money base base Числовой
DateTime base base Дата
Boolean base base Чекбокс
LookUpField LookupFilter LookupColumnFilter Lookup
MultiSlctSubcatTasks MultiSelectFilter base Мультилукап
SelectUsersType, SelectGroupsType, SelectOrgUnit SelectUsersExtParamFilters SelectUsersColumnFilter Выбор пользователей
MultiCheckbox, DropDown MultiSelectFilter base Множественный выбор
Table Ограничено (не через ShowTasksFeed) N/A (Table -- это сам грид) Фильтрация задач возможна через HTML-представление при настройке шаблона. См. support-guide §1.3
Through Особая обработка N/A Сквозной ДП: ColumnFilterService резолвит target EP через ThroughExtParamLogic.GetTargetExtParamId(), но передаёт ParamType = "Through" (не target-тип). SP сам определяет целевой тип и применяет правильную логику. Ремап на SelectUsersOrgUnits/SelectUsersGroupsтолько при группировке (filter.IsGrouping), не при фильтрации. Типичные применения: Through→SelectUsers ДП (Менеджер клиента, РП, BDM и др.)
File ИСКЛЮЧЁН N/A Файловый ДП
Numerator base base Нумератор
Virtual (колонка таблицы) N/A VirtualColumnFilter Только внутри ДП Таблица

Дерево FilterNode

Фильтры строят дерево FilterNode:

GeneralFilter (root, AND)
├── FilterNode (column=State, operand=IN, values=[1,3])
├── FilterNode (column=ExtParam42, operand=CONTAINS, value="test")
└── GeneralFilter (OR)
    ├── FilterNode (column=Owner, operand=EQUALS, value=123)
    └── FilterNode (column=Performer, operand=EQUALS, value=456)

Дерево передаётся в SP ShowTasksFeed / ShowExtParamTableData и транслируется в WHERE-clause.

Перекрёстные ссылки

  • docs/domains/grids/backend.md -- архитектура backend pipeline
  • docs/domains/grids/data-flow.md -- сквозные сценарии с диагностикой
  • docs/domains/smart-filters/backend.md -- ESQL pipeline для SmartFilter
  • docs/domains/ext-params/backend.md -- типы ДП