Publicado por: 5

Vaya! Otro problema de estos que cuestan resolver y que gustan de compartir con la gente…
Resulta que usando el FullCalendar, nuestra aplicación empezaba a realizar más de una llamada ajax cada vez que pulsabamos un botón del calendario.

Pues el problema estaba básicamente en que cuando recargamos el calendario segun ciertas acciones del usuario, lo haciemos de la siguiente forma:

$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('addEventSource', my_url);

Y nada… Resulta que de esta manera, se iban creando ‘event sources‘ en el calendario y FullCalendar no tiene una forma de hacer limpieza de estos de forma sencilla.

Menos mal que gracias a este hilo de google code, encontramos esta faena hecha.

Sólo tenemos que abrir nuestro fullcalendar.js (actualmente versión 1.4.11) e irnos al apartado de EventManager y añadir:

t.removeEventSources = removeEventSources;
function removeEventSources() {
   sources = [];
   // remove all client events from all sources
   cache = [];
   reportEvents(cache);
}

Ahora ya si que podemos recargar el calendario correctamente:

$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('removeEventSources');
$('#calendar').fullCalendar('addEventSource', my_url);

Bueno. Espero que os ayude…

5 Comentarios

  1. jamaldt

    Me acabas de salvar con este post…tengo una entrega mañana y no sabia como hacerle para integrar los eventos …full gracias

  2. maria

    estimados, estoy utilizando esta herramienta pero tengo un problema, yo al momento de seleccionar en un combo un turno, me muestra el calendarios con el turno de la mañana , y al momento de seleccionar en el combo el turno tarde, me crea otro calendario arriba y me muestra el turno de la tarde, es decir me muestra dos calendario, y asu sucesivamente, si selecciono de nuevo el turno de mañana me crea otro calendario con el turno de la mañana ya son ahi 3 calendarios.. como puedo solucionar esto.. muchas gracias por su ayuda

  3. Adolfo

    Disculpa el tiempo o por revivir el post pero tengo un problema que no he podido solucionar.

    El problema: consulto de la base de datos todos los eventos del mes y año actual, son como 450 por lo general, pero esto hace que la pagina se cuelgue y he intentado de todo y no he hecho de que sea mas rapido u optimo. tengo mi función de esta manera:

    $(‘#calendar’).fullCalendar({
    events: function() {
    $.ajax({
    type: ‘POST’,
    // data: {‘startDate’: start, ‘endDate’: end, ‘buCals[]’: cal},
    url: ”,
    dataType: ‘json’,
    // async: false,
    success: function(data){
    var newEvents = [];
    var events = new Object();
    $(data).each(function(i, index) {
    events = {
    title: data[i].name_activity,
    start: data[i].date_start,
    }
    newEvents.push(events);
    $(‘#calendar’).fullCalendar(‘renderEvent’,newEvents[i]);
    });
    // $(‘#calendar’).fullCalendar(‘addEventSource’);

    }
    });

    }
    });

    al intentar cargar esos 450 eventos, se cuelga la pagina :s
    me ayudas por favor?

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.