Skip to content

Commit

Permalink
Support for electives on last year
Browse files Browse the repository at this point in the history
  • Loading branch information
pablomatiasgomez committed Nov 14, 2023
1 parent d2a31df commit 01a6d34
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 10 deletions.
9 changes: 8 additions & 1 deletion js/guarani/PagesDataParser.js
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,8 @@ UtnBaHelper.PagesDataParser = function (utils) {
let planCode = groups[1];

// Courses
return Promise.all($contents.find(".accordion").toArray().flatMap(accordion => {
let maxLevel = -1;
return Promise.all($contents.find(".accordion").toArray().flatMap((accordion, index, accordions) => {
let $accordion = $(accordion);
let $accordionHeading = $accordion.find("> .accordion-group > .accordion-heading a");
let areElectives = $accordionHeading.hasClass("materia_generica");
Expand All @@ -239,8 +240,14 @@ UtnBaHelper.PagesDataParser = function (utils) {
}
let levelText = $accordionHeading.text().trim().toLowerCase();
let level = levelsMapping[levelText];
// If level couldn't be matched, but this is an accordion of electives, is a first level accordion, and is the last one,
// Then it means they are the electives of the entire plan, and should be considered as part of the last level.
if (typeof level === "undefined" && areElectives && $parentAccordion.length === 0 && index === accordions.length - 1) {
level = maxLevel;
}
if (typeof level === "undefined") throw new Error(`Invalid levelText: '${levelText}. responseText: ${responseText}'`);
if (level === -1) return [];
maxLevel = Math.max(maxLevel, level);

return $accordion.find("table:first tbody tr:not(.correlatividades)").toArray().map(courseRow => {
let courseText = courseRow.querySelector("td").innerText.trim();
Expand Down
13 changes: 5 additions & 8 deletions js/guarani/custompages/PlanTrackingCustomPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,11 @@ UtnBaHelper.PlanTrackingCustomPage = function ($container, services) {
let loadPlan = function (planCode, coursesHistory) {
if (!planCode) return;
return services.apiConnector.getPlanCourses(planCode).then(planCourses => {
return loadPlanCourses(planCode, planCourses, coursesHistory);
return loadPlanCourses(planCourses, coursesHistory);
});
};

let loadPlanCourses = function (planCode, planCourses, coursesHistory) {
let loadPlanCourses = function (planCourses, coursesHistory) {
let courseNamesByCode = planCourses.reduce(function (courseNamesByCode, course) {
courseNamesByCode[course.courseCode] = course.courseName;
return courseNamesByCode;
Expand All @@ -88,13 +88,10 @@ UtnBaHelper.PlanTrackingCustomPage = function ($container, services) {
let passedCourses = coursesHistory.finalExams.filter(course => course.isPassed).map(course => course.courseCode);
let signedCourses = [...new Set([...passedCourses, ...coursesHistory.courses.filter(course => course.isPassed).map(course => course.courseCode)])];
let courseRequirementToArray = {
// We will always use the last 4 chars, removing the first 2 that identify the specific plan.
// This is done in order to connect passed courses that are transitive from a previous plan.
// For example, a student passed 952021 (K95), which is 082021 (K08) in the new plan.
"SIGNED": signedCourses.map(courseCode => courseCode.substring(2)),
"PASSED": passedCourses.map(courseCode => courseCode.substring(2)),
"SIGNED": signedCourses,
"PASSED": passedCourses,
};
let hasCourse = (requirement, courseCode) => courseRequirementToArray[requirement].indexOf(courseCode.substring(2)) !== -1;
let hasCourse = (requirement, courseCode) => courseRequirementToArray[requirement].includes(courseCode);

let getCoursesHtml = level => {
let lastWasElective = false;
Expand Down
2 changes: 1 addition & 1 deletion manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"manifest_version": 3,
"name": "UTN.BA Helper (ex Siga Helper)",
"short_name": "UTN.BA Helper",
"version": "6.4.0",
"version": "6.4.1",
"description": "UTN.BA Helper facilita el uso de la web de la UTN - FRBA.",
"author": "Pablo Matías Gomez",
"icons": {
Expand Down

0 comments on commit 01a6d34

Please sign in to comment.