Как настроить событие для перетаскивания в EventCalendar сразу при загрузке страницы?

Как правильно инициализировать новое событие при загрузке страницы и перевести его в состояние перетаскивания по календарю с использованием кода, приведенного ниже? 

```javascript
const ec = new EventCalendar(document.getElementById('calendar'), {
    view: 'resourceTimeGridDay',
    locale: 'ru',
    navLinks: true,
    allDaySlot: false,
    allDayContent: false,
    weekNumberCalculation: 'ISO',
    firstDay: 1,
    editable: true, 
    slotMinTime: '07:00:00',
    headerToolbar: {
        start: 'prev,next today',
        center: 'title',
        end: 'dayGridMonth,timeGridWeek,resourceTimeGridDay'
    },
    dayHeaderFormat: {
        weekday: 'long',
    },
    buttonText: {
        today: 'Сегодня',
        dayGridMonth: 'Месяц',
        timeGridWeek: 'Неделя',
        resourceTimeGridDay: 'День'
    },
    resources: [
        {id: 1, title: 'Тестовый замерщик'},
    ],
    events: [
        {
            id: '1',
            title: 'Тестовый замер {{ $order_id }}',
            start: '2025-03-07T09:00:00',
            end: '2025-03-07T11:00:00',
            resourceId: 1, 
            editable: true, 
            startEditable: true,
        }
    ],
    eventDrop: function(info) {
        console.log(info.event);
    },
    eventReceive: function(info) {
        console.log(info.event);
    },
    eventDragStart: function(info) {
        console.log(info.event);
    }
}); 

let newEvent = {
    id: '2',
    title: 'Новый тестовый замер',
    resourceId: 2,
    editable: true,
    startEditable: true,
};
ec.addEvent(newEvent);
```

Дополнительно, можно ознакомиться с информацией на <a href="https://github.com/vkurko/ca
  • 7 марта 2025 г. 9:34
Ответы на вопрос 1
Для того чтобы запустить событие перетаскивания сразу после загрузки страницы, необходимо использовать метод, который инициирует процесс перетаскивания у созданного события. Однако, в большинстве библиотек, даже в EventCalendar (если это аналог FullCalendar), прямая инициатива перетаскивания программным путем может быть не поддержана.

Тем не менее, вы можете попробовать программно имитировать поведение "перетаскивания". Обычно для этого нужно:

1. Создать событие.
2. Использовать событие для инициализации перетаскивания.

Поскольку в данной библиотеке может не быть встроенного метода для начала перетаскивания, придется использовать JavaScript, чтобы добавить поведение по перетаскиванию. Ваша задача сводится к созданию события, а затем визуальному изменению его положения.

Ниже приведен пример, как это можно сделать:

```javascript
// Инициализация календаря
const ec = new EventCalendar(document.getElementById('calendar'), {
    view: 'resourceTimeGridDay',
    locale: 'ru',
    navLinks: true,
    allDaySlot: false,
    allDayContent: false,
    weekNumberCalculation: 'ISO',
    firstDay: 1,
    editable: true, 
    slotMinTime: '07:00:00',
    headerToolbar: {
        start: 'prev,next today',
        center: 'title',
        end: 'dayGridMonth,timeGridWeek,resourceTimeGridDay'
    },
    dayHeaderFormat: {
        weekday: 'long',
    },
    buttonText: {
        today: 'Сегодня',
        dayGridMonth: 'Месяц',
        timeGridWeek: 'Неделя',
        resourceTimeGridDay: 'День'
    },
    resources: [
        {id: 1, title: 'Тестовый замерщик'},
    ],
    events: [
        {
            id: '1',
            title: 'Тестовый замер {{ $order_id }}',
            start: '2025-03-07T09:00:00',
            end: '2025-03-07T11:00:00',
            resourceId: 1, 
            editable: true, 
            startEditable: true,
        }
    ],
    eventDrop: function(info) {
        console.log(info.event);
    },
    eventReceive: function(info) {
        console.log(info.event);
    },
    eventDragStart: function(info) {
        console.log(info.event);
    }
});

// Создание нового события
let newEvent = {
    id: '2',
    title: 'Новый тестовый замер',
    start: '2025-03-07T11:00:00', // Устанавливайте начальное время
    end: '2025-03-07T12:00:00', // Устанавливайте конечное время
    resourceId: 1, // Убедитесь, что у вас есть соответствующий ресурс
    editable: true,
    startEditable: true,
};

// Добавление события в календарь
ec.addEvent(newEvent);

// Функция для имитации перетаскивания
function startDraggingEvent(eventId) {
    const event = ec.getEventById(eventId);
    if (event) {
        // Здесь вы должны реализовать логику для "перетаскивания"
        // Например, вы можете изменить позицию события, или отдать управление другим компонентам
        console.log(`Перетаскивание события ${event.title}`);
        // Возможно вам понадобиться использовать внутренний API библиотеки для управления событиями (если доступен)
    }
}

// Запуск имитации перетаскивания после загрузки страницы
startDraggingEvent('2');
```

Учтите, что библиотека может не поддерживать полноценное перетаскивание программным путем из-за архитектуры. В этом случае, вам необходимо будет взаимодействовать с ее внутренним API или расширять функциональность через события или слушатели, если это доступно.
Похожие вопросы