sillsdev / sillsdev/interlinearizer-extension

Analysis Catalog: multi-select and bulk actions

Open
#190 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
TypeScript
Stars
2
Forks
0
Avg merge
1d 17h
Merged PRs (30d)
55

Description

Checkboxes on Analysis Catalog rows (#186), then one action applied to the selection: delete these twelve, merge these five into that one, clear a gloss on all of them.

Blocked by #184 (Undo/Redo). Bulk is not technically hard — because catalog mutations are keyed by analysisId, a bulk action is a loop over ids, or better a single action taking ids[] so it is one transaction and one re-render. The blocker is safety: single-row delete without undo is a sharp edge you can reason about, while bulk delete without undo is forty mistakes at once, possibly with a partial failure halfway through, possibly on rows a filter is hiding.

Note this only works cleanly because mutations are analysis-keyed. Had they stayed token-keyed, a bulk action would have to expand each analysis into its N token refs, and every one of those calls would fork — producing N private copies, the exact opposite of the intent.

Use cases

  • Corrections that span rows. One mis-split word is already one row and one edit. But wrongly splitting a prefix such as un- across forty different words is forty rows, and no amount of shared-payload reuse collapses it — they are genuinely different analyses.
  • Cleanup. Filter to zero-usage rows, select all, delete.
  • Homograph consolidation. Merge several competing rows into one canonical analysis.

Design questions to settle

  • Partial failure. If row 17 of 40 throws, what state is the user in? Needs an answer that is not "hope", which is why undo comes first.
  • Selection versus filter. Select 40 rows, then change the filter — is the selection preserved? Does the action apply to rows the user can no longer see? This is a reliable bug factory; decide explicitly.
  • Blast radius display. A bulk delete needs to state total affected usages, not just row count. Twelve rows can be thousands of verses.

Related

user-questions.md parks a separate bulk-acceptance question ("Suggestion engine: bulk acceptance"). Both are "apply one decision to many things" and probably deserve one interaction model rather than two — worth designing together.

Blocked by: #184. Follow-up to #186.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with #184 (Undo/Redo) and #186 (catalog row checkboxes), then review the catalog mutation path keyed by analysisId. Before implementation, resolve the listed partial-failure, filter-selection, and blast-radius questions. Done means the catalog supports safe multi-selection and bulk actions with the behavior agreed for those cases.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.