Files
fn_registry/frontend/functions/ui/data_table.md
T
egutierrez 5f4f1f7508 docs: params/output semántico en 506 funciones para composabilidad
Añade campos params y output al frontmatter YAML de las 506 funciones del registry.
Cada parámetro tiene descripción semántica (qué representa, unidades, rango típico)
y cada función describe qué produce su output. Permite a agentes razonar sobre
cadenas de composición (ej: prices → log_return → sharpe_ratio) sin leer código.
2026-04-05 18:45:16 +02:00

3.1 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, output, tested, tests, test_file_path, file_path, props, emits, has_state, framework, variant
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports output tested tests test_file_path file_path props emits has_state framework variant
data_table component ts ui 1.0.0 impure DataTable(props: DataTableProps): JSX.Element Tabla de datos con sticky header, overflow scroll, heatmap por columna, formato condicional (number/datetime/currency) y hover rows. Auto-detecta columnas desde la primera fila si no se proveen.
table
data
heatmap
dashboard
component
ui
format
visualization
cn_ts_core
false
react
Componente DataTable que renderiza tabla con sticky header, heatmap condicional y formato automático de datos false
frontend/functions/ui/data_table.tsx
name type required description
data Record<string, unknown>[] true Filas de datos. Cada objeto es una fila.
name type required description
columns ColumnDef[] false Definición de columnas con key, label, format y align. Si se omite, se auto-detectan desde la primera fila.
name type required description
heatmapColumns string[] false Keys de columnas numéricas que deben colorearse por intensidad (azul oscuro=bajo, azul claro=alto).
name type required description
maxHeight number | string false Altura máxima antes de scroll. Default 500px.
name type required description
loading boolean false Estado de carga. Muestra spinner si data está vacía.
name type required description
error Error | null false Error a mostrar si la carga falló.
name type required description
className string false Clases CSS adicionales.
false react
default
heatmap

Ejemplo

// Tabla simple con auto-detección de columnas
<DataTable data={rows} />

// Con columnas definidas y heatmap
<DataTable
  data={metrics}
  columns={[
    { key: 'domain', label: 'Domain' },
    { key: 'count', label: 'Functions', format: ',' },
    { key: 'pure_pct', label: 'Pure %', format: '.1f' },
  ]}
  heatmapColumns={['count', 'pure_pct']}
/>

// Con formato moneda y fecha
<DataTable
  data={transactions}
  columns={[
    { key: 'date', label: 'Date', format: 'datetime' },
    { key: 'amount', label: 'Amount', format: '$,.2f', align: 'right' },
    { key: 'description', label: 'Description' },
  ]}
/>

Formatos soportados (campo format en ColumnDef)

format Ejemplo input Output
',' 1234567 1,234,567
',.2f' 1234.5 1,234.50
'$,.2f' 1234.5 $1,234.50
'.0f' 42.7 43
'datetime' '2026-04-01T12:00:00Z' 4/1/2026, 12:00:00 PM

Notas

Extraido y generalizado desde apps/rapid_dashboards/frontend/src/components/widgets/TableWidget.tsx. El heatmap usa useMemo para calcular min/max por columna solo cuando cambian data o heatmapColumns. La alineación de celdas numéricas es automática (derecha) cuando el valor es typeof 'number'; se puede sobreescribir con el campo align en ColumnDef.