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 | Событие бросается при клике на скрепку элемента.
|
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.