FullCalendarを使用ã—ã¦ã€Googleカレンダーã®ã‚ˆã†ãªUIを実装ã™ã‚‹ä½¿ç”¨ä¾‹ã‚’紹介ã—ã¾ã™ã€‚
https://fullcalendar.io/download/
ã“ã¡ã‚‰ã®ã‚µã‚¤ãƒˆã‹ã‚‰ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¾ã™ã€‚
ダウンãƒãƒ¼ãƒ‰ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’解å‡ã—ã€å«ã¾ã‚Œã¦ã„る以下ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’使用ã—ã¾ã™ã€‚
fullcalendar.min.css
fullcalendar.min.js
<link href="fullcalendar.min.css" rel="stylesheet" type="text/css" />
<script src="fullcalendar.min.js"></script>
<div id="calendar"></div>
HTMLå´ã¯ãŸã£ãŸã“ã‚Œã ã‘ã§ã™ã€‚
CSS・Javascriptã‚’èªã¿è¾¼ã¿ã€calendarã¨ã„ã†IDã®ã‚¿ã‚°ã‚’é…ç½®ã—ã¦ã„ã¾ã™ã€‚
$(function () {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay,listWeek'
},
titleFormat: 'YYYY年MM月DD日',
titleRangeSeparator: '~',
defaultView: 'agendaWeek',
defaultDate: today_at,
allDaySlot: false,
buttonText: {
today: '今日',
month: '月',
week: '週',
day: 'æ—¥',
list: 'リスト',
},
monthNames: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
monthNamesShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
dayNames: ['日曜日', '月曜日', 'ç«æ›œæ—¥', '水曜日', '木曜日', '金曜日', '土曜日'],
dayNamesShort: ['æ—¥', '月', 'ç«', 'æ°´', '木', '金', '土'],
editable: false,
eventLimit: true, // allow "more" link when too many events
events: {
url: '/schedule/list', // ã‚¹ã‚±ã‚¸ãƒ¥ãƒ¼ãƒ«æƒ…å ±ã‚’jsonã§å–å¾—ã™ã‚‹ãŸã‚ã®URLを記載
error: function() {
alert('スケジュールã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚');
}
},
eventClick: function(event) {
openModal('schedule/edit/' + event.id)
}
});
});
ã“ã‚“ãªæ„Ÿã˜ã§ã™ã€‚
/schedule/list ã«ã¯ã€GETã§startã€endã®ãƒ‡ãƒ¼ã‚¿ãŒæ¸¡ã•ã‚Œã‚‹ã®ã§ã€ãれを元ã«æƒ…å ±ã‚’jsonå½¢å¼ã§è¿”ã™ãƒ—ãƒã‚°ãƒ©ãƒ を実装ã—ã¦ã‚ã’ã‚Œã°å®Œäº†ã§ã™ã€‚
ã¾ãŸã€eventClick を使用ã—ã¦ã€ç™»éŒ²ã•ã‚Œã¦ã„るイベントを編集ã™ã‚‹ã“ã¨ã‚‚å¯èƒ½ã§ã™ã€‚