let calendar = null; function editEvent(event) { $('#event-modal input[name="event-index"]').val(event ? event.id : ''); $('#event-modal input[name="event-name"]').val(event ? event.name : ''); $('#event-modal input[name="event-location"]').val(event ? event.location : ''); $('#event-modal input[name="event-start-date"]').datepicker('update', event ? event.startDate : ''); $('#event-modal input[name="event-end-date"]').datepicker('update', event ? event.endDate : ''); $('#event-modal').modal(); } function deleteEvent(event) { var dataSource = calendar.getDataSource(); calendar.setDataSource(dataSource.filter(item => item.id == event.id)); } function saveEvent() { var event = { id: $('#event-modal input[name="event-index"]').val(), name: $('#event-modal input[name="event-name"]').val(), location: $('#event-modal input[name="event-location"]').val(), startDate: $('#event-modal input[name="event-start-date"]').datepicker('getDate'), endDate: $('#event-modal input[name="event-end-date"]').datepicker('getDate') } var dataSource = calendar.getDataSource(); if (event.id) { for (var i in dataSource) { if (dataSource[i].id == event.id) { dataSource[i].name = event.name; dataSource[i].location = event.location; dataSource[i].startDate = event.startDate; dataSource[i].endDate = event.endDate; } } } else { var newId = 0; for(var i in dataSource) { if(dataSource[i].id > newId) { newId = dataSource[i].id; } } newId++; event.id = newId; dataSource.push(event); } calendar.setDataSource(dataSource); $('#event-modal').modal('hide'); } $(function() { var currentYear = new Date().getFullYear(); calendar = new Calendar('#calendar', { enableContextMenu: true, enableRangeSelection: true, // for custom layout contextMenuItems:[ { text: 'Update', click: editEvent }, { text: 'Delete', click: deleteEvent } ], selectRange: function(e) { editEvent({ startDate: e.startDate, endDate: e.endDate }); }, mouseOnDay: function(e) { if(e.events.length > 0) { var content = ''; for(var i in e.events) { content += '
' + '
' + e.events[i].name + '
' + '
' + e.events[i].location + '
' + '
'; } $(e.element).popover({ trigger: 'manual', container: 'body', html:true, content: content }); $(e.element).popover('show'); } }, mouseOutDay: function(e) { if(e.events.length > 0) { $(e.element).popover('hide'); } }, dayContextMenu: function(e) { $(e.element).popover('hide'); }, dataSource: [ { id: 0, name: 'Google I/O', location: 'San Francisco, CA', startDate: new Date(currentYear, 4, 28), endDate: new Date(currentYear, 4, 29) }, { id: 1, name: 'Microsoft Convergence', location: 'New Orleans, LA', startDate: new Date(currentYear, 2, 16), endDate: new Date(currentYear, 2, 19) }, { id: 2, name: 'Microsoft Build Developer Conference', location: 'San Francisco, CA', startDate: new Date(currentYear, 3, 29), endDate: new Date(currentYear, 4, 1) }, { id: 3, name: 'Apple Special Event', location: 'San Francisco, CA', startDate: new Date(currentYear, 8, 1), endDate: new Date(currentYear, 8, 1) }, { id: 4, name: 'Apple Keynote', location: 'San Francisco, CA', startDate: new Date(currentYear, 8, 9), endDate: new Date(currentYear, 8, 9) }, { id: 5, name: 'Chrome Developer Summit', location: 'Mountain View, CA', startDate: new Date(currentYear, 10, 17), endDate: new Date(currentYear, 10, 18) }, { id: 6, name: 'F8 2015', location: 'San Francisco, CA', startDate: new Date(currentYear, 2, 25), endDate: new Date(currentYear, 2, 26) }, { id: 7, name: 'Yahoo Mobile Developer Conference', location: 'New York', startDate: new Date(currentYear, 7, 25), endDate: new Date(currentYear, 7, 26) }, { id: 8, name: 'Android Developer Conference', location: 'Santa Clara, CA', startDate: new Date(currentYear, 11, 1), endDate: new Date(currentYear, 11, 4) }, { id: 9, name: 'LA Tech Summit', location: 'Los Angeles, CA', startDate: new Date(currentYear, 10, 17), endDate: new Date(currentYear, 10, 17) } ] }); $('#calendar').data('calendar').setLanguage('hu'); $('#save-event').click(function() { saveEvent(); }); });