1

Rails アプリケーションで arshaw.com/fullcalendar/ を使用しています。それは本当に良いです!

ユーザーがある日から別の日にイベントを移動 (ドラッグ) したときに、eventDrop を使用してイベント テーブルを更新しています。これは、開始時間と終了時間を持つイベントをドラッグする場合にうまく機能します。ただし、終日のイベントをドラッグしてもテーブルは更新されません。

これは私のテーブル更新コードです:

  eventDrop: (event, dayDelta, minuteDelta, allDay, revertFunc) ->
    updateEvent(event);

  eventResize: (event, dayDelta, minuteDelta, revertFunc) ->
    updateEvent(event);


updateEvent = (the_event) ->
  $.update "/events/" + the_event.id,
    event:
      title: the_event.title,
      starts_at: "" + the_event.start,
      ends_at: "" + the_event.end,
      description: the_event.description

何か案は?

ありがとう!

4

1 に答える 1

0

これを解決する簡単な方法は、少しハックすることです (ハックは好きではありませんが、これは必要だと思います)。

allDay イベントの作成時に、そのイベントの終了時刻をプログラムで追加し (開始から 1 時間後)、すべてのイベントに常に終了時刻があることを確認します。

select: function (start, end, allDay, jsEvent, view)
    {
        var title = prompt('event title:');

        if (title)
        {
            var allDay = allDay ? true : false;
            if (allDay)
            {   // this ensures that allDay tasks have end time if they're to be changed to non allDay tasks
                end.setHours(end.getHours() + 1);
            }

            createEvent(
            {
                title: title,
                start: start,
                end: end,
                allDay: allDay
            });
        }
        $calendar.fullCalendar('unselect');
    },

createEvent 関数は次のとおりです。

function createEvent(event)
{
    $spinner.show();
    $.create(
        "/tasks",
        {
            "task":
            {
                name: event.title,
                starts_at: "" + event.start,
                ends_at: "" + event.end,
                all_day: event.allDay
            }
        },
        function (response)
        {
            $spinner.hide();
            var id = response.id;
            $calendar.fullCalendar('renderEvent',
            {
                id: id,
                title: event.title,
                start: event.start,
                end: event.end,
                allDay: event.allDay ? true : false
            },
            true // make the event "stick"
            );
        }
    );
}
于 2012-12-23T14:57:14.800 に答える