pages/fullcalendar-main/tests/manual/jquery-connector.html
2024-03-06 14:33:17 +01:00

183 lines
4.5 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<script src='../../bundle/dist/index.global.js'></script>
<script src='https://cdn.jsdelivr.net/npm/jquery@3.6.1/dist/jquery.js'></script>
<script>
// The jQuery Connector
// ----------------------------------------------------------------------------------------------------
$.fn.fullCalendar = function(options) {
var args = Array.prototype.slice.call(arguments, 1) // for a possible method call
var res = this // what this function will return (the current jQuery object by default)
this.each(function(i, el) { // loop each DOM element involved
var $el = $(el)
var calendar = $el.data('fullCalendar') // get the existing calendar object (if any)
var singleRes // the returned value of this single method call
// a method call
if (typeof options === 'string') {
if (options === 'getCalendar') {
if (!i) { // first element only
res = calendar
}
} else if (options === 'destroy') { // don't warn if no calendar object
if (calendar) {
calendar.destroy()
$el.removeData('fullCalendar')
}
} else if (!calendar) {
console.warn('Attempting to call a FullCalendar method on an element with no calendar.')
} else if ($.isFunction(calendar[options])) {
singleRes = calendar[options].apply(calendar, args)
if (!i) {
res = singleRes // record the first method call result
}
} else {
console.warn("'" + options + "' is an unknown FullCalendar method.")
}
// an initialization
} else {
if (calendar) {
console.warn('Can\'t initialize another calendar on the same element.')
} else {
calendar = new FullCalendar.Calendar(el, options)
$el.data('fullCalendar', calendar)
calendar.render()
}
}
})
return res
}
// The Actual Example
// ----------------------------------------------------------------------------------------------------
$(document).ready(function() {
var $calendar = $('#calendar')
$calendar.fullCalendar({
headerToolbar: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
},
initialDate: '2020-09-12',
navLinks: true, // can click day/week names to navigate views
editable: true,
dayMaxEvents: true, // allow "more" link when too many events
events: [
{
title: 'All Day Event',
start: '2020-09-01',
},
{
title: 'Long Event',
start: '2020-09-07',
end: '2020-09-10'
},
{
groupId: 999,
title: 'Repeating Event',
start: '2020-09-09T16:00:00'
},
{
groupId: 999,
title: 'Repeating Event',
start: '2020-09-16T16:00:00'
},
{
title: 'Conference',
start: '2020-09-11',
end: '2020-09-13'
},
{
title: 'Meeting',
start: '2020-09-12T10:30:00',
end: '2020-09-12T12:30:00'
},
{
title: 'Lunch',
start: '2020-09-12T12:00:00'
},
{
title: 'Meeting',
start: '2020-09-12T14:30:00'
},
{
title: 'Happy Hour',
start: '2020-09-12T17:30:00'
},
{
title: 'Dinner',
start: '2020-09-12T20:00:00'
},
{
title: 'Birthday Party',
start: '2020-09-13T07:00:00'
},
{
title: 'Click for Google',
url: 'http://google.com/',
start: '2020-09-28'
}
]
})
$('#prev-button').on('click', function() {
$calendar.fullCalendar('prev')
})
$('#next-button').on('click', function() {
$calendar.fullCalendar('next')
})
$('#gotoDate-button').on('click', function() {
$calendar.fullCalendar('gotoDate', '2020-09-01')
})
})
</script>
<style>
body {
margin: 40px 10px;
padding: 0;
font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
font-size: 14px;
}
#calendar {
max-width: 1100px;
margin: 0 auto;
}
</style>
</head>
<body>
<button id='prev-button'>prev</button>
<button id='next-button'>next</button>
<button id='gotoDate-button'>goto year 2000</button>
<div id='calendar'></div>
</body>
</html>