diff --git a/js/calendar.js b/js/calendar.js index 8971d4d5..73452a02 100644 --- a/js/calendar.js +++ b/js/calendar.js @@ -1,8 +1,8 @@ $(function () { const materialColors = ['#4CAF50', '#CDDC39', - '#FFC107', '#2196F3', '#F57C00', '#9C27B0', '#FF5722', '#673AB7', - '#FF5252', '#E91E63', '#009688', '#00BCD4', - '#4E342E', '#424242', '#9E9E9E' + '#FFC107', '#2196F3', '#F57C00', '#9C27B0', '#FF5722', '#673AB7', + '#FF5252', '#E91E63', '#009688', '#00BCD4', + '#4E342E', '#424242', '#9E9E9E' ]; const days = new Map([ ["M", "Monday"], @@ -10,16 +10,15 @@ $(function () { ["W", "Wednesday"], ["TH", "Thursday"], ["F", "Friday"] - ]); + ]); const fadetime = 150; const butdelay = 75; - $("#calendar").prepend(''); + $("#calendar").prepend(''); // 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 = []; - var currLink = ""; var currindex = 0; chrome.storage.sync.get("savedCourses", function (data) { // Iterate through each saved course and add to 'event' @@ -46,33 +45,73 @@ $(function () { events: classSchedules, slotLabelFormat: [ 'h:mm A' // lower level of text - ], - eventRender: function (event, element, view) { - $(element).css("padding", "5px"); - $(element).css("margin-bottom", "5px"); + ], + eventRender: function (event, element, view) { + $(element).css("padding", "5px"); + $(element).css("margin-bottom", "5px"); - }, - eventClick: function (data, event, view) { - $("#myModal").fadeIn(fadetime); - $("#colorStrip").css('background-color', data.color); - currindex = data.index; - currLink = savedCourses[currindex].link; - var currunique = savedCourses[currindex].unique; - $("#classname").html(`${savedCourses[currindex].coursename} (${savedCourses[currindex].unique})`); - $("#timelines").append(makeLine(savedCourses[currindex].datetimearr)); + }, + eventClick: function (data, event, view) { + $("#myModal").fadeIn(fadetime); + $("#colorStrip").css('background-color', data.color); + currindex = data.index; + var currLink = savedCourses[currindex].link; + var currunique = savedCourses[currindex].unique; + $("#classname").html(`${savedCourses[currindex].coursename} (${savedCourses[currindex].unique})`); + $("#timelines").append(makeLine(savedCourses[currindex].datetimearr)); - var uncapProf = prettifyName(savedCourses[currindex].profname); - if (uncapProf == "") { - uncapProf = "Undecided"; + var uncapProf = prettifyName(savedCourses[currindex].profname); + if (uncapProf == "") { + uncapProf = "Undecided"; + } + $("#prof").html(`with ${uncapProf}`); + + let status = savedCourses[currindex].status; + if(status.includes("closed") || status.includes("cancelled")){ + $("#register").text("Class Closed").css("background-color","#FF5722"); + } else{ + $("#register").text("Register").css("background-color","#4CAF50").click(function () { + let registerlink = savedCourses[currindex].registerlink; + setTimeout(() => { + window.open(registerlink); + }, butdelay); + }); + // When the user clicks on (x), close the modal + $(".close").click(() => { + $("#myModal").fadeOut(fadetime); + }); + $("#info").click(() => { + setTimeout(() => { + window.open(currLink); + }, butdelay); + }); + $("#remove").click(() => { + setTimeout(() => { + chrome.runtime.sendMessage({ + command: "courseStorage", + course: savedCourses[currindex], + action: "remove" + }, function (response) { + $("#myModal").fadeOut(fadetime); + updateCalendar(); + chrome.tabs.query({}, function (tabs) { + for (var i = 0; i < tabs.length; i++) { + chrome.tabs.sendMessage(tabs[i].id, { + command: "updateCourseList" + }); + } + }); + }); + }, butdelay); + }); + } } - $("#prof").html(`with ${uncapProf}`); - } - }); - }); + }); +}); - /* convert from the dtarr and maek the time lines*/ - function makeLine(datetimearr) { - $(".time").remove(); +/* convert from the dtarr and maek the time lines*/ +function makeLine(datetimearr) { + $(".time").remove(); //converted times back console.log(datetimearr); var dtmap = new Map([]); @@ -101,35 +140,6 @@ $(function () { return output; } - - // When the user clicks on (x), close the modal - $(".close").click(() => { - $("#myModal").fadeOut(fadetime); - }); - $("#info").click(() => { - setTimeout(() => { - window.open(currLink); - }, butdelay); - }); - $("#remove").click(() => { - setTimeout(() => { - chrome.runtime.sendMessage({ - command: "courseStorage", - course: savedCourses[currindex], - action: "remove" - }, function (response) { - $("#myModal").fadeOut(fadetime); - updateCalendar(); - chrome.tabs.query({}, function (tabs) { - for (var i = 0; i < tabs.length; i++) { - chrome.tabs.sendMessage(tabs[i].id, { - command: "updateCourseList" - }); - } - }); - }); - }, butdelay); - }); /*Close Modal when hit escape*/ $(document).keydown((e) => { if (e.keyCode == 27) { @@ -195,21 +205,21 @@ $(function () { 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", + 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", + moment() + .day(fullday) + ._d.toString() + .split(" ")[2] + + "T" + + session[1][1] + + ":00", color: materialColors[colorCounter], index: i, allday: false diff --git a/js/content.js b/js/content.js index a85ea941..81e8ca3d 100644 --- a/js/content.js +++ b/js/content.js @@ -130,22 +130,16 @@ function update() { }, function (response) { if (response.isConflict && data.courseConflictHighlight) { $(thisForm).find('td').each(function () { - $(this).css('color', '#F44336'); - $(this).css('text-decoration', 'line-through'); - $(this).css('font-weight', 'normal'); + $(this).css('color', '#F44336').css('text-decoration', 'line-through').css('font-weight', 'normal'); }); } else { $(thisForm).find('td').each(function () { - $(this).css('color', 'black'); - $(this).css('text-decoration', 'none'); - $(this).css('font-weight', 'normal'); + $(this).css('color', 'black').css('text-decoration', 'none').css('font-weight', 'normal'); }); } if (response.alreadyContains) { $(thisForm).find('td').each(function () { - $(this).css('color', '#4CAF50'); - $(this).css('text-decoration', 'none'); - $(this).css('font-weight', 'bold'); + $(this).css('color', '#4CAF50').css('text-decoration', 'none').css('font-weight', 'bold'); }); } }); diff --git a/js/popup.js b/js/popup.js index f6e68e27..536eb4c1 100644 --- a/js/popup.js +++ b/js/popup.js @@ -88,12 +88,18 @@ $(document).ready(function () { $(this).find("#listMoreInfo").click(function () { window.open(courses[$(this).closest("li").attr("id")].link); }); - $(this).find("#register").click(function () { - let registerlink = courses[$(this).closest("li").attr("id")].registerlink; - chrome.tabs.query({currentWindow: true, active: true}, function (tab) { - chrome.tabs.update(tab.id, {url: registerlink}); + let status = courses[$(this).closest("li").attr("id")].status; + if(status.includes("closed") || status.includes("cancelled")){ + $(this).find("#register").text("Class Closed").css("background-color","#FF5722"); + } else{ + $(this).find("#register").text("Register").css("background-color","#4CAF50").click(function () { + let registerlink = courses[$(this).closest("li").attr("id")].registerlink; + chrome.tabs.query({currentWindow: true, active: true}, function (tab) { + chrome.tabs.update(tab.id, {url: registerlink}); }); }); + } + /* clear the conflict messages, then remove the course and updateConflicts. update the tabs*/ $(this).find("#listRemove").click(function () { var thisForm = this;