August 29, 2023

Утилита для получения полного списка типов деклараций

getFNODeclarationsList

Введение

Утилита getFNODeclarationsList является частью модуля declarationUtils.js и предназначена для получения списка деклараций FNO с учетом их зависимостей и доступности.

Описание функции

const getFNODeclarationsList = ({ values, fno = '', dependencies = [] }) => {...};

Функция getFNODeclarationsList возвращает список типов деклараций для заданного типа FNO, учитывая зависимости между типами (для определения disabled поля) и текущие значения формы, а так же переводы названий деклараций и сами типы.

Параметры

  • values (Объект): Объект Formik.values, хранящий текущие значения и состояния формы.
  • fno (Строка, константа из TYPES_FORM_MONITORING): Тип FNO для которого нужно получить список деклараций. По умолчанию пустая строка.
  • dependencies (Массив строк, необязательный, передаются значения из константы TYPES_FORM_MONITORING): Список зависимостей между типами деклараций. По умолчанию пустой массив.

Возвращаемое значение

  • Возвращает массив объектов, каждый из которых представляет тип декларации. Каждый объект содержит следующие поля:
    • value: Значение типа декларации.
    • label: Метка типа декларации с учетом локализации.
    • disabled: Логическое значение, указывающее на доступность данного типа декларации (зависит от текущих значений формы и зависимостей между типами).
[{
  value: 'INITIAL',
  label: 'первоналальная',
  disabled: true,
}, ...]


Примеры использования

Для использования функции getFNODeclarationsList вам потребуется передать объект с нужными параметрами:

const values = formik.values; // текущие значения формы
const fnoType = TYPES_FORM_MONITORING.FNO_150; // пример типа FNO
const deps = [DECLARATION_TYPES.INITIAL, DECLARATION_TYPES.LIQUIDATION]; // пример зависимостей

const declarationsList = getFNODeclarationsList({
  values,
  fno: fnoType,
  dependencies: deps
});

Как добавить новый тип FNO будет рассказано в следующем посте.

В ходе выполнения работ удалено много дублирующего кода. При возникновении каких-либо проблем, обращаться к https://t.me/axtvlad