Чтобы избежать дублирования событий, я использую эту функцию:fullCalendar: как фильтровать по дате в clientEvents?
function isOverlapping(event){
var array = $('#calendar').fullCalendar('clientEvents');
for(i in array){
if(array[i].id != event.id){
if(array[i].allDay || event.allDay){
if(array[i].start.getDate() == event.start.getDate()){
if(array[i].start.getMonth() == event.start.getMonth()){
return true;
}
}
}
else{
if(event.end > array[i].start && event.start < array[i].end){ return true;}
}
}
}
return false;
}
Если мой календарь имеет множество событий, функция довольно медленно, так, чтобы увеличить скорость, я думал, что неплохо было бы сравнить только события в текущем виде, так что я хотел, чтобы я мог использовать функцию clientEvents
фильтра так:
var array = $('#calendar').fullCalendar('clientEvents', function(events){ return (event.start >= view_start && view_end > event.start)});
Но это возвращает все события.
Примечание: Я объявил view_start
& view_end
как глобальные переменные и вычислил их в ViewDisplay так:
view_start = view.visStart;
view_end = view.visEnd;
Как я могу получить события, которые видны в текущем виде.
Вы хотите, чтобы показать события определенного диапазона времени, как месяц в месяц? Можете ли вы показать, как вы выбираете свои события? –
Я использую php-файл, чтобы получить события из базы данных mysql и использовать 'json_encode' для возврата json-фида. – Thiru
Итак, вы используете JSON, чтобы добавлять свои события, и все еще нужно долго? Почему вы не фильтруете серверные стороны своих событий, а в вас AJAX-вызов передает параметр, который сообщает серверу, какие типы событий вы хотите? –