moved getting semesters into background, message calling in popup

This commit is contained in:
Hariharan
2019-08-20 15:02:21 -05:00
parent 7ab78949ed
commit 12837ed19e
3 changed files with 72 additions and 47 deletions

View File

@@ -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) {
@@ -345,4 +363,26 @@ function updateStatus(sendResponse) {
console.log('updated status'); console.log('updated status');
} }
}); });
} }
/* 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();
};

View File

@@ -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);
})
});
}
});
}
}
});
} }
}); });
} }

View File

@@ -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": {