Общая информация
linkedValues — это специальная настройка внутри экранов и компонентов, которая позволяет реализовать сложный функционал и связывать значения с помощью определённых механизмов, таких как: код JsonLogic, источник данных, атрибуты для списковых компонентов, контекстная функция и выражения для вычисления аргумента. linkedValues даёт возможность значительно оптимизировать разработку экранов, в которых изменяется текстовое наполнение экрана в зависимости от выбора и заполнения данных на предыдущих экранах
Поддерживаемые экраны и компоненты
linkedValues может быть задействован на экране типа:
- Экран отображения информации (INFO)
- Экран со сложным компонентом (UNIQUE)
- Составной экран (CUSTOM)
- Экран для повторяющегося набора компонентов (REPEATABLE)
- Специальный экран, содержащий компонент типа Redirect (EMPTY)
linkedValues может быть задействован в компонентах типа:
- Выпадающий список со строкой поиска (Lookup)
- Компонент для отображения вопроса и возможных ответов (QuestionScr)
- Компонент подписания документов (PguEsepSign)
- Компонент ввода диапазона дат (DateRangeInput)
- Информационный блок с полями (FieldList)
- Компонент для загрузки файлов (FileUploadComponent)
- Универсальный компонент ввода или подтверждения адреса (AddressInput)
- Компонент Пояснения (Explanation)
- Компонент ввода паспортных данных (PassportLookup)
- Список с возможностью множественного выбора (MultipleChoiceDictionary)
- Компонент Дисклеймер (DisclaimerElk)
- Компонент выбора месяца и года (MonthPicker)
- Переключатель, позволяющий выбрать один из предложенных вариантов (RadioInput)
- Компонент ввода даты (DateInput)
- Компонент выпадающего списка (DropDown)
- Компонент для ввода строки (StringInput)
- Ввод реквизитов документов (Заграничный паспорт, Водительское удостоверение, Паспорт РФ, Свидетельство о рождении) (DocInput)
- Выпадающий список со строкой поиска и получением значений из rest api (RestLookup)
- Компонент вывода сопроводительного текста (LabelSection)
- Компонент отправки rest-запроса к внешней системе (RestCall)
- Вставка компонента через JSON в логические компоненты экрана (UniversalLogic)
Внешний вид linkedValues
В услуге
В конструкторе
Структура linkedValues
ВКУ |
||||
№ |
В конструкторе |
Атрибут |
Тип |
Описание |
1 |
Вычисляемые аргументы (linkedValues) |
attrs |
object |
Атрибуты, позволяющие реализовать сложный функционал |
2 |
Механизм определения аргументов Версии 1 |
Данный механизм позволяет задавать различные аргументы и условия, а также настраивать конвертацию вычисленных значений |
||
2.1 |
Механизм определения аргументов Версии 2 |
Данный механизм описан в статье linkedValues Версии 2 |
||
3 |
Значение по умолчанию |
defaultValue |
string |
Позволяет заполнить поле значением по умолчанию |
4 |
Выражения для определения вычислять ли аргумент |
«Значение настройки» |
array |
В элемент задаётся условие «when» и выбирается компонент |
5 |
Настройки конвертации вычисленных значений |
«Значение настройки» |
string |
В элементе указывается «Ключ» и значения его настройки |
6 |
Код JsonLogic |
json |
object |
Используется для выполнения сложной логики в определении аргументов |
7 |
Источник данных |
true |
string |
Позволяет выбрать компонент или ввести вручную значение |
8 |
Атрибуты для списковых компонентов |
attrs |
Блок используется для динамического формирования кнопок. Источником данных может быть массив, содержащийся в value компонента |
|
9 |
Контекстная функция |
object |
Добавление функции с аргументами |
|
10 |
Выражения для вычисления аргумента |
true |
array |
Добавление элемента с двумя обязательными условиями «when» и «then» |
Варианты использования
Самые распространённые варианты применения linkedValues — это определения гендера и условий выбора предыдущего экрана с помощью источников данных и выражения для вычисления аргументов. Также для linkedValues используют для стилизации текста label, что даёт возможность разработать один экран вместо нескольких экранов одного типа с разными текстовками. linkedValues даёт возможность добавлять определённые пункты списка в зависимости от условий, выполненных на предыдущих экранах
Примеры использования linkedValues версии 1
1. Настройка определения гендера заголовка с помощью «Кода JsonLogic»
Для того, чтобы на экранах с разводящим вопросом (Question) получать корректные ответы, зависимые от гендера, необходимо настроить компонент для отображения вопроса и возможных ответов (QuestionScr)
Для этого нужно добавить элементы в атрибутах компонента «Ответы, доступные пользователю» в виде «${название атрибута}»
Данный атрибут необходимо будет указать в настройке «Вычисляемые аргументы компонента (linkedValues)», добавить необходимое количество элементов, выбрать «Механизм определения аргументов Версии 1» и прописать код JsonLogic
В самой услуге мы получим экран с ответами, в зависимости от гендера учётной записи ЛК ЕСИА
Пример кода JsonLogic для linkedValues версии 1:
Значения в JsonLogic
{ "if": [ { "and": [ { "==": [ "answer.c2.value", "1" ] }, { "==": [ "protected.gender", "M" ] } ] }, "Вдовец", { "and": [ { "==": [ "answer.c2.value", "2" ] }, { "==": [ "answer.c23.value", "2" ] } ] }, "Вдовец", { "and": [ { "==": [ "answer.c2.value", "1" ] }, { "==": [ "protected.gender", "F" ] } ] }, "Вдова", { "and": [ { "==": [ "answer.c2.value", "2" ] }, { "==": [ "answer.c23.value", "1" ] } ] }, "Вдова" ] } |
2. Настройка динамической страницы решения с помощью блоков «Источник данных» и «Выражения для вычисления аргумента»:
Чтобы настроить страницу решения и выводить на неё пункты, исходя из прошлых ответов на экранах с разводящими вопросами, необходимо в компоненте для отображения информации на экране (InfoScr) в «тексте компонента» прописать все необходимые аргументы и указать их в настройке «Вычисляемые аргументы компонента (linkedValues)» для каждого элемента
Для аргументов нужно будет указать «Источник данных» и «Выражение для вычисления аргумента»
В источнике данных необходимо будет указать компонент, с которым будет сравниваться наше выражение для вычисления аргумента
В выражении для вычисления аргумента необходимо прописать условия с выводом текста
Исходя из полученных ответов на экранах с разводящими вопросами, на странице решения будут выводится нужные пункты
Ссылки на шаблоны, реализованные в ВКУ с использованием linkedValues: