Skip to content

feat(gradebook): external assessment management panel and drag-and-drop reorder#8471

Open
LWS49 wants to merge 1 commit into
lws49/feat-ext-assessments-pr1-foundationfrom
lws49/feat-ext-assessments-pr2-manage-reorder
Open

feat(gradebook): external assessment management panel and drag-and-drop reorder#8471
LWS49 wants to merge 1 commit into
lws49/feat-ext-assessments-pr1-foundationfrom
lws49/feat-ext-assessments-pr2-manage-reorder

Conversation

@LWS49

@LWS49 LWS49 commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

Gives external assessments a proper management home. A single page-level "Manage external assessments" panel (above the tabs) lists every external (Name / Max / Weight / Actions) and hosts Add, Edit, and Delete; it replaces what would otherwise be scattered toolbar buttons and an in-column kebab menu. Externals can be reordered by drag-and-drop, persisted via a new position column and served in canonical order. Adding or editing an external with a non-zero weight while the equal-split default is showing freezes that split first, so setting one real weight does not collapse every other tab to zero.

Design decisions

  • Management lives in one panel gated on canManageWeights but not on weightedViewEnabled - recording a paper-exam grade is valid even with weighting off, so externals must stay manageable; the Weight column is read-only and shown only when the weighted view is on (weight editing stays in Configure Weights, to avoid two edit paths).
  • All rename/delete live in the panel rather than an in-table column kebab - this removes the add-without-delete and toolbar-add-vs-buried-delete asymmetries; the column header keeps only an "External" chip for identification.
  • Adding/editing an external with a non-zero weight while the table shows the equal-split default persists that visible split first (via the existing updateWeights endpoint and the materializedDefaultWeights helper) - otherwise setting one real weight would disengage the fallback and collapse every other tab to its stored 0. No-op when weights are already configured or the new weight is 0.

Regression prevention

Covers: the manage panel (list, add/edit/delete, empty state), the delete prompt (confirm / failure-toast / cancel paths), the edit prompt (rename, max, floor/cap toggles), drag-reorder dispatch and failure rollback, the default-weight materialization on add/edit, and the related gradebook operation thunks and store reducers. Adds the position migration (20260624, reversible); existing externals get sequential positions on migrate, so the change is backward compatible. External-assessments controller and model specs run on CI.


♻️ Recreated after #8463 was auto-closed as "merged" when the base branch was briefly force-pushed to a commit that contained this branch. Same head, base, and content; the base has been restored.

@LWS49 LWS49 force-pushed the lws49/feat-ext-assessments-pr1-foundation branch from cbf61fa to af0e2bd Compare July 2, 2026 12:15
@LWS49 LWS49 force-pushed the lws49/feat-ext-assessments-pr2-manage-reorder branch from cf994c1 to 5a7ff91 Compare July 2, 2026 12:15
@LWS49 LWS49 force-pushed the lws49/feat-ext-assessments-pr1-foundation branch from af0e2bd to b6b0aaf Compare July 2, 2026 14:42
@LWS49 LWS49 force-pushed the lws49/feat-ext-assessments-pr2-manage-reorder branch 2 times, most recently from 72fa402 to 232064d Compare July 2, 2026 14:46
@LWS49 LWS49 force-pushed the lws49/feat-ext-assessments-pr1-foundation branch from b6b0aaf to bd9256e Compare July 2, 2026 15:26
…ete, reorder, weight integration

Adds the management surface on top of the read-only foundation:

- Manage panel (launched from the gradebook + weighted toolbars) with add,
  edit, and delete prompts; drag-and-drop reordering of external columns.
- Weighted-view integration: external rows in Configure Weights (name + single
  weight, no mode/expand), and flat external grouping in the column picker.
- Store reducers + thunks for create/update/delete/reorder; API + types.
- Backend: create/update/destroy/reorder actions with jbuilders; a per-course
  `position` column (append-on-create, reorder! rewrites order); routes.
@LWS49 LWS49 force-pushed the lws49/feat-ext-assessments-pr2-manage-reorder branch from 232064d to 2796717 Compare July 2, 2026 15:27
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