/ / Jak uniknąć powielania zdarzeń w pełnym kalendarzu? - jquery, wydarzenia, duplikaty, pełny kalendarz

Jak uniknąć duplikowania zdarzeń w trybie fullcalendar? - jquery, zdarzenia, duplikaty, fullcalendar

Staram się unikać powielania wydarzeń tego samego dnia, używając pełnego kalendarza. Mam wydarzenie o nazwie „Zablokowane”, a jeśli określona data ma już zdarzenie Zablokowane, nie zezwalaj użytkownikowi na dodanie innego.

Mój problem polega na tym, jak uzyskać listę zdarzeń w określonym dniu po stronie klienta?

Oto mój kod:

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

});

Odpowiedzi:

0 dla odpowiedzi № 1

Znalazłem odpowiedź na mój problem. Nie jestem pewien, czy to najlepszy sposób, aby sobie z tym poradzić, ale na razie działa.

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