Я использую контекстное меню jquery с полным календарем jquery для копирования и вставки событий. когда я выбираю слот для копирования события, он автоматически не выбирается. Это происходит только тогда, когда я копирую событие, используя контекстное меню. В контекстном меню есть три варианта копирования, вставки и удаления. В jquery функция выбора полного календаря я делаю добавление события по двойному щелчку слота и копирование выбранных событий из ресурса в другой ресурс. Вот мой код контекстного меню.
$i(function () {
$i.contextMenu({
selector: '.fc-timeline-event, .fc-highlight',
callback: function (key, options) {
if (key == "copy" && options.$trigger[0].classList[0] == "fc-timeline-event") {
ContextEventId = options.$trigger[0].id;
}
else if (key == "paste" && options.$trigger[0].classList[0] == "fc-highlight") {
var resourceA = calendar.getResourceById(ContextSlotSelected.resource.id);
var allEvents = resourceA.getEvents();
var existed = false;
var PasteEvent = calendar.getEventById(ContextEventId);
if (PasteEvent != null) {
var eventStartTime = new Date(ContextSlotSelected.start);
//calculate the endtime of copied event
var hourDifference = PasteEvent.end.getHours() - PasteEvent.start.getHours();
var minDifference = PasteEvent.end.getMinutes() - PasteEvent.start.getMinutes();
var eventEndTime = new Date(ContextSlotSelected.start.setHours(ContextSlotSelected.start.getHours() + hourDifference));
eventEndTime.setMinutes(eventEndTime.getMinutes() + minDifference); var today = new Date().toISOString().split("T")[0];
existed = isAnOverlapEventContext(allEvents, eventStartTime, eventEndTime);
if (eventEndTime.getDay() > eventStartTime.getDay()) {
}
else {
if (existed == false) {
calendar.addEvent({
id: makeid(5),
title: '',
start: eventStartTime,
end: eventEndTime,
resourceId: ContextSlotSelected.resource.id,
editable: true,
backgroundColor: "lightgreen",
creationDate: today,
SlotType: '2',
constraint: {
resourceIds: [ContextSlotSelected.resource.id]
}
});
selected = [];
isSelected = false;
}
}
}
calendar.unselect();
}
else if (key == "delete" && options.$trigger[0].classList[0] == "fc-timeline-event") {
var DeleteEventID = options.$trigger[0].id;
var DeleteEvent = calendar.getEventById(DeleteEventID);
if (DeleteEvent != null) {
DeleteEvent.remove();
ContextEventId = "";
}
selected = [];
isSelected = false;
}
},
items: {
"copy": { name: "Copy", icon: "copy" },
"paste": { name: "Paste", icon: "paste" },
"delete": { name: "Delete", icon: "delete" }
}
});
});
Вот изображение GIF для лучшего понимания