Парсинг форм

Формат данных, принимаемых функцией parseForm:

[
  {
      "key": "body_panel",
      "components": [
          {
              "label": "Юридическое лицо",
              "key": "agreementLegalEntity",
              "properties": {
                  "attribute": "_ECM_contracts:agreementLegalEntity"
              },
              "type": "selectJournal",
              "input": true,
              "value": ""
          },
          ...
      ]
  },
  {
      "key": "footer_panel",
      "components": [
          {
              "type": "columns",
              "columns": [
                  {
                      "components": [
                          {
                              "label": "Rework",
                              "key": "outcome_Rework",
                              "type": "button",
                              "action": "submit"
                          },
                          ...
                      ]
                  },
                  ...
              ]
          },
          {
              "label": "Rework",
              "key": "outcome_Rework",
              "type": "button",
              "action": "submit"
          },
          ...
      ]
  },
  ...
]

Получение элементов для отображения в списке свойств:

  • компоненты из массива первого уровня фильтруются по ключу "key": "body_panel"

  • перебираем элементы массива components, фильтруем их по свойству "input": true

  • в случае если "type": "button", элемент отбирается для передачи в функцию рендера, для локализации используется атрибут label; элементы с другими типами также отбираются для рендера, с тем отличием, что для локализации используется свойство attribute с обрезанным префиксом _ECM_

  • данные с формой связаны по ключу attribute

  • для отображения в интерфейсе используется свойство value, которое в зависимости от type форматируется как строка или дата

Получение элементов для отображения на панели согласования (кнопки):

  • компоненты из массива первого уровня фильтруются по ключу "key": "footer_panel"

  • перебираем элементы массива columns.components, фильтруем их по свойству "type": "button"; если встречаются элементы с типом columns, необходимо отобрать первый элемент массива в свойстве components; для локализации используется атрибут label

  • обработчик клика по кнопке ожидает значение из свойства label