Skip to content

Create the 'Grades' subpage #79

@Max-Harold

Description

@Max-Harold
  • Create the frontend components for the subpage
    • Create a component GradeSwitcher that switches between the grades of "Assignments" and "Students"
    • Create a component called ExpandPanel which is a panel that can expand or de-expand when you click on the top part of it. It should also have a prop called grade which, if it is set, it makes the title to the left of the panel and shows a grade on the right of the top of the panel
    • Create a component QuestionGradeDropdown that has the grade of a certain student, also allowing the professor to see the student's code and change the grade
    • Create a component AssignmentsGrades which has all the grades of all the questions
      • Create a component AssignmentGradePanel that has the grades of the questions of an assignment
      • Create a component QuestionGradePanel that has the grades of the students for a certain question
    • Create a component StudentGrades which shows the total grades of all the students
      • Create a component called StudentGradePanel which contains all the grades of a certain student
      • Create a component called StudentAssignmentGradePanel which contains a student's submissions/grades for a particular assignment
  • Make the database changes necessary for the subpage
    • Create a table question_grade_overrides that has grade overrides for individual questions. The table has a column question_id of type uuid, student_id of type uuid, is_manual_grade of type boolean, and new_grade of type integer
  • Create the backend API endpoints for the subpage
    • Create a GET API endpoint /api/classroom/{classroom_id}/grades that returns all the grades of a classroom in the format: {"assignments": [{"assignment_id": ...", "assignment_name": "...", "questions": [{"question_id": "...", "question_name": "...", "max_points": ..., "submissions": [{"submission_id": ..., "student_name": "...", "student_id": "...", "score": ..., "console_output": "", "manual_grade": ..., "is_manual_grade": ...}]}]}]}
    • Create a PATCH API endpoint /api/classroom/{classroom_id}/grades that manually updates students' grades. The request body is in the format {"updates: ": [{"manual_grade": true/false, "question_id": "...", "student_id": "...", "new_score": ...}]}
  • Integrate the backend with the frontend

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions