Перейти к основному содержимому

Операции с объектом события

Получение объекта события

Чтобы получить объект события, используйте метод getEvent:

scheduler.parse([
{id:1, start_date:"2027-05-13 6:00", end_date:"2027-05-13 8:00", text:"Event 1"},
{id:2, start_date:"2027-06-09 6:00", end_date:"2027-06-09 8:00", text:"Event 2"}
]);
...
const eventObj = scheduler.getEvent(1);
//->{id:1, start_date:"2027-05-13 6:00", end_date:"2027-05-13 8:00", text:"Event 1"}

Получение событий за указанный период времени

Чтобы получить коллекцию событий, происходящих в заданный период, используйте метод getEvents:

const evs = scheduler.getEvents(new Date(2027,1,10),new Date(2027,2,10)); 
//где evs - массив объектов-событий

Получение всех событий в Scheduler

Чтобы получить все загруженные в планировщик события, вызовите метод getEvents без параметров, как показано:

const evs = scheduler.getEvents();
// возвращает все события в виде массива объектов

Получение ближайшего события, начиная с текущей даты

const evs = scheduler.getEvents(new Date(), new Date(9999,1,1));    
//evs - список всех предстоящих событий
evs.sort(function(a,b){ return (a.start_date > b.start_date ? 1 : -1); });
//evs[0] - ближайшее предстоящее событие

Получение идентификатора события

Чтобы получить идентификатор события по значению одного из свойств события, используйте следующую технику:

Пример: получение идентификатора события по тексту события.

scheduler.parse([
{id:1, start_date:"2027-05-13 6:00", end_date:"2027-05-13 8:00", text:"Event 1"},
{id:2, start_date:"2027-06-09 6:00", end_date:"2027-06-09 8:00", text:"Event 2"}
]);
...

const evs = scheduler.getEvents(); //получает все события планировщика
for(let i = 0; i < evs.length; i++){ //перебираем все события, чтобы найти нужное
if (evs[i].text == "Event 2")
const eventId = evs[i].id;// -> 2
};

Если вы знаете примерное время появления нужного события, лучше ограничить возвращаемую коллекцию событий, чтобы увеличить скорость работы приложения:

const evs = scheduler.getEvents(new Date(2027,05,01),new Date(2027,05,10)); 
for(let i = 0; i < evs.length; i++){
if (evs[i].text == "Event 2")
const eventId = evs[i].id;// -> 2
};

Изменение идентификатора события

Чтобы изменить текущий идентификатор события, можно использовать метод changeEventId как показано:

scheduler.changeEventId("ev15", "ev25"); //изменит идентификатор события "ev15" на "ev25"

Установка метки опции lightbox как текста события

По умолчанию текст события Scheduler устанавливается через сопоставляемое текстовое поле из lightbox.

default_event_text

Также возможно переопределить поведение по умолчанию и использовать метку выбранной в комбобоксе опции как текст события.

option_event_text

Текст события задается одной из следующих шаблонов: event_text или event_bar_text, в зависимости от типа представления. Таким образом, чтобы изменить схему добавления текста в событие, следует переопределить соответствующий шаблон.

scheduler.config.lightbox.sections = [
{ name:"type", height:21, inputWidth:400, map_to:"type", type:"select",
options:scheduler.serverList("options", [
{key:1, label:"Simple"},
{key:2, label:"Complex"},
{key:3, label:"Unknown"}
]
)},
{name:"time", height:72, type:"time", map_to:"auto"}
];

scheduler.templates.event_text = scheduler.templates.event_bar_text = function(start, end, event){
const options = scheduler.serverList("options");

for(let i = 0; i < options.length; i++){
if(options[i].key == event.type){
return options[i].label;
}
}

return "";
};

Существует несколько заметок по приведенному выше коду:

  • Метод serverList используется для предоставления опций для выпадающего списка и их извлечения внутри шаблона. Вы можете загружать опции вместе с данными событий через JSON-коллекции (см. Data formats) и обновлять их позже с помощью updateCollection.

  • Внутри шаблона выполняется линейный поиск по выбранному элементу. В некоторых случаях, когда у вас много событий/опций, это может заметно повлиять на производительность, так как эти шаблоны могут вызываться довольно часто. Чтобы решить эту проблему, можно создать хеш для быстрого поиска вместо постоянной перебиракости массива.

  • На клиентской стороне должен быть полный список опций для их отображения. В противном случае вам придется загружать опции вручную, например если вы используете функциональность автодополнения, которая подгружает необходимые опции динамически.

Need help?
Got a question about the documentation? Reach out to our technical support team for help and guidance. For custom component solutions, visit the Services page.