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

Форма настройки etl-блока

Введение

В меню etl-блока на странице редактирования модели AW есть пункт "Настройка параметров".

При выборе этого пункта открывается правая панель с формой настройки etl-блока. На этой форме указываются значения параметров блока, необходимых для его работы в текущей модели.

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

Параметры

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

Метаданные блока с изображения
{
  "uid": "example_params",
  "name": "Параметры блока",
  "description": "Пример блока разными параметрами",
  "author": "Analytic Workspace",
  "version": "1.0",
  "updated_at": "2020-01-01 00:00:00+00:00",
  "params": [
    {
      "code": "param_string",
      "name": "Параметр string",
      "type": "string",
      "mult": false,
      "required": false
    },
    {
      "code": "param_text",
      "name": "Параметр text",
      "type": "text",
      "mult": false,
      "required": false
    },
    {
      "code": "param_date",
      "name": "Параметр date",
      "type": "date",
      "mult": false,
      "required": false
    },
    {
      "code": "param_select",
      "name": "Параметр select",
      "type": "select",
      "mult": false,
      "required": false,
      "domain": [
        {"id": "1", "name": "Опция 1"},
        {"id": "2", "name": "Опция 2"}
      ]
    }
  ]
}

Внутригрупповые параметры

Параметры, объявленные внутри группы, рисуются "слева направо", заполняя текущую строку формы по горизонтали.

Метаданные блока с изображения
{
  "uid": "example_params",
  "name": "Параметры блока",
  "description": "Пример блока разными параметрами",
  "author": "Analytic Workspace",
  "version": "1.0",
  "updated_at": "2020-01-01 00:00:00+00:00",
  "params": [
    {
      "code": "group_1",
      "name": "Группа",
      "type": "group",
      "mult": false,
      "params": [
        {
          "code": "group_param_1",
          "name": "Параметр 1",
          "type": "string",
          "mult": false,
          "required": false
        }, 
        {
          "code": "group_param_2",
          "name": "Параметр 2",
          "type": "string",
          "mult": false,
          "required": false
        }
      ]
    }
  ]
}

При нехватке места на одной строке формы, поля начинают переноситься на следующую.

Метаданные блока с изображения
{
  "uid": "example_params",
  "name": "Параметры блока",
  "description": "Пример блока разными параметрами",
  "author": "Analytic Workspace",
  "version": "1.0",
  "updated_at": "2020-01-01 00:00:00+00:00",
  "params": [
    {
      "code": "group_1",
      "name": "Группа",
      "type": "group",
      "mult": false,
      "params": [
        {
          "code": "group_param_1",
          "name": "Параметр 1",
          "type": "string",
          "mult": false,
          "required": false
        }, 
        {
          "code": "group_param_2",
          "name": "Параметр 2",
          "type": "string",
          "mult": false,
          "required": false
        }, 
        {
          "code": "group_param_3",
          "name": "Параметр 3",
          "type": "string",
          "mult": false,
          "required": false
        }
      ]
    }
  ]
}

Множественные параметры

Под полем ввода параметра с mult: true появляется кнопка-ссылка "Добавить".

При нажатии на кнопку "Добавить" на форме появляется ещё одно поле для ввода следующего значения.

Метаданные блока с изображения
{
  "uid": "example_params",
  "name": "Параметры блока",
  "description": "Пример блока разными параметрами",
  "author": "Analytic Workspace",
  "version": "1.0",
  "updated_at": "2020-01-01 00:00:00+00:00",
  "params": [
    {
      "code": "param_1",
      "name": "Множественный параметр",
      "type": "string",
      "mult": true,
      "required": false
    }
  ]
}

Множественные группы параметров

У группы параметров можно указать mult: true, и в этом случае под полями параметров появится кнопка-ссылка "добавить"

При нажатии "Добавить" в группе появляется новая строка с параметрами.

Метаданные блока с изображения
{
  "uid": "example_params",
  "name": "Параметры блока",
  "description": "Пример блока разными параметрами",
  "author": "Analytic Workspace",
  "version": "1.0",
  "updated_at": "2020-01-01 00:00:00+00:00",
  "params": [{
    "code": "group_1",
    "name": "Группа",
    "type": "group",
    "mult": true,
    "params": [
      {
        "code": "group_param_1",
        "name": "Параметр 1",
        "type": "string",
        "mult": false,
        "required": false
      }, 
      {
        "code": "group_param_2",
        "name": "Параметр 2",
        "type": "string",
        "mult": false,
        "required": false
      }
    ]
  }]
}

По умолчанию, для заголовка группы и заголовка кнопки добавления используется одно и то же значение - атрибут name в описании группы.

Чтобы сделать название кнопки более адекватным, в разделе extra можно указать значение add_row_label.

