fullCalendar
イベントの配列を渡す代わりに、たとえばサーバーからイベントをダウンロードしたり、それらのイベントを動的に生成したりする関数を渡すことができます。
ドキュメントのほとんどの例では、HTTPリクエストを使用してイベントデータを取得しています。ただし、コールバック関数は、希望どおりに機能するように十分な柔軟性を備えています。
私があなたのために書いた次の例を見てください。
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
events: [
// some original fullCalendar examples
{
title: 'All Day Event',
start: new Date(y, m, 1)
},
{
title: 'Long Event',
start: new Date(y, m, d-5),
end: new Date(y, m, d-2)
},
{
id: 999,
title: 'Repeating Event',
start: new Date(y, m, d-3, 16, 0),
allDay: false
}
]
});
// adding a every monday and wednesday events:
$('#calendar').fullCalendar( 'addEventSource',
function(start, end, callback) {
// When requested, dynamically generate virtual
// events for every monday and wednesday.
var events = [];
for (loop = start.getTime();
loop <= end.getTime();
loop = loop + (24 * 60 * 60 * 1000)) {
var test_date = new Date(loop);
if (test_date.is().monday()) {
// we're in Moday, create the event
events.push({
title: 'I hate mondays - Garfield',
start: test_date
});
}
if (test_date.is().wednesday()) {
// we're in Wednesday, create the Wednesday event
events.push({
title: 'It\'s the middle of the week!',
start: test_date
});
}
} // for loop
// return events generated
callback( events );
}
);
});
上記の関数は、2つの日付の間の毎週月曜日と水曜日のイベントを自動的に生成します。日付はstart
とパラメータで示されend
ます。これらのパラメータは。によって渡されfullCallendar
ます。上記の関数によって生成されたイベントは、3番目のパラメーターfullCallendar
の関数を介して返されcallback
ます。
DateJSを使用して、特定の日付が月曜日かどうかをテストします。
更新:静的イベントや[複数の]繰り返し可能なイベントを混在させたい場合は、addEventSourceを使用できます。