Skip to content

Latest commit

 

History

History
200 lines (149 loc) · 8.46 KB

File metadata and controls

200 lines (149 loc) · 8.46 KB

Манипуляция элементами

Интерфейс ElementsCreator

interface ElementsCreator {
	numeric(): NumericElementsCreator;
	named(): NamedElementsCreator;
}

Абстрактный интерфейс, предоставляющий конкретные интерфейсы с различными возможностями добавления элементов.

 

numeric(): NumericElementsCreator;

Возращает ссылку на NumericElementsCreator.

 

named(): NamedElementsCreator;

Возращает ссылку на NamedElementsCreator.

 

Интерфейс BaseElementsCreator

interface BaseElementsCreator {
	setPositionAfter(relativeLongId: number): this;
	setPositionBefore(relativeLongId: number): this;
	setPositionStart(): this;
	setPositionEnd(): this;
	setPositionChildOf(parentLongId: number): this;
	create(): number[];
}

Базовый интерфейс для добавления новых элементов.

 

setPositionAfter(relativeLongId: number): this;

Устанавливает позицию добавления после relativeLongId. Возвращает this.

 

setPositionBefore(relativeLongId: number): this;

Устанавливает позицию добавления до relativeLongId. Возвращает this.

 

setPositionStart(): this;

Устанавливает позицию добавления в начало. Возвращает this.

 

setPositionEnd(): this;

Устанавливает позицию добавления в конец, это поведение по умолчанию. Этот вариант наиболее эффективный с точки зрения производительности. Возвращает this.

 

setPositionChildOf(parentLongId: number): this;

Устанавливает позицию добавления элемента как дочернего для parentLongId. Возвращает this.

 

create(): number[];

Добавляет элементы и возвращает массив их longId.

 

Интерфейс NumericElementsCreator

interface NumericElementsCreator extends BaseElementsCreator {
	setCount(count: number): this;
}

Интерфейс позволяет добавить заданное количество элементов в заданную позицию таблицы. Аналог кнопки "Добавить элементы" в интерфейсе Optimacros. Перед созданием элементов необходимо указать их количество (нет значения по умолчанию) и позицию добавления (по умолчанию в конец). Интерфейс наследуется от BaseElementsCreator.

 

setCount(count: number): this;

Устанавливает количество добавляемых элементов. Один вызов метода create() позволяет создать максимум 100000 элементов. Возвращает this.

 

Интерфейс NamedElementsCreator

interface NamedElementsCreator extends BaseElementsCreator {
	setElementNames(names: string[]): this;
}

Интерфейс позволяет добавить заданное количество элементов с именами в заданную позицию таблицы. Аналог кнопки "Добавить элементы с именами" в интерфейсе Optimacros. Перед созданием элементов необходимо указать список имён элементов и позицию добавления (по умолчанию в конец). Интерфейс наследуется от BaseElementsCreator.

 

setElementNames(names: string[]): this;

Устанавливает список имён names добавляемых элементов. Имена должны быть уникальны. В случае добавления в справочник имена вдобавок не должны совпадать с названиями его свойств. Возвращает this.

 

Интерфейс ElementsDeleter

interface ElementsDeleter {
	appendIdentifier(identifier: number): this;
	delete(): this;
}

Интерфейс позволяет удалить элементы таблицы. Аналог кнопки "Удалить" в интерфейсе Optimacros.

 

appendIdentifier(identifier: number): this;

Добавляет в буфер элемент, чей longId равен identifier. Повторное добавление элемента в очередь не приводит к ошибкам. Возращает this.

 

delete(): this;

Фактически удаляет все элементы в буфере из таблицы. Возвращает this.

 

Интерфейс ElementsReorder

interface ElementsReorder {
	append(longId: number, relativeLongId?: number, position?: string): this;
	reorder(): this;
	count(): number;
	reverse(): this;
}

Интерфейс позволяет перетасовать элементы и доступен только для элементов справочников. Во время работы хранит очередь элементов, которые функцией reorder() будут переданы на сервер для перепозиционирования в порядке этой очереди.

Аналог кнопки "Переместить" в интерфейсе Optimacros. Но в отличие от интерфейса пользователя, в скриптах 1.0 изменение позиции элемента возможно только в пределах элементов с тем же родительским элементом. Поэтому для постановки элемента в конкретную позицию среди элементов с другим родительским элементом, нужно сначала сменить родителя. Именно так и организован интерфейс пользователя: в таком случае он отправляет на сервер две команды.

 

append(longId: number, relativeLongId?: number, position?: string): this;

Добавляет в очередь данные о longId элемента, который впоследствии будет позиционирован относительно элемента relativeLongId (значение по умолчанию: -1). Возвращает this. Способ позиционирования задаёт аргумент position (регистр имеет значение):

'Before' — непосредственно перед relativeLongId;

'After' — сразу за relativeLongId;

'Start' — в начало (необходимо указать relativeLongId === -1);

'End' — в конец (необходимо указать relativeLongId === -1), это значение по умолчанию.

 

reorder(): this;

Передаёт на сервер данные для фактического перемещения их в модели и очищает буфер. Возвращает this.

 

count(): number;

Возвращает количество элементов в очереди.

 

reverse(): this;

Переворачивает очередь. Возвращает this.

 

API Reference

Оглавление