Package 'ansgisui'

Title: Componentes de Interfaz ANSGIS (Calcite) desde R
Description: Genera la interfaz de una aplicacion geoespacial con el look del Calcite Design System de Esri desde R puro, emitiendo custom elements (<calcite-shell>, <calcite-panel>, <calcite-action-bar>, ...) con htmltools. No incluye ni modifica codigo de Esri: solo emite los nombres de los custom elements y declara la dependencia de assets, que puede resolverse contra un servidor propio (soberano) o contra un CDN. Corre en R nativo y en webR (WebAssembly), por lo que el documento puede generarse enteramente en el navegador, sin servidor. Desde 0.2.0 incluye los ELEMENTOS de un tablero especificados por la documentacion de ArcGIS Dashboards (indicador, medidor, graficos, tabla, lista, detalles, mapa y selectores), el motor de consulta que los alimenta (contrato where + groupByFields + statisticDefinitions, resuelto por R en el navegador) y ansgis_fusionar_tablero(), que autorea el tablero como un documento de R Markdown con la sintaxis de flexdashboard pero fusionado con knitr, porque rmarkdown::render() exige pandoc y pandoc no corre en wasm.
Authors: Emir Rivas [aut, cre]
Maintainer: Emir Rivas <[email protected]>
License: MIT + file LICENSE
Version: 0.2.1
Built: 2026-08-17 21:09:17 UTC
Source: https://github.com/emri-setup/ansgisui

Help Index


Construye el dataset (query a la Esri) desde los atributos del encabezado

Description

Construye el dataset (query a la Esri) desde los atributos del encabezado

Usage

.dataset_de(e, capa)

Construye los 'events' (LA MATRIZ) desde los atributos del encabezado

Description

'data-actions="filter,zoom,pan,flash,popup"' y 'data-filter-field="barrio"'. El destino de 'filter' es, por defecto, TODOS los demas elementos con dataset —que es el alcance por defecto que fija el pliego— salvo los de 'data-except'.

Usage

.eventos_de(e, id, todos_ids, mapa_id)

Emite el HTML del elemento segun su clase

Description

Emite el HTML del elemento segun su clase

Usage

.render_elemento(e, id, piezas)

Una accion con icono (calcite-action)

Description

Una accion con icono (calcite-action)

Usage

ansgis_action(texto, icono, activa = FALSE, mostrar_texto = TRUE, id = NULL)

Arguments

texto

etiqueta.

icono

nombre de icono Calcite (ej. "layers", "legend", "search").

activa

marca la accion como activa.

mostrar_texto

muestra la etiqueta junto al icono.

id

id del elemento (para engancharle JS).


Barra de acciones lateral (calcite-action-bar)

Description

Barra de acciones lateral (calcite-action-bar)

Usage

ansgis_action_bar(..., posicion = "action-bar", expandible = TRUE)

Arguments

...

acciones ('ansgis_action()') o grupos.

posicion

"start" o "end" (slot dentro del shell-panel).

expandible

si FALSE, oculta el boton de expandir.


Bloque colapsable dentro de un panel (calcite-block)

Description

Bloque colapsable dentro de un panel (calcite-block)

Usage

ansgis_block(
  ...,
  titulo = NULL,
  descripcion = NULL,
  icono = NULL,
  abierto = TRUE
)

Arguments

...

contenido.

titulo, descripcion

textos.

icono

icono Calcite.

abierto

si TRUE arranca expandido.


NIVEL 3 — ata un control a un calculo hecho en R, en vivo

Description

NIVEL 3 — ata un control a un calculo hecho en R, en vivo

Usage

ansgis_calculo_vivo(
  control_id,
  salida_id,
  codigo,
  evento = "calciteSliderChange",
  mapa_id = NULL
)

Arguments

control_id

id del '<calcite-slider>' (u otro control con 'value').

salida_id

id del elemento donde se escribe el resultado.

codigo

plantilla de codigo R; 'v' se reemplaza por el valor del control. Debe devolver un valor imprimible o un vector de indices.

evento

evento del control a escuchar.

mapa_id

si se pasa, los indices devueltos por R resaltan esos puntos.


Tarjeta (calcite-card)

Description

Tarjeta (calcite-card)

Usage

ansgis_card(
  ...,
  titulo = NULL,
  subtitulo = NULL,
  pie = NULL,
  seleccionable = FALSE
)

Arguments

...

contenido.

titulo, subtitulo

textos (van en los slots heading/description).

pie

contenido del pie de la tarjeta.

seleccionable

agrega el control de seleccion.


NIVEL 3 — coropleta viva: varios controles -> R recalcula -> el mapa y la tabla se repintan solos

Description

