diff --git a/calendar.html b/calendar.html index 816892ed..07b34c99 100644 --- a/calendar.html +++ b/calendar.html @@ -3,31 +3,37 @@
- - - + + +There was an error. Please refresh the page and/or log back in using your UT EID and password.
" + return description; +} + + +function displayDescription(description) { + $("#description").animate({ + 'opacity': 0 + }, 200, function () { + $(this).html(description).animate({ + 'opacity': 1 + }, 200); }); } /*Get the course description from the profurl and highlight the important elements, as well as set the eCIS, and rmp links.*/ -function getDescription() { - // console.log(window.location.href); - // console.log(profurl); - console.log('hello'); +function getDescription(course_info) { + console.log('getting description for ') $.ajax({ - url: profurl, + url: course_info["individual"], success: function (response) { if (response) { - console.log(profurl); - var output = ""; - var object = $('').html(response).contents(); - object.find('#details > p').each(function () { - var sentence = $(this).text(); - if (sentence.indexOf("Prerequisite") == 0) { - sentence = "There was an error. Please refresh the page and/or log back in using your UT EID and password.
" - } - $("#description").animate({ - 'opacity': 0 - }, 200, function () { - $(this).html(description).animate({ - 'opacity': 1 - }, 200); - }); - var first = object.find('td[data-th="Instructor"]').text(); - first = first.substring(first.indexOf(", "), first.indexOf(" ", first.indexOf(", ") + 2)); - first = first.substring(2); - rmpLink = `http://www.ratemyprofessors.com/search.jsp?queryBy=teacherName&schoolName=university+of+texas+at+austin&queryoption=HEADER&query=${first} ${profname};&facetSearch=true`; - if (profname == "") { - eCISLink = `http://utdirect.utexas.edu/ctl/ecis/results/index.WBX?s_in_action_sw=S&s_in_search_type_sw=C&s_in_max_nbr_return=10&s_in_search_course_dept=${department}&s_in_search_course_num=${course_nbr}`; - } else { - eCISLink = `http://utdirect.utexas.edu/ctl/ecis/results/index.WBX?&s_in_action_sw=S&s_in_search_type_sw=N&s_in_search_name=${profname.substring(0, 1) + profname.substring(1).toLowerCase()}%2C%20${first.substring(0, 1) + first.substring(1).toLowerCase()}`; - } + response_node = $('').html(response).contents(); + description_lines = response_node.find('#details > p').toArray().map(x => $(x).text()); + displayDescription(buildFormattedDescription(description_lines)); + let first_name = extractFirstName(response_node); + updateLinks(course_info, first_name); } else { description = "You have been logged out. Please refresh the page and log back in using your UT EID and password.
" - $("#description").animate({ - 'opacity': 0 - }, 200, function () { - $(this).html(description).animate({ - 'opacity': 1 - }, 200); - }); - rmpLink = "http://www.ratemyprofessors.com/campusRatings.jsp?sid=1255"; - eCISLink = "http://utdirect.utexas.edu/ctl/ecis/results/index.WBX?"; + displayDescription(description); } } }); +} + + +function updateLinks(course_info, first_name) { + let { + prof_name, + number + } = course_info; + course_info["first_name"] = first_name; + course_info["links"]["rate_my_prof"] = `http://www.ratemyprofessors.com/search.jsp?queryBy=teacherName&schoolName=university+of+texas+at+austin&queryoption=HEADER&query=${first_name} ${prof_name};&facetSearch=true`; + course_info["links"]["ecis"] = profname ? `http://utdirect.utexas.edu/ctl/ecis/results/index.WBX?&s_in_action_sw=S&s_in_search_type_sw=N&s_in_search_name=${prof_name}%2C%20${first_name}` : + `http://utdirect.utexas.edu/ctl/ecis/results/index.WBX?s_in_action_sw=S&s_in_search_type_sw=C&s_in_max_nbr_return=10&s_in_search_course_dept=${department}&s_in_search_course_num=${number}`; +} + +function extractFirstName(response_node) { + let full_name = response_node.find('td[data-th="Instructor"]').text().split(', '); + let first = full_name[full_name.length - 1]; + return capitalizeString(first); } \ No newline at end of file diff --git a/js/fullcalendar.min.js b/js/lib/fullcalendar.min.js similarity index 100% rename from js/fullcalendar.min.js rename to js/lib/fullcalendar.min.js diff --git a/js/highcharts.js b/js/lib/highcharts.js similarity index 100% rename from js/highcharts.js rename to js/lib/highcharts.js diff --git a/js/html2canvas.min.js b/js/lib/html2canvas.min.js similarity index 100% rename from js/html2canvas.min.js rename to js/lib/html2canvas.min.js diff --git a/js/ics.min.js b/js/lib/ics.min.js similarity index 100% rename from js/ics.min.js rename to js/lib/ics.min.js diff --git a/js/jquery-3.3.1.min.js b/js/lib/jquery-3.3.1.min.js similarity index 100% rename from js/jquery-3.3.1.min.js rename to js/lib/jquery-3.3.1.min.js diff --git a/js/jquery.initialize.min.js b/js/lib/jquery.initialize.min.js similarity index 100% rename from js/jquery.initialize.min.js rename to js/lib/jquery.initialize.min.js diff --git a/js/moment.min.js b/js/lib/moment.min.js similarity index 100% rename from js/moment.min.js rename to js/lib/moment.min.js diff --git a/js/sql-memory-growth.js b/js/lib/sql-memory-growth.js similarity index 100% rename from js/sql-memory-growth.js rename to js/lib/sql-memory-growth.js diff --git a/js/util.js b/js/util.js index 0cae328d..4a4f9c8b 100644 --- a/js/util.js +++ b/js/util.js @@ -14,6 +14,18 @@ const semOrder = { } +function getStatusColor(status) { + let color = "black"; + if (status.includes("open")) { + color = "#4CAF50"; + } else if (status.includes("waitlisted")) { + color = "#FF9800" + } else if (status.includes("closed") || status.includes("cancelled")) { + color = "#FF5722"; + } + return color; +} + function buildQuery(course_data, sem) { let query = !sem ? "select * from agg" : "select * from grades"; query += " where dept like '%" + course_data["department"] + "%'"; @@ -25,6 +37,73 @@ function buildQuery(course_data, sem) { return query + "order by a1+a2+a3+b1+b2+b3+c1+c2+c3+d1+d2+d3+f desc"; } +/*Course object for passing to background*/ +function Course(coursename, unique, profname, datetimearr, status, link, registerlink) { + this.coursename = coursename; + this.unique = unique; + this.profname = profname; + this.datetimearr = datetimearr; + this.status = status; + this.link = link; + this.registerlink = registerlink; +} + +function capitalizeString(string) { + //if one word, and if multiple words: + let output = ""; + words = string.split(/[. ,\/ -]/); + for (let i in words) { + word = words[i]; + capitalizedWord = word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); + output += capitalizedWord + " "; + } + return output.trim(); +} + +function seperateDays(date) { + let arr = []; + for (var i = 0; i < date.length; i++) { + let letter = date.charAt(i); + if (letter == "T" && i < date.length - 1 && date.charAt(i + 1) == "H") { + arr.push(days.get("TH")); + } else { + if (letter != "H") { + arr.push(days.get(letter)); + } + } + } + return arr; +} + + +/*Convert time to 24hour format*/ +function convertTime(time) { + var converted = time.replace(/\./g, '').split("-"); + for (var i = 0; i < 2; i++) { + converted[i] = moment(converted[i], ["h:mm A"]).format("HH:mm"); + } + return converted; +} + +function prettifyDaysText(arr) { + var output = ""; + if (arr.length > 2) { + for (var i = 0; i < arr.length; i++) { + if (i < arr.length - 1) + output += arr[i] + ", " + if (i == arr.length - 2) + output += "and "; + if (i == arr.length - 1) + output += arr[i]; + } + } else if (arr.length == 2) { + output = arr[0] + " and " + arr[1]; + } else { + output = arr[0]; + } + return output +} + function semesterSort(semA, semB) { let aName = semA.split(' ')[0]; diff --git a/js/utplanner.js b/js/utplanner.js index 65099566..1c7b22fa 100644 --- a/js/utplanner.js +++ b/js/utplanner.js @@ -102,12 +102,9 @@ function openDialog(course_data, res) { $("#profname").text(buildProfTitle(course_data)); $("#myModal").fadeIn(fadetime); buildSemestersDropdown(course_data, res) - var data; - if (badData(course_data, res)) { - data = []; - } else { + var data = [] + if (!badData(course_data, res)) data = res.values[0]; - } setChart(data); } @@ -172,9 +169,7 @@ function buildTimeTitle(times) { return lines } -function close() { - $("#myModal").fadeOut(fadetime); -} + function makeLine(date, time, place) { var arr = seperateDays(date) @@ -185,20 +180,7 @@ function makeLine(date, time, place) { } -function seperateDays(date) { - let arr = []; - for (var i = 0; i < date.length; i++) { - let letter = date.charAt(i); - if (letter == "T" && i < date.length - 1 && date.charAt(i + 1) == "H") { - arr.push(days.get("TH")); - } else { - if (letter != "H") { - arr.push(days.get(letter)); - } - } - } - return arr; -} + function prettifyDaysText(arr) { var output = ""; @@ -238,4 +220,8 @@ function setChart(data) { }); } }); +} + +function close() { + $("#myModal").fadeOut(fadetime); } \ No newline at end of file diff --git a/manifest.json b/manifest.json index 72a69f16..4f53263a 100644 --- a/manifest.json +++ b/manifest.json @@ -16,24 +16,24 @@ ], "content_scripts": [{ "css": ["css/styles.css"], - "js": ["js/moment.min.js", "js/highcharts.js", "js/jquery-3.3.1.min.js", "js/jquery.initialize.min.js", "js/config.js", "js/util.js", - "js/content.js" + "js": ["js/lib/moment.min.js", "js/lib/highcharts.js", "js/lib/jquery-3.3.1.min.js", "js/lib/jquery.initialize.min.js", "js/config.js", "js/util.js", + "js/courseCatalog.js" ], "matches": ["https://utdirect.utexas.edu/apps/registrar/course_schedule/*"] }, { "css": ["css/styles.css"], - "js": ["js/moment.min.js", "js/highcharts.js", "js/jquery-3.3.1.min.js", "js/jquery.initialize.min.js", "js/config.js", "js/util.js", "js/utplanner.js"], + "js": ["js/lib/moment.min.js", "js/lib/highcharts.js", "js/lib/jquery-3.3.1.min.js", "js/lib/jquery.initialize.min.js", "js/config.js", "js/util.js", "js/utPlanner.js"], "matches": ["https://utexas.collegescheduler.com/*"] }, { "css": ["css/styles.css"], - "js": ["js/moment.min.js", "js/sql-memory-growth.js", "js/highcharts.js", "js/jquery-3.3.1.min.js", "js/import.js"], + "js": ["js/lib/moment.min.js", "js/lib/sql-memory-growth.js", "js/lib/highcharts.js", "js/lib/jquery-3.3.1.min.js", "js/import.js"], "matches": ["https://utdirect.utexas.edu/registrar/waitlist/wl_see_my_waitlists.WBX", "https://utdirect.utexas.edu/registration/classlist.WBX*"] }], "web_accessible_resources": [ "grades.db", "images/disticon.png" ], "background": { - "scripts": ["js/jquery-3.3.1.min.js", "js/sql-memory-growth.js", "js/background.js", "js/moment.min.js"], + "scripts": ["js/lib/jquery-3.3.1.min.js", "js/lib/sql-memory-growth.js", "js/lib/moment.min.js", "js/background.js"], "persistent": true }, "browser_action": { diff --git a/options.html b/options.html index f35b5734..1c9cd0b8 100644 --- a/options.html +++ b/options.html @@ -12,16 +12,18 @@(v), Sriram Hariharan, 2018
- +