Skip to content

Batch-edit rating / tunes / customFields in Collection multi-select (follow-up to #409) #423

Description

@ibanner56

Summary

Follow-up to #409. Batch set/clear level landed in multi-select via PR #422. This issue tracks extending the Collection multi-select "batch edit" affordance to the remaining per-dance metadata that make sense to bulk-edit.

Background

#409 originally read as "bulk-add tags," but batch tag add/remove already shipped in #93, and the genuinely new ask ("add metadata like level in multi-select") was scoped down to level for one atomic, reviewable PR (#422). The remaining metadata fields were deliberately deferred here.

Scope

Add batch edit for the following, each as its own atomic PR where practical, reusing the setLevelForMany transactional pattern (one transaction, idempotent skip, changed-count, Undo, AT announcements, empty no-op):

  • rating — batch set/clear (Dance.rating, clearRating).
  • tunes — semantics TBD: additive union (like tags) vs replace. Needs a product decision before implementation.
  • customFields — set/clear a chosen key across the selection; needs UI for choosing which field + value. Larger; may warrant its own design note.

Guardrails (carry over from #409)

  • core stays Flutter-free; new batch mutations go through a single transaction in DanceRepository (no half-updates).
  • Idempotent (skip dances already at target), return changed count, Undo restores prior per-dance values, AT announcements, empty-selection no-op/disabled.
  • a11y: pickers expose role + text label (never color alone), mirroring batch_level_dialog.dart.

Out of scope

Anything already shipped (tag add/remove #93, level #422).

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: collectionThe dance collection / librarypriority: lowLow priority; nice to havestatus: confirmedReproduced and accepted as validtype: enhancementA new feature or an improvement to existing behavior

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions