Парсинг форм

формат данных принимаемых функцией 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