UNPKG

jqwidgets-scripts-custom

Version:

jQWidgets is an advanced jQuery, Angular 7, Vue, React, ASP .NET MVC, Custom Elements and HTML5 UI framework.

206 lines (198 loc) 9.11 kB
<!DOCTYPE html> <html lang="en"> <head> <title id='Description'>Scheduler Custom Element ContextMenu</title> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta name="viewport" content="width=device-width, initial-scale=1 maximum-scale=1 minimum-scale=1" /> <meta name="description" content="This is an example of context menu in Custom Element Scheduler." /> <link rel="stylesheet" href="../../../jqwidgets/styles/jqx.base.css" type="text/css" /> <link rel="stylesheet" href="../../../styles/demos.css" type="text/css" /> <script type="text/javascript" src="../../../scripts/webcomponents-lite.min.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxcore.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxcore.elements.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxbuttons.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxscrollbar.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxdata.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxdate.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxscheduler.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxscheduler.api.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxdatetimeinput.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxmenu.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxcalendar.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxtooltip.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxwindow.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxcheckbox.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxlistbox.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxdropdownlist.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxnumberinput.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxradiobutton.js"></script> <script type="text/javascript" src="../../../jqwidgets/jqxinput.js"></script> <script type="text/javascript" src="../../../jqwidgets/globalization/globalize.js"></script> <script> var appointments = new Array(); var appointment1 = { id: 'id1', description: 'George brings projector for presentations.', location: '', subject: 'Quarterly Project Review Meeting', calendar: 'Room 1', start: new Date(2018, 10, 23, 9, 0, 0), end: new Date(2018, 10, 23, 16, 0, 0) } var appointment2 = { id: 'id2', description: '', location: '', subject: 'IT Group Mtg.', calendar: 'Room 2', start: new Date(2018, 10, 24, 10, 0, 0), end: new Date(2018, 10, 24, 15, 0, 0) } var appointment3 = { id: 'id3', description: '', location: '', subject: 'Course Social Media', calendar: 'Room 3', start: new Date(2018, 10, 27, 11, 0, 0), end: new Date(2018, 10, 27, 13, 0, 0) } var appointment4 = { id: 'id4', description: '', location: '', subject: 'New Projects Planning', calendar: 'Room 2', start: new Date(2018, 10, 23, 16, 0, 0), end: new Date(2018, 10, 23, 18, 0, 0) } var appointment5 = { id: 'id5', description: '', location: '', subject: 'Interview with James', calendar: 'Room 1', start: new Date(2018, 10, 25, 15, 0, 0), end: new Date(2018, 10, 25, 17, 0, 0) } var appointment6 = { id: 'id6', description: '', location: '', subject: 'Interview with Nancy', calendar: 'Room 4', start: new Date(2018, 10, 26, 14, 0, 0), end: new Date(2018, 10, 26, 16, 0, 0) } appointments.push(appointment1); appointments.push(appointment2); appointments.push(appointment3); appointments.push(appointment4); appointments.push(appointment5); appointments.push(appointment6); var source = { dataType: 'array', dataFields: [ { name: 'id', type: 'string' }, { name: 'description', type: 'string' }, { name: 'location', type: 'string' }, { name: 'subject', type: 'string' }, { name: 'calendar', type: 'string' }, { name: 'start', type: 'date' }, { name: 'end', type: 'date' } ], id: 'id', localData: appointments }; JQXElements.settings['schedulerSettings'] = { date: new jqx.date(2018, 11, 23), width: 850, height: 600, source: new jqx.dataAdapter(source), view: 1, showLegend: true, contextMenuCreate: function (menu, settings) { var source = settings.source; source.push({ id: 'delete', label: 'Delete Appointment' }); source.push({ id: 'status', label: 'Set Status', items: [ { label: 'Free', id: 'free' }, { label: 'Out of Office', id: 'outOfOffice' }, { label: 'Tentative', id: 'tentative' }, { label: 'Busy', id: 'busy' } ] }); }, contextMenuItemClick: function (menu, appointment, event) { var myScheduler = document.querySelector('jqx-scheduler'); var args = event.args; switch (args.id) { case 'delete': myScheduler.deleteAppointment(appointment.id); return true; case 'free': myScheduler.setAppointmentProperty(appointment.id, 'status', 'free'); return true; case 'outOfOffice': myScheduler.setAppointmentProperty(appointment.id, 'status', 'outOfOffice'); return true; case 'tentative': myScheduler.setAppointmentProperty(appointment.id, 'status', 'tentative'); return true; case 'busy': myScheduler.setAppointmentProperty(appointment.id, 'status', 'busy'); return true; } }, contextMenuOpen: function (menu, appointment, event) { if (!appointment) { menu.jqxMenu('hideItem', 'delete'); menu.jqxMenu('hideItem', 'status'); } else { menu.jqxMenu('showItem', 'delete'); menu.jqxMenu('showItem', 'status'); } }, contextMenuClose: function (menu, appointment, event) { }, ready: function() { var myScheduler = document.querySelector('jqx-scheduler'); myScheduler.ensureAppointmentVisible('id1'); }, resources: { colorScheme: 'scheme02', dataField: 'calendar', source: new jqx.dataAdapter(source) }, appointmentDataFields: { from: 'start', to: 'end', id: 'id', description: 'description', location: 'place', subject: 'subject', resourceId: 'calendar' }, views: [ 'dayView', 'weekView', 'monthView' ] }; </script> </head> <body> <div class="example-description"> Custom element Scheduler Context Menu example </div> <jqx-scheduler settings="schedulerSettings"></jqx-scheduler> </body> </html>