databrickslabs / databrickslabs/ontos
[Feature]: Faceted Filter Sidebar
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 212
- Forks
- 71
- Avg merge
- 4d 10h
- Merged PRs (30d)
- 43
Description
Parent PRD
#95
What to build
Add a filter sidebar to the Index Search page that lets users narrow results by Type, Status, Domain, and Owner without typing structured queries.
Frontend — New SearchFilterSidebar component:
- Rendered alongside
IndexSearch(left sidebar or collapsible panel). - Checkbox groups for: Type (data-product, data-contract, asset-*, data-domain, etc.), Status (active, draft, deprecated, etc.), Domain (flat list initially — hierarchical in a later slice), Owner (top owners from facets).
- Each group shows item counts from the
facetsfield in the API response. - "My Items" toggle at the top: pre-filters by
owner == current_user.email. - Filter changes update URL query params (
?type=...&status=...&owner=...) and trigger a new search. - "Clear all filters" button.
- Responsive: on mobile, filters collapse into a sheet/dropdown triggered by a filter icon button.
Frontend — IndexSearch layout update:
- Two-column layout: sidebar (filters) + main area (search input + results).
- Filters are read from URL query params on page load (deep-linkable).
Backend:
- No new backend work required — filters are passed as query params to the API (added in #96). Client applies filters from URL params to the API call.
Acceptance criteria
-
SearchFilterSidebarcomponent renders checkbox groups for Type, Status, Domain, Owner - Facet counts displayed next to each filter option
- Selecting/deselecting a filter updates URL and triggers new search
- "My Items" toggle filters by current user's email/username
- "Clear all filters" resets all selections
- Filters persist in URL (page refresh preserves filter state)
- Responsive: collapses on mobile with filter icon trigger
- Component test for
SearchFilterSidebar(filter changes emit correct params) - Empty facet groups are hidden (e.g., if no "Owner" data, hide that group)
Blocked by
- Blocked by #96 (needs facets in API response)
User stories addressed
- User story 1 (filter by asset type)
- User story 2 (filter by domain)
- User story 4 (filter by status)
- User story 5 ("My Items" quick filter)
- User story 6 (filter by owner)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the existing IndexSearch entry point and inspect how the API response from #96 exposes facets and how query parameters are passed. Define the SearchFilterSidebar around the listed filter groups, URL persistence, responsive behavior, and the requested component test. Done means all acceptance criteria pass, including facet counts, empty-group hiding, My Items, clear-all, and deep-linked filters.
Written by the indexing model from the issue text.
Assessment
- Domain
- frontend, search
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100