jquery - ¿Cómo evitar la duplicación de eventos en fullcalendar?
events duplicates (1)
Estoy intentando evitar la duplicación de eventos el mismo día utilizando el calendario completo. Tengo un evento llamado ''Bloqueado'' y si una fecha específica ya tiene un evento Bloqueado, no le permite al usuario agregar otro.
Mi problema es cómo obtener la lista de eventos en un día específico en el lado del cliente.
Aquí está mi código:
$(document).ready(function () {
$(''.calendar'').fullCalendar({
dayClick: function (date, jsEvent, view, resourceObj) {
// Here I would like to check if this date already have a ''Blocked'' event, if yes do not need to render another event and make another ajax call.
var newEvent = {
title: ''Blocked'',
start: date
};
$(''.calendar'').fullCalendar(''renderEvent'', newEvent, ''stick'');
$.ajax({
type: "GET",
url: "block_date",
dataType: "json",
data: {date: date.toJSON()},
error: function (result) {
$(''.calendar'').fullCalendar(''removeEvents'', newEvent);
}
});
},
eventClick: function (calEvent, jsEvent, view) {
if (calEvent.title == ''Blocked'') {
$(''.calendar'').fullCalendar(''removeEvents'', calEvent._id);
$.ajax({
type: "GET",
url: "unblock_date",
dataType: "json",
data: {date: calEvent.start.toJSON()},
error: function (result) {
$(''.calendar'').fullCalendar(''renderEvent'', calEvent);
}
});
}
}
}
);
});
Encontré una respuesta a mi problema. No estoy seguro de si es la mejor manera de manejarlo, pero está funcionando por ahora.
dayClick: function (date, jsEvent, view) {
var blockedEvents = $(''.calendar'').fullCalendar(''clientEvents'', function (event) {
return event.title == ''Blocked'' && event.start.format() == date.format();
});
if (blockedEvents.length < 1) {
var newEvent = {
title: ''Blocked'',
start: date
};
$(''.calendar'').fullCalendar(''renderEvent'', newEvent, ''stick'');
$.ajax({
type: "GET",
url: "block_date",
dataType: "json",
data: {date: date.toJSON()},
error: function (result) {
$(''.calendar'').fullCalendar(''removeEvents'', newEvent);
}
});
} else {
$(''.calendar'').fullCalendar(''removeEvents'', blockedEvents[0]._id);
$.ajax({
type: "GET",
url: "unblock_date",
dataType: "json",
data: {date: blockedEvents[0].start.toJSON()},
error: function (result) {
$(''.calendar'').fullCalendar(''renderEvent'', blockedEvents[0]);
}
});
}
},