moved getting semesters into background, message calling in popup
This commit is contained in:
@@ -1,6 +1,12 @@
|
|||||||
updateBadge(true);
|
|
||||||
var grades;
|
var grades;
|
||||||
|
var current_semesters = {};
|
||||||
|
|
||||||
|
updateBadge(true);
|
||||||
loadDataBase()
|
loadDataBase()
|
||||||
|
getCurrentSemesters();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Handle messages and their commands from content and popup scripts*/
|
/* Handle messages and their commands from content and popup scripts*/
|
||||||
chrome.runtime.onMessage.addListener(function (request, sender, response) {
|
chrome.runtime.onMessage.addListener(function (request, sender, response) {
|
||||||
switch (request.command) {
|
switch (request.command) {
|
||||||
@@ -32,6 +38,8 @@ chrome.runtime.onMessage.addListener(function (request, sender, response) {
|
|||||||
break;
|
break;
|
||||||
case "gradesQuery":
|
case "gradesQuery":
|
||||||
executeQuery(request.query, response);
|
executeQuery(request.query, response);
|
||||||
|
case "currentSemesters":
|
||||||
|
response({ semesters: current_semesters});
|
||||||
default:
|
default:
|
||||||
const xhr = new XMLHttpRequest();
|
const xhr = new XMLHttpRequest();
|
||||||
const method = request.method ? request.method.toUpperCase() : "GET";
|
const method = request.method ? request.method.toUpperCase() : "GET";
|
||||||
@@ -107,27 +115,37 @@ function executeQuery(query, sendResponse) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load the database*/
|
|
||||||
function loadDataBase() {
|
function getCurrentSemesters(){
|
||||||
sql = window.SQL;
|
$.get('https://registrar.utexas.edu/schedules', function (response) {
|
||||||
loadBinaryFile('grades.db', function (data) {
|
if (response) {
|
||||||
var sqldb = new SQL.Database(data);
|
htmlToNode(response).find('.callout2>ul>li>a').each(function (i) {
|
||||||
grades = sqldb;
|
if (i < Popup.num_semesters) {
|
||||||
|
let sem_name = $(this).text().trim();
|
||||||
|
if (sem_name != "Course Schedule Archive") {
|
||||||
|
// $("#semesters").append(`<option>${sem_name}</option>`);
|
||||||
|
current_semesters[sem_name] = "code";
|
||||||
|
$.get($(this).attr('href'), function (response) {
|
||||||
|
if (response) {
|
||||||
|
let response_node = htmlToNode(response);
|
||||||
|
let name = response_node.find(".page-title").text().substring(17).trim();
|
||||||
|
response_node.find('.gobutton>a').each(function () {
|
||||||
|
let link = $(this).attr('href');
|
||||||
|
var sem_num = link.substring(link.lastIndexOf('/') + 1).trim();
|
||||||
|
if(current_semesters[name] != sem_num){
|
||||||
|
current_semesters[name] = sem_num;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
/* load the database from file */
|
});
|
||||||
function loadBinaryFile(path, success) {
|
}
|
||||||
var xhr = new XMLHttpRequest();
|
}
|
||||||
xhr.open("GET", chrome.extension.getURL(path), true);
|
});
|
||||||
xhr.responseType = "arraybuffer";
|
}
|
||||||
xhr.onload = function () {
|
});
|
||||||
var data = new Uint8Array(xhr.response);
|
}
|
||||||
var arr = new Array();
|
|
||||||
for (var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
|
|
||||||
success(arr.join(""));
|
|
||||||
};
|
|
||||||
xhr.send();
|
|
||||||
};
|
|
||||||
|
|
||||||
function updateBadge(first, new_changes) {
|
function updateBadge(first, new_changes) {
|
||||||
if (new_changes) {
|
if (new_changes) {
|
||||||
@@ -346,3 +364,25 @@ function updateStatus(sendResponse) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Load the database*/
|
||||||
|
function loadDataBase() {
|
||||||
|
sql = window.SQL;
|
||||||
|
loadBinaryFile('grades.db', function (data) {
|
||||||
|
var sqldb = new SQL.Database(data);
|
||||||
|
grades = sqldb;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/* load the database from file */
|
||||||
|
function loadBinaryFile(path, success) {
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.open("GET", chrome.extension.getURL(path), true);
|
||||||
|
xhr.responseType = "arraybuffer";
|
||||||
|
xhr.onload = function () {
|
||||||
|
var data = new Uint8Array(xhr.response);
|
||||||
|
var arr = new Array();
|
||||||
|
for (var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
|
||||||
|
success(arr.join(""));
|
||||||
|
};
|
||||||
|
xhr.send();
|
||||||
|
};
|
||||||
34
js/popup.js
34
js/popup.js
@@ -378,31 +378,15 @@ function showImportExportPopup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getSemesters() {
|
function getSemesters() {
|
||||||
var schedule_list = 'https://registrar.utexas.edu/schedules';
|
chrome.runtime.sendMessage({
|
||||||
$.get(schedule_list, function (response) {
|
command: "currentSemesters"
|
||||||
if (response) {
|
}, function(response){
|
||||||
htmlToNode(response).find('.callout2>ul>li>a').each(function (i) {
|
let { semesters } = response;
|
||||||
if (i < Popup.num_semesters) {
|
console.log(semesters);
|
||||||
let sem_name = $(this).text().trim();
|
let semester_names = Object.keys(semesters);
|
||||||
if (sem_name != "Course Schedule Archive") {
|
for(let i = 0; i<semester_names.length;i++){
|
||||||
$("#semesters").append(`<option>${sem_name}</option>`);
|
let name = semester_names[i];
|
||||||
$.get($(this).attr('href'), function (response) {
|
$("#semesters").append(`<option value='${semesters[name]}'>${name}</option>`);
|
||||||
if (response) {
|
|
||||||
let response_node = htmlToNode(response);
|
|
||||||
let name = response_node.find(".page-title").text().substring(17).trim();
|
|
||||||
response_node.find('.gobutton>a').each(function () {
|
|
||||||
let link = $(this).attr('href');
|
|
||||||
var sem_num = link.substring(link.lastIndexOf('/') + 1).trim();
|
|
||||||
$("option").each(function () {
|
|
||||||
if ($(this).text() == name)
|
|
||||||
$(this).val(sem_num);
|
|
||||||
})
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,8 @@
|
|||||||
"grades.db", "images/disticon.png"
|
"grades.db", "images/disticon.png"
|
||||||
],
|
],
|
||||||
"background": {
|
"background": {
|
||||||
"scripts": ["js/lib/jquery-3.3.1.min.js", "js/lib/sql-memory-growth.js", "js/lib/moment.min.js", "js/config.js", "js/background.js"],
|
"scripts": ["js/lib/jquery-3.3.1.min.js", "js/lib/sql-memory-growth.js", "js/lib/moment.min.js", "js/config.js", "js/util.js",
|
||||||
|
"js/background.js"],
|
||||||
"persistent": true
|
"persistent": true
|
||||||
},
|
},
|
||||||
"browser_action": {
|
"browser_action": {
|
||||||
|
|||||||
Reference in New Issue
Block a user