Files
UT-Registration-Plus/js/calendar.js
2018-08-11 19:45:24 -05:00

117 lines
4.6 KiB
JavaScript

$(function () {
const materialColors = ['#4CAF50', '#CDDC39',
'#FFC107', '#2196F3', '#F57C00', '#9C27B0', '#FF5722', '#673AB7',
'#FF5252', '#E91E63', '#009688', '#00BCD4',
'#4E342E', '#424242', '#9E9E9E'
];
const days = new Map([
["M", "Monday"],
["T", "Tuesday"],
["W", "Wednesday"],
["TH", "Thursday"],
["F", "Friday"]
]);
// Counter to iterate through material colors to avoid duplicates
var colorCounter = 0;
// Each schedule needs to store 'TITLE - START TIME - END TIME - COLOR'
var classSchedules = [];
var savedCourses = [];
chrome.storage.sync.get("savedCourses", function (data) {
// Iterate through each saved course and add to 'event'
savedCourses = data.savedCourses;
setAllEvents(savedCourses);
$("#calendar").fullCalendar({
editable: false, // Don't allow editing of events
handleWindowResize: true,
weekends: false, // will hide Saturdays and Sundays
slotDuration: "00:30:00", // 15 minute intervals on vertical column
slotEventOverlap: false, // No overlapping between events
defaultView: "agendaWeek", // Only show week view
header: false, // Hide buttons/titles
minTime: "08:00:00", // Start time
maxTime: "21:00:00", // End time
columnHeaderFormat: "ddd", // Only show day of the week names
displayEventTime: true, // Display event time
allDaySlot: false,
Duration: {
hours: 1
},
height: 'auto',
events: classSchedules,
slotLabelFormat: [
'h:mm A' // lower level of text
],
eventRender: function (event, element, view) {
$(element).css("padding", "5px");
$(element).css("margin-bottom", "5px");
},
eventClick: function (calEvent, jsEvent, view) {
console.log(calEvent);
// $(this).css('background-color', 'green');
alert('Event: ' + savedCourses[0].coursename);
// change the border color just for fun
}
});
});
// Iterate through each saved course and add to 'event'
function setAllEvents(savedCourses) {
colorCounter = 0;
classSchedules = [];
for (let i = 0; i < savedCourses.length; i++) {
var classInfo = savedCourses[i];
var department = classInfo.coursename.substring(0, classInfo.coursename.search(/\d/) - 2);
var course_nbr = classInfo.coursename.substring(classInfo.coursename.search(/\d/), classInfo.coursename.indexOf(" ", classInfo.coursename.search(/\d/)));
var uncapProf = classInfo.profname;
uncapProf = uncapProf.charAt(0) + uncapProf.substring(1).toLowerCase();
for (let j = 0; j < classInfo.datetimearr.length; j++) {
let session = classInfo.datetimearr[j]; // One single session for a class
setEventForSection(session, colorCounter, department, course_nbr, uncapProf);
}
colorCounter++;
}
}
//create the event object for every section
function setEventForSection(session, colorCounter, department, course_nbr, uncapProf) {
var fullday = days.get(session[0]);
classSchedules.push({
title: `${department}-${course_nbr} with ${uncapProf}`,
start: moment().format("YYYY-MM-") +
moment()
.day(fullday)
._d.toString()
.split(" ")[2] +
"T" +
session[1][0] +
":00",
end: moment().format("YYYY-MM-") +
moment()
.day(fullday)
._d.toString()
.split(" ")[2] +
"T" +
session[1][1] +
":00",
color: materialColors[colorCounter],
allday: false
});
}
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
if (request.command == "updateCourseList" || request.command == "courseAdded") {
chrome.storage.sync.get("savedCourses", function (data) {
savedCourses = data.savedCourses
setAllEvents(data.savedCourses);
console.log(classSchedules);
$('#calendar').fullCalendar('removeEventSources');
$("#calendar").fullCalendar('addEventSource', classSchedules, true);
});
}
});
});