Stream
Описание
Класс для работы со списком элементов таймлайна.
BX.UI.Timeline.Stream
Все элементы таймлайна - наследники класса Item.
Все редакторы - наследники Editor.
Таймлайн состоит из четырех частей:
- редакторы;
- запланировано;
- прикреплено;
- все элементы.
Элементы из раздела Запланировано не отображаются в общем списке, их нельзя прикрепить.
Элементы из раздела Прикреплено - это дубли элементов из общего списка (т.е. один элемент имеет два экземпляра, один в общем списке, второй в прикрепленных).
У этих элементов будет один и тот же идентификатор, но это два разных объекта.
Элементы в общем разделе сгруппированы по дням, в начале каждого дня есть разделитель (для работы с ними есть отдельные методы).
Сам таймлайн занимается только отрисовкой, он не делает никаких запросов. Действия пользователей вызывают события, обработчики которых должны делать свои ajax-запросы.
Методы
Метод | Описание | С версии |
---|---|---|
constructor(params: {}) | Конструктор.
Параметры:
| |
createItem(data: {}, itemClassName: ?Function): ?Item | Метод создаст новый элемент, если переданы корректные данные. | |
addItem(item: Item): Stream | Метод добавит новый элемент в массив элементов. Если надо, то элемент будет склонирован в список прикрепленных элементов.
| |
getItems(): Array | Метод вернет массив всех элементов. | |
getItem(id: string|number): ?Item | Метод вернет элемент по его идентификатору.
| |
getPinnedItems(): Array | Метод вернет массив всех прикрепленных элементов. | |
getPinnedItem(id: string|number): ?Item | Метод вернет прикрепленный элемент по его идентификатору.
| |
getTasks(): Array | Метод вернет массив всех элементов из раздела Запланировано. | |
getPinnedItem(id: string|number): ?Item | Метод вернет элемент из раздела Запланировано по его идентификатору.
| |
render(): Element | Метод отрисует таймлайн и вернет DOM-элемент. | |
getContainer(): ?Element | Метод вернет контейнер с отрисованным таймлайном (если он был отрисован). | |
updateTasks(tasks: Array) | Этот метод полностью перерисует раздел Запланировано с новыми элементами. При этом для удаления старых элементов и для добавления новых будет использована анимация.
| |
static getDayFromDate(date: Date): ?string | Метод вернет строковое представление дня из даты
| |
getDateSeparator(day: string): ?Elemen | Вернет существующий разделитель, если он есть.
| |
createDateSeparator(day: string): Element | Создаст новый разделитель, но он не будет помещен в DOM.
| |
static isToday(date: Date): boolean | Вернет true , если дата сегодняшняя.
| |
insertItem(item: Item): this | Метод добавит новый элемент item в начало ленты с анимацией. Если надо, будет добавлен разделитель.
| |
pinItem(item: Item): Stream | Метод добавит элемент item в список прикрепленных элементов с анимацией. | |
unPinItem(item: Item): Stream | Метод уберет элемент item из списка прикрепленных с анимацией. | |
deleteItem(item: Item) | Метод удалит элемент item с анимацией, неважно в каком разделе он расположен. | |
startProgress() | Метод покажет лоадер и сохранит состояние обработки аякс-запроса. | |
stopProgress() | Метод скроет лоадер и сбросит состояние обработки аякс-запроса. | |
getLoader() | Метод вернет объект BX.Loader . | |
enableLoadOnScroll() | Метод включает обработку события скролла списка элементов. При скролле до конца списка вызывается событие onScrollToTheBottom . | |
disableLoadOnScroll() | Метод отключает обработку события скролла списка элементов. |
События
Событие | Описание |
---|---|
namespace: BX.UI.Timeline.Stream | |
onAfterInit | Событие бросается в конце работы конструктора. С помощью него можно получить доступ к объекту списка.
Например, у нас есть элементы с Для этого регистрируем обработчик события: ```javascript BX.Event.EventEmitter.subscribe('BX.UI.Timeline.Stream:onAfterInit', (event) => { const stream = event.getData().stream; stream.itemClasses.set('delete_section', MyModule.Timeline.DeleteSection); }); ``` Для перехвата остальных событий необходимо наличие объекта. Поэтому в обработчике ```javascript stream.subscribe('onAfterRender', () => { const container = stream.getContainer(); // все остальные ноды находятся в stream.layout }); ``` |
onAfterRender | Событие бросается после рендеринга таймлайна.
В обработчике события можно получить контейнер с помощью метода |
onScrollToTheBottom | Событие бросается при скролле до нижнего края общего списка элементов. |
onPinClick | Событие бросается при клике на скрепку элемента.
|