Generaliza 'ansgis_calculo_vivo()' para el caso "el analisis devuelve un valor por poligono". El codigo de R se declara una sola vez; 'id' se reemplaza por el valor del control con ese id. R tiene que devolver un vector numerico cuyo PRIMER elemento es el resumen de toda la ciudad y los siguientes, un valor por poligono (en el mismo orden que la tabla y que los 'data-i' del SVG).

Usage

ansgis_coropleta_viva(
  controles,
  codigo,
  mapa_id,
  tabla_id = NULL,
  columna = 2,
  cortes = c(20, 40, 60, 80),
  colores = c("#c7361f", "#e8763a", "#f2c14e", "#95c65c", "#2e8b57"),
  etiquetas = character(),
  salida_id = NULL,
  reloj_id = NULL,
  aviso_id = NULL,
  plantilla = "{ciudad}% de la Ciudad"
)

Arguments

controles

ids de los controles Calcite que disparan el recalculo.

codigo

plantilla de codigo R.

mapa_id

id del contenedor del SVG (los poligonos llevan 'data-i').

tabla_id

id del '<calcite-table>' (o NULL).

columna

indice 0-based de la celda de la tabla que se actualiza.

cortes, colores

escala de color (length(colores) == length(cortes)+1).

etiquetas

nombres de los poligonos, para el titular.

salida_id, reloj_id, aviso_id

elementos de titular, de tiempo y del aviso "el motor esta cargando" (este ultimo se oculta cuando R esta listo).

plantilla

texto del titular; 'ciudad', 'peor', 'peorv' y los ids de los controles se reemplazan.


Embebe un data.frame en la pagina como CSV (para que lo lea el R del navegador)

Description

Embebe un data.frame en la pagina como CSV (para que lo lea el R del navegador)

Usage

ansgis_datos_embebidos(df, id = "ansgis-datos")

Arguments

df

data.frame.

id

id del elemento contenedor.


Dependencia de assets del design system

Description

Dependencia de assets del design system

Usage

ansgis_dep(
  source = c("local", "cdn", "ans"),
  version = CALCITE_VERSION,
  base_url = "/assets/calcite"
)

Arguments

source

"local" (auto-hosteado por el Worker, soberano), "cdn" (jsDelivr) o "ans" (tema propio, sin Esri).

version

version de calcite-components.

base_url

prefijo de URL cuando source = "local".


NIVEL 2 — enlaza la tabla con el mapa (seleccion cruzada, sin R)

Description

Escucha los eventos de seleccion del '<calcite-table>' (y, como respaldo, el clic sobre la fila) y resalta en el SVG los puntos cuyo 'data-grupo' coincide con la primera celda de la fila.

Usage

ansgis_enlace_tabla_mapa(
  tabla_id,
  mapa_id,
  etiqueta_id = NULL,
  selector = "circle[data-grupo]",
  clave = "grupo",
  css = NULL,
  todos = "todas las comunas"
)

Arguments

tabla_id

id del '<calcite-table>'.

mapa_id

id del contenedor del mapa.

etiqueta_id

id opcional de un elemento donde escribir el estado.

selector

selector CSS de las geometrias del mapa que se resaltan. Por defecto los puntos ('circle[data-grupo]'); para una coropleta de poligonos se pasa '"path[data-barrio]"'.

clave

nombre del 'data-*' que se compara con la primera celda.

css

CSS propio para las clases 'apagado'/'resaltado' (si es NULL usa el de los puntos).

todos

texto que se escribe en la etiqueta cuando no hay seleccion.


Fusiona un .Rmd con sintaxis de flexdashboard en un tablero AnsGIS

Description

Reemplaza a 'rmarkdown::render(output = flexdashboard::flex_dashboard)', que en webR no corre porque exige pandoc. Acá el motor es 'knitr' (que sí corre) más este traductor.

Usage

ansgis_fusionar_tablero(
  rmd,
  capa = "datos",
  envir = parent.frame(),
  mapa_id = "mapa"
)

Arguments

rmd

ruta del documento.

capa

nombre de la capa por defecto de los datasets.

envir

ambiente donde se evalúan los chunks.

mapa_id

id del elemento de mapa (destino de las acciones geométricas).

extra

lista de nodos que se agregan al final del body (datos embebidos, motor de R, documento del dashboard).

Value

lista con '$doc' (el documento del dashboard, formato Esri), '$cuerpo' (el HTML del body) y '$css' (el grid del layout).


Hueco de mapa

Description

Devuelve el contenedor donde se monta el motor de mapa (MapLibre, deck.gl o '<arcgis-map>'). Se deja como div propio para no atarse a un motor: el JS que se pase en 'montar' recibe el id.

Usage

ansgis_map(..., id = "ansgis-mapa", leyenda = "lienzo del mapa", montar = NULL)

