/ / Як уникнути дублювання подій у fullcalendar? - jquery, події, дублікати, fullcalendar

Як уникнути дублювання подій на повному календарі? - jquery, події, дублікати, повний календар

Я намагаюся уникати дублювання подій в той же день, використовуючи повний календар. У мене подія під назвою "Заблоковано", і якщо в певну дату вже є подія "Блоковано", не дозволяйте користувачеві додавати ще одну.

Моя проблема полягає в тому, як отримати список подій у конкретний день на стороні клієнта?

Ось мій код:

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

});

Відповіді:

0 для відповіді № 1

Знайшов відповідь на мою проблему. Не впевнений, чи це найкращий спосіб впоратися з цим, але зараз він працює.

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