---
title: "Catálogo Completo de Indicadores y Estadísticas Ambientales"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Catálogo Completo de Indicadores y Estadísticas Ambientales}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  warning = FALSE,
  message = FALSE
)
```

## Guía de Acceso a las Estadísticas del SINIA

Esta guía contiene el **catálogo oficial interactivo de los más de 180 indicadores y estadísticas ambientales** disponibles en vivo en la plataforma del **Sistema Nacional de Información Ambiental (SINIA / MINAM)**, organizados según los 6 componentes del **Marco para el Desarrollo de las Estadísticas Ambientales (MDEA / ONU)**.

Para consultar o descargar cualquiera de estas estadísticas, utiliza su número de **`ID`** con las siguientes funciones del paquete:

```r
library(siniaR)

# 1. Descargar serie de datos en formato largo (apilado / tidy para análisis y gráficos)
df_long <- sinia_datos(id = 1, pivot = "long")

# 2. Descargar matriz en formato ancho (columnas por año)
df_wide <- sinia_datos(id = 1, pivot = "wide")

# 3. Consultar la ficha técnica oficial con metodologías, fuentes y fórmulas
ficha <- sinia_ficha(id = 1)

# 4. Obtener objeto integrado (metadatos completos + matriz de datos)
est <- sinia_estadistica(id = 1, pivot = "long")
```

---

## 🔍 Explorador Dinámico de Indicadores

Utiliza la caja de búsqueda para filtrar instantáneamente por palabra clave (ej. *temperatura*, *pm10*, *glaciar*, *bosque*, *residuos*), numeral o ID. Puedes navegar entre páginas para evitar desplazarte por toda la lista.

```{r 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)
}
```

---

## 📖 Parámetros y Argumentos de Consulta

| Función | Parámetro | Tipo | Valores permitidos / Descripción |
|:---|:---|:---:|:---|
| `sinia_datos(id, pivot, clean_names)` | `id` | Entero / Numérico | Identificador numérico de la estadística (ver tabla interactiva). |
| | `pivot` | Carácter | `"long"` (formato ordenado con columnas `anio` y `valor`), `"wide"` (años en columnas) o `"raw"` (sin conversión de tipos). |
| | `clean_names` | Lógico | `TRUE` (por defecto, normaliza a minúsculas y sin acentos) o `FALSE`. |
| `sinia_ficha(id)` | `id` | Entero / Numérico | Identificador de la estadística para consultar fuentes, fórmulas y responsables. |
| `sinia_estadistica(id, pivot)` | `id`, `pivot` | Entero, Carácter | Descarga combinada de la ficha técnica y la matriz de datos. |
| `sinia_indicadores(marco, solo_estadisticas)` | `marco` | Carácter | `"mdea"` (ONU) o `"sinia"` (sectorial nacional). |
| `sinia_buscar(query, marco)` | `query` | Carácter | Término de búsqueda (ej. `"temperatura"`, `"pm10"`, `"glaciar"`). |
