PDF annotation is a feature that allows graders to make custom marks over submitted PDF files during grading. Some of the work I did regarding PDF annotation consisted of:
- Updated the pdf-annotate.js package and fixed the issues related to creating custom marks.
- Improved the view/download functionality in the grading interface for annotated PFD files for security purposes.
- Created sample gradables that use PDF annotation functionalities inside the development environment for testing purposes.
- Removed numerous server-side errors.
- Resolved minor user-interface misalignment in the grading results interface.
When creating a new gradeable, instructor users need to specify the full path to the auto-grading configuration config.json file, where they can only set answers by giving a file and using the “expected_file” option. Therefore, I provided an alternative usage of “expected_string” so that instructor users can enter the solutions in a string format. In addition to the feature, I added samples and automatic testing cases. The implementation is based on Eddie Krystowski’s previous work.
Here are some smaller front-end oriented tasks I worked on this summer:
- Fixed the elements overlapping issue in mermaid sequence diagrams for network gradeables.
- Enhanced the simple-grading interface by removing ambiguities.
- Polished the bulk-submission interface.
In my work to add the expected string functionality, I noticed that the code responsible for creating the diff-view for the expected and actual solution locates mainly inside a custom class called DiffViewer. Since the code was written long ago and the implementation is rather lengthy, I believe it is best to refactor the functionality using CodeMirror entirely. Even though I am unlikely to finish the work this summer, I plan to continue working on the diff-view refactoring as I transition into the coming fall semester. In particular, future works are needed in the following general areas:
- Using CodeMirror’s merge addon for displaying the diffs.
- Preserving the “Visualize whitespace characters” functionality through CodeMirror.
- Designing the desired diff-view interface.
- Side by side versus stacked view.
- Handling of extra wide output.