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