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

Класс 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
Наверх