Mods-for-HESK-Netsyms/js/calendar/mods-for-hesk-calendar.js

135 lines
4.9 KiB
JavaScript
Raw Normal View History

$(document).ready(function() {
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
eventLimit: true,
events: function(start, end, timezone, callback) {
$.ajax({
url: getHelpdeskUrl() + '/internal-api/admin/calendar/?start=' + start + '&end=' + end,
method: 'GET',
dataType: 'json',
success: function(data) {
2016-01-21 22:19:14 -05:00
var events = [];
$(data).each(function() {
events.push(buildEvent(this.id, this));
});
2016-01-21 22:19:14 -05:00
callback(events);
//callback w/events here!
},
error: function(data) {
console.error(data);
}
});
2016-01-16 22:32:58 -05:00
},
dayClick: function(date, jsEvent, view) {
displayCreateModal(date, view.name);
}
});
2016-01-17 21:59:47 -05:00
$('#create-form input[name="all-day"]').change(function() {
2016-01-17 21:59:47 -05:00
var hideTimeFields = $(this).is(':checked');
$('#create-form .clockpicker').css('display', hideTimeFields ? 'none' : 'block');
});
$('#create-form').submit(function(e) {
e.preventDefault();
var start = $('#create-form input[name="start-date"]').val();
var end = $('#create-form input[name="end-date"]').val();
var dateFormat = 'YYYY-MM-DD';
var allDay = $('#create-form input[name="all-day"]').is(':checked');
var createTicketDate = null;
var assignTo = null;
if ($('#create-form input[name="assign-to"]').length) {
assignTo = $('#create-form input[name="assign-to"]').val();
} else if ($('#create-form select[name="assign-to"]').length) {
assignTo = $('#create-form select[name="assign-to"]').val();
}
if ($('#create-form input[name="create-ticket-date"]').val() != '') {
2016-01-21 13:25:44 -05:00
createTicketDate = moment($('#create-form input[name="create-ticket-date"]').val()).format('YYYY-MM-DD');
}
2016-01-21 13:25:44 -05:00
if (!allDay) {
start += ' ' + $('#create-form input[name="start-time"]').val();
end += ' ' + $('#create-form input[name="end-time"]').val();
dateFormat = 'YYYY-MM-DD HH:mm:ss';
}
var data = {
title: $('#create-form input[name="name"]').val(),
location: $('#create-form input[name="location"]').val(),
startTime: moment(start).format(dateFormat),
endTime: moment(end).format(dateFormat),
allDay: allDay,
2016-01-21 13:25:44 -05:00
comments: $('#create-form textarea[name="comments"]').val(),
createTicketDate: createTicketDate,
assignTo: assignTo,
action: 'create'
};
$.ajax({
method: 'POST',
url: getHelpdeskUrl() + '/internal-api/admin/calendar',
data: data,
success: function(id) {
addToCalendar(id, data);
$('#create-event-modal').modal('hide');
},
error: function(data) {
console.error(data);
}
2016-01-21 13:25:44 -05:00
});
2016-01-17 21:59:47 -05:00
});
2016-01-16 22:32:58 -05:00
});
function addToCalendar(id, event) {
2016-01-21 22:19:14 -05:00
var eventObject = buildEvent(id, event);
$('#calendar').fullCalendar('renderEvent', eventObject);
$.jGrowl("Event successfully created", { theme: 'alert-success', closeTemplate: '' });
}
function buildEvent(id, dbObject) {
return {
id: id,
2016-01-21 22:19:14 -05:00
title: dbObject.title,
allDay: dbObject.allDay,
start: moment(dbObject.startTime),
end: moment(dbObject.endTime),
2016-01-21 22:19:14 -05:00
comments: dbObject.comments,
createTicketDate: dbObject.createTicketDate,
assignTo: dbObject.assignTo,
location: dbObject.location
};
}
function displayCreateModal(date, viewName) {
$('#create-form input[name="name"]').val('');
$('#create-form input[name="location"]').val('');
$('#create-form textarea[name="comments"]').val('');
$('#create-form input[name="create-ticket-date"]').val('');
2016-01-17 21:59:47 -05:00
var $modal = $('#create-event-modal');
var formattedDate = date.format('YYYY-MM-DD');
$modal.find('input[name="start-date"]').val(formattedDate).end()
.find('input[name="end-date"]').val(formattedDate).end();
if (viewName === 'month') {
// Select "All Day"
$('#create-form input[name="all-day"]').prop('checked', true);
$('#create-form .clockpicker').hide();
} else {
$('#create-form input[name="all-day"]').prop('checked', false);
$('#create-form .clockpicker').show();
var formattedTime = date.format('h:mm:ss');
var selectedHour = date.hour();
$modal.find('input[name="start-time"]').val(formattedTime).end()
.find('input[name="end-time"]').val(date.hour(selectedHour + 1).format('h:mm:ss'));
}
2016-01-17 21:59:47 -05:00
$('#create-event-modal').modal('show');
2016-01-16 22:32:58 -05:00
}