feat(filter): tag chips + FTS5 search en toolbar (issue 0009)
- entity_ops: entity_search_fts (bm25, prefix tokens) + entity_list_by_tags (AND). - AppState: filter_query_buf, filter_tags, filter_mode (highlight/hide), hits cache. - views_filter_apply: combina tipos visibles + match-set (FTS query AND tags), highlight = color_override con alpha=0x40, hide = clear NF_VISIBLE. - toolbar: input search + dropdown (max 20, click centra y selecciona), chips de tags con boton X, input para anadir tag, combo Highlight/Hide, Clear filter. - Inspector: right-click sobre tag chip lo anade al filtro. - main.cpp: reapply en cada frame si filter_dirty; cam_x/y al focus_target.
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
---
|
||||
id: 0009
|
||||
title: Filtro por tag + busqueda FTS5 en toolbar
|
||||
status: completed
|
||||
priority: medium
|
||||
created: 2026-04-30
|
||||
completed: 2026-05-01
|
||||
depends_on: [0008]
|
||||
---
|
||||
|
||||
## Objetivo
|
||||
|
||||
Buscar y filtrar entidades por nombre/tag/description directamente desde la
|
||||
toolbar, aprovechando el `entities_fts` que ya existe en `operations.db`.
|
||||
|
||||
## UI
|
||||
|
||||
- Toolbar: input de busqueda + chip-list de tags activas como filtro.
|
||||
- Mientras se escribe, dropdown con resultados (max 20). Click en resultado selecciona/centra el nodo.
|
||||
- Click en un tag (en Inspector o en el dropdown) lo anade como chip de filtro.
|
||||
- Modos de filtro:
|
||||
- **Highlight**: nodos no-coincidentes se atenuan (alpha bajado), pero siguen presentes.
|
||||
- **Hide**: nodos no-coincidentes se ocultan del viewport.
|
||||
- Toggle en la toolbar.
|
||||
|
||||
## Cambios en codigo
|
||||
|
||||
- Nueva fn `entity_search_fts(db_path, query, limit, vector<EntityHit>* out)` con resultados ordenados por rank.
|
||||
- Filtro vive en `AppState`: vector de tags + query string + modo (highlight/hide).
|
||||
- En `graph_viewport.cpp` o donde aplique: aplicar mascara de visibilidad/alpha segun el filtro activo (sin tocar la BD).
|
||||
- Reset filter desde la toolbar.
|
||||
|
||||
## Definicion de hecho
|
||||
|
||||
- FTS sobre name/description/tags/domain funciona y los resultados centran el viewport.
|
||||
- Multiples chips de tag combinan con AND.
|
||||
- Modo highlight y modo hide funcionan sin recargar el grafo.
|
||||
- Limpiar filtro restaura visibilidad completa.
|
||||
Reference in New Issue
Block a user