Skip to content

feat(gradebook): weighted view with weights and exclusions#8436

Open
LWS49 wants to merge 1 commit into
lws49/feat-gradebook-exportfrom
lws49/feat-gradebook-weighted-view
Open

feat(gradebook): weighted view with weights and exclusions#8436
LWS49 wants to merge 1 commit into
lws49/feat-gradebook-exportfrom
lws49/feat-gradebook-weighted-view

Conversation

@LWS49

@LWS49 LWS49 commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds an opt-in weighted gradebook view on top of the base gradebook. Course staff enable it through a new Gradebook settings toggle, then configure per-tab weights in either equal mode (every included assessment counts equally toward the tab subtotal) or custom mode (explicit per-assessment weights that must sum to the tab total). Totals are additive: each tab subtotal is scaled by its weight and the gradebook Total is the literal sum of those subtotals. Staff can exclude individual assessments from totals . A per-student breakdown popover, a points/percentage display toggle, and a projected-total hint complete the view.

Design decisions

  • Weighted view is opt-in per course via a settings toggle - courses that don't want weighting see the existing gradebook unchanged.
  • Custom-mode weights are validated server-side to sum (at 2 decimal places) to the tab total, inside a transaction that rolls back on mismatch - prevents partially-saved weight sets that don't add up.
  • Exclusion flags are rewritten across the whole tab on every save (excluded ids to true, the rest to false) - avoids stale exclusions when modes change or assessments move.

Regression prevention

  • Backend specs: the tab weight-update pipeline (equal/custom modes, custom sum gate, exclusions, drop-lowest, unknown tab/assessment, transactional rollback), gradebook controller (index JSON plus update_weights authorization and error paths), gradebook ability, and the gradebook settings component.
  • Frontend tests: computeWeighted (equal/custom math, exclusions, drop-lowest), GradebookWeightedTable, the configure-weights prompt, weighted column tree, projected-total and weighted-view hints, the store, and the gradebook settings form.
  • Manual testing (confirmed by author): enabling and disabling the view, equal and custom weight configuration including the sum gate, per-assessment exclusion, points/percentage toggle, breakdown row expansion, and permission gating for read vs manage.
  • Backward compatible: new columns default to non-weighted behaviour (tab weight 0, equal mode, not excluded) and the weighted view stays hidden unless explicitly enabled, so existing gradebook behaviour is unchanged.

@LWS49 LWS49 changed the title Lws49/feat gradebook weighted view feat(gradebook): weighted view with weights, exclusions & drop-lowest Jun 12, 2026
@LWS49 LWS49 force-pushed the lws49/feat-gradebook-weighted-view branch from a8b79ab to 8d139e0 Compare June 12, 2026 03:53
@LWS49 LWS49 force-pushed the lws49/feat-gradebook-export branch 5 times, most recently from 42f0dfc to 1a7691c Compare June 12, 2026 06:04
@LWS49 LWS49 force-pushed the lws49/feat-gradebook-weighted-view branch from 8d139e0 to c1ea96f Compare June 12, 2026 06:09
@LWS49 LWS49 force-pushed the lws49/feat-gradebook-export branch from 1a7691c to 0c9f4e7 Compare June 12, 2026 06:13
@LWS49 LWS49 force-pushed the lws49/feat-gradebook-weighted-view branch 12 times, most recently from 90115ff to 422b4af Compare June 15, 2026 05:58
@LWS49 LWS49 force-pushed the lws49/feat-gradebook-export branch from 0c9f4e7 to c8af6a7 Compare June 15, 2026 05:59
@LWS49 LWS49 force-pushed the lws49/feat-gradebook-weighted-view branch from 422b4af to 44284da Compare June 15, 2026 06:02
@LWS49 LWS49 changed the title feat(gradebook): weighted view with weights, exclusions & drop-lowest feat(gradebook): weighted view with weights and exclusions Jun 15, 2026
@LWS49 LWS49 force-pushed the lws49/feat-gradebook-export branch 5 times, most recently from 3d7baf6 to f3cc59a Compare June 15, 2026 09:43
@LWS49 LWS49 force-pushed the lws49/feat-gradebook-weighted-view branch from 44284da to 2d24331 Compare June 15, 2026 09:51
@LWS49 LWS49 force-pushed the lws49/feat-gradebook-weighted-view branch 2 times, most recently from 4c71a02 to 1b32632 Compare June 16, 2026 05:49
Add weighted view built on top of gradebook:

- add tables course_gradebook_contributions and course_gradebook_assessment_contributions
- weighted table with equal/custom weight modes and per-assessment
  weight inputs, with a sum gate on custom weights
- points / percentage display toggle
- inline per-student assessment breakdown (row expand)
- projected-total hint
- gradebook_excluded column, serialization, and update-weights API echo
- per-assessment include/exclude in the configure-weights modal,
  seeding custom weights from included assessments only
- excluded assessments shown in the breakdown with no contribution
- add SegmentedSelect component for stylized selection that is not "on-off"
@LWS49 LWS49 force-pushed the lws49/feat-gradebook-weighted-view branch from 7d9fdb4 to ade1ddf Compare June 16, 2026 07:12
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