schedule conflicts backend relatively done
This commit is contained in:
@@ -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){
|
||||||
|
|||||||
22
content.js
22
content.js
@@ -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]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
13
popup.js
13
popup.js
@@ -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++){
|
||||||
|
|||||||
Reference in New Issue
Block a user