Files
graph_explorer/issues/0035d-tableview-drill-in.md
T

58 lines
2.0 KiB
Markdown

---
id: 0035d
title: Doble click en Group abre tableview filtrado por group_id
status: done
priority: high
created: 2026-05-03
parent: 0035
depends_on: [0035a, 0035b, 0035c]
---
## Objetivo
Que el usuario pueda inspeccionar lo que hay dentro de un grupo. Doble
click sobre un nodo `Group` no abre la nota como un nodo normal, sino
una vista de tabla con sus hijos, busqueda y filtros.
## Cambios
1. **Discriminacion en `on_double_click_cb`**: al recibir el doble
click sobre un node_idx, leer su `type_ref`. Si es `Group`, en
lugar de poblar `note_node` y abrir el panel Note, setear los
triggers para abrir tableview filtrada por `group_id == <ese
group_id>`.
2. **Modo "filter by group" en tableview**: el panel ya tiene tabs
por type_ref y filtros por columna. Anadir un modo (flag en
AppState `table_filter_group_id: string`) que cuando esta seteado
limita las filas a `WHERE group_id = ?`.
3. **Header con breadcrumb minimo**: al abrir tableview por grupo,
mostrar arriba `Group: <name>` con el contador y un boton "Clear
group filter" que vuelve al modo libre.
4. **Persistencia (RAM only)**: el filtro se mantiene mientras el
panel esta abierto; al cerrar el panel se limpia. No persistir
en la BD del app.
## Acceptance criteria
- Doble click en un nodo `Url` o `Person` etc.: abre Note como
siempre (no cambio).
- Doble click en un nodo `Group`: NO abre Note. Abre Table con todos
los hijos cuyo `group_id` apunta al grupo. La cabecera dice
"Group: <name> (N)".
- Clear group filter: vuelve al tableview general.
- Busqueda y tabs por tipo dentro del filtro siguen funcionando — el
filtro por group_id se compone con los demas.
- Tests pytest verdes (no requieren tests especificos de UI; basta
con que los tests existentes no rompan).
## TBD
Branch `issue/0035d-tableview-drill-in`, merge `--no-ff` con tests
verdes.
## Out of scope
- Promote (sacar nodo del grupo): fase 2.
- Re-agrupar por tipo desde tableview: fase 2.
- Layouts internos del grupo expandido en canvas: fase 3.