/ / Wie vermeide ich doppelte Termine im Vollkalender? - Abfrage, Ereignisse, Duplikate, Vollkalender

Wie vermeidet man doppelte Ereignisse im Vollkalender? - jquery, Ereignisse, Duplikate, Vollkalender

Ich versuche, die Duplizierung von Ereignissen am selben Tag mithilfe des vollständigen Kalenders zu vermeiden. Ich habe ein Ereignis mit dem Namen "Gesperrt". Wenn für ein bestimmtes Datum bereits ein gesperrtes Ereignis vorhanden ist, kann der Benutzer kein weiteres hinzufügen.

Mein Problem ist, wie man die Liste der Ereignisse an einem bestimmten Tag auf der Clientseite erhält?

Hier ist mein Code:

$(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);
}
});
}
}
}
);

});

Antworten:

0 für die Antwort № 1

Ich habe eine Antwort auf mein Problem gefunden. Ich bin mir nicht sicher, ob es der beste Weg ist, damit umzugehen, aber es funktioniert im Moment.

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]);
}
});
}
},