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 "Questions," "Assignments," and "Students"
    • Create a component QuestionsGrades which has all the grades of all the questions
      • Create a component AssignmentQuestionGradePanel 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 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 AssignmentGrades which has all the grades of all the assignments
      • Create a component AssignmentGradePanel which has the grades of the students for an assignment
      • Create a component StudentGradeItem which shows the grade of a student
    • Create a component StudentGrades which shows the total grades of all the students
  • 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": "...", "student_scores": [{"first_name": "...", "user_id": "...", "last_name": "...", "score": ..., "max_score": ...}]}]}]}
    • 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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions