## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  warning = FALSE,
  message = FALSE
)

## ----tabla-dinamica, echo = FALSE---------------------------------------------
library(siniaR)
library(dplyr)

# Intentar cargar en vivo o usar catálogo estructurado
ind <- tryCatch(
  sinia_indicadores(marco = "mdea", solo_estadisticas = TRUE),
  error = function(e) NULL
)

if (is.null(ind) || nrow(ind) == 0) {
  # Fallback si no hay conexión en el momento de compilación
  ind <- tibble::tibble(
    id = 1:10,
    numeral = paste0("1.1.1.", 1:10),
    nombre = c(
      "Temperatura del aire promedio anual",
      "Temperatura máxima promedio anual",
      "Temperatura mínima promedio anual",
      "Precipitación total anual",
      "Humedad relativa promedio anual",
      "Número de horas de sol anual",
      "Radiación ultravioleta promedio anual",
      "Ozono atmosférico mínimo, máximo y promedio anual",
      "Número de tipos de clima según departamento",
      "Superficie de lagunas de origen glaciar"
    ),
    marco = "mdea"
  )
}

componente_nombres <- c(
  "1" = "1. Calidad Ambiental",
  "2" = "2. Recursos Ambientales",
  "3" = "3. Residuos",
  "4" = "4. Eventos y Clima",
  "5" = "5. Hábitat Humano",
  "6" = "6. Gestión Ambiental"
)

badge_colores <- c(
  "1" = "#38B6FF",
  "2" = "#E07A26",
  "3" = "#7B3F7B",
  "4" = "#2C3E50",
  "5" = "#5E8D3B",
  "6" = "#D4AC0D"
)

df_tabla <- ind |>
  mutate(
    comp_num = substr(numeral, 1, 1),
    comp_txt = componente_nombres[comp_num],
    comp_col = badge_colores[comp_num],
    Componente = sprintf(
      '<span style="background-color: %s; color: white; padding: 3px 8px; border-radius: 4px; font-size: 0.8rem; font-weight: 500;">%s</span>',
      comp_col, comp_txt
    ),
    `Comando de Descarga en R` = sprintf(
      '<code style="background: #f1f5f9; color: #0f172a; padding: 2px 6px; border-radius: 4px; font-size: 0.82rem;">sinia_datos(id = %d, pivot = "long")</code>',
      id
    )
  ) |>
  select(
    ID = id,
    Numeral = numeral,
    Componente,
    `Indicador / Estadística Ambiental` = nombre,
    `Comando de Descarga en R`
  )

if (requireNamespace("DT", quietly = TRUE)) {
  DT::datatable(
    df_tabla,
    escape = FALSE,
    rownames = FALSE,
    options = list(
      pageLength = 10,
      lengthMenu = c(10, 25, 50, 100),
      autoWidth = TRUE,
      language = list(
        search = "🔍 Buscar indicador:",
        lengthMenu = "Mostrar _MENU_ registros por página",
        info = "Mostrando registros del _START_ al _END_ de un total de _TOTAL_",
        infoEmpty = "Mostrando 0 registros",
        infoFiltered = "(filtrado de un total de _MAX_ registros)",
        zeroRecords = "No se encontraron indicadores que coincidan con la búsqueda",
        paginate = list(
          previous = "Anterior",
          `next` = "Siguiente"
        )
      ),
      columnDefs = list(
        list(className = "dt-center", targets = c(0, 1, 2)),
        list(width = "50px", targets = 0),
        list(width = "90px", targets = 1),
        list(width = "180px", targets = 2)
      )
    ),
    class = "cell-border stripe hover compact"
  )
} else {
  knitr::kable(df_tabla, format = "html", escape = FALSE)
}

