options button, styling changes, bug fixes

This commit is contained in:
10001shh
2018-08-28 17:17:17 -05:00
parent cd5c1193a2
commit c7317d4a0c
6 changed files with 136 additions and 75 deletions

View File

@@ -1,23 +1,19 @@
/* Handle messages and their commands from content and popup scripts*/
chrome.runtime.onMessage.addListener(function(request, sender, response) {
if(request.command == "courseStorage") {
if(request.action == "add"){
add(request,sender,response);
chrome.runtime.onMessage.addListener(function (request, sender, response) {
if (request.command == "courseStorage") {
if (request.action == "add") {
add(request, sender, response);
}
if(request.action == "remove"){
remove(request,sender,response);
if (request.action == "remove") {
remove(request, sender, response);
}
}
else if(request.command == "isSingleConflict"){
isSingleConflict(request.dtarr,request.unique,response);
}
else if(request.command == "checkConflicts"){
} else if (request.command == "isSingleConflict") {
isSingleConflict(request.dtarr, request.unique, response);
} else if (request.command == "checkConflicts") {
checkConflicts(response);
}
else if(request.command == "alreadyContains"){
alreadyContains(request.unique,response);
}
else{
} else if (request.command == "alreadyContains") {
alreadyContains(request.unique, response);
} else {
const xhr = new XMLHttpRequest();
const method = request.method ? request.method.toUpperCase() : "GET";
xhr.open(method, request.url, true);
@@ -32,71 +28,83 @@ chrome.runtime.onMessage.addListener(function(request, sender, response) {
});
/* Initially set the course data in storage */
chrome.runtime.onInstalled.addListener(function() {
var arr = new Array();
chrome.storage.sync.set({savedCourses: arr}, function() {
console.log('initial course list');
});
chrome.storage.sync.set({courseConflictHighlight: true}, function() {
console.log('initial highlighting: true');
});
chrome.runtime.onInstalled.addListener(function () {
var arr = new Array();
chrome.storage.sync.set({
savedCourses: arr
}, function () {
console.log('initial course list');
});
chrome.storage.sync.set({
courseConflictHighlight: true
}, function () {
console.log('initial highlighting: true');
});
});
/* Find all the conflicts in the courses and send them out/ if there is even a conflict*/
function checkConflicts(sendResponse) {
chrome.storage.sync.get('savedCourses', function(data) {
chrome.storage.sync.get('savedCourses', function (data) {
var conflicts = [];
var courses = data.savedCourses;
for(var i = 0; i<courses.length;i++){
for(var j=i+1; j<courses.length; j++){
if(isConflict(courses[i].datetimearr,courses[j].datetimearr)){
for (var i = 0; i < courses.length; i++) {
for (var j = i + 1; j < courses.length; j++) {
if (isConflict(courses[i].datetimearr, courses[j].datetimearr)) {
console.log("conflict");
conflicts.push([courses[i],courses[j]]);
conflicts.push([courses[i], courses[j]]);
}
}
}
if(conflicts.length == 0){
sendResponse({isConflict:false});
if (conflicts.length == 0) {
sendResponse({
isConflict: false
});
} else {
console.log(conflicts);
sendResponse({isConflict:true,between: conflicts});
sendResponse({
isConflict: true,
between: conflicts
});
}
});
}
/* Find if the course at unique and with currdatearr is contained in the saved courses and if it conflicts with any other courses*/
function isSingleConflict(currdatearr, unique, sendResponse){
chrome.storage.sync.get('savedCourses', function(data) {
function isSingleConflict(currdatearr, unique, sendResponse) {
chrome.storage.sync.get('savedCourses', function (data) {
var courses = data.savedCourses;
var conflict = false;
for(var i = 0; i<courses.length;i++){
if(isConflict(currdatearr,courses[i].datetimearr)){
for (var i = 0; i < courses.length; i++) {
if (isConflict(currdatearr, courses[i].datetimearr)) {
conflict = true;
break;
}
}
var contains = false;
var i = 0;
while(i < courses.length && !contains){
if(courses[i].unique == unique){
while (i < courses.length && !contains) {
if (courses[i].unique == unique) {
contains = true;
}
i++;
}
sendResponse({isConflict:conflict,alreadyContains:contains});
sendResponse({
isConflict: conflict,
alreadyContains: contains
});
});
}
/* Check if conflict between two date-time-arrs*/
function isConflict(adtarr, bdtarr){
for(var i = 0; i<adtarr.length;i++){
function isConflict(adtarr, bdtarr) {
for (var i = 0; i < adtarr.length; i++) {
var currday = adtarr[i][0];
var currtimes = adtarr[i][1];
for(var j = 0; j<bdtarr.length;j++){
for (var j = 0; j < bdtarr.length; j++) {
var nextday = bdtarr[j][0];
var nextimes = bdtarr[j][1];
if(nextday == currday){
if(currtimes[0] < nextimes[1] && currtimes[1] > nextimes[0]){
if (nextday == currday) {
if (currtimes[0] < nextimes[1] && currtimes[1] > nextimes[0]) {
return true;
}
}
@@ -107,42 +115,54 @@ function isConflict(adtarr, bdtarr){
/* Add the requested course to the storage*/
function add(request, sender, sendResponse) {
chrome.storage.sync.get('savedCourses', function(data) {
chrome.storage.sync.get('savedCourses', function (data) {
var courses = data.savedCourses;
courses.push(request.course)
console.log(courses);
chrome.storage.sync.set({savedCourses: courses});
sendResponse({done:"Added: ("+request.course.unique+") "+request.course.coursename,label:"Remove Course -"});
chrome.storage.sync.set({
savedCourses: courses
});
sendResponse({
done: "Added: (" + request.course.unique + ") " + request.course.coursename,
label: "Remove Course -"
});
});
}
/* Find and Remove the requested course from the storage*/
function remove(request, sender, sendResponse) {
chrome.storage.sync.get('savedCourses', function(data) {
chrome.storage.sync.get('savedCourses', function (data) {
var courses = data.savedCourses;
console.log(courses);
var index = 0;
while(index<courses.length && courses[index].unique != request.course.unique){
while (index < courses.length && courses[index].unique != request.course.unique) {
index++;
}
courses.splice(index,1);
chrome.storage.sync.set({savedCourses: courses});
sendResponse({done:"Removed: ("+request.course.unique+") "+request.course.coursename,label:"Add Course +"});
courses.splice(index, 1);
chrome.storage.sync.set({
savedCourses: courses
});
sendResponse({
done: "Removed: (" + request.course.unique + ") " + request.course.coursename,
label: "Add Course +"
});
});
}
/* Find if the unique is already contained within the storage*/
function alreadyContains(unique,sendResponse){
chrome.storage.sync.get('savedCourses', function(data) {
function alreadyContains(unique, sendResponse) {
chrome.storage.sync.get('savedCourses', function (data) {
var courses = data.savedCourses;
var contains = false;
var i = 0;
while(i < courses.length && !contains){
if(courses[i].unique == unique){
while (i < courses.length && !contains) {
if (courses[i].unique == unique) {
contains = true;
}
i++;
}
sendResponse({alreadyContains: contains});
sendResponse({
alreadyContains: contains
});
});
}

View File

@@ -61,8 +61,10 @@ $(function () {
$("#classname").html(`${savedCourses[currindex].coursename} <span style='font-size:small'>(${savedCourses[currindex].unique})</span>`);
$("#timelines").append(makeLine(savedCourses[currindex].datetimearr));
var uncapProf = savedCourses[currindex].profname
uncapProf = uncapProf.charAt(0) + uncapProf.substring(1).toLowerCase();
var uncapProf = prettifyName(savedCourses[currindex].profname);
if (uncapProf == "") {
uncapProf = "Undecided";
}
$("#prof").html(`with <span style='font-weight:bold;'>${uncapProf}</span>`);
}
});
@@ -186,8 +188,10 @@ $(function () {
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();
var uncapProf = prettifyName(classInfo.profname);
if (uncapProf == "") {
uncapProf = "Undecided";
}
classSchedules.push({
title: `${department}-${course_nbr} with ${uncapProf}`,
start: moment().format("YYYY-MM-") +
@@ -227,4 +231,10 @@ $(function () {
$("#calendar").fullCalendar('addEventSource', classSchedules, true);
});
}
/* Format the Professor Name */
function prettifyName(profname) {
return profname.replace(/\w\S*/g, function (txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
});

View File

@@ -37,7 +37,10 @@ chrome.storage.sync.get('savedCourses', function (data) {
}
var department = courses[i].coursename.substring(0, courses[i].coursename.search(/\d/) - 2);
var course_nbr = courses[i].coursename.substring(courses[i].coursename.search(/\d/), courses[i].coursename.indexOf(" ", courses[i].coursename.search(/\d/)));
var profname = courses[i].profname.substring(0, 1) + courses[i].profname.substring(1).toLowerCase();
var profname = prettifyName(courses[i].profname);
if (profname == "") {
profname = "Undecided Professor";
}
var listhtml = "<li id='" + i + "'style='padding: 0px 5px 5px 5px; overflow-y: auto;max-height:400px;'><div class='card'><div class='container' style='background:" + color + "''><h4 class='truncate' style='color:white;margin:5px; display:inline-block;font-size:large;'><b>" + department + " " + course_nbr + "<span style='font-size:medium'>" + " with </span><span style='font-size:medium'>" + profname + " (" + courses[i].unique + ")" + "</span></b></h4><p style='float:right;font-size:small;display:inline-block;margin-top:10px;color:white;'>&#9660;</p></div></div><div id='moreInfo' style='display: none;'><p style='font-weight:bold;padding:10px;margin:0px;font-size:small;background-color:#FFCDD2;'>" + makeLine(i) + "</p><div id='infoButtons' style='border-radius:0px;'><button class='matbut' id='listRemove'style='float:right;background:#F44336; margin:5px;'>Remove</button><button class='matbut' id='listMoreInfo' style='float:right;background:#2196F3; margin:5px;'>More Info</button></div></div></li>";
$("#courseList").append(listhtml);
}
@@ -50,6 +53,13 @@ function getSimpleName(coursename, unique) {
return department + " " + course_nbr + " (" + unique + ")";
}
/* Format the Professor Name */
function prettifyName(profname) {
return profname.replace(/\w\S*/g, function (txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
/* Update the conflict messages */
function updateConflicts() {
chrome.runtime.sendMessage({
@@ -67,7 +77,7 @@ function updateConflicts() {
text += "<br>";
}
}
$("#courseList").prepend("<p style='font-size:small; font-weight:bold; color:red; margin:5px;'>" + text + "</>");
$("#courseList").prepend("<p style='font-size:small;font-weight:bold; color:red; margin:5px;'>" + text + "</>");
}
});
}