calendars-full.init.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. /******/ (function() { // webpackBootstrap
  2. var __webpack_exports__ = {};
  3. /*!***************************************************!*\
  4. !*** ./resources/js/pages/calendars-full.init.js ***!
  5. \***************************************************/
  6. /*
  7. Template Name: Skote - Admin & Dashboard Template
  8. Author: Themesbrand
  9. Website: https://themesbrand.com/
  10. Contact: themesbrand@gmail.com
  11. File: Apex Chart init js
  12. */
  13. !function ($) {
  14. "use strict";
  15. var CalendarPage = function CalendarPage() {};
  16. CalendarPage.prototype.init = function () {
  17. var addEvent = $("#event-modal");
  18. var modalTitle = $("#modal-title");
  19. var formEvent = $("#form-event");
  20. var selectedEvent = null;
  21. var newEventData = null;
  22. var forms = document.getElementsByClassName('needs-validation');
  23. var selectedEvent = null;
  24. var newEventData = null;
  25. var eventObject = null;
  26. /* initialize the calendar */
  27. var date = new Date();
  28. var d = date.getDate();
  29. var m = date.getMonth();
  30. var y = date.getFullYear();
  31. var Draggable = FullCalendarInteraction.Draggable;
  32. var externalEventContainerEl = document.getElementById('external-events'); // init dragable
  33. new Draggable(externalEventContainerEl, {
  34. itemSelector: '.external-event',
  35. eventData: function eventData(eventEl) {
  36. return {
  37. title: eventEl.innerText,
  38. className: $(eventEl).data('class')
  39. };
  40. }
  41. });
  42. var defaultEvents = [{
  43. title: 'All Day Event',
  44. start: new Date(y, m, 1)
  45. }, {
  46. title: 'Long Event',
  47. start: new Date(y, m, d - 5),
  48. end: new Date(y, m, d - 2),
  49. className: 'bg-warning'
  50. }, {
  51. id: 999,
  52. title: 'Repeating Event',
  53. start: new Date(y, m, d - 3, 16, 0),
  54. allDay: false,
  55. className: 'bg-info'
  56. }, {
  57. id: 999,
  58. title: 'Repeating Event',
  59. start: new Date(y, m, d + 4, 16, 0),
  60. allDay: false,
  61. className: 'bg-primary'
  62. }, {
  63. title: 'Meeting',
  64. start: new Date(y, m, d, 10, 30),
  65. allDay: false,
  66. className: 'bg-success'
  67. }, {
  68. title: 'Lunch',
  69. start: new Date(y, m, d, 12, 0),
  70. end: new Date(y, m, d, 14, 0),
  71. allDay: false,
  72. className: 'bg-danger'
  73. }, {
  74. title: 'Birthday Party',
  75. start: new Date(y, m, d + 1, 19, 0),
  76. end: new Date(y, m, d + 1, 22, 30),
  77. allDay: false,
  78. className: 'bg-success'
  79. }, {
  80. title: 'Click for Google',
  81. start: new Date(y, m, 28),
  82. end: new Date(y, m, 29),
  83. url: 'http://google.com/',
  84. className: 'bg-dark'
  85. }];
  86. var draggableEl = document.getElementById('external-events');
  87. var calendarEl = document.getElementById('calendar');
  88. function addNewEvent(info) {
  89. addEvent.modal('show');
  90. formEvent.removeClass("was-validated");
  91. formEvent[0].reset();
  92. $("#event-title").val();
  93. $('#event-category').val();
  94. modalTitle.text('Add Event');
  95. newEventData = info;
  96. }
  97. var calendar = new FullCalendar.Calendar(calendarEl, {
  98. plugins: ['bootstrap', 'interaction', 'dayGrid', 'timeGrid'],
  99. editable: true,
  100. droppable: true,
  101. selectable: true,
  102. defaultView: 'dayGridMonth',
  103. themeSystem: 'bootstrap',
  104. header: {
  105. left: 'prev,next today',
  106. center: 'title',
  107. right: 'dayGridMonth,timeGridWeek,timeGridDay,listMonth'
  108. },
  109. eventClick: function eventClick(info) {
  110. addEvent.modal('show');
  111. formEvent[0].reset();
  112. selectedEvent = info.event;
  113. $("#event-title").val(selectedEvent.title);
  114. $('#event-category').val(selectedEvent.classNames[0]);
  115. newEventData = null;
  116. modalTitle.text('Edit Event');
  117. newEventData = null;
  118. },
  119. dateClick: function dateClick(info) {
  120. addNewEvent(info);
  121. },
  122. events: defaultEvents
  123. });
  124. calendar.render();
  125. /*Add new event*/
  126. // Form to add new event
  127. $(formEvent).on('submit', function (ev) {
  128. ev.preventDefault();
  129. var inputs = $('#form-event :input');
  130. var updatedTitle = $("#event-title").val();
  131. var updatedCategory = $('#event-category').val(); // validation
  132. if (forms[0].checkValidity() === false) {
  133. event.preventDefault();
  134. event.stopPropagation();
  135. forms[0].classList.add('was-validated');
  136. } else {
  137. if (selectedEvent) {
  138. selectedEvent.setProp("title", updatedTitle);
  139. selectedEvent.setProp("classNames", [updatedCategory]);
  140. } else {
  141. var newEvent = {
  142. title: updatedTitle,
  143. start: newEventData.date,
  144. allDay: newEventData.allDay,
  145. className: updatedCategory
  146. };
  147. calendar.addEvent(newEvent);
  148. }
  149. addEvent.modal('hide');
  150. }
  151. });
  152. $("#btn-delete-event").on('click', function (e) {
  153. if (selectedEvent) {
  154. selectedEvent.remove();
  155. selectedEvent = null;
  156. addEvent.modal('hide');
  157. }
  158. });
  159. $("#btn-new-event").on('click', function (e) {
  160. addNewEvent({
  161. date: new Date(),
  162. allDay: true
  163. });
  164. });
  165. }, //init
  166. $.CalendarPage = new CalendarPage(), $.CalendarPage.Constructor = CalendarPage;
  167. }(window.jQuery), //initializing
  168. function ($) {
  169. "use strict";
  170. $.CalendarPage.init();
  171. }(window.jQuery);
  172. /******/ })()
  173. ;