blob: cac5ec8265a278220c763e7c2699822376357862 [file] [log] [blame]
// Copyright (c) 2012 Web Notes Technologies Pvt Ltd (http://erpnext.com)
//
// MIT License (MIT)
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
// OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
pscript.onload_calendar = function(wrapper) {
wn.ui.make_app_page({
parent: wrapper,
single_column: true,
title: 'Calendar'
});
wn.require('lib/js/lib/fullcalendar/fullcalendar.css');
wn.require('lib/js/lib/fullcalendar/fullcalendar.js');
}
pscript.update_event = function(event) {
wn.model.remove_from_locals("Event", event.id);
wn.call({
module: "utilities",
page: "calendar",
method: "update_event",
args: {
"start": wn.datetime.get_datetime_as_string(event.start),
"end": wn.datetime.get_datetime_as_string(event.end),
"name": event.id
},
callback: function(r) {
if(r.exc) {
show_alert("Unable to update event.")
}
}
});
}
pscript.onshow_calendar = function(wrapper) {
if(!wrapper.setup_complete) {
$('<div id="fullcalendar">').appendTo($(wrapper).find('.layout-main')).fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
events: function(start, end, callback) {
wn.call({
method: 'utilities.page.calendar.calendar.get_events',
type: "GET",
args: {
start: dateutil.obj_to_str(start),
end: dateutil.obj_to_str(end)
},
callback: function(r) {
var events = r.message;
$.each(events, function(i, d) {
d.editable = d.owner==user;
d.allDay = false;
});
callback(events);
}
})
},
dayClick: function(date, allDay, jsEvent, view) {
// if current date, show popup to create a new event
var ev = wn.model.create('Event')
ev.doc.set('start', date);
ev.doc.set('end', new Date(date));
ev.doc.set('all_day', 1);
},
eventClick: function(calEvent, jsEvent, view) {
// edit event description or delete
wn.set_route("Form", "Event", calEvent.id);
},
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc) {
pscript.update_event(event);
},
eventResize: function(event, dayDelta, minuteDelta, allDay, revertFunc) {
pscript.update_event(event);
}
});
wrapper.setup_complete = true;
} else {
$("#fullcalendar").fullCalendar("refetchEvents");
}
}