eventoL/eventoL

View on GitHub
eventol/front/src/libs/schedule.js

Summary

Maintainability
A
0 mins
Test Coverage
import 'fullcalendar/dist/fullcalendar.css';
import 'fullcalendar-scheduler/dist/scheduler.css';

import 'moment';
import 'fullcalendar/dist/fullcalendar';
import 'fullcalendar-scheduler/dist/scheduler';

import './schedule.scss';

const DEFAULT_CALENDAR_OPTIONS = {
  schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
  defaultView: 'agendaDay',
  header: false,
  height: 'auto',
  timeFormat: 'H:mm',
  slotLabelFormat: ['H:mm'],
  eventColor: '#0288d1',
  slotDuration: '00:10',
  allDaySlot: false,
};

const loadSchedule = (rooms, activities) => {
  Object.keys(activities).forEach(date => {
    const activitiesPerDay = JSON.parse(activities[date]);
    const calendarOptions = {
      ...DEFAULT_CALENDAR_OPTIONS,
      resources: rooms,
      defaultDate: activitiesPerDay.date,
      scrollTime: activitiesPerDay.min_time,
      minTime: activitiesPerDay.min_time,
      maxTime: activitiesPerDay.max_time,
      events: activitiesPerDay.activities,
    };
    $(`#calendar-${date}`).fullCalendar(calendarOptions);
  });
};

if (!window.libs) {
  window.libs = {};
}
window.libs.schedule = loadSchedule;