2.1 KiB
id, title, status, priority, created, parent, depends_on
| id | title | status | priority | created | parent | depends_on | |
|---|---|---|---|---|---|---|---|
| 0036e | Row click en NodeGroups enfoca la entidad en el viewport (kind-aware) | done | medium | 2026-05-04 | 0036 |
|
Objetivo
Click sobre una fila en la NodeGroups window centra/selecciona la entidad correspondiente en el viewport. Comportamiento ramificado por kind:
- kind = Group: la fila ES una entidad. Click -> pan/zoom de la camara hacia su posicion + select.
- kind = Table (DuckDB): la fila NO es entidad necesariamente.
Resolucion opcion (c):
- Si ya existe una entidad promovida para ese row_id: click = focus.
- Si no: click = no-op visual + texto disabled abajo del row tipo "promote first to focus" como hint sutil. Sin auto-promote.
Cambios
Estado para focus
AppState::want_focus_entity = true; AppState::focus_entity_id = id;
Render loop consume el flag, recentra la camara al nodo, marca
viewport.selected_node_idx = ... y limpia el flag.
(Probablemente ya existe esta infra desde issue 0011 promote+open
inspector — reusar app.want_focus_entity / app.focus_entity_id.)
Lookup de entidad para fila DuckDB
Para kind=Table, dado un row_id, comprobar si existe entity con
SELECT id FROM entities WHERE source = '<table_id>' AND metadata LIKE '%"row_id": "<row_id>"%' LIMIT 1 (o el query exacto
usado en 0011 para detectar promovidas).
Cache simple: por window, mantener un unordered_set<string> promoted_row_ids que se rellena en cada paginacion. Asi el render
sabe sin query extra que filas tienen entidad lista para focus.
Render
Hacer la fila completa clickable (Selectable o boton invisible sobre la fila). Hover indica accion clara.
Acceptance criteria
- Click en row de Group: el viewport recentra al nodo y lo selecciona.
- Click en row Table promovida: focus como kind=Group.
- Click en row Table no promovida: no-op + hint visible.
- Tests:
test_node_groups_row_click_sets_focus_entity_for_grouptest_node_groups_row_click_noop_for_unpromoted_table_row
TBD
Branch issue/0036e-row-click-focus, merge --no-ff a master.
Out of scope
- Multi-select (fase 2).
- Hover preview (fase 2).