diff --git a/calendar.html b/calendar.html index 7b767804..f65d12cd 100644 --- a/calendar.html +++ b/calendar.html @@ -1,5 +1,5 @@ - + diff --git a/js/background.js b/js/background.js index 2aa507f1..b30850f8 100644 --- a/js/background.js +++ b/js/background.js @@ -1,8 +1,10 @@ -var grades; +console.log(`UT Registration Plus background page: ${window.location.href}`); +var grades; // caching the grades database in memory for faster queries var current_semesters = {}; var departments = []; -var should_open = false; +var should_open = false; // toggled flag for automatically opening popup on new pages when 'more info' hit +// these are the default options that the extension currently supports const default_options = { loadAll: true, courseConflictHighlight: true, @@ -11,6 +13,13 @@ const default_options = { onStartup(); +function onStartup() { + updateBadge(true); + loadDataBase(); + getCurrentSemesters(); + getCurrentDepartments(); +} + /* Handle messages and their commands from content and popup scripts*/ chrome.runtime.onMessage.addListener(function (request, sender, response) { switch (request.command) { @@ -89,38 +98,27 @@ chrome.runtime.onInstalled.addListener(function (details) { setDefaultOptions(); chrome.storage.sync.get("savedCourses", function (data) { if (!data.savedCourses) { - chrome.storage.sync.set( - { - savedCourses: new Array(), - }, - function () { - console.log("initial course list"); - } - ); + chrome.storage.sync.set({ + savedCourses: [], + }); } }); } else if (details.reason == "update") { - console.log("updated"); + // if there's been an update, call setDefaultOptions in case their settings have gotten wiped setDefaultOptions(); + console.log("updated"); } }); chrome.storage.onChanged.addListener(function (changes) { for (key in changes) { - console.log(changes); if (key === "savedCourses") { - updateBadge(false, changes.savedCourses.newValue); + updateBadge(false, changes.savedCourses.newValue); // update the extension popup badge whenever the savedCourses have been changed } } }); -function onStartup() { - updateBadge(true); - loadDataBase(); - getCurrentSemesters(); - getCurrentDepartments(); -} - +// get the value of an option if it exists function getOptionsValue(key, sendResponse) { chrome.storage.sync.get("options", function (data) { if (!data.options) { @@ -133,10 +131,12 @@ function getOptionsValue(key, sendResponse) { }); } +// set the value of an option if it exists function setOptionsValue(key, value, sendResponse) { chrome.storage.sync.get("options", function (data) { let new_options = data.options; if (!data.options) { + // if there are no options set, set the defaults setDefaultOptions(); new_options = default_options; } @@ -146,8 +146,6 @@ function setOptionsValue(key, value, sendResponse) { options: new_options, }, function () { - console.log(key); - console.log(new_options); sendResponse({ value: new_options[key], }); @@ -156,6 +154,7 @@ function setOptionsValue(key, value, sendResponse) { }); } +// set the default options if the options haven't been set before function setDefaultOptions() { chrome.storage.sync.get("options", function (data) { if (!data.options) { @@ -164,20 +163,21 @@ function setDefaultOptions() { options: default_options, }, function () { - console.log("default options:"); - console.log(default_options); + console.log("default options:", default_options); } ); } }); } +// scrape the registrar schedules page for caching the current active semesters function getCurrentSemesters() { $.get("https://registrar.utexas.edu/schedules", function (response) { if (response) { htmlToNode(response) .find(".callout2>ul>li>a") .each(function (i) { + // only show as many semesters as we want to display if (i < Popup.num_semesters) { let sem_name = $(this).text().trim(); if (sem_name != "Course Schedule Archive") { @@ -203,14 +203,14 @@ function getCurrentSemesters() { }); } +// use the utexas review api for getting the list of departments function getCurrentDepartments() { $.get("https://www.utexasreview.com/api/get_major", function (response) { if (response) { - console.log("getCurrentDepartments -> response", response); let { majors } = response; let indices = Object.keys(majors); let new_departments = []; - for(let i = 0; i 0 ? `${courses.length}` : ""; let flash_time = !first ? 200 : 0; @@ -236,6 +238,7 @@ function updateBadgeText(first, courses) { text: badge_text, }); if (!first) { + // if isn't the first install of the extension, flash the badge to bring attention to it chrome.browserAction.setBadgeBackgroundColor({ color: Colors.badge_flash, }); @@ -259,16 +262,10 @@ function checkConflicts(sendResponse) { if (isConflict(course_a.datetimearr, course_b.datetimearr)) conflicts.push([course_a, course_b]); } } - if (conflicts.length == 0) { - sendResponse({ - isConflict: false, - }); - } else { - sendResponse({ - isConflict: true, - between: conflicts, - }); - } + sendResponse({ + isConflict: conflicts.length === 0, + between: conflicts.length ? conflicts : undefined, + }); }); } @@ -364,6 +361,7 @@ function alreadyContains(unique, sendResponse) { }); } +// find if a course with the current unique number exists in the user's saved courses function contains(courses, unique) { var i = 0; while (i < courses.length) { @@ -375,10 +373,12 @@ function contains(courses, unique) { return false; } +// does it have the same unique number as provided function isSameCourse(course, unique) { return course.unique == unique; } +// send a message to every tab open to updateit's course list (and thus recalculate its conflicts highlighting) function updateTabs() { chrome.tabs.query({}, function (tabs) { for (var i = 0; i < tabs.length; i++) { @@ -389,52 +389,52 @@ function updateTabs() { }); } -const UPDATE_INTERVAL = 1000 * 60 * 16; -setInterval(updateStatus, UPDATE_INTERVAL); -// updateStatus(); +// const UPDATE_INTERVAL = 1000 * 60 * 16; +// setInterval(updateStatus, UPDATE_INTERVAL); +// // updateStatus(); -function updateStatus(sendResponse) { - chrome.storage.sync.get("savedCourses", function (data) { - var courses = data.savedCourses; - var no_change = true; - for (let i = 0; i < courses.length; i++) { - try { - let c = courses[i]; - let old_status = c.status; - let old_link = c.link; - $.ajax({ - url: old_link, - success: function (result) { - if (result) { - console.log(result); - var object = $("
").html(result).contents(); - let new_status = object.find('[data-th="Status"]').text(); - let register_link = object.find('td[data-th="Add"] a'); - if (register_link) register_link = register_link.attr("href"); - var haschanged = new_status == old_status && register_link == old_link; - if (!haschanged) console.log(c.unique + " updated from " + old_status + " to " + new_status + " and " + old_link + " to " + register_link); - no_change &= haschanged; - c.registerlink = register_link; - c.status = new_status; - } - }, - }); - } catch (e) { - console.log(e); - console.log("Not logged into UT Coursebook. Could not update class statuses."); - } - } - if (!no_change) { - chrome.storage.sync.set({ - savedCourses: courses, - }); - console.log("updated status"); - } - }); -} +// function updateStatus(sendResponse) { +// chrome.storage.sync.get("savedCourses", function (data) { +// var courses = data.savedCourses; +// var no_change = true; +// for (let i = 0; i < courses.length; i++) { +// try { +// let c = courses[i]; +// let old_status = c.status; +// let old_link = c.link; +// $.ajax({ +// url: old_link, +// success: function (result) { +// if (result) { +// console.log(result); +// var object = $("
").html(result).contents(); +// let new_status = object.find('[data-th="Status"]').text(); +// let register_link = object.find('td[data-th="Add"] a'); +// if (register_link) register_link = register_link.attr("href"); +// var haschanged = new_status == old_status && register_link == old_link; +// if (!haschanged) console.log(c.unique + " updated from " + old_status + " to " + new_status + " and " + old_link + " to " + register_link); +// no_change &= haschanged; +// c.registerlink = register_link; +// c.status = new_status; +// } +// }, +// }); +// } catch (e) { +// console.log(e); +// console.log("Not logged into UT Coursebook. Could not update class statuses."); +// } +// } +// if (!no_change) { +// chrome.storage.sync.set({ +// savedCourses: courses, +// }); +// console.log("updated status"); +// } +// }); +// } +// execute a query on the grades database function executeQuery(query, sendResponse) { - console.log(grades); var res = grades.exec(query)[0]; sendResponse({ data: res, diff --git a/manifest.json b/manifest.json index 6d4ffb76..dd9b13ff 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,5 @@ { "manifest_version": 2, - "name": "UT Registration Plus", "version": "1.2.2.6", "options_page": "options.html", diff --git a/options.html b/options.html index f73c73e0..7c5a9db2 100644 --- a/options.html +++ b/options.html @@ -1,5 +1,6 @@ + @@ -15,7 +16,6 @@

Sriram Hariharan (2018)

-

Amazing people who've contributed to the extension!

Code is open source here here :)

diff --git a/popup.html b/popup.html index a63a84d5..4b384d17 100644 --- a/popup.html +++ b/popup.html @@ -1,6 +1,6 @@ - +