Метаданные блока с изображения
{
  "uid": "example_params",
  "name": "Параметры блока",
  "description": "Пример блока разными параметрами",
  "author": "Analytic Workspace",
  "version": "1.0",
  "updated_at": "2020-01-01 00:00:00+00:00",
  "params": [{
    "code": "group_2",
    "name": "Группа",
    "type": "group",
    "mult": true,
    "extra": {
      "add_row_label": "строку"
    },
    "params": [{
      "code": "group_param_1",
      "name": "Параметр 1",
      "type": "string",
      "mult": false,
      "required": false
    }, {
      "code": "group_param_2",
      "name": "Параметр 2",
      "type": "string",
      "mult": false,
      "required": false
    }]
  }]
}

Действия

Действия отрисовываются аналогично параметрам, занимая очередную строку формы.

Метаданные блока с изображения
{
  "uid": "example_params",
  "name": "Параметры блока",
  "description": "Пример блока разными параметрами",
  "author": "Analytic Workspace",
  "version": "1.0",
  "updated_at": "2020-01-01 00:00:00+00:00",
  "params": [{
    "code": "param_1",
    "name": "Параметр 1",
    "type": "string",
    "required": false,
    "mult": false
  }, {
    "code": "action_1",
    "name": "Нажми меня",
    "type": "action",
    "action": "action_1"
  }, {
    "code": "param_2",
    "name": "Параметр 2",
    "type": "string",
    "required": false,
    "mult": false
  }]
}

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

Метаданные блока с изображения
{
  "uid": "example_params",
  "name": "Параметры блока",
  "description": "Пример блока разными параметрами",
  "author": "Analytic Workspace",
  "version": "1.0",
  "updated_at": "2020-01-01 00:00:00+00:00",
  "params": [
    {
      "code": "group_1",
      "name": "Группа",
      "type": "group",
      "mult": true,
      "extra": {
        "actions": [
          {
            "code": "group_action_1", 
            "name": "Заполнить автоматически", 
            "icon": "ic_etl_block_16"
          }
        ]
      },
      "params": [
        {
          "code": "group_param_1",
          "name": "Параметр 1",
          "type": "string",
          "mult": false,
          "required": false
        },
        {
          "code": "group_param_2",
          "name": "Параметр 2",
          "type": "string",
          "mult": false,
          "required": false
        }
      ]
    }
  ]
}

Со списком иконок для внутригрупповых действий можно ознакомиться здесь.

Условный показ полей

На форме настройки блока есть возможность условного показа полей для параметров, групп и действий.

Для этого, в атрибуте extra параметра (группы, действия) предусмотрено значение visible_if, в котором можно указать код поля и его значение, при котором поле будет отображаться на форме настройки блока.

Описание параметра, отображаемого по условию
{
  "code": "param_1",
  "name": "Название параметра",
  "description": "Видим, только если в поле select_1 выбрано значение 'x'",
  "mult": false,
  "required": false,
  "extra": {
    "visible_if": {"select_1": "x"}
  }
}

Условие по нескольким полям

Можно задавать условие отображения параметра по нескольким полям.

{
  "code": "param_1",
  "name": "Название параметра",
  "mult": false,
  "required": false,
  "extra": {
    "visible_if": {
      "select_1": "x",
      "select_2": "y"
    }
  }
}

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

Пользователь выбрал значение "В столбцы" и видит на форме одну группу и действие.

Пользователь изменил выбор на "В строки" и видит другой выпадающий список.

Метаданные блока с изображений
{
  "uid": "example_params",
  "name": "Параметры блока",
  "description": "Пример блока разными параметрами",
  "author": "Analytic Workspace",
  "version": "1.0",
  "updated_at": "2020-01-01 00:00:00+00:00",
  "params": [
    {
      "code": "transform_type",
      "name": "Вид преобразования",
      "type": "select",
      "mult": false,
      "required": false,
      "domain": [
        {"id": "to_columns", "name": "В столбцы"},
        {"id": "to_rows", "name": "В строки"}
      ]
    },
    {
      "code": "group_columns",
      "name": "Столбцы",
      "type": "group",
      "mult": "true",
      "extra": {
        "visible_if": {"transform_type": "to_columns"},
        "add_row_label": "столбец"
      },
      "params": [
        {
          "code": "column_name",
          "name": "Название столбца",
          "type": "string",
          "mult": false,
          "required": true
        },
        {
          "code": "column_type",
          "name": "Тип значения",
          "type": "select",
          "mult": "false",
          "required": true,
          "domain": [
            {"id": "string", "name": "Строка"},
            {"id": "number", "name": "Число"},
            {"id": "date", "name": "Дата"}
          ]
        }
      ]
    },
    {
      "code": "action_autofill_columns",
      "name": "Заполнить автоматически",
      "type": "action",
      "action": "action_autofill_columns",
      "extra": {
        "visible_if": {"transform_type": "to_columns"}
      }
    },
    {
      "code": "field_to_rows",
      "name": "Поле для вывода в строки",
      "type": "select",
      "mult": false,
      "required": false,
      "domain": "child_fields",
      "extra": {
        "visible_if": {"transform_type": "to_rows"}
      }
    }
  ]
}

Внимание

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

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