Arguments

id

id del contenedor.

leyenda

texto de marca de agua mientras no hay motor montado.

montar

codigo JS opcional que monta el motor sobre ese id.


NIVEL 3 — monta el motor de R en la propia pagina (webR)

Description

Deja 'window.ansgisR.correr(codigo)' disponible y dispara el evento 'ansgis:r-listo' cuando termina de arrancar. Los datos embebidos con 'ansgis_datos_embebidos()' quedan cargados en el objeto 'farm'.

Usage

ansgis_motor_r(
  base_url = "/webr/",
  datos_id = "ansgis-datos",
  datos = NULL,
  preludio = NULL,
  paquetes = character(),
  estado_id = NULL
)

Arguments

base_url

de donde se sirve webR (auto-hosteado por el Worker).

datos_id

id del bloque de datos embebidos (o NULL). Se lee en 'farm'.

datos

vector de caracteres CON NOMBRE: 'c(nombre_en_R = "id-del-bloque")'. Permite cargar varias tablas. Si se pasa, ignora 'datos_id'.

preludio

codigo R que corre una vez, despues de cargar los datos (tipicamente define la funcion de analisis).

paquetes

paquetes de CRAN-wasm a instalar al arrancar.

estado_id

id de un elemento donde escribir el estado de arranque.


Arma el documento HTML completo

Description

Resuelve las dependencias declaradas (htmltools::renderTags) e inyecta el '<head>'. No usa pandoc: es R puro, por lo que corre igual en R nativo y en webR (el navegador).

Usage

ansgis_page(
  ...,
  titulo = "ANSGIS",
  source = c("local", "cdn", "ans"),
  lang = "es",
  modo = "light",
  favicon = NULL
)

Arguments

...

contenido del body.

titulo

titulo del documento.

source

origen de los assets (ver 'ansgis_dep').

lang

atributo lang del html.

modo

"light" o "dark" (clase de tema de Calcite).


Panel con encabezado y acciones (calcite-panel)

Description

Panel con encabezado y acciones (calcite-panel)

Usage

ansgis_panel(
  ...,
  titulo = NULL,
  descripcion = NULL,
  acciones = NULL,
  barra = NULL,
  colapsable = FALSE
)

Arguments

...

contenido.

titulo, descripcion

textos del encabezado.

acciones

lista de 'ansgis_action()' que van al encabezado.

barra

un 'ansgis_action_bar()' opcional (queda en el slot action-bar).

colapsable

si TRUE, agrega el boton de colapso.


Parsea la estructura de flexdashboard de un markdown ya knitteado

Description

Reconoce, tal cual las define flexdashboard: - 'Column data-width=600' / 'Row data-height=200' subrayado con '—' (encabezado setext de nivel 2) –> contenedor - '### Titulo .tipo atributos' –> elemento - 'Algo .sidebar' –> la barra lateral

Usage

ansgis_parsear_tablero(lineas)

Registra el 'knit_print' que captura los elementos

Description

htmltools NO registra 'knit_print.shiny.tag' (verificado: 'getS3method(..., optional = TRUE)' devuelve NULL), asi que lo ponemos nosotros. Cada chunk que devuelve un tag deja una marca en el markdown y el objeto en el ambiente.

Usage

ansgis_registrar_knit(reset = TRUE)

Escribe el documento a un archivo

Description

Escribe el documento a un archivo

Usage

ansgis_save(doc, archivo)

Arguments

doc

salida de 'ansgis_page()'.

archivo

ruta de destino.


Marco de aplicacion (calcite-shell)

Description

Marco de aplicacion (calcite-shell)

Usage

ansgis_shell(
  ...,
  titulo = NULL,
  subtitulo = NULL,
  panel_inicio = NULL,
  barra_inicio = NULL,
  panel_fin = NULL,
  pie = NULL,
  ancho_panel = "m",
  contenido_detras = TRUE
)

Arguments

...

contenido central (tipicamente el mapa).

titulo, subtitulo

textos de la barra de navegacion superior.

panel_inicio

contenido del panel lateral izquierdo.

panel_fin

contenido del panel lateral derecho.

pie

contenido del pie.

ancho_panel

"s", "m" o "l".

contenido_detras

si TRUE el contenido central va POR DEBAJO de los paneles (paneles flotantes, look de mapa a pantalla completa); si FALSE el panel ocupa su propio espacio y el mapa usa el resto (look de tablero).


Control deslizante (calcite-slider)

Description

Control deslizante (calcite-slider)

Usage

ansgis_slider(id, min = 0, max = 100, valor = 50, paso = 1, etiquetas = TRUE)

Arguments

id

id del control.

min, max, valor, paso

rango y valor inicial.

etiquetas

