Skip to content

feat(gradebook): By-weight view with Configure Weights dialog#8413

Draft
LWS49 wants to merge 12 commits into
lws49/feat-gradebook-weights-pr2-apifrom
lws49/feat-gradebook-weights-pr3-frontend
Draft

feat(gradebook): By-weight view with Configure Weights dialog#8413
LWS49 wants to merge 12 commits into
lws49/feat-gradebook-weights-pr2-apifrom
lws49/feat-gradebook-weights-pr3-frontend

Conversation

@LWS49
Copy link
Copy Markdown
Collaborator

@LWS49 LWS49 commented May 28, 2026

Summary

  • Adds "By weight" gradebook view: per-tab subtotal columns + weighted Total column, behind a [All assessments | By weight] toolbar toggle (rendered only when the course-level setting from PR 1 is enabled)
  • 3-row sticky header: categories → tab titles → "X% of grade" weight subheaders
  • Configure Weights dialog for managers: per-tab integer input, live sum, warning when sum ≠ 100 (save allowed)
  • "Treat Ungraded as 0" toolbar toggle — client-side, recalculates subtotals and total live
  • Total subheader shows warning icon when tab weights don't sum to 100
  • Empty-state banner when all tab weights are 0

Architecture

  • Pure compute helpers (computeWeighted.ts) — computeTabSubtotal, computeStudentTotal, sumWeights
  • Redux store extended: weightedViewEnabled, canManageWeights, gradebookWeight per tab; updateTabWeights action
  • GradebookWeightedTable — self-contained table with custom 3-row thead; no column picker (all subtotals always visible)
  • ConfigureWeightsDialog — dispatches updateGradebookWeights thunk → PATCH /gradebook/weights
  • GradebookIndex — reads weightedViewEnabled selector; conditionally renders ToggleButtonGroup + swaps table component

@LWS49 LWS49 marked this pull request as draft May 29, 2026 08:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant