| |
| const datosAplicacion = { |
| especies: [ |
| { |
| id: 1, |
| nombre_cientifico: "Panthera onca", |
| nombre_comun: "Jaguar", |
| reino: "Animalia", |
| familia: "Felidae", |
| orden: "Carnivora", |
| clase: "Mammalia", |
| ubicacion: "Parque Nacional Iguazú, Misiones", |
| coordenadas: [-25.6954, -54.4367], |
| fecha: "2024-11-15", |
| estado_conservacion: "En Peligro", |
| observador: "Dr. María González", |
| descripcion: "Avistamiento nocturno cerca del río Iguazú", |
| imagen: "jaguar.jpg" |
| }, |
| { |
| id: 2, |
| nombre_cientifico: "Vultur gryphus", |
| nombre_comun: "Cóndor Andino", |
| reino: "Animalia", |
| familia: "Cathartidae", |
| orden: "Accipitriformes", |
| clase: "Aves", |
| ubicacion: "Parque Nacional Nahuel Huapi, Río Negro", |
| coordenadas: [-41.0000, -71.0000], |
| fecha: "2024-10-28", |
| estado_conservacion: "En Peligro Crítico", |
| observador: "Carlos Mendoza", |
| descripcion: "Ejemplar adulto volando sobre los picos nevados", |
| imagen: "condor.jpg" |
| }, |
| { |
| id: 3, |
| nombre_cientifico: "Eubalaena australis", |
| nombre_comun: "Ballena Franca Austral", |
| reino: "Animalia", |
| familia: "Balaenidae", |
| orden: "Mysticeti", |
| clase: "Mammalia", |
| ubicacion: "Península Valdés, Chubut", |
| coordenadas: [-42.5000, -64.0000], |
| fecha: "2024-12-01", |
| estado_conservacion: "Vulnerable", |
| observador: "Ana Rodríguez", |
| descripcion: "Madre con cría en aguas costeras", |
| imagen: "ballena.jpg" |
| }, |
| { |
| id: 4, |
| nombre_cientifico: "Schinopsis lorentzii", |
| nombre_comun: "Quebracho Colorado", |
| reino: "Plantae", |
| familia: "Anacardiaceae", |
| orden: "Sapindales", |
| clase: "Magnoliopsida", |
| ubicacion: "Parque Nacional Chaco, Chaco", |
| coordenadas: [-26.8333, -59.6667], |
| fecha: "2024-09-15", |
| estado_conservacion: "Vulnerable", |
| observador: "Luis Martínez", |
| descripcion: "Ejemplar centenario en bosque nativo", |
| imagen: "quebracho.jpg" |
| }, |
| { |
| id: 5, |
| nombre_cientifico: "Jacaranda mimosifolia", |
| nombre_comun: "Jacarandá", |
| reino: "Plantae", |
| familia: "Bignoniaceae", |
| orden: "Lamiales", |
| clase: "Magnoliopsida", |
| ubicacion: "Buenos Aires, Capital Federal", |
| coordenadas: [-34.6118, -58.3960], |
| fecha: "2024-11-10", |
| estado_conservacion: "Preocupación Menor", |
| observador: "Elena Vásquez", |
| descripcion: "Floración primaveral en ambiente urbano", |
| imagen: "jacaranda.jpg" |
| }, |
| { |
| id: 6, |
| nombre_cientifico: "Pleurotus ostreatus", |
| nombre_comun: "Hongo Gírgola", |
| reino: "Fungi", |
| familia: "Pleurotaceae", |
| orden: "Agaricales", |
| clase: "Agaricomycetes", |
| ubicacion: "Bosque Andino, Neuquén", |
| coordenadas: [-40.0000, -71.0000], |
| fecha: "2024-08-20", |
| estado_conservacion: "Preocupación Menor", |
| observador: "Roberto Silva", |
| descripcion: "Crecimiento saprofítico en tronco de lenga", |
| imagen: "girgola.jpg" |
| }, |
| { |
| id: 7, |
| nombre_cientifico: "Chrysocyon brachyurus", |
| nombre_comun: "Aguará Guazú", |
| reino: "Animalia", |
| familia: "Canidae", |
| orden: "Carnivora", |
| clase: "Mammalia", |
| ubicacion: "Parque Nacional El Impenetrable, Chaco", |
| coordenadas: [-25.0000, -61.0000], |
| fecha: "2024-10-15", |
| estado_conservacion: "Casi Amenazado", |
| observador: "Patricia Fernández", |
| descripcion: "Avistamiento matutino en pastizal abierto", |
| imagen: "aguara.jpg" |
| }, |
| { |
| id: 8, |
| nombre_cientifico: "Amazona tucumana", |
| nombre_comun: "Loro Alisero", |
| reino: "Animalia", |
| familia: "Psittacidae", |
| orden: "Psittaciformes", |
| clase: "Aves", |
| ubicacion: "Selvas de Yungas, Salta", |
| coordenadas: [-24.5000, -65.0000], |
| fecha: "2024-11-20", |
| estado_conservacion: "En Peligro Crítico", |
| observador: "Diego Herrera", |
| descripcion: "Bandada alimentándose en frutos de laurel", |
| imagen: "loro.jpg" |
| }, |
| { |
| id: 9, |
| nombre_cientifico: "Cecropia pachystachya", |
| nombre_comun: "Ambay", |
| reino: "Plantae", |
| familia: "Urticaceae", |
| orden: "Rosales", |
| clase: "Magnoliopsida", |
| ubicacion: "Selva Paranaense, Misiones", |
| coordenadas: [-25.5000, -54.5000], |
| fecha: "2024-08-30", |
| estado_conservacion: "Datos Insuficientes", |
| observador: "Carmen López", |
| descripcion: "Ejemplar joven en borde de sendero", |
| imagen: "ambay.jpg" |
| } |
| ], |
| |
| estadisticas: { |
| total_especies: 13559, |
| especies_endemicas: 2147, |
| observaciones_totales: 45230, |
| contribuyentes: 1250, |
| areas_protegidas: 45 |
| }, |
| |
| provincias: [ |
| "Buenos Aires", "Catamarca", "Chaco", "Chubut", "Córdoba", "Corrientes", |
| "Entre Ríos", "Formosa", "Jujuy", "La Pampa", "La Rioja", "Mendoza", |
| "Misiones", "Neuquén", "Río Negro", "Salta", "San Juan", "San Luis", |
| "Santa Cruz", "Santa Fe", "Santiago del Estero", "Tierra del Fuego", "Tucumán" |
| ], |
| |
| reinos: ["Animalia", "Plantae", "Fungi", "Chromista", "Bacteria"], |
| |
| estados_conservacion: [ |
| "En Peligro Crítico", "En Peligro", "Vulnerable", |
| "Casi Amenazado", "Preocupación Menor", "Datos Insuficientes" |
| ] |
| }; |
|
|
| |
| let especiesFiltradas = [...datosAplicacion.especies]; |
| let observacionesForo = []; |
|
|
| |
| function formatearFecha(fecha) { |
| const date = new Date(fecha); |
| return date.toLocaleDateString('es-AR', { |
| year: 'numeric', |
| month: 'long', |
| day: 'numeric' |
| }); |
| } |
|
|
| function obtenerClaseConservacion(estado) { |
| if (estado === "En Peligro" || estado === "En Peligro Crítico") { |
| return "conservacion-peligro"; |
| } else if (estado === "Vulnerable" || estado === "Casi Amenazado") { |
| return "conservacion-vulnerable"; |
| } else { |
| return "conservacion-menor"; |
| } |
| } |
|
|
| function extraerProvincia(ubicacion) { |
| const partes = ubicacion.split(', '); |
| return partes[partes.length - 1]; |
| } |
|
|
| |
| document.addEventListener('DOMContentLoaded', function() { |
| inicializarAplicacion(); |
| }); |
|
|
| function inicializarAplicacion() { |
| |
| configurarNavegacion(); |
| |
| |
| llenarSelectores(); |
| |
| |
| mostrarEspecies(especiesFiltradas); |
| |
| |
| configurarEventos(); |
| |
| |
| inicializarForo(); |
| |
| |
| const fechaInput = document.getElementById('fecha-obs'); |
| if (fechaInput) { |
| fechaInput.valueAsDate = new Date(); |
| } |
| |
| |
| mejorarMapaInteractivo(); |
| |
| |
| configurarBotonesRecursos(); |
| } |
|
|
| function configurarNavegacion() { |
| const enlaces = document.querySelectorAll('.nav-link'); |
| enlaces.forEach(enlace => { |
| enlace.addEventListener('click', function(e) { |
| e.preventDefault(); |
| const destino = this.getAttribute('href'); |
| const elemento = document.querySelector(destino); |
| if (elemento) { |
| elemento.scrollIntoView({ |
| behavior: 'smooth', |
| block: 'start' |
| }); |
| } |
| }); |
| }); |
| } |
|
|
| function llenarSelectores() { |
| |
| const selectorProvincia = document.getElementById('provincia'); |
| if (selectorProvincia) { |
| datosAplicacion.provincias.forEach(provincia => { |
| const option = document.createElement('option'); |
| option.value = provincia; |
| option.textContent = provincia; |
| selectorProvincia.appendChild(option); |
| }); |
| } |
| |
| |
| const selectorConservacion = document.getElementById('conservacion'); |
| if (selectorConservacion) { |
| datosAplicacion.estados_conservacion.forEach(estado => { |
| const option = document.createElement('option'); |
| option.value = estado; |
| option.textContent = estado; |
| selectorConservacion.appendChild(option); |
| }); |
| } |
| } |
|
|
| function configurarEventos() { |
| |
| const botonFiltrar = document.getElementById('filtrar'); |
| if (botonFiltrar) { |
| botonFiltrar.addEventListener('click', filtrarEspecies); |
| } |
| |
| |
| const filtros = ['reino', 'provincia', 'conservacion', 'buscar']; |
| filtros.forEach(filtroId => { |
| const elemento = document.getElementById(filtroId); |
| if (elemento) { |
| elemento.addEventListener('change', filtrarEspeciesEnTiempoReal); |
| if (filtroId === 'buscar') { |
| elemento.addEventListener('input', filtrarEspeciesEnTiempoReal); |
| } |
| } |
| }); |
| |
| |
| const formulario = document.getElementById('form-observacion'); |
| if (formulario) { |
| formulario.addEventListener('submit', manejarSubmitObservacion); |
| } |
| } |
|
|
| function filtrarEspeciesEnTiempoReal() { |
| |
| clearTimeout(window.filtroTimeout); |
| window.filtroTimeout = setTimeout(filtrarEspecies, 300); |
| } |
|
|
| function mostrarEspecies(especies) { |
| const grid = document.getElementById('especies-grid'); |
| if (!grid) return; |
| |
| grid.innerHTML = ''; |
| |
| if (especies.length === 0) { |
| grid.innerHTML = ` |
| <div class="card" style="grid-column: 1 / -1;"> |
| <div class="card__body" style="text-align: center; padding: 2rem;"> |
| <h3>No se encontraron especies</h3> |
| <p>Intenta ajustar los filtros de búsqueda o prueba con términos diferentes.</p> |
| <button class="btn btn--secondary" onclick="limpiarFiltros()">Limpiar Filtros</button> |
| </div> |
| </div> |
| `; |
| return; |
| } |
| |
| |
| const contador = document.createElement('div'); |
| contador.className = 'resultados-contador'; |
| contador.style.gridColumn = '1 / -1'; |
| contador.style.marginBottom = '1rem'; |
| contador.style.color = 'var(--color-text-secondary)'; |
| contador.innerHTML = `Se encontraron <strong>${especies.length}</strong> especies`; |
| grid.appendChild(contador); |
| |
| especies.forEach(especie => { |
| const tarjeta = crearTarjetaEspecie(especie); |
| grid.appendChild(tarjeta); |
| }); |
| } |
|
|
| function limpiarFiltros() { |
| document.getElementById('reino').value = ''; |
| document.getElementById('provincia').value = ''; |
| document.getElementById('conservacion').value = ''; |
| document.getElementById('buscar').value = ''; |
| especiesFiltradas = [...datosAplicacion.especies]; |
| mostrarEspecies(especiesFiltradas); |
| } |
|
|
| function crearTarjetaEspecie(especie) { |
| const div = document.createElement('div'); |
| div.className = 'especie-card'; |
| |
| const claseConservacion = obtenerClaseConservacion(especie.estado_conservacion); |
| const fechaFormateada = formatearFecha(especie.fecha); |
| |
| |
| const emojiReino = { |
| 'Animalia': '🐾', |
| 'Plantae': '🌿', |
| 'Fungi': '🍄' |
| }; |
| |
| div.innerHTML = ` |
| <div class="especie-image"> |
| <span>${emojiReino[especie.reino] || '🔬'} ${especie.nombre_comun}</span> |
| </div> |
| <div class="especie-info"> |
| <h3 class="especie-nombre">${especie.nombre_comun}</h3> |
| <p class="especie-cientifico">${especie.nombre_cientifico}</p> |
| <div class="especie-meta"> |
| <div class="meta-item"> |
| <span class="meta-label">Reino:</span> ${especie.reino} |
| </div> |
| <div class="meta-item"> |
| <span class="meta-label">Familia:</span> ${especie.familia} |
| </div> |
| <div class="meta-item"> |
| <span class="meta-label">Orden:</span> ${especie.orden} |
| </div> |
| <div class="meta-item"> |
| <span class="meta-label">Ubicación:</span> ${especie.ubicacion} |
| </div> |
| <div class="meta-item"> |
| <span class="meta-label">Observado:</span> ${fechaFormateada} |
| </div> |
| <div class="meta-item"> |
| <span class="meta-label">Observador:</span> ${especie.observador} |
| </div> |
| </div> |
| <div class="${claseConservacion}"> |
| ${especie.estado_conservacion} |
| </div> |
| <p style="margin-top: 1rem; font-size: 0.9rem; color: var(--color-text-secondary);"> |
| ${especie.descripcion} |
| </p> |
| </div> |
| `; |
| |
| return div; |
| } |
|
|
| function filtrarEspecies() { |
| const reino = document.getElementById('reino')?.value || ''; |
| const provincia = document.getElementById('provincia')?.value || ''; |
| const conservacion = document.getElementById('conservacion')?.value || ''; |
| const busqueda = document.getElementById('buscar')?.value.toLowerCase().trim() || ''; |
| |
| especiesFiltradas = datosAplicacion.especies.filter(especie => { |
| const coincideReino = !reino || especie.reino === reino; |
| const coincideProvincia = !provincia || extraerProvincia(especie.ubicacion) === provincia; |
| const coincideConservacion = !conservacion || especie.estado_conservacion === conservacion; |
| const coincideBusqueda = !busqueda || |
| especie.nombre_cientifico.toLowerCase().includes(busqueda) || |
| especie.nombre_comun.toLowerCase().includes(busqueda) || |
| especie.familia.toLowerCase().includes(busqueda) || |
| especie.orden.toLowerCase().includes(busqueda) || |
| especie.descripcion.toLowerCase().includes(busqueda); |
| |
| return coincideReino && coincideProvincia && coincideConservacion && coincideBusqueda; |
| }); |
| |
| mostrarEspecies(especiesFiltradas); |
| } |
|
|
| function manejarSubmitObservacion(e) { |
| e.preventDefault(); |
| |
| |
| const camposRequeridos = [ |
| 'nombre-cientifico', 'nombre-comun', 'reino-form', |
| 'ubicacion', 'fecha-obs', 'observador' |
| ]; |
| |
| let formularioValido = true; |
| const errores = []; |
| |
| camposRequeridos.forEach(campoId => { |
| const campo = document.getElementById(campoId); |
| if (!campo || !campo.value.trim()) { |
| formularioValido = false; |
| errores.push(`El campo ${campo ? campo.previousElementSibling.textContent : campoId} es requerido`); |
| } |
| }); |
| |
| if (!formularioValido) { |
| mostrarMensajeError('Por favor completa todos los campos requeridos:\n' + errores.join('\n')); |
| return; |
| } |
| |
| const nuevaObservacion = { |
| id: Date.now(), |
| nombre_cientifico: document.getElementById('nombre-cientifico').value, |
| nombre_comun: document.getElementById('nombre-comun').value, |
| reino: document.getElementById('reino-form').value, |
| familia: document.getElementById('familia').value || 'No especificada', |
| orden: document.getElementById('orden').value || 'No especificado', |
| clase: 'No especificada', |
| ubicacion: document.getElementById('ubicacion').value, |
| coordenadas: document.getElementById('coordenadas').value ? |
| document.getElementById('coordenadas').value.split(',').map(c => parseFloat(c.trim())) : |
| [0, 0], |
| fecha: document.getElementById('fecha-obs').value, |
| observador: document.getElementById('observador').value, |
| descripcion: document.getElementById('descripcion').value || 'Sin descripción adicional', |
| estado_conservacion: "Dados Insuficientes", |
| imagen: "nueva-observacion.jpg" |
| }; |
| |
| |
| datosAplicacion.especies.push(nuevaObservacion); |
| especiesFiltradas = [...datosAplicacion.especies]; |
| |
| |
| mostrarMensajeExito('¡Observación enviada exitosamente! Será revisada por la comunidad científica.'); |
| |
| |
| agregarObservacionAlForo(nuevaObservacion); |
| |
| |
| e.target.reset(); |
| document.getElementById('fecha-obs').valueAsDate = new Date(); |
| |
| |
| mostrarEspecies(especiesFiltradas); |
| } |
|
|
| function mostrarMensajeExito(mensaje) { |
| mostrarMensaje(mensaje, 'success'); |
| } |
|
|
| function mostrarMensajeError(mensaje) { |
| mostrarMensaje(mensaje, 'error'); |
| } |
|
|
| function mostrarMensaje(mensaje, tipo) { |
| |
| const div = document.createElement('div'); |
| div.className = `status status--${tipo}`; |
| div.style.position = 'fixed'; |
| div.style.top = '20px'; |
| div.style.right = '20px'; |
| div.style.zIndex = '1000'; |
| div.style.maxWidth = '400px'; |
| div.style.whiteSpace = 'pre-line'; |
| div.textContent = mensaje; |
| |
| document.body.appendChild(div); |
| |
| |
| setTimeout(() => { |
| div.remove(); |
| }, 5000); |
| } |
|
|
| function inicializarForo() { |
| |
| observacionesForo = datosAplicacion.especies.map((especie, index) => ({ |
| id: especie.id, |
| autor: especie.observador, |
| fecha: especie.fecha, |
| especie: especie.nombre_comun, |
| nombre_cientifico: especie.nombre_cientifico, |
| ubicacion: especie.ubicacion, |
| descripcion: especie.descripcion, |
| votos: Math.floor(Math.random() * 20) + 1, |
| comentarios: Math.floor(Math.random() * 5), |
| validada: index < 3 |
| })); |
| |
| mostrarForo(); |
| } |
|
|
| function mostrarForo() { |
| const container = document.getElementById('foro-container'); |
| if (!container) return; |
| |
| container.innerHTML = ''; |
| |
| |
| const titulo = document.createElement('div'); |
| titulo.innerHTML = ` |
| <p style="color: var(--color-text-secondary); margin-bottom: 1.5rem;"> |
| Observaciones recientes de la comunidad científica. Puedes votar para validar identificaciones. |
| </p> |
| `; |
| container.appendChild(titulo); |
| |
| |
| const observacionesOrdenadas = [...observacionesForo].sort((a, b) => |
| new Date(b.fecha) - new Date(a.fecha) |
| ); |
| |
| observacionesOrdenadas.forEach(observacion => { |
| const post = crearPostForo(observacion); |
| container.appendChild(post); |
| }); |
| } |
|
|
| function crearPostForo(observacion) { |
| const div = document.createElement('div'); |
| div.className = 'foro-post card'; |
| |
| const fechaFormateada = formatearFecha(observacion.fecha); |
| const statusObservacion = observacion.validada ? |
| '<div class="status status--success">Identificación Validada</div>' : |
| '<div class="status status--info">Pendiente de Validación</div>'; |
| |
| div.innerHTML = ` |
| <div class="card__body"> |
| <div class="post-header"> |
| <div> |
| <div class="post-author">${observacion.autor}</div> |
| <div class="post-date">${fechaFormateada}</div> |
| </div> |
| ${statusObservacion} |
| </div> |
| <div class="post-content"> |
| <h4>${observacion.especie} (<em>${observacion.nombre_cientifico}</em>)</h4> |
| <p><strong>Ubicación:</strong> ${observacion.ubicacion}</p> |
| <p>${observacion.descripcion}</p> |
| </div> |
| <div class="post-actions"> |
| <button class="btn btn--sm btn--outline" onclick="votarObservacion(${observacion.id})" |
| ${observacion.validada ? 'disabled' : ''}> |
| 👍 ${observacion.votos} votos |
| </button> |
| <button class="btn btn--sm btn--outline" onclick="mostrarComentarios(${observacion.id})"> |
| 💬 ${observacion.comentarios} comentarios |
| </button> |
| <button class="btn btn--sm btn--secondary" onclick="validarIdentificacion(${observacion.id})" |
| ${observacion.validada ? 'disabled' : ''}> |
| ${observacion.validada ? '✅ Validada' : 'Validar identificación'} |
| </button> |
| </div> |
| </div> |
| `; |
| |
| return div; |
| } |
|
|
| function agregarObservacionAlForo(observacion) { |
| const nuevaObservacionForo = { |
| id: observacion.id, |
| autor: observacion.observador, |
| fecha: observacion.fecha, |
| especie: observacion.nombre_comun, |
| nombre_cientifico: observacion.nombre_cientifico, |
| ubicacion: observacion.ubicacion, |
| descripcion: observacion.descripcion, |
| votos: 0, |
| comentarios: 0, |
| validada: false |
| }; |
| |
| observacionesForo.unshift(nuevaObservacionForo); |
| mostrarForo(); |
| |
| |
| setTimeout(() => { |
| document.getElementById('foro').scrollIntoView({ |
| behavior: 'smooth', |
| block: 'start' |
| }); |
| }, 500); |
| } |
|
|
| function votarObservacion(id) { |
| const observacion = observacionesForo.find(obs => obs.id === id); |
| if (observacion && !observacion.validada) { |
| observacion.votos++; |
| mostrarForo(); |
| mostrarMensajeExito(`Has votado por la observación de ${observacion.especie}`); |
| } |
| } |
|
|
| function validarIdentificacion(id) { |
| const observacion = observacionesForo.find(obs => obs.id === id); |
| if (observacion && !observacion.validada) { |
| observacion.validada = true; |
| observacion.votos += 5; |
| mostrarForo(); |
| mostrarMensajeExito(`Has validado la identificación de ${observacion.especie}`); |
| } |
| } |
|
|
| function mostrarComentarios(id) { |
| const observacion = observacionesForo.find(obs => obs.id === id); |
| if (observacion) { |
| alert(`Comentarios para ${observacion.especie}:\n\n- Excelente fotografía, muy clara la identificación\n- ¿Podrías compartir más detalles del hábitat?\n- Confirmo la identificación, he visto ejemplares similares en la zona`); |
| } |
| } |
|
|
| function mejorarMapaInteractivo() { |
| const mapaContainer = document.querySelector('.mapa-placeholder'); |
| if (!mapaContainer) return; |
| |
| |
| mapaContainer.innerHTML = ` |
| <div style="text-align: center; padding: 2rem;"> |
| <h3>🗺️ Mapa Interactivo de Observaciones</h3> |
| <p style="margin: 1rem 0;">Distribución de especies registradas en Argentina</p> |
| |
| <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 2rem 0; max-width: 400px; margin-left: auto; margin-right: auto;"> |
| <div class="card" style="padding: 1rem; text-align: center;"> |
| <div style="font-size: 2rem;">🐾</div> |
| <div style="font-weight: bold; color: var(--color-error);">${datosAplicacion.especies.filter(e => e.reino === 'Animalia').length}</div> |
| <div style="font-size: 0.8rem;">Animalia</div> |
| </div> |
| <div class="card" style="padding: 1rem; text-align: center;"> |
| <div style="font-size: 2rem;">🌿</div> |
| <div style="font-weight: bold; color: var(--color-success);">${datosAplicacion.especies.filter(e => e.reino === 'Plantae').length}</div> |
| <div style="font-size: 0.8rem;">Plantae</div> |
| </div> |
| <div class="card" style="padding: 1rem; text-align: center;"> |
| <div style="font-size: 2rem;">🍄</div> |
| <div style="font-weight: bold; color: var(--color-warning);">${datosAplicacion.especies.filter(e => e.reino === 'Fungi').length}</div> |
| <div style="font-size: 0.8rem;">Fungi</div> |
| </div> |
| </div> |
| |
| <div class="mapa-leyenda"> |
| <h4>Regiones con mayor biodiversidad:</h4> |
| <div style="text-align: left; max-width: 300px; margin: 0 auto;"> |
| <div style="margin: 0.5rem 0;">🔹 Misiones: Selva Paranaense</div> |
| <div style="margin: 0.5rem 0;">🔹 Salta: Selvas de Yungas</div> |
| <div style="margin: 0.5rem 0;">🔹 Chubut: Ecosistema Patagónico</div> |
| <div style="margin: 0.5rem 0;">🔹 Chaco: Bosque Chaqueño</div> |
| </div> |
| </div> |
| |
| <button class="btn btn--primary" onclick="verMapaCompleto()" style="margin-top: 1rem;"> |
| Ver Mapa Completo |
| </button> |
| </div> |
| `; |
| } |
|
|
| function verMapaCompleto() { |
| alert('El mapa interactivo completo se encuentra en desarrollo. Próximamente podrás:\n\n• Ver todas las observaciones georreferenciadas\n• Filtrar por especies y regiones\n• Exportar datos de ubicaciones\n• Contribuir con nuevas coordenadas GPS'); |
| } |
|
|
| function configurarBotonesRecursos() { |
| const botones = document.querySelectorAll('.recursos .btn'); |
| const funciones = [ |
| () => alert('📚 Guías de Identificación\n\n• Mamíferos de Argentina\n• Aves Rapaces\n• Flora Nativa\n• Hongos Comestibles\n• Reptiles y Anfibios\n\nPróximamente disponibles para descarga.'), |
| () => alert('🌱 Información sobre Conservación\n\n• Estado de conservación de especies\n• Áreas protegidas de Argentina\n• Programas de conservación activos\n• Cómo contribuir a la conservación\n\nVisita nuestro portal de conservación.'), |
| () => alert('🔬 Proyectos de Investigación Activos\n\n• Monitoreo de jaguares en Misiones\n• Conservación del cóndor andino\n• Estudio de ballenas francas\n• Restauración de bosques nativos\n\n¡Únete como voluntario!'), |
| () => alert('📖 Materiales Educativos\n\n• Guías para docentes\n• Actividades para estudiantes\n• Posters de especies nativas\n• Videos educativos\n• Juegos interactivos\n\nDescarga gratuita disponible.') |
| ]; |
| |
| botones.forEach((boton, index) => { |
| if (funciones[index]) { |
| boton.onclick = funciones[index]; |
| } |
| }); |
| } |
|
|
| |
| window.votarObservacion = votarObservacion; |
| window.validarIdentificacion = validarIdentificacion; |
| window.mostrarComentarios = mostrarComentarios; |
| window.verMapaCompleto = verMapaCompleto; |
| window.limpiarFiltros = limpiarFiltros; |