Класс 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 | Устанавливает или отменяет динамический поиск элементов. |