Вычисляемые атрибуты (computed attributes)

Вычисляемые атрибуты — это дополнительные поля, значения которых не хранятся в базе данных, а формируются динамически на основе других атрибутов записи или произвольной логики. Они позволяют расширить отображаемые в журнале данные без изменения модели данных.

Вычисляемые атрибуты задаются в конфигурации журнала или отдельной колонки и могут использоваться в форматтерах и редакторах колонок.

Есть два основных вида вычисляемых атрибутов:

Record Computed Attributes (R атрибуты) — атрибуты, которые вычисляются для каждой записи;

Config Computed Attributes (C атрибуты) — атрибуты, которые вычисляются глобально для конфига.

Вычисляемые атрибуты могут быть описаны в области журнала или конкретной колонки:

"computed": [
  {
    "id": "someAttribute",
    "type": "script",
    "config": {
      "script": "return \"abcd\";"
    }
  }
]

Для обращения к атрибутам из записи в конфиге можно использовать плейсхолдеры ${…}. Например:

"computed": [
  {
    "id": "someAttribute",
    "type": "script",
    "config": {
      "vars": {
        "documentDisplayName": "${?disp}"
      },
      "script": "return \"abcd\" + vars.documentDisplayName;"
    }
  }
]

При наличии в конфиге плейсхолдеров ${…} атрибут автоматически становится R атрибутом.

Использование computed атрибутов доступно в полях Форматтер для колонки и Редактор для колонки. Доступ аналогичен доступу к атрибутам записи, но с префиксом $computed. Например:

"formatter": {
  "type": "value",
  "config": {
    "value": "${$computed.someAttribute}"
  }
},
"computed": [
  {
    "id": "someAttribute",
    "type": "script",
    "config": {
      "vars": {
        "documentDisplayName": "${?disp}"
      },
      "script": "return \"abcd\" + vars.documentDisplayName;"
    }
  }
]

Типы вычисляемых атрибутов

Тип

Конфиг

Примечание

script

vars: Object<String, Any> — переменные, которые будут доступны в скрипте
script: String — текст скрипта
В контексте скрипта доступны:
Records
_ — lodash библиотека
vars — переменные из конфига
t — функция для получения локализованного сообщения по ключу

value

value: Any — значение
Может быть выбрано несколько значений.