Полный календарь выбранного слота снимается автоматически при копировании и событии - PullRequest
0 голосов
/ 27 марта 2020

Я использую контекстное меню 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 для лучшего понимания

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...