fullCalendar
permite que, en lugar de pasar una serie de eventos, se puede pasar una función que, por ejemplo, descarga los eventos de un servidor, o dinámicamente genera esos eventos.
La mayoría de los ejemplos en la documentación usan solicitudes HTTP para obtener datos de eventos. Pero la función de devolución de llamada sigue siendo lo suficientemente flexible como para que funcione de la manera que desee.
mira el siguiente ejemplo que acabo de escribir para usted:
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
events: [
// some original fullCalendar examples
{
title: 'All Day Event',
start: new Date(y, m, 1)
},
{
title: 'Long Event',
start: new Date(y, m, d-5),
end: new Date(y, m, d-2)
},
{
id: 999,
title: 'Repeating Event',
start: new Date(y, m, d-3, 16, 0),
allDay: false
}
]
});
// adding a every monday and wednesday events:
$('#calendar').fullCalendar('addEventSource',
function(start, end, callback) {
// When requested, dynamically generate virtual
// events for every monday and wednesday.
var events = [];
for (loop = start.getTime();
loop <= end.getTime();
loop = loop + (24 * 60 * 60 * 1000)) {
var test_date = new Date(loop);
if (test_date.is().monday()) {
// we're in Moday, create the event
events.push({
title: 'I hate mondays - Garfield',
start: test_date
});
}
if (test_date.is().wednesday()) {
// we're in Wednesday, create the Wednesday event
events.push({
title: 'It\'s the middle of the week!',
start: test_date
});
}
} // for loop
// return events generated
callback(events);
}
);
});
La función anterior genera automáticamente un evento para todos los lunes y miércoles entre las dos fechas. Las fechas se indican en los parámetros start
y end
. Esos parámetros se pasan por fullCallendar
. Los eventos generados por la función anterior se devuelven al fullCallendar
a través de la función callback
en el tercer parámetro.
Uso DateJS para comprobar si una fecha dada es lunes.
ACTUALIZACIÓN: Si desea mezclar eventos estáticos y/o [más de] eventos repetibles, puede usar addEventSource.
Lectores futuros: ahora hay mejores formas de hacerlo (3 años más tarde), pero esto todavía está en los principales resultados de google. Eche un vistazo a http://stackoverflow.com/questions/15161654/recurring-events-in-fullcalendar – slicedtoad