feat: APAS Explorer with GPA Integration - #153
Conversation
…and completed courses
|
@xander-hill is attempting to deploy a commit to the umn social coding Team on Vercel. A member of the Team first needs to authorize it. |
samyok
left a comment
There was a problem hiding this comment.
please use yarn instead of npm! don't make your PR diff larger than it should be.
samyok
left a comment
There was a problem hiding this comment.
Added a few concrete review notes beyond the existing yarn/npm lockfile concern. Main blockers I see are the undefined sidebar call and the APAS iframe access path.
| // determine which page we're on and load the appropriate data. | ||
| if (courseList) loadCourses(courseList); | ||
| if (courseList) { | ||
| injectSortTool(); |
There was a problem hiding this comment.
This is a runtime blocker: injectSortTool is not defined anywhere in the extension, so Schedule Builder search pages with inline graphs enabled will throw a ReferenceError here before loadCourses(courseList) runs. Either include the implementation/import in this PR or remove this call.
| //actual APAS html parsing logic | ||
| run: async () => { | ||
| const iframe = document.getElementById('auditReports'); | ||
| const doc = iframe ? (iframe.contentDocument || iframe.contentWindow.document) : document; |
There was a problem hiding this comment.
This access path is brittle for APAS reports loaded in an iframe. The manifest sets all_frames: true, but init() returns immediately inside frames, so the only parser that runs is the top-frame parser. If #auditReports is cross-origin, reading contentDocument/contentWindow.document throws and the sync button stays disabled because the click handler has no try/finally. Parse inside the frame that owns the report DOM, or catch this and surface a failure state.
| @@ -0,0 +1,42 @@ | |||
| { | |||
There was a problem hiding this comment.
This generated node_modules lockfile should not be committed. It also indicates npm was run locally; please remove the npm lockfiles/artifacts and keep dependency changes represented through the existing Yarn workflow only.
Overview
This PR introduces the APAS Explorer feature, allowing students to sync their unmet degree requirements directly from their APAS report into Gopher Grades. It provides a bridge between raw audit data and Schedule Builder, complete with integrated GPA data for required courses.
Key Features
Testing Performed
Demo