feat(ui/filters): searchable filter dropdown + bulk selection + query responsiveness#862
Open
akira69 wants to merge 7 commits intoDonkie:masterfrom
Open
feat(ui/filters): searchable filter dropdown + bulk selection + query responsiveness#862akira69 wants to merge 7 commits intoDonkie:masterfrom
akira69 wants to merge 7 commits intoDonkie:masterfrom
Conversation
3691d11 to
870e01e
Compare
870e01e to
62ea1c8
Compare
This was referenced Feb 24, 2026
62ea1c8 to
3d5c031
Compare
3d5c031 to
6401376
Compare
9 tasks
…tterns - Wrapped selectAllFiltered and selectNoneFiltered in useCallback to prevent unnecessary Button re-renders - Created useSimpleSortedArrayQuery factory function to eliminate duplicate fetch-and-sort patterns - Consolidated 5 repeated fetch hooks (Materials, ArticleNumbers, LotNumbers, Locations) into factory calls - Improved error messages to include endpoint names for better debugging - All code quality checks pass: ESLint ✓, Prettier ✓
11 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR makes the filament and spool list filters easier to use on larger datasets:
Select All,Select None, andClearfor the visible filter optionsReview cleanup also carried forward the PR861 malformed-saved-state hardening into
useSavedState, and removed split contamination that did not belong in this PR (spoolman/import_externaldb.pyand a strayspool_countlocale entry).What Changed
/filament-nameso the UI can populate filament-name filters without fetching full filament rows.useSavedStateparsing so malformed persisted state falls back to defaults and self-heals on reload.Database Impact
b76f1b4c3f5a(filament/vendor search indexes)f1a3d9c2c4e1(spool search indexes)Testing Performed
cd client && ./node_modules/.bin/eslint src/components/column.tsx src/components/otherModels.tsx src/utils/filtering.ts src/utils/saveload.tscd client && ./node_modules/.bin/prettier --check src/components/column.tsx src/components/otherModels.tsx src/utils/filtering.ts src/utils/saveload.ts public/locales/en/common.jsonuv run ruff check spoolman/api/v1/filament.py spoolman/api/v1/other.py spoolman/api/v1/spool.py spoolman/database/filament.py spoolman/database/spool.py spoolman/database/utils.py migrations/versions/2026_02_11_1700-b76f1b4c3f5a_filament_search_indexes.py migrations/versions/2026_02_11_1710-f1a3d9c2c4e1_spool_search_indexes.pycd client && npm ci && VITE_APIURL=/api/v1 npm run buildcd /Users/dfinch/Code/Spoolman_Labels/worktrees/pr862 && PATH=.venv/bin:$PATH SPOOLMAN_DIR_DATA=/tmp/spoolman_pr_862_data uv run uvicorn spoolman.main:app --host 0.0.0.0 --port 9862http://localhost:9862Select Allfilters the table to the visible searched optionSelect Noneremoves the searched selection and restores the full row setSelect AllClearSelect AllsavedStates-spoolList-showArchivedlocalStorage and verified the spool page still loaded and the saved state healed back tofalseb76f1b4c3f5af1a3d9c2c4e1Test Checklist
Select Allchecks all currently visible options and filters the filament list accordinglySelect Noneunchecks the currently visible searched option and restores the full filament row setClearremoves the selected material filter values and restores the full filament row setsavedStates-spoolList-showArchivedstate recovers without blanking the pageVITE_APIURL=/api/v1