通常のイベントと終日のイベントの両方を含むフルカレンダーがあります。
allDay-eventsをアジェンダビューの通常のイベントにドラッグできないようにしたい。
終日のイベントには、開始時刻と終了時刻の両方が最初から設定されているため、終了時刻がnullかどうかを確認できません。
おそらく、eventDrop関数にこれをブロックする方法がありますか?
通常のイベントと終日のイベントの両方を含むフルカレンダーがあります。
allDay-eventsをアジェンダビューの通常のイベントにドラッグできないようにしたい。
終日のイベントには、開始時刻と終了時刻の両方が最初から設定されているため、終了時刻がnullかどうかを確認できません。
おそらく、eventDrop関数にこれをブロックする方法がありますか?
このフィドルを確認してください:http://jsfiddle.net/100thGear/GPx28/
注意すべきいくつかのポイント:
allDay
パラメーターは、イベントのallDayを表していません。それはスロットの終日能力を表します。したがって、週ビューでは、上部のバーはasになり、下のタイムスロットはasになります。eventDrop
allDay
true
allDay
false
event
パラメーターにeventDrop
は、更新された日付/時刻があります。したがって、イベントをallDayスロットから6:30 AMスロットに移動した場合、このコールバックのイベントの開始は実際には6:30:00になります。そのため、ドラッグされたイベントのallDayパラメーターをドラッグ開始時に変数に格納しました(eventDragStart
コールバックを介して)id
属性は、それが繰り返し可能なイベントであるかどうかを決定します。フィドルでは、allDayイベントと通常のイベントの両方が同じIDを持っていたため、ドラッグ操作が複雑になります。可能であれば、これは避けてください。eventDrop
単にドロップするだけでなく、呼び出されます。お役に立てれば!
少し遅れましたが、私は同じような問題を抱えていました。私のallDayイベントのいくつかは修正する必要がありましたが、他のイベントは修正しませんでした。私の解決策は、「forceAllDay」と呼ばれる各イベントに対してユーザー定義の値を追加し、それをtrueまたはfalseに設定することでした。
次に、イベントドロップセクションにこれを追加しました:
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc) {
if (event.forceAllDay && !allDay) {
revertFunc();
} else {
if (!confirm('Move event?')) {
revertFunc();
} else {
// UPDATE DATABASE
}
}
}
最新のAPI2.xxに従って、次のように実行できます。
var draggedEventIsAllDay
var eventDragStart = function(ev) {
draggedEventIsAllDay = ev.allDay;
};
var eventDrop = function(ev, delta, revertFunc, jsEvent, ui, view) {
var data = delta._data,
dayDelta = data.days,
minuteDelta = data.minutes,
allDay;
var start = jQuery.fullCalendar.moment(ev.start.format('MM-DD-YYYY'));
if (start.hasTime()) {
allDay = false;
} else {
allDay = true;
}
if (!allDay && draggedEventIsAllDay || allDay && !draggedEventIsAllDay) {
revertFunc();
}
};
終了時刻が瞬間的にnullであるかどうかを確認できます。それが役に立てば幸い
eventDrop: function(event, delta, revertFunc) {
var m = $.fullCalendar.moment(event.end);
if (!m.hasTime() && !event.allDay)
revertFunc();
else {
}
},