Add a Booking detail view
[pharos.git] / tools / pharos-dashboard / static / js / fullcalendar-options.js
1 var tmpevent;
2
3 function sendEventToForm(event) {
4     $('#starttimepicker').data("DateTimePicker").date(event.start);
5     $('#endtimepicker').data("DateTimePicker").date(event.end);
6 }
7
8 var calendarOptions = {
9     height: 600,
10     header: {
11         left: 'prev,next today',
12         center: 'title',
13         right: 'agendaWeek,month'
14     },
15     timezone: user_timezone, // set in booking_calendar.html
16     defaultView: 'month',
17     slotDuration: '00:60:00',
18     slotLabelFormat: "HH:mm",
19     firstDay: 1,
20     allDaySlot: false,
21     selectOverlap: false,
22     eventOverlap: false,
23     selectable: true,
24     editable: false,
25     eventLimit: true, // allow "more" link when too many events
26     timeFormat: 'H(:mm)', // uppercase H for 24-hour clock
27     unselectAuto: true,
28     nowIndicator: true,
29
30     // selectHelper is only working in the agendaWeek view, this is a workaround:
31     // if an event is selected, the existing selection is removed and a temporary event is added
32     // to the calendar
33     select: function (start, end) {
34         if (tmpevent != undefined) {
35             $('#calendar').fullCalendar('removeEvents', tmpevent.id);
36             $('#calendar').fullCalendar('rerenderEvents');
37             tmpevent = undefined;
38         }
39         // the times need to be converted here to make them show up in the agendaWeek view if they
40         // are created in the month view. If they are not converted, the tmpevent will only show
41         // up in the (deactivated) allDaySlot
42         start = moment(start);
43         end = moment(end);
44
45         tmpevent = {
46             id: '537818f62bc63518ece15338fb86c8be',
47             title: 'New Booking',
48             start: start,
49             end: end,
50             editable: true
51         };
52
53         $('#calendar').fullCalendar('renderEvent', tmpevent, true);
54         sendEventToForm(tmpevent);
55     },
56
57     eventClick: function (event) {
58         if (tmpevent != undefined) {
59             if (event.id != tmpevent.id) {
60                 $('#calendar').fullCalendar('removeEvents', tmpevent.id);
61                 $('#calendar').fullCalendar('rerenderEvents');
62                 tmpevent = undefined;
63             }
64         }
65
66         // tmpevent is deleted if a real event is clicked, load event details
67         if (tmpevent == undefined) {
68             var booking_detail_url = booking_detail_prefix + event.id;
69
70             $.ajax({
71                 url: booking_detail_url,
72                 type: 'get',
73                 success: function (data) {
74                     $('#booking_detail_content').html(data);
75                 },
76                 failure: function (data) {
77                     alert('Error loading booking details');
78                 }
79             });
80             $('#booking_detail_modal').modal('show');
81         }
82     },
83
84     eventDrop: function (event) {
85         sendEventToForm(event);
86     },
87
88     eventResize: function (event) {
89         sendEventToForm(event);
90     }
91 };