Skip to content

feat(gradebook): bounded grade entry, out-of-range flags, and save confirmation#8464

Open
LWS49 wants to merge 1 commit into
lws49/feat-ext-assessments-pr2-manage-reorderfrom
lws49/feat-ext-assessments-pr3-validation
Open

feat(gradebook): bounded grade entry, out-of-range flags, and save confirmation#8464
LWS49 wants to merge 1 commit into
lws49/feat-ext-assessments-pr2-manage-reorderfrom
lws49/feat-ext-assessments-pr3-validation

Conversation

@LWS49

@LWS49 LWS49 commented Jun 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

Hardens external grade entry and surfaces out-of-range data. Grade and max entry are capped at the decimal(5,2) ceiling at the input layer; negative manual entry is allowed (floor-at-zero presumes penalty columns) while non-numeric input is rejected at entry instead of being silently discarded. Over-max and below-zero grades show an inline indicator whose tooltip copy is weighted-view-aware. A persistent below-the-tabs banner aggregates how many grades across how many externals are outside their range. A successful inline edit now confirms with a persistent toast that echoes the student, assessment, and old-to-new grade.

Design decisions

  • Inline max-marks editing was removed; max is editable only through the panel's Edit prompt - max is a column-definition value (the subheader), not per-student data, so it belongs in a deliberate dialog, and it is coupled to the "Cap at max" toggle which only the Edit prompt shows alongside it.
  • Out-of-range is surfaced at distinct layers with distinct jobs: per-cell icons (locate) and the aggregate banner (review-before-export), each scoped to a bound flag that is on, since nothing is clamped when a flag is off. The import flow adds an entry-time Verify warning in a later PR.
  • The save-confirmation toast is persistent (no auto-dismiss) and echoes the full mutation rather than a generic "Saved" - external grades flow to exported finals and the optimistic update has already discarded the old value from the cell, so the toast is the only in-session record of what changed and helps catch a row/column misclick. There is no undo button, which the toast wrapper does not support and the re-editable cell makes unnecessary.

Regression prevention

Covers: out-of-range computation, the OutOfRangeAlert component and the GradebookIndex summary, cap-at-two-decimals entry, below-zero and over-max icon presence/absence, weighted vs non-weighted tooltip copy, the read-only max cell, the active-cell accept/revert controls, and the save-confirmation toast (fires with student/assessment/old-to-new, does not fire on a no-op edit). No change to stored grades - all bound and warning behavior is read-time only. This PR is frontend-only.

@LWS49 LWS49 force-pushed the lws49/feat-ext-assessments-pr2-manage-reorder branch from 947f45d to e26ee62 Compare June 28, 2026 14:41
@LWS49 LWS49 force-pushed the lws49/feat-ext-assessments-pr3-validation branch from 38c0e8e to c75dd03 Compare June 28, 2026 14:42
…warnings

External grade cells gain decimal-bounded inline editing with explicit
accept/revert controls, a saving indicator, and a persistent save
confirmation that echoes the student, assessment, and old → new grade so a
row/column misclick is caught. Over-max and below-zero warning markers flag
out-of-bound values. The weighted view annotates contributions that an
active bound capped or floored. GradebookIndex surfaces an out-of-range
summary alert above the table, and threads weightedViewEnabled into
GradebookTable so the cell messaging matches the active view.
@LWS49 LWS49 force-pushed the lws49/feat-ext-assessments-pr2-manage-reorder branch from e26ee62 to dc5c67b Compare June 29, 2026 04:43
@LWS49 LWS49 force-pushed the lws49/feat-ext-assessments-pr3-validation branch from c75dd03 to 32c59d0 Compare June 29, 2026 04:43
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