schedule conflicts backend relatively done

This commit is contained in:
Sriram Hariharan
2018-07-10 17:26:03 -05:00
parent f89318feba
commit 34cd9fc3c5
4 changed files with 60 additions and 32 deletions

View File

@@ -8,14 +8,11 @@ chrome.runtime.onMessage.addListener(function(request, sender, response) {
} }
} }
else if(request.command == "checkConflicts"){ else if(request.command == "checkConflicts"){
//Check conflicts checkConflicts(response);
} }
else if(request.command == "alreadyContains"){ else if(request.command == "alreadyContains"){
alreadyContains(request.unique,response); alreadyContains(request.unique,response);
} }
else if(request.command == "getCourses"){
getCourses(response);
}
else{ else{
const xhr = new XMLHttpRequest(); const xhr = new XMLHttpRequest();
const method = request.method ? request.method.toUpperCase() : "GET"; const method = request.method ? request.method.toUpperCase() : "GET";
@@ -37,18 +34,50 @@ chrome.runtime.onMessage.addListener(function(request, sender, response) {
}); });
}); });
function checkConflicts(sendResponse) {
function getCourses(sendResponse){
chrome.storage.sync.get('savedCourses', function(data) { chrome.storage.sync.get('savedCourses', function(data) {
sendResponse({done:data.savedCourses}); 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],courses[j])){
console.log("conflict");
conflicts.push([courses[i],courses[j]]);
}
}
}
if(conflicts.length == 0){
sendResponse({isConflict:false});
} else {
console.log(conflicts);
sendResponse({isConflict:true,between: conflicts});
}
}); });
} }
function isConflict(courseA, courseB){
var adtarr = courseA.datetimearr;
var bdtarr = courseB.datetimearr;
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++){
var nextday = bdtarr[j][0];
var nextimes = bdtarr[j][1];
if(nextday == currday){
if(currtimes[0] < nextimes[1] && currtimes[1] > nextimes[0]){
return true;
}
}
}
}
return false;
}
function add(request, sender, sendResponse) { function add(request, sender, sendResponse) {
var courses;
var response;
chrome.storage.sync.get('savedCourses', function(data) { chrome.storage.sync.get('savedCourses', function(data) {
courses = data.savedCourses; var courses = data.savedCourses;
courses.push(request.course) courses.push(request.course)
console.log(courses); console.log(courses);
chrome.storage.sync.set({savedCourses: courses}); chrome.storage.sync.set({savedCourses: courses});
@@ -56,10 +85,8 @@ function add(request, sender, sendResponse) {
}); });
} }
function remove(request, sender, sendResponse) { function remove(request, sender, sendResponse) {
var courses;
var response;
chrome.storage.sync.get('savedCourses', function(data) { chrome.storage.sync.get('savedCourses', function(data) {
courses = data.savedCourses; var courses = data.savedCourses;
var index = 0; var index = 0;
while(index<courses.length && courses[index].unique != request.course.unique){ while(index<courses.length && courses[index].unique != request.course.unique){
index++; index++;
@@ -73,7 +100,7 @@ function remove(request, sender, sendResponse) {
function alreadyContains(unique,sendResponse){ function alreadyContains(unique,sendResponse){
chrome.storage.sync.get('savedCourses', function(data) { chrome.storage.sync.get('savedCourses', function(data) {
courses = data.savedCourses; var courses = data.savedCourses;
var contains = false; var contains = false;
var i = 0; var i = 0;
while(i < courses.length && !contains){ while(i < courses.length && !contains){

View File

@@ -8,9 +8,6 @@ var uniquenum;
var profurl; var profurl;
var department; var department;
var course_nbr; var course_nbr;
var times = [];
var dates = [];
var locations = [];
var datetimearr = []; var datetimearr = [];
var description; var description;
@@ -46,7 +43,7 @@ $(document).ready( function() {
}); });
$("#saveCourse").click(function(){ $("#saveCourse").click(function(){
var c = new Course(coursename,uniquenum, profname, times, dates, locations, status, profurl); var c = new Course(coursename,uniquenum, profname, datetimearr, status, profurl);
chrome.runtime.sendMessage({command: "courseStorage",course: c, action:$("#saveCourse").text().substring(0,$("#saveCourse").text().indexOf(" ")).toLowerCase()}, function(response) { chrome.runtime.sendMessage({command: "courseStorage",course: c, action:$("#saveCourse").text().substring(0,$("#saveCourse").text().indexOf(" ")).toLowerCase()}, function(response) {
$("#saveCourse").text(response.label); $("#saveCourse").text(response.label);
alert(response.done); alert(response.done);
@@ -75,13 +72,11 @@ $(document).ready( function() {
}); });
}); });
function Course(coursename, unique, profname, times, dates, locations, status, link){ function Course(coursename, unique, profname,datetimearr, status, link){
this.coursename = coursename; this.coursename = coursename;
this.unique = unique; this.unique = unique;
this.profname = profname; this.profname = profname;
this.times = times; this.datetimearr = datetimearr;
this.dates = dates;
this.locations = locations;
this.status = status; this.status = status;
this.link = link; this.link = link;
} }
@@ -103,18 +98,11 @@ function getCourseInfo(row){
profname = profname.substring(1); profname = profname.substring(1);
} }
var numlines = $(this).find('td[data-th="Days"]>span').length; var numlines = $(this).find('td[data-th="Days"]>span').length;
dates = [];
times = [];
locations = [];
datetimearr = []; datetimearr = [];
var arr = [];
for(var i=0; i<numlines;i++){ for(var i=0; i<numlines;i++){
var date = $(this).find('td[data-th="Days"]>span:eq('+i+')').text(); var date = $(this).find('td[data-th="Days"]>span:eq('+i+')').text();
var time = $(this).find('td[data-th="Hour"]>span:eq('+i+')').text(); var time = $(this).find('td[data-th="Hour"]>span:eq('+i+')').text();
var place = $(this).find('td[data-th="Room"]>span:eq('+i+')').text(); var place = $(this).find('td[data-th="Room"]>span:eq('+i+')').text();
dates.push(date);
times.push(time);
locations.push(place);
$(".topbuttons").before('<h2 class="dateTimePlace">'+makeLine(date,time,place)+'</th>'); $(".topbuttons").before('<h2 class="dateTimePlace">'+makeLine(date,time,place)+'</th>');
// makeLine(date,time,place); // makeLine(date,time,place);
} }
@@ -144,12 +132,12 @@ function makeLine(date, time, place){
var day = ""; var day = "";
if(letter == "T" && i <date.length-1 && date.charAt(i+1) == "H"){ if(letter == "T" && i <date.length-1 && date.charAt(i+1) == "H"){
arr.push(days.get("TH")); arr.push(days.get("TH"));
datetimearr.push(["TH", convertTime(time)]); datetimearr.push(["TH", convertTime(time),place]);
} }
else { else {
if(letter != "H"){ if(letter != "H"){
arr.push(days.get(letter)); arr.push(days.get(letter));
datetimearr.push([letter, convertTime(time)]); datetimearr.push([letter, convertTime(time),place]);
} }
} }
} }

View File

@@ -31,7 +31,7 @@ body{
<body> <body>
<script src="jquery-3.3.1.min.js"></script> <script src="jquery-3.3.1.min.js"></script>
<script src="popup.js"></script> <script src="popup.js"></script>
<h2>Saved Courses</h2> <h2 id='headertext'>Saved Courses</h2>
<ul id= "courseList" style="list-style-type: none;padding: 5px;"></ul> <ul id= "courseList" style="list-style-type: none;padding: 5px;"></ul>
</body> </body>
</html> </html>

View File

@@ -1,4 +1,17 @@
chrome.storage.sync.get('savedCourses', function(data) { chrome.storage.sync.get('savedCourses', function(data) {
chrome.runtime.sendMessage({command: "checkConflicts"}, function(response) {
if(response.isConflict){
var between = response.between;
var text = "";
for(var i = 0; i<between.length;i++){
text+="Conflict between: "+between[i][0].coursename + " and "+between[i][1].coursename+"\n";
if(i != between.length-1){
text+= "<br></br>";
}
}
$("#headertext").append("<p style='font-size:small;color:red;'>"+text+"</>");
}
});
var courses = data.savedCourses; var courses = data.savedCourses;
console.log(courses); console.log(courses);
for(var i = 0; i<courses.length;i++){ for(var i = 0; i<courses.length;i++){