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

View File

@@ -8,9 +8,6 @@ var uniquenum;
var profurl;
var department;
var course_nbr;
var times = [];
var dates = [];
var locations = [];
var datetimearr = [];
var description;
@@ -46,7 +43,7 @@ $(document).ready( 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) {
$("#saveCourse").text(response.label);
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.unique = unique;
this.profname = profname;
this.times = times;
this.dates = dates;
this.locations = locations;
this.datetimearr = datetimearr;
this.status = status;
this.link = link;
}
@@ -103,18 +98,11 @@ function getCourseInfo(row){
profname = profname.substring(1);
}
var numlines = $(this).find('td[data-th="Days"]>span').length;
dates = [];
times = [];
locations = [];
datetimearr = [];
var arr = [];
for(var i=0; i<numlines;i++){
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 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>');
// makeLine(date,time,place);
}
@@ -144,12 +132,12 @@ function makeLine(date, time, place){
var day = "";
if(letter == "T" && i <date.length-1 && date.charAt(i+1) == "H"){
arr.push(days.get("TH"));
datetimearr.push(["TH", convertTime(time)]);
datetimearr.push(["TH", convertTime(time),place]);
}
else {
if(letter != "H"){
arr.push(days.get(letter));
datetimearr.push([letter, convertTime(time)]);
datetimearr.push([letter, convertTime(time),place]);
}
}
}

View File

@@ -31,7 +31,7 @@ body{
<body>
<script src="jquery-3.3.1.min.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>
</body>
</html>

View File

@@ -1,4 +1,17 @@
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;
console.log(courses);
for(var i = 0; i<courses.length;i++){