-
Notifications
You must be signed in to change notification settings - Fork 172
Grading Features
The project is a combination of multiple features, distributed across the client (cadet-frontend), server (cadet) and autograder (grader) repositories.
The improvements are:
- Editor template reset button (client)
- Integration of new XML format and autograder improvements (client and server)
- Refactoring of autograder (server and grader)
- Client-side public test case support (client)
- Grading overview overhaul (client and server)
- Server-side pagination (client and server)
Scroll below to view the documentation for the changes made to the client.
Rationale: Enable students to quickly restore the editor state to the template code in assessments.
- Added a template reset button in the assessment workspace (excluding the grading workspace and playground) to allow users to reset the
editorValue
to the assessment template
- Add tests for reset button in assessment workspace
Rationale: Update frontend to support the updated XML format for creation and deployment of assessments - the updated specifications are available here.
- Client: PR 527 (bundled with client-side test cases)
- Server: Backend integration of new XML format
- Added
editorPrepend
,editorPostpend
,editorTestcases
attributes toStateProps
of assessment and grading workspaces - Added new
ITestcase
interface to represent testcases
- Integrate new workspace properties with Mission Control feature to allow editing of prepend, postpend code fragments and testcases during XML creation
- Add tests for mission questions with varying combinations of prepend, postpend and testcases
Please proceed to the grader repository reference.
Rationale: Where intended by mission authors, expose public test cases to expedite students' basic testing of their programs - not an intended replacement for self-design of test cases, instead serving as a convenience feature by collating test cases previously in mission briefings.
- Client: PR 527 (bundled with XML changes)
- Added a new Test case tab that parses and displays data stored in the
editorTestcases
attribute of the assessment and grading workspaces- Displays test case (function call), expected output and actual output (if ran)
- Add new
EVAL_TESTCASE
action to allow each test case to be run individually - Updated
workspaceSaga
to handleEVAL_TESTCASE
actions and added newevalTestCode
saga
- Add additional button to run all test cases concurrently
- Standardise and clean up UI elements
- Automatically compare expected
- Add tests for test cases from different mission varieties
Rationale: Improve the UX for graders by cleaning up the UI of the grading overview page and providing more more granular information on each submission.
- Client: PR 530 (resolves issue #351)
- Server: Backend grading overview overhaul
- Added check to disable grading status display for non-graded assessments (i.e. paths)
- Corrected ag-grid CSS stylesheet import and amended CSS to fix styling inconsistencies and persistent scrollbar bug
- Collated all control buttons above the datagrid
- Amended handling of
FETCH_GRADING_OVERVIEWS
actions inbackendSaga
- Added
gradingStatus
,questionCount
andgradedCount
attributes toGradingOverview
type - Added grading status display for submissions with on-hover grading progress tooltip
- Enabled sorting and filtering by grading status and group
- Updated mocks
- Add additional tests for grading overview page
Rationale: Implement server-side pagination for the /grading
endpoint (retrieval of submissions) to reduce amount of data transmitted between client and server.
- Client: PR 531
- Server: Backend server-side pagination
- Disabled ag-grid's native pagination and added custom pagination controls
- Added button to select pagination page size (#submisions to retrieve)
- Amended
/grading
endpoint (async functiongetGradingOverviews
) from using a HTTPGET
toPOST
request- Pagination details, search, filter and sort details are all contained in the transmitted
JSON
body
- Pagination details, search, filter and sort details are all contained in the transmitted
- Replicated search functionality server-side
- Replaced quick filter searchbar with tag-based searching by name, assessment, category and group
- Replicated sorting functionality server-side
- Replicated column filter functionality server-side
- Text-based column filters disabled
- Number-based column filters enabled for XP and grade columns
- Fix UI issue with
outline
CSS with:focus
pseudo-selector of the page size dropdown - Update mocks and add tests for
POST
request
- Backend PR 1059: Include assessment with answers in submission
- This pull request was done to enable viewable assessment briefings, done by the Grading UI/UX team under Frontend PR 2783: Grading: Viewable Assessment Briefings
Previously, due to changes under ..., pagination was done by the client. All submissions had to be loaded first before the frontend table shows 10 entries at a time - a waste of time later into the course as the submissions table increased to several hundred thousand entries.
This feature thus shifts work of filtering from the frontend to the backend.
Implementation features and decisions:
- Frontend PR 2787: Transfer pagination work from frontend to backend
- Backend PR 1065: Migrate filtering to the Backend
- Frontend PR 2856: Implement isGradingPublished (plus related features)
- Backend PR 965: Add Publish Grading Feature
- Features were made in older libraries (tanstack + tremor), but were migrated to aggrid + blueprint by the Grading UI/UX team under Frontend PR 2893: Grading Overview: TS/Tremor -> AG/Blueprint Migration
- https://github.com/source-academy/backend/pull/1088
- https://github.com/source-academy/backend/pull/1072
- https://github.com/source-academy/backend/pull/1070 (blocked)
- https://github.com/source-academy/frontend/pull/2825