Войти

dictionaryFilterPriority

Общая информация

В компоненте MapService есть возможность настройки первичной и альтернативной фильтрации. Эта настройка используется, когда в одном компоненте нужно делать запрос к справочнику с разными фильтрами в зависимости от ответов пользователя

Требования к настройке фильтрации

Если блок dictionaryFilter не указать вообще, то запрос отправится с "filter": null, вернутся все подразделения. При большом количестве объектов справочник может зависнуть

DFP1.png

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

При настройке альтернативной фильтрации в linkedValues задаётся аргумент dictionaryFilterPriority, определяющий использование того или иного фильтра 

Поясним на примере 

Требуется так настроить компонент, чтобы если значение компонента a1 равно 1, то справочник вызывался с фильтром, указанным в dictionaryFilter, а если a1 не равно 1, то справочник должен вызываться с фильтром, заданным в secondaryDictionaryFilter 

Настройка компонента будет выглядеть следующим образом:

Пример JSON структуры объекта передаваемой в DTO

{

     "id": "ms1",

     "type": "MapService",

     "label": "<p>Выберите подразделение</p>",

     "attrs": {

       "validationOn": false,

       "withToken": true,

       "attributeNameWithAddress": "ADDRESS",

       "dictionaryType": "PGS_CNSTR_ORG",

       "dictionaryFilter": [

         {

           "attributeName": "SERVICE_CODE",

           "condition": "EQUALS",

           "value": "{"asString":"-10000000284"}",

           "valueType": "value"

         }

       ],

       "secondaryDictionaryFilter": [

         {

           "attributeName": "SERVICE_CODE",

           "condition": "EQUALS",

           "value": "{"asString":"-10000000285"}",

           "valueType": "value"

         }

       ],

       "selectAttributes": [

         "ADDRESS",

         "SHORT_TITLE"

       ],

       "baloonContent": [

         {

           "name": "ADDRESS",

           "label": "Адрес"

         },

         {

           "name": "SHORT_TITLE",

           "label": "Наименование"

         }

       ],

       "miniBalloonTexts": [

         "attributeValues.SHORT_TITLE",

         "attributeValues.ADDRESS"

       ],

       "personalData": {},

       "actions": [],

       "fields": []

     },

     "linkedValues": [

       {

         "argument": "dictionaryFilterPriority",

         "jsonLogic": {

           "if": [

             {

               "==": [

                 "answer.a1.value",

                 "1"

               ]

             },

             "dictionaryFilter",

             "secondaryDictionaryFilter"

           ]

         }

       }

     ],

     "value": "",

     "visited": false

   }

В linkedValues задали аргумент dictionaryFilterPriority, который в зависимости от a1 может принимать значения dictionaryFilter или secondaryDictionaryFilter

Если dictionaryFilterPriority=dictionaryFilter, то в пользовательском интерфейсе будет вызван справочник с фильтром filter":{"simple":{"attributeName":"SERVICE_CODE","condition":"EQUALS","value":{"asString":"-10000000284"}}},

DFP2.png

а если dictionaryFilterPriority=secondaryDictionaryFilter, то с фильтром "filter":{"simple":{"attributeName":"SERVICE_CODE","condition":"EQUALS","value":{"asString":"-10000000285"}}}

DFP3.png


Команда ВКУ подготовила шаблон c примером настройки первичной и альтернативной фильтраций — Настройка dictionaryFilterPriority
Авторизуйтесь, чтобы оставить комментарий к статье