be_comp_calendar.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. /*
  2. * Document : be_comp_calendar.js
  3. * Author : pixelcave
  4. * Description: Custom JS code used in Calendar Page
  5. */
  6. var BeCompCalendar = function() {
  7. // Add new event in the event list
  8. var addEvent = function() {
  9. var eventInput = jQuery('.js-add-event');
  10. var eventInputVal = '';
  11. // When the add event form is submitted
  12. jQuery('.js-form-add-event').on('submit', function(){
  13. eventInputVal = eventInput.prop('value'); // Get input value
  14. // Check if the user entered something
  15. if ( eventInputVal ) {
  16. // Add it to the events list
  17. jQuery('.js-events')
  18. .prepend('<li>' +
  19. jQuery('<div />').text(eventInputVal).html() +
  20. '</li>');
  21. // Clear input field
  22. eventInput.prop('value', '');
  23. // Re-Init Events
  24. initEvents();
  25. }
  26. return false;
  27. });
  28. };
  29. // Init drag and drop event functionality
  30. var initEvents = function() {
  31. jQuery('.js-events')
  32. .find('li')
  33. .each(function() {
  34. var event = jQuery(this);
  35. // create an Event Object
  36. var eventObject = {
  37. title: jQuery.trim(event.text()),
  38. color: event.css('background-color')
  39. };
  40. // store the Event Object in the DOM element so we can get to it later
  41. jQuery(this).data('eventObject', eventObject);
  42. // make the event draggable using jQuery UI
  43. jQuery(this).draggable({
  44. zIndex: 999,
  45. revert: true,
  46. revertDuration: 0
  47. });
  48. });
  49. };
  50. // Init FullCalendar
  51. var initCalendar = function(){
  52. var date = new Date();
  53. var d = date.getDate();
  54. var m = date.getMonth();
  55. var y = date.getFullYear();
  56. jQuery('.js-calendar').fullCalendar({
  57. firstDay: 1,
  58. editable: true,
  59. droppable: true,
  60. header: {
  61. left: 'title',
  62. right: 'prev,next today month,agendaWeek,agendaDay,listWeek'
  63. },
  64. drop: function(date, allDay) { // this function is called when something is dropped
  65. // retrieve the dropped element's stored Event Object
  66. var originalEventObject = jQuery(this).data('eventObject');
  67. // we need to copy it, so that multiple events don't have a reference to the same object
  68. var copiedEventObject = jQuery.extend({}, originalEventObject);
  69. // assign it the date that was reported
  70. copiedEventObject.start = date;
  71. // render the event on the calendar
  72. // the last `true` argument determines if the event "sticks" (http://arshaw.com/fullcalendar/docs/event_rendering/renderEvent/)
  73. jQuery('.js-calendar').fullCalendar('renderEvent', copiedEventObject, true);
  74. // remove the element from the "Draggable Events" list
  75. jQuery(this).remove();
  76. },
  77. events: [
  78. {
  79. title: 'Gaming Day',
  80. start: new Date(y, m, 1),
  81. allDay: true,
  82. color: '#fcf7e6'
  83. },
  84. {
  85. title: 'Skype Meeting',
  86. start: new Date(y, m, 3)
  87. },
  88. {
  89. title: 'Project X',
  90. start: new Date(y, m, 9),
  91. end: new Date(y, m, 12),
  92. allDay: true,
  93. color: '#fae9e8'
  94. },
  95. {
  96. title: 'Work',
  97. start: new Date(y, m, 17),
  98. end: new Date(y, m, 19),
  99. allDay: true,
  100. color: '#fae9e8'
  101. },
  102. {
  103. id: 999,
  104. title: 'Hiking (repeated)',
  105. start: new Date(y, m, d - 1, 15, 0)
  106. },
  107. {
  108. id: 999,
  109. title: 'Hiking (repeated)',
  110. start: new Date(y, m, d + 3, 15, 0)
  111. },
  112. {
  113. title: 'Landing Template',
  114. start: new Date(y, m, d - 3),
  115. end: new Date(y, m, d - 3),
  116. allDay: true,
  117. color: '#fcf7e6'
  118. },
  119. {
  120. title: 'Lunch',
  121. start: new Date(y, m, d + 7, 15, 00),
  122. color: '#ebf5df'
  123. },
  124. {
  125. title: 'Coding',
  126. start: new Date(y, m, d, 8, 0),
  127. end: new Date(y, m, d, 14, 0),
  128. color: '#fcf7e6'
  129. },
  130. {
  131. title: 'Trip',
  132. start: new Date(y, m, 25),
  133. end: new Date(y, m, 27),
  134. allDay: true,
  135. color: '#fcf7e6'
  136. },
  137. {
  138. title: 'Reading',
  139. start: new Date(y, m, d + 8, 20, 0),
  140. end: new Date(y, m, d + 8, 22, 00)
  141. },
  142. {
  143. title: 'Follow me on Twitter',
  144. start: new Date(y, m, 22),
  145. allDay: true,
  146. url: 'http://twitter.com/pixelcave'
  147. }
  148. ]
  149. });
  150. };
  151. return {
  152. init: function () {
  153. // Add Event functionality
  154. addEvent();
  155. // FullCalendar, for more examples you can check out http://fullcalendar.io/
  156. initEvents();
  157. initCalendar();
  158. }
  159. };
  160. }();
  161. // Initialize when page loads
  162. jQuery(function(){ BeCompCalendar.init(); });