Документация для разработчиков
Темная тема

Класс 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.

    Для элемента можно определить следующие опции:


  • 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.

    Для элемента можно определить следующие опции:


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

© «Битрикс», 2001-2024, «1С-Битрикс», 2024