This PR introduces the custom bubble sheet feature generation (limit of 252 questions and of 5 options) and updates the overall OMR processing logic accordingly:
Custom Bubble Sheet with Single Page:
Implemented logic to handle custom bubble sheets that contain a single page for exams with 100 or fewer questions.
Modified ReviewExams to pass numQuestions and examType to studentScores. If numQuestions <= 100 and examType is custom, the preprocessingCSV step is skipped, and results are fetched directly from Results.csv instead of combined.csv.
Backend Adjustments:
Updated the backend logic in studentScores, UploadExam, saveExamKey, copyTemplate, and GenerateEvaluation to check if the exam has 100 or fewer questions. If so, it processes only the Results.csv.
Added functionality to the backend to handle the creation of custom JSON templates for bubble sheets, including generating templates for exams that span one or two pages based on the number of questions.
Frontend Adjustments:
Updated ConfirmExamKey.js to disable changing the number of questions and options after initial setup.
Ensured that the courseId is correctly passed to the backend and fixed the form submission in saveExamKey.
Integration of Custom Bubble Sheet into Exam Creation Pipeline:
Fully integrated custom bubble sheet generation and downloading into the New Exam creation pipeline, including logic to parse and apply custom templates in the exam processing workflow.
Closes #17
Type of change
[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[x] This change requires a documentation update
How Has This Been Tested?
The changes have been tested locally, ensuring that custom bubble sheets are correctly generated and processed.
The OMR processing logic has been verified to work with both single-page and two-page custom templates.
Backend API adjustments have been tested to ensure the correct handling of custom templates and exam processing.
Checklist:
[x] I have performed a self-review of my own code
[x] I have commented my code where needed
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[x] Any dependent changes have been merged and published in downstream modules
[x] Any UI changes have been checked to work on desktop, tablet, and mobile
Description
This PR introduces the custom bubble sheet feature generation (limit of 252 questions and of 5 options) and updates the overall OMR processing logic accordingly:
Custom Bubble Sheet with Single Page:
ReviewExams
to passnumQuestions
andexamType
tostudentScores
. IfnumQuestions <= 100
andexamType
is custom, thepreprocessingCSV
step is skipped, and results are fetched directly fromResults.csv
instead ofcombined.csv
.Backend Adjustments:
studentScores
,UploadExam
,saveExamKey
,copyTemplate
, andGenerateEvaluation
to check if the exam has 100 or fewer questions. If so, it processes only theResults.csv
.Frontend Adjustments:
ConfirmExamKey.js
to disable changing the number of questions and options after initial setup.courseId
is correctly passed to the backend and fixed the form submission insaveExamKey
.Integration of Custom Bubble Sheet into Exam Creation Pipeline:
Closes #17
Type of change
How Has This Been Tested?
Checklist: