2012-04-24 4 views
2

Я использую Fullcalendar (http://arshaw.com/fullcalendar) в своем проекте. Он получает события через источник json.Javascript Fullcalendar - копирование событий

Я хочу предоставить пользователю возможность скопировать одно событие в календаре на другой день - и я хотел бы использовать перетаскивание для этого (ну, это требование клиента).

Но перетаскивание похоже на перемещение события, а не на копирование - есть ли способ получить «копию» события, которое перетаскивается (или копировать в исходное место), так что это похоже на операцию копирования?

Я попытался скопировать объект события в обратный вызов eventDragStart, но он не сработал.

+1

IMO последний комментарий в этой теме может дать вам отправную точку http://code.google.com/p/fullcalendar/issues/detail ? id = 105 –

+0

Если вы каким-то образом достигнете этого. Вы потеряете функциональность перетаскивания. Это приемлемо для вас? –

+0

Да, мне нужно только скопировать, а не перемещать события вокруг ... – kender

ответ

1

Попробуйте это:

eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) { 
    // Create an event object and copy at least the start date and the title from event 
    var eventClone = { 
     title:event.title, 
     start: event.start, 
     end: event.end 
    }; 

    // Render new event with new event object 
    $('#calendar').fullCalendar('renderEvent', eventClone); 

    // Revert the changes in parent event. To move it back to original position 
    revertFunc(); 
} 

Это просто идея. Я не тестировал этот код. Пожалуйста, дайте мне знать, как это работает. Спасибо

+0

Возможно, вам придется использовать метод [clone method] (http://stackoverflow.com/questions/122102/what-is-the-most-efficient -way-to-clone-a-javascript-object) для создания глубоких копий дат начала и окончания. Но не клонируйте весь объект события. Поскольку он содержит _id (идентификатор, назначенный fullCalendar для каждого события), который может вызвать проблемы. –

5

Ниже мое решение, которое позволяет пользователю удерживать клавишу Shift для копирования событий. Обратите внимание, что это фактически перемещает оригинальное событие и оставляет копию в исходном положении.

Я начал с this reference и создал следующее:

//Before the fullCalendar object 

    var copyKey = false; 
    $(document).keydown(function (e) { 
     copyKey = e.shiftKey; 
    }).keyup(function() { 
     copyKey = false; 
    }); 

//then inside the fullCalendar object 

    eventDragStart: function (event, jsEvent, ui, view) { 
     if (!copyKey) return; 
     var eClone = { 
      title: event.title, 
      start: event.start, 
      end: event.end 
     }; 
     $('#calendar').fullCalendar('renderEvent', eClone); 
    }, 
+0

ЛЮБОВЬ, чтобы увидеть скрипку этого – HPWD

Смежные вопросы