removed cs favoritism 🤪

This commit is contained in:
sghsri
2020-08-26 15:42:39 -05:00
parent fefc3516c5
commit 2b95f6ab6e

View File

@@ -7,29 +7,20 @@ getDepartments();
var can_remove = true;
function setCourseList() {
$("#courseList").empty()
chrome.storage.sync.get('savedCourses', function (data) {
$("#courseList").empty();
chrome.storage.sync.get("savedCourses", function (data) {
updateConflicts();
courses = data.savedCourses
courses = data.savedCourses;
handleEmpty();
let num_hours = 0;
// build and append the course list element
for (var i = 0; i < courses.length; i++) {
let {
coursename,
unique,
profname,
status,
datetimearr
} = courses[i];
let { coursename, unique, profname, status, datetimearr } = courses[i];
profname = capitalizeString(profname);
let line = buildTimeLines(datetimearr);
let list_tile_color = getStatusColor(status)
let list_tile_color = getStatusColor(status);
let list_sub_color = getStatusColor(status, true);
let {
department,
number
} = seperateCourseNameParts(coursename)
let { department, number } = seperateCourseNameParts(coursename);
num_hours += parseInt(number.substring(0, 1));
let list_html = Template.Popup.list_item(i, list_tile_color, unique, department, number, profname, list_sub_color, line);
@@ -44,11 +35,11 @@ function buildTimeLines(datetimearr) {
let lines = convertDateTimeArrToLine(datetimearr);
let output = "";
if (lines.length == 0) {
output = "<span style='font-size:medium;'>This class has no meeting times.</span>"
output = "<span style='font-size:medium;'>This class has no meeting times.</span>";
} else {
for (let i = 0; i < lines.length; i++) {
let line = lines[i];
output += Template.Popup.line(line)
output += Template.Popup.line(line);
}
}
return output;
@@ -56,9 +47,11 @@ function buildTimeLines(datetimearr) {
/* Update the conflict messages */
function updateConflicts() {
chrome.runtime.sendMessage({
command: "checkConflicts"
}, function (response) {
chrome.runtime.sendMessage(
{
command: "checkConflicts",
},
function (response) {
if (response.isConflict) {
var between = response.between;
let conflict_message = "";
@@ -66,20 +59,17 @@ function updateConflicts() {
let courseA = between[i][0];
let courseB = between[i][1];
conflict_message += `CONFLICT: ${formatShortenedCourseName(courseA)} and ${formatShortenedCourseName(courseB)}`;
if (i != between.length - 1)
conflict_message += "<br>";
if (i != between.length - 1) conflict_message += "<br>";
}
$(Template.Popup.conflict_message(conflict_message)).prependTo("#courseList").hide().fadeIn(200);
}
});
}
);
}
/* prettify the name for the conflict messages*/
function formatShortenedCourseName(course) {
let {
number,
department
} = seperateCourseNameParts(course.coursename)
let { number, department } = seperateCourseNameParts(course.coursename);
return `${department} ${number} (${course.unique})`;
}
@@ -87,19 +77,19 @@ $(document).click(function (event) {
$target = $(event.target);
// If we're not clicking on search button or search popup, and popup is visible, hide it
if (!$target.closest('#search').length && !$target.closest('#search-popup').length && $('#search-popup').is(":visible")) {
if (!$target.closest("#search").length && !$target.closest("#search-popup").length && $("#search-popup").is(":visible")) {
hideSearchPopup();
}
// If we're not clicking on import/export button or imp/exp popup, and popup is visible, hide it
if (!$target.closest('#impexp').length && !$target.closest('#import-export-popup').length && $('#import-export-popup').is(":visible")) {
if (!$target.closest("#impexp").length && !$target.closest("#import-export-popup").length && $("#import-export-popup").is(":visible")) {
hideImportExportPopup();
}
});
$("#clear").click(function () {
chrome.storage.sync.set({
savedCourses: []
savedCourses: [],
});
$("#courseList").empty();
updateAllTabsCourseList();
@@ -108,22 +98,21 @@ $("#clear").click(function () {
$("#RIS").click(function () {
chrome.tabs.create({
'url': 'https://utdirect.utexas.edu/registrar/ris.WBX'
url: "https://utdirect.utexas.edu/registrar/ris.WBX",
});
});
$("#calendar").click(function () {
chrome.tabs.create({
'url': "calendar.html"
url: "calendar.html",
});
});
$("#impexp").click(function () {
if ($("#impexp>i").text() == 'close') {
if ($("#impexp>i").text() == "close") {
hideImportExportPopup();
} else {
if ($("#search>i").text() == 'close') {
if ($("#search>i").text() == "close") {
hideSearchPopup();
}
showImportExportPopup();
@@ -131,27 +120,27 @@ $("#impexp").click(function () {
});
$("#search").click(function () {
if ($("#search>i").text() == 'close') {
if ($("#search>i").text() == "close") {
hideSearchPopup();
} else {
if ($("#impexp>i").text() == 'close') {
if ($("#impexp>i").text() == "close") {
hideImportExportPopup();
}
showSearchPopup();
}
});
$('#import-class').click(function () {
$("#import-class").click(function () {
$("#import_input").click();
console.log('back to improting');
console.log("back to improting");
});
function isImportedValid(imported_courses) {
return imported_courses && imported_courses.length && (imported_courses.length == 0 || validateCourses(imported_courses))
return imported_courses && imported_courses.length && (imported_courses.length == 0 || validateCourses(imported_courses));
}
$("#import_input").change(function (e) {
console.log('hello');
console.log("hello");
var files = e.target.files;
var reader = new FileReader();
reader.onload = function () {
@@ -159,44 +148,43 @@ $("#import_input").change(function (e) {
var imported_courses = JSON.parse(this.result);
if (isImportedValid(imported_courses)) {
chrome.storage.sync.set({
savedCourses: imported_courses
savedCourses: imported_courses,
});
updateAllTabsCourseList();
setCourseList();
hideImportExportPopup();
$("#import_input").val('');
$("#import_input").val("");
} else {
Alert('There was an error.');
Alert("There was an error.");
}
} catch (err) {
console.log(err);
}
}
};
reader.readAsText(files[0]);
});
function exportCourses(url) {
var exportlink = document.createElement('a');
exportlink.setAttribute('href', url);
exportlink.setAttribute('download', 'my_courses.json');
var exportlink = document.createElement("a");
exportlink.setAttribute("href", url);
exportlink.setAttribute("download", "my_courses.json");
exportlink.click();
}
function createBlob(export_courses) {
return new Blob([JSON.stringify(export_courses, null, 4)], {
type: "octet/stream"
})
type: "octet/stream",
});
}
$('#export-class').click(function () {
chrome.storage.sync.get('savedCourses', function (data) {
$("#export-class").click(function () {
chrome.storage.sync.get("savedCourses", function (data) {
let export_courses = data.savedCourses;
if (export_courses.length > 0) {
let url = window.URL.createObjectURL(createBlob(export_courses));
exportCourses(url);
} else {
alert('No Saved Courses to Export.');
alert("No Saved Courses to Export.");
}
hideImportExportPopup();
});
@@ -205,7 +193,7 @@ $('#export-class').click(function () {
function openSearch(semester, department, level, courseCode) {
var link = "";
if (courseCode) {
link = `https://utdirect.utexas.edu/apps/registrar/course_schedule/${semester}/results/?search_type_main=COURSE&fos_cn=${department}&course_number=${courseCode}`
link = `https://utdirect.utexas.edu/apps/registrar/course_schedule/${semester}/results/?search_type_main=COURSE&fos_cn=${department}&course_number=${courseCode}`;
} else {
link = `https://utdirect.utexas.edu/apps/registrar/course_schedule/${semester}/results/?fos_fl=${department}&level=${level}&search_type_main=FIELD`;
}
@@ -222,17 +210,19 @@ $("#search-class").click(() => {
$("#options_button").click(function () {
chrome.tabs.create({
'url': "options.html"
url: "options.html",
});
});
$("#courseList").on('mouseover', '.copy_button', function () {
$(this).addClass('shadow');
}).on('mouseleave', '.copy_button', function () {
$(this).removeClass('shadow');
});
$("#courseList")
.on("mouseover", ".copy_button", function () {
$(this).addClass("shadow");
})
.on("mouseleave", ".copy_button", function () {
$(this).removeClass("shadow");
});
$("#courseList").on('click', '.copy_button', function (e) {
$("#courseList").on("click", ".copy_button", function (e) {
e.stopPropagation();
copyButtonAnimation($(this));
let unique = $(this).val();
@@ -247,78 +237,78 @@ function copyUnique(unique) {
temp.remove();
}
$("#courseList").on('click', 'li', function () {
let clicked_item = $(this).closest('li');
$("#courseList").on("click", "li", function () {
let clicked_item = $(this).closest("li");
let curr_course = courses[$(clicked_item).attr("id")];
handleMoreInfo(clicked_item, curr_course);
handleRegister(clicked_item, curr_course)
handleRemove(clicked_item, curr_course)
handleRegister(clicked_item, curr_course);
handleRemove(clicked_item, curr_course);
toggleTimeDropdown(clicked_item);
});
function handleRegister(clicked_item, curr_course) {
let {
status,
registerlink
} = curr_course;
let { status, registerlink } = curr_course;
let register_button = $(clicked_item).find("#register");
let can_not_register = canNotRegister(status, registerlink);
let register_text = can_not_register ? "Can't Register" :
status.includes("waitlisted") ? "Join Waitlist" : "Register";
let register_color = can_not_register ? Colors.closed :
status.includes("waitlisted") ? Colors.waitlisted : Colors.open;
let register_text = can_not_register ? "Can't Register" : status.includes("waitlisted") ? "Join Waitlist" : "Register";
let register_color = can_not_register ? Colors.closed : status.includes("waitlisted") ? Colors.waitlisted : Colors.open;
if (!status) {
register_text = "No Status";
register_color = Colors.no_status;
}
$(register_button).text(register_text).css('background-color', register_color);
$(register_button).text(register_text).css("background-color", register_color);
if (!can_not_register) {
$(register_button).click(function () {
setCurrentTabUrl(registerlink);
})
});
}
}
function handleRemove(clicked_item, curr_course) {
let list = $(clicked_item).closest("ul");
$(clicked_item).find("#listRemove").click(function () {
$(clicked_item)
.find("#listRemove")
.click(function () {
if (can_remove) {
can_remove = false;
$(list).find("#conflict").fadeOut(300, function () {
$(list)
.find("#conflict")
.fadeOut(300, function () {
$(clicked_item).remove();
});
subtractHours(curr_course);
chrome.runtime.sendMessage({
chrome.runtime.sendMessage(
{
command: "courseStorage",
course: curr_course,
action: "remove"
}, () => {
action: "remove",
},
() => {
$(clicked_item).fadeOut(200);
if ($(list).children(':visible').length === 1)
showEmpty();
if ($(list).children(":visible").length === 1) showEmpty();
can_remove = true;
updateConflicts();
updateAllTabsCourseList();
});
}
);
}
});
}
function subtractHours(curr_course) {
let curr_total_hours = parseInt($("#meta-metric").text());
let curr_course_number = seperateCourseNameParts(curr_course.coursename).number;
let curr_individual_hours = parseInt(curr_course_number.substring(0, 1));
$("#meta-metric").text(curr_total_hours - curr_individual_hours);
}
function handleMoreInfo(clicked_item, curr_course) {
$(clicked_item).find("#listMoreInfo").click(function () {
$(clicked_item)
.find("#listMoreInfo")
.click(function () {
openMoreInfoWithOpenModal(curr_course.link);
});
}
@@ -333,29 +323,32 @@ function handleEmpty() {
}
function copyButtonAnimation(copy_button) {
$(copy_button).find('i').text('check');
$(copy_button).stop(true, false).removeAttr('style').removeClass('shadow', {
duration: 200
$(copy_button).find("i").text("check");
$(copy_button).stop(true, false).removeAttr("style").removeClass("shadow", {
duration: 200,
});
$(copy_button).find('i').delay(400).queue(function (n) {
$(this).text('content_copy');
$(this).parent().removeClass('shadow');
$(copy_button)
.find("i")
.delay(400)
.queue(function (n) {
$(this).text("content_copy");
$(this).parent().removeClass("shadow");
if ($(this).parent().is(":hover")) {
$(this).parent().addClass('shadow');
$(this).parent().addClass("shadow");
}
n();
})
});
}
function toggleTimeDropdown(clicked_item) {
let more_info_button = $(clicked_item).find('#moreInfo');
let more_info_button = $(clicked_item).find("#moreInfo");
let arrow = $(clicked_item).find("#arrow");
if ($(more_info_button).is(":hidden")) {
$(more_info_button).fadeIn(200);
$(arrow).css('transform', 'rotate(90deg)');
$(arrow).css("transform", "rotate(90deg)");
} else {
$(more_info_button).fadeOut(200);
$(arrow).css('transform', '');
$(arrow).css("transform", "");
}
}
@@ -363,61 +356,67 @@ function showEmpty() {
$("#courseList").hide();
$("#empty").fadeIn(200);
$("#main").html(Text.emptyText());
$("#meta-metric").text('0');
$("#meta-metric").text("0");
}
function hideSearchPopup() {
$("#search>i").text('search');
$("#search>i").text("search");
$("#semcon").hide();
$("#depcon").hide();
$("#semesters").hide();
$("#levcon").hide();
$("#search-popup").addClass('hide');
$("#search-popup").addClass("hide");
}
function showSearchPopup() {
$("#search>i").text('close');
$("#search>i").text("close");
$("#class_id_input").show();
$("#semesters").show();
$("#semcon").show();
$("#depcon").show();
$("#levcon").show();
$("#search-popup").removeClass('hide');
$("#search-popup").removeClass("hide");
}
function hideImportExportPopup() {
$("#import-export-popup").addClass('hide');
$("#impexp>i").text('import_export');
$("#import-export-popup").addClass("hide");
$("#impexp>i").text("import_export");
}
function showImportExportPopup() {
$("#impexp>i").text('close');
$("#import-export-popup").removeClass('hide');
$("#impexp>i").text("close");
$("#import-export-popup").removeClass("hide");
}
function getSemesters() {
chrome.runtime.sendMessage({
command: "currentSemesters"
}, function (response) {
chrome.runtime.sendMessage(
{
command: "currentSemesters",
},
function (response) {
let { semesters } = response;
let semester_names = Object.keys(semesters);
for (let i = 0; i < semester_names.length; i++) {
let name = semester_names[i];
$("#semesters").append(`<option value='${semesters[name]}'>${name}</option>`);
}
});
}
);
}
function getDepartments() {
chrome.runtime.sendMessage({
command: "currentDepartments"
}, function (response) {
chrome.runtime.sendMessage(
{
command: "currentDepartments",
},
function (response) {
let { departments } = response;
console.log(departments);
for (let i = 0; i < departments.length; i++) {
let abv = departments[i];
$("#department").append(`<option value='${abv}'>${abv}</option>`);
}
$("#department").val('C S');
});
// $("#department").val('C S');
}
);
}