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
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>