Класс Entity
Класс представляет сущность элементов диалога и виджета TagSelector.
Конструктор
constructor(entityOptions: EntityOptions): Entity
Создает объект класса Entity
.
Для добавления сущности в диалог используйте опцию entities
в конструкторе класса Dialog.
entityOptions
— опции диалога, которые определяются структурой EntityOptions
.
export type EntityOptions = { id: string, options?: { [key: string]: any }, itemOptions?: { [key: string]: any }, tagOptions?: { [key: string]: any }, badgeOptions?: ItemBadgeOptions[], searchable?: boolean, searchFields?: SearchField[], searchCacheLimits?: [], dynamicLoad?: boolean, dynamicSearch?: boolean };
id: string
Идентификатор сущности.
options?: { [key: string]: any }
Опции сущности. Произвольный набор параметров, которые будут переданы провайдеру данных при динамической загрузке элементов.
itemOptions?: EntityItemOptions
Определяет настройки внешнего вида элементов в диалоге по умолчанию. Задается структурой
EntityItemOptions
:export type EntityItemOptions = { [entityType: string]: { [option: string]: any } };
Настройки элементов сгруппированы по типу сущности (entityType) в
itemOptions
:const itemOptions = { default: { textColor: 'black', avatar: '/path/to/avatar.svg' }, inactive: { textColor: 'grey' } };
В примере выше для элементов, у которых entityType равен
inactive
, будет установлен серый цвет заголовка. Для всех остальных типов сущности цвет будет черным. Если опция не найдена в группе настроек конкретного типа, она будет искаться в типеdefault
.Для элемента можно определить следующие опции:
subtitle: sting | TextNodeOptions
— подзаголовок элемента.supertitle: sting | TextNodeOptions
— надзаголовок элемента.caption: sting | TextNodeOptions
— подпись элемента.textColor: string
— цвет текста заголовка элемента.avatar: string
— аватар элемента.avatarOptions: AvatarOptions
— настройки для аватара элемента.badges: EntityBadgeOptions[]
— бейджи элемента. Определяются структурой EntityBadgeOptions.link: string
— адрес ссылки "подробнее". В шаблоне ссылки можно использовать макросы#id#
и#element_id#
.linkTitle: sting | TextNodeOptions
— заголовок ссылки "подробнее".captionOptions: CaptionOptions
— настройки для подписи.badgesOptions: BadgesOptions
— настройки для блока с бейджами элемента.
tagOptions?: EntityTagOptions
Настройки внешнего вида элементов в виджете
TagSelector
.
Задается структуройEntityTagOptions
:export type EntityTagOptions = { [entityType: string]: { [option: string]: any } };
Настройки элементов виджета
TagSelector
сгруппированы по типу сущности (entityType) вtagOptions
:const tagOptions = { default: { textColor: 'black', bgColor: 'red', maxWidth: 150 }, inactive: { textColor: 'grey' } };
В примере выше для элементов в виджете
TagSelector
, у которых entityType равенinactive
, будет установлен серый цвет заголовка. Для всех остальных типов сущности цвет будет черным. Если опция не найдена в группе настроек конкретного типа, она будет искаться в типеdefault
.Для элемента можно определить следующие опции:
bgColor: string
— цвет фона элемента.textColor: string
— цвет заголовка элемента.maxWidth: number
— максимальная ширина элемента.fontWeight: string
— начертание шрифта.avatar: string
— аватар элемента.avatarOptions: AvatarOptions
— настройки для аватара элемента.link: string
— ссылка на элементе. В шаблоне ссылки можно использовать макросы#id#
и#element_id#
.
badgeOptions?: EntityBadgeOptions[]
Настройки и внешний вид дополнительных бейджей элементов. Как правило, бейджи задаются в настройках itemOptions для разных типов сущностей. Но бывают ситуации, когда бейджи нужно отобразить по произвольным условиям без контекста типа сущности.
Каждый бейдж в
badgeOptions
определяется структуройEntityBadgeOptions
:export type EntityBadgeOptions = { title: string | TextNodeOptions, textColor?: string, bgColor?: string, conditions?: { [customOption: string]: any } };
Структура
EntityBadgeOptions
наследует параметры ItemBadgeOptions, добавляя к ним опциюconditions
. В этом параметре задаются условия отображения бейджа. В ключе указывается название поля из коллекции дополнительных данных элемента (customData). Бейдж будет показан, если значение указанного поля будет совпадать с данными элемента.const badgeOptions = { title: 'Мой бейдж', conditions: { isOnVacation: true } };
searchable?: boolean
Если задано значение
false
, поиск по элементам данной сущности осуществляться не будет. По умолчаниюtrue
.searchFields?: SearchField[]
Определяет список полей элемента диалога, по которым будет осуществляться поиск. Каждое поле определяется структурой
SearchFieldOptions
:export type SearchFieldOptions = { name: string, type?: 'string' | 'email', searchable?: boolean, system?: boolean, sort?: number }
name: string
Название поля.
type?: 'string' | 'email'
Тип поля. По умолчанию
string
.searchable?: boolean
Если задано значение
false
, поиск по полю осуществляться не будет. По умолчаниюtrue
. Опция может использоваться для отмены поведения по умолчанию (см. ниже).system?: boolean
По умолчанию указанное в опции
name
поле ищется в дополнительных данных элемента (customData
). Если заданоsystem: true
, поле считается системным. Поддерживаются следующие системные поля:title
— заголовок.subtitle
— подзаголовок.supertitle
— надзаголовок.
sort?: number
Определяет порядок поиска. Если опция не задана, сортировка определяется порядком элементов в массиве
searchFields
.
По умолчанию поиск происходит по заголовку (поле
title
) и по подзаголовку (полеsubtitle
) элемента. НастройкиsearchFields
добавляют поля для индексации, они не переопределяют поведение по умолчанию.В следующем примере поиск будет осуществляться по заголовку элемента, подзаголовку, а также по дополнительным данным из customData:
position
иemail
.searchFields: [ { name: 'position' }, { name: 'email', type: 'email' } ]
А этот пример отменяет поиск по заголовку элемента.
searchFields: [ { name: 'title', searchable: false, system: true } ]
searchCacheLimits?: string[]
Массив из шаблонов регулярных выражений, по которым не будет происходить кеширование поисковых запросов.
dynamicLoad?: boolean
Определяет динамическую загрузку элементов с бэкенда. По умолчанию
false
.dynamicSearch?: boolean
Определяет динамический поиск элементов на бэкенде. По умолчанию
false
.
Методы
Метод | Описание | С версии |
---|---|---|
getId(): string | Возвращает идентификатор сущности. | |
getItemOption(option: string, entityType?: string): any | Возвращает значение настройки (option ) внешнего вида элемента с учетом типа сущности (entityType ). | |
getTagOption(option: string, entityType?: string): any | Возвращает значение настройки (option ) внешнего вида элемента в виджете TagSelelctor с учетом типа сущности (entityType ). | |
getBadges(item: Item): ItemBadgeOptions[] | Возвращает объединенную коллекцию бейджей сущности. | |
isSearchable(): boolean | Возвращает true , если элементы сущности участвуют в поиске. | |
setSearchable(flag: boolean): void | Устанавливает или отменяет участие элементов сущности в поиске. | |
setSearchCacheLimits(limits: string[]): void | Устанавливает массив паттернов, по которым не будут кешироваться поисковые запросы. | |
getSearchCacheLimits(): RegExp[] | Возвращает массив паттернов, по которым не будут кешироваться поисковые запросы. | |
hasDynamicLoad(): boolean | Возвращает true , если сущность имеет динамическую загрузку элементов с бэкенда. | |
setDynamicLoad(flag: boolean): void | Устанавливает или отменяет динамическую загрузку элементов. | |
hasDynamicSearch(): boolean | Возвращает true , если сущность имеет динамическую поиск элементов с бэкенда. | |
setDynamicSearch(flag: boolean): void | Устанавливает или отменяет динамический поиск элементов. |
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.