我使用的是fullcalendar。
通过选择数据的范围,我可以检查有多少项目是在选定的范围。
现在,我需要根据日历间隔(15分钟)将这些任务划分为时间间隔,以验证是否有2个事件彼此相邻。如果在同一时间间隔内有2个事件(事件1和事件2),则用户应无法选择此间隔。
如何做到这一点?
http://jsfiddle.net/LFAzB/
$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'agendaDay'
},
defaultView: 'agendaDay',
allDaySlot: false,
scrollTime: '10:00:00',
slotDuration: '00:15:00',
minTime: '06:45:00',
maxTime: '23:15:00',
eventDurationEditable: true,
eventStartEditable: true,
selectable: true,
selectHelper: true,
events: [
{
title: 'Event 1',
start: moment().format('YYYY-MM-DD') + 'T10:30:00',
end: moment().format('YYYY-MM-DD') + 'T10:45:00'
},
{
title: 'Event 2',
start: moment().format('YYYY-MM-DD') + 'T10:30:00',
end: moment().format('YYYY-MM-DD') + 'T10:45:00'
},
{
title: 'Longer Event',
start: moment().format('YYYY-MM-DD') + 'T12:30:00',
end: moment().format('YYYY-MM-DD') + 'T13:45:00'
},
{
title: 'Meeting',
start: moment().format('YYYY-MM-DD') + 'T13:45:00',
end: moment().format('YYYY-MM-DD') + 'T14:00:00'
}
],
select: function(start, end) {
console.log( 'Events :' + getEventsByTime( start, end ).length );
console.log( getEventsByTime( start, end ) );
}
});
});
function getEventsByTime( start, stop ) {
var todaysEvents = $('div[name=calendar]').fullCalendar('clientEvents', function(event) {
return (
( event.start >= start && event.end <= stop ) ||
( start >= event.start && stop <= event.end) ||
(start <= event.start && stop >= event.start) ||
(start >= event.start && start <= event.end)
);
});
return todaysEvents;
}
2条答案
按热度按时间zazmityj1#
我知道了。她的解决办法是:
http://jsfiddle.net/LFAzB/5/
guicsvcw2#
下面的函数将start_date和end_date作为必需参数,这些参数将位于date对象中,可选参数(天间隔:dy_inv,小时间隔:hr_inv,分钟间隔:min_inv)将基于要拆分范围的间隔值。默认情况下,它将按1天拆分