muestra los extremos y el valor.


Tabla Calcite a partir de un data.frame (calcite-table)

Description

Tabla Calcite a partir de un data.frame (calcite-table)

Usage

ansgis_table(df, titulo = "Tabla", rayada = TRUE, max_filas = 25)

Arguments

df

un data.frame.

titulo

caption de la tabla (requerido por accesibilidad en Calcite).

rayada

filas alternadas.

max_filas

cuantas filas emitir.


Dependencia del CSS del dashboard

Description

Dependencia del CSS del dashboard

Usage

dash_css()

Detalles (detailsWidget) — muestra el "pop-up" del feature

Description

Con 'sin_seleccion' se implementa el "Render only when filtered" del pliego: el elemento no renderiza hasta que hay seleccion en su fuente.

Usage

dash_detalles(id, titulo, sin_seleccion, ...)

Emite el documento del dashboard y engancha el runtime

Description

Emite el documento del dashboard y engancha el runtime

Usage

dash_documento(doc)

Arguments

doc

lista R que se serializa al JSON del dashboard (formato Esri).


Grafico serial (serialChartWidget) — el SVG lo dibuja el runtime

Description

Grafico serial (serialChartWidget) — el SVG lo dibuja el runtime

Usage

dash_grafico(id, titulo, ...)

Indicador (indicatorWidget)

Description

Tres areas de texto (top / middle / bottom) mas un icono opcional, como manda el pliego. El contenido lo escribe el runtime con los ocho calculos predefinidos; aca va el estado inicial ya calculado en R.

Usage

dash_indicador(
  id,
  titulo,
  top = "",
  medio = "",
  bajo = "",
  icono = NULL,
  color = NULL,
  ...
)

Lista de features (listWidget), con caja de busqueda

Description

Lista de features (listWidget), con caja de busqueda

Usage

dash_lista(id, titulo, buscar = TRUE, ...)

Mapa (mapWidget) con sus herramientas

Description

Del pliego (map-element-and-tools.htm) implementa: zoom +/-, extension por defecto, leyenda, visibilidad de capas y escala grafica. No hay mapa base: el header COEP que webR necesita bloquea los tiles de terceros.

Usage

dash_mapa(id, titulo, svg, leyenda = NULL, capas = NULL, ...)

Medidor de progreso, forma herradura (gaugeWidget)

Description

El pliego: "Progress gauges display where a value is in a quantitative context that is defined by minimum and maximum values... circle, horseshoe, or half circle". Herradura = arco de 270 grados.

Usage

dash_medidor(
  id,
  titulo,
  valor = "",
  sub = "",
  min = "0",
  max = "100",
  color = "#0079c1",
  pct = 0,
  ...
)

Selector de categoria, presentacion "barra de botones" (categorySelectorWidget)

Description

Selector de categoria, presentacion "barra de botones" (categorySelectorWidget)

Usage

dash_sel_chips(id, caption, valores, etiquetas = valores)

Selector de categoria, presentacion "lista" con busqueda y "seleccionar todo"

Description

Selector de categoria, presentacion "lista" con busqueda y "seleccionar todo"

Usage

dash_sel_lista(
  id,
  etiqueta,
  valores,
  etiquetas = valores,
  buscar = TRUE,
  multiple = TRUE
)

Selector numerico / de fecha: slider de rango (number/dateSelectorWidget)

Description

Selector numerico / de fecha: slider de rango (number/dateSelectorWidget)

Usage

dash_sel_rango(
  id,
  etiqueta,
  min,
  max,
  paso,
  valor_ini,
  pista = NULL,
  ticks = NULL
)

Tabla de valores agrupados (tableWidget)

Description

Emite las 7 partes del pliego: columnas, rule line, header, filas, rayado, grilla y fila de resumen. Las filas las llena el runtime.

Usage

dash_tabla(id, titulo, columnas, resumen = "Total", ...)

Texto enriquecido (richTextWidget), modo "Statistic"

Description

Texto enriquecido (richTextWidget), modo "Statistic"

Usage

dash_texto(id, titulo = NULL, html = "", ...)

Grafico de torta / dona (pieChartWidget)

Description

Grafico de torta / dona (pieChartWidget)

Usage

dash_torta(id, titulo, ...)

Marco comun de todo elemento del dashboard

Description

Marco comun de todo elemento del dashboard

Usage

dash_widget(
  id,
  titulo = NULL,
  ...,
  info = NULL,
  caption = NULL,
  caption_pie = NULL,
  clase = NULL
)

Arguments

id

id del elemento (el mismo que lleva en el documento JSON).

titulo

texto del header.

...

el area de visualizacion.

info

texto de "More information" (tooltip del icono).

caption

caption superior; 'caption_pie', el inferior.