Skip to content

feat(IdeasSummary): indeterminate idea selection state and UI/UX refinements - #2367

Open
breity wants to merge 3 commits into
developfrom
ideas-summary-indeterminate-selection-state
Open

breity wants to merge 3 commits into
developfrom
ideas-summary-indeterminate-selection-state

Conversation

@breity

@breity breity commented Oct 30, 2026

Copy link
Copy Markdown
Member

Summary

Improves the teacher presentation selection UX in IdeasSummary by showing an indeterminate checkbox state (with a tooltip) when an idea category is unselected but has selected student responses. Fixes a bug when the same response appears under multiple ideas. Refines layout/text across summary components.

Changes

  • Indeterminate Idea Checkbox & Tooltip:
    • Set the idea category <mat-checkbox> in IdeasSummaryComponent to indeterminate when the idea itself is not selected, but one or more of its student responses are selected.
    • Add a tooltip ("Some responses for this idea are selected") on indeterminate idea checkboxes.
  • Shared Response Selection Fix:
    • Update IdeasSelectionState (isIdeaResponseSelected, toggleIdea, and toggleIdeaResponse) so that unchecking an idea with selected responses keeps those responses scoped to that idea category rather than marking the same response as selected in other unselected idea rows.
  • UI/UX Layout & Copy Refinements:
    • Refine header alignment, responsive container layout, and instructional/tooltip copy in IdeasSummaryComponent, AiSummaryComponent, TeacherReflectionComponent, and TeacherPresentationButtonComponent.
  • Unit Tests:
    • Add unit tests in ideas-summary.component.spec.ts covering the indeterminate checkbox state, tooltip behavior, and shared student response selection across multiple ideas.
    • Update unit tests in ideas-selection-state.spec.ts verifying standalone response scoping across multiple idea categories.

Test

  1. Open the Classroom Monitor for a run with an Open Response or Dialog Guidance step that has CRater ideas detected (including at least one student response with multiple ideas detected) and select a specific period.
  2. In Student Ideas Detected, expand an idea row and check a student response:
    • Verify the parent idea checkbox still automatically becomes checked.
  3. Uncheck the parent idea checkbox while leaving the student response checked:
    • Verify the student response remains checked.
    • Verify the parent idea checkbox displays in an indeterminate (-) state.
    • Hover over the indeterminate idea checkbox and verify the tooltip "Some responses for this idea are selected" is shown.
    • Collapse the idea row and verify the indeterminate checkbox still clearly indicates that responses under that idea are selected.
  4. Expand another idea row that contains that same student response:
    • Verify the shared student response is not checked in the second idea row and the second idea's checkbox is unchecked (not indeterminate).
  5. Uncheck the selected student response in the first idea row:
    • Verify the first idea's checkbox returns to the normal unchecked state and no longer shows the tooltip on hover.
  6. Check the header layout and instructional/tooltip text in Student Ideas Detected, AI Summary, Teacher Reflections, and the Present button across narrow and wide viewports.

…ed response selection

- Set idea checkbox to an indeterminate state when the idea is unselected but one or more of its student responses are selected
- Fix IdeasSelectionState so unchecking an idea only preserves its selected responses under that idea category and does not select the same response in other idea rows
- Refine header layout and instructions in IdeasSummary, AiSummary, TeacherReflection, and TeacherPresentationButton
@breity breity self-assigned this Oct 30, 2026
@breity breity added the enhancement New feature of any size or improvement (UI, performance, security) label Oct 30, 2026
@qltysh

qltysh Bot commented Oct 30, 2026

Copy link
Copy Markdown

Qlty


Coverage Impact

Unable to calculate total coverage change because base branch coverage was not found.

Modified Files with Diff Coverage (2)

RatingFile% DiffUncovered Line #s
New file Coverage rating: A
...r-presentation-button/teacher-presentation-button.component.ts0.0%83
New file Coverage rating: A
...sets/wise5/teacher-presentation/state/ideas-selection-state.ts100.0%
Total96.3%
🤖 Increase coverage with AI coding...
In the `ideas-summary-indeterminate-selection-state` branch, add test coverage for this new code:

- `src/assets/wise5/teacher-presentation/teacher-presentation-button/teacher-presentation-button.component.ts` -- Line 83

🚦 See full report on Qlty Cloud »

🛟 Help
  • Diff Coverage: Coverage for added or modified lines of code (excludes deleted files). Learn more.

  • Total Coverage: Coverage for the whole repository, calculated as the sum of all File Coverage. Learn more.

  • File Coverage: Covered Lines divided by Covered Lines plus Missed Lines. (Excludes non-executable lines including blank lines and comments.)

    • Indirect Changes: Changes to File Coverage for files that were not modified in this PR. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature of any size or improvement (UI, performance, security)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant