Files
graph_explorer/issues/completed/0008-inspector-editable.md
T
2026-05-01 00:13:19 +02:00

2.3 KiB

id, title, status, priority, created, completed, depends_on
id title status priority created completed depends_on
0008 Inspector editable — campos del schema + tags + extras completed high 2026-04-30 2026-05-01
0005

Objetivo

Refactor del Inspector (views_inspector) de read-only a editable. El usuario edita los datos de un nodo y al pulsar Save se persisten en operations.db con un solo UPDATE.

Bloques del nuevo Inspector

  1. Identidad

    • name (InputText), type_ref (combo con tipos del proyecto), description (InputTextMultiline corto), status (combo: active/stale/corrupted/archived).
  2. Fields del tipo (driven by 0005)

    • Render automatico segun EntitySpec.fields:
      • string → InputText.
      • int → InputInt.
      • float → InputDouble.
      • bool → Checkbox.
      • date → InputText con placeholder YYYY-MM-DD + validacion.
      • url → InputText + boton "Open" que lanza el navegador.
      • enum → Combo con values.
    • Lee/escribe a entities.metadata (JSON). Campos requeridos marcados con *.
  3. Extras (campos fuera del schema del tipo)

    • Lista key-value, "+" para anadir. Tipo siempre string en v1.
    • Permite que el usuario meta info ad-hoc sin tocar el schema.
  4. Tags

    • Chips con boton X para quitar. Input al final con autocomplete (lista de tags ya existentes en la BD via SELECT DISTINCT json_each.value FROM entities, json_each(entities.tags)).
    • Enter o coma valida el chip.
  5. Notes — sigue en su panel actual, pero anadir un boton "Open notes" en el Inspector que enfoca el panel Note.

Cambios en codigo

  • entity_ops.{h,cpp}:
    • bool entity_update(db_path, id, name, type_ref, description, status, tags_json, metadata_json) — un solo UPDATE.
    • bool entity_list_distinct_tags(db_path, vector<string>* out) para autocomplete.
  • views.cpp::views_inspector: reemplazo completo. Estado de edicion en AppState para que cerrar y reabrir conserve el draft hasta Save.
  • Save → reload del grafo (mismo flujo que toolbar add-node hoy).

Definicion de hecho

  • Editar name, type_ref, description, status, tags, fields tipados y extras.
  • Save persiste y el viewport refleja los cambios (label, color del tipo, etc.).
  • Cancelar / cambiar de seleccion sin guardar muestra un confirm dialog.
  • Tags se autocompletan con las existentes en la BD.