123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset='utf-8' />
- <link href='../packages/core/main.css' rel='stylesheet' />
- <link href='../packages/daygrid/main.css' rel='stylesheet' />
- <link href='../packages/timegrid/main.css' rel='stylesheet' />
- <link href='../packages/list/main.css' rel='stylesheet' />
- <script src='../packages/core/main.js'></script>
- <script src='../packages/interaction/main.js'></script>
- <script src='../packages/daygrid/main.js'></script>
- <script src='../packages/timegrid/main.js'></script>
- <script src='../packages/list/main.js'></script>
- <script>
-
- document.addEventListener('DOMContentLoaded', function() {
- var initialTimeZone = 'local';
- var timeZoneSelectorEl = document.getElementById('time-zone-selector');
- var loadingEl = document.getElementById('loading');
- var calendarEl = document.getElementById('calendar');
-
- var calendar = new FullCalendar.Calendar(calendarEl, {
- plugins: [ 'interaction', 'dayGrid', 'timeGrid', 'list' ],
- timeZone: initialTimeZone,
- header: {
- left: 'prev,next today',
- center: 'title',
- right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
- },
- defaultDate: '2019-08-12',
- navLinks: true, // can click day/week names to navigate views
- editable: true,
- selectable: true,
- eventLimit: true, // allow "more" link when too many events
- events: {
- url: 'php/get-events.php',
- failure: function() {
- document.getElementById('script-warning').style.display = 'inline'; // show
- }
- },
- loading: function(bool) {
- if (bool) {
- loadingEl.style.display = 'inline'; // show
- } else {
- loadingEl.style.display = 'none'; // hide
- }
- },
-
- eventTimeFormat: { hour: 'numeric', minute: '2-digit', timeZoneName: 'short' },
-
- dateClick: function(arg) {
- console.log('dateClick', calendar.formatIso(arg.date));
- },
- select: function(arg) {
- console.log('select', calendar.formatIso(arg.start), calendar.formatIso(arg.end));
- }
- });
-
- calendar.render();
-
- // load the list of available timezones, build the <select> options
- // it's HIGHLY recommended to use a different library for network requests, not this internal util func
- FullCalendar.requestJson('GET', 'php/get-time-zones.php', {}, function(timeZones) {
-
- timeZones.forEach(function(timeZone) {
- var optionEl;
-
- if (timeZone !== 'UTC') { // UTC is already in the list
- optionEl = document.createElement('option');
- optionEl.value = timeZone;
- optionEl.innerText = timeZone;
- timeZoneSelectorEl.appendChild(optionEl);
- }
- });
- }, function() {
- // TODO: handle error
- });
-
- // when the timezone selector changes, dynamically change the calendar option
- timeZoneSelectorEl.addEventListener('change', function() {
- calendar.setOption('timeZone', this.value);
- });
- });
-
- </script>
- <style>
-
- body {
- margin: 0;
- padding: 0;
- font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
- font-size: 14px;
- }
-
- #top {
- background: #eee;
- border-bottom: 1px solid #ddd;
- padding: 0 10px;
- line-height: 40px;
- font-size: 12px;
- }
- .left { float: left }
- .right { float: right }
- .clear { clear: both }
-
- #script-warning, #loading { display: none }
- #script-warning { font-weight: bold; color: red }
-
- #calendar {
- max-width: 900px;
- margin: 40px auto;
- padding: 0 10px;
- }
-
- .tzo {
- color: #000;
- }
-
- </style>
- </head>
- <body>
-
- <div id='top'>
-
- <div class='left'>
- Timezone:
- <select id='time-zone-selector'>
- <option value='local' selected>local</option>
- <option value='UTC'>UTC</option>
- </select>
- </div>
-
- <div class='right'>
- <span id='loading'>loading...</span>
- <span id='script-warning'><code>php/get-events.php</code> must be running.</span>
- </div>
-
- <div class='clear'></div>
-
- </div>
-
- <div id='calendar'></div>
-
- </body>
- </html>
|