Настройки журнала с примерами
Выражения в качестве атрибутов
Примечание
Выражения должны поддерживаться источником данных. Фронтенд передает настроенные атрибуты в источник данных «как есть» и ожидает, что сервер понимает как с ними работать.
При настройке колонки журнала можно перейти в расширенные настройки и в поле «Атрибут» указать сложное выражение, которое в дальнейшем можно будет использовать для группировки, сортировки, поиска и отображения.
Выражение должно быть записано в круглых скобках. Исключение - если выражение состоит из одной функции, то скобки не требуются.
Подробнее о синтаксисе и списке доступных функций можно посмотреть в ecos-data
Параметр «2.3 Атрибут для поиска»
В конфигурацию столбца журнала добавлен параметр 2.3 Атрибут для поиска - атрибут, который нужно получить у записей из подзапроса. По умолчанию из подзапроса берутся идентификаторы найденных сущностей, но можно взять у этих сущностей какой-то атрибут при надобности.
В любом журнале со включенными фильтрами выбрать столбец с текстовым поиском, задать фильтр.
При применении фильтра UI строит и отправляет запрос с url: http://host/gateway/api/records/query?
В теле запроса, query предикат который мы задали фильтром по столбцу:
"query": {
...
{
"att": "someAttName",
"t": "eq",
"val": "1000"
}
...
}
При построении этого query,в предикате значение att
меняется на значение параметра searchAttribute
из конфигурации столбца журнала.
Такой поиск планируется использовать для вычисляемых атрибутов. Отображать в журнале они будут то, что сконфигурировано в computed att
, а поиск должен выполняться по заданному в конфигурации столбца атрибуту.
Фильтр по тексту в колонке „assoc“. Настройки innerQuery
Расширены настройки – добавлена возможность использовать RecordsQuery. Например, на вычисляемых полях, что позволяет формировать произвольный запрос к разным источникам данных.
Для решения вопроса - когда пользователь выбирает произвольные предикаты (Contains, Equals, Starts with, …) при настройке фильтра добавлен еще один тег в запрос - $PREDICATE_TYPE - для его замены на клиентской части.
Добавлен атрибут - innerQueryAttribute, для возможности настройки отображения:
searchConfig: {
delimiters: [],
searchByText: {
{
"innerQuery": {
"sourceId": "",
"page": {
"maxItems": 25
},
"query": {
"t": "and",
"val": [
{
"att": "TYPE",
"val": "currency",
"t": "eq"
},
{
"att": "currencyCode",
"val": "$TEXT",
"t": "$PREDICATE_TYPE"
}
]
}
},
"innerQueryAttribute": ""
}
}
}
Рассмотрим пример. Настроим поиск только по колонке «Статус».
Перейти в дополнительные настройки колонки:
Тип редактора указать text:
В разделе Search Config в запросе введите:
Совет
Запрос нужно задавать как можно точнее, с указанием типа запрашиваемой ноды.
{
"t": "and",
"val": [
{
"att": "TYPE",
"val": "icase:caseStatus",
"t": "eq"
},
{
"att": "title",
"val": "$TEXT",
"t": "$PREDICATE_TYPE"
}
]
}
Укажите необходимое Количество записей подзапроса:
Количество записей подзапроса - сколько максимально записей на данный запрос вернет сервер. Далее эти ноды будут использоваться как фильтр для формирования основного запроса - для отображения нужных записей в самом журнале.
Но в ответе также будет приходить число, сколько сервер всего нашел записей, и если это число больше указанного количества записей подзапроса, то в интерфейсе будет показываться сообщение о необходимости задать более точный фильтр.
Сохраните.
Поиск осуществляется только по колонке «Статус»:
Настройки фильтрации колонки
В журнале для колонок появилась настройка headerFilterEditor.
В настройках типа данных можно изменить фильтр с Select Journal на текстовое поле:
Фильтр Select Journal:
Для изменения неоходимо в журнале рядом с названием нажать:
У необходимой колонки нажать «Дополнительно» :
Указать настройки, как ниже:
Фильтр Select Journal изменен на текстовый:
Настройки отображения суммы для колонки
Добавлена поддержка группировки по всем записям в журнале с использованием предиката:
await Records.query({sourceId: 'emodel/ecos-contract', query: {}, language: 'predicate', groupBy: ['*']}, 'sum(amount)');
await Records.queryOne({sourceId: 'emodel/ecos-contract', query: {}, language: 'predicate', groupBy: ['*']}, 'sum(amount)?num');
Включение или выключение отображения суммы для каждой колонки производится отдельно по каждому атрибуту. Тип атрибута должен быть Number.
Общая сумма учитывает только форматтеры NumberFormatter и DurationFormatter
В нижней части столбца будет отображаться общая сумма значений столбца: