1document.addEventListener('DOMContentLoaded', function () { 2 // Leer los parámetros iniciales de pgInitialParams (definidos en PHP) 3 if (typeof pgInitialParams !== 'undefined') { 4 const { tab, ficha } = pgInitialParams; 5 6 if (tab) { 7 mostrarTab(tab); 8 //console.log(`Tab inicial cargado: ${tab}`); 9 } 10 11 if (ficha) { 12 //console.log(`Cargando ficha desde la URL inicial: ${ficha}`); 13 cargarFichaPorSlug(ficha, true); // Cargar ficha desde la URL 14 } 15 } 16 17 // Actualizar la URL dinámicamente al cambiar de tab 18 const tabButtons = document.querySelectorAll('.tabs-container .tab-button'); 19 tabButtons.forEach(button => { 20 button.addEventListener('click', function () { 21 const tab = this.getAttribute('onclick').match(/mostrarTab\('(.+)'\)/)[1]; 22 const newUrl = new URL(window.location.href); 23 newUrl.searchParams.set('tab', tab); 24 newUrl.searchParams.delete('ficha'); // Eliminar cualquier ficha activa 25 window.history.pushState({}, '', newUrl); 26 //console.log(`URL actualizada: ${newUrl}`); 27 }); 28 }); 29}); 30 31// Cargar una ficha individual basada en su slug y ajustar la vista si se llama desde la URL inicial 32function cargarFichaPorSlug(slug, desdeUrl = false) { 33 mostrarPreloader(); // Mostrar el preloader mientras carga 34 fetch(pg_ajax.ajax_url, { 35 method: 'POST', 36 headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, 37 body: new URLSearchParams({ 38 action: 'cargar_vista_individual', 39 slug: slug // Usar el slug correctamente 40 }) 41 }) 42 .then(response => response.text()) 43 .then(data => { 44 ocultarPreloader(); 45 const container = document.querySelector('.personajes-container') || document.querySelector('.grupos-container'); 46 if (!container) { 47 console.error('No se encontró el contenedor para mostrar la ficha.'); 48 return; 49 } 50 container.innerHTML = data; 51 container.classList.add('single-view'); 52 //console.log(`Ficha cargada con slug: ${slug}`); 53 54 // Si se carga desde la URL inicial, ajustar la vista 55 if (desdeUrl) { 56 inicializarVistaFicha(container); 57 } 58 59 // Actualizar la URL dinámica 60 const newUrl = new URL(window.location.href); 61 newUrl.searchParams.set('ficha', slug); // Añade el parámetro 'ficha' 62 newUrl.searchParams.delete('tab'); // Eliminar cualquier parámetro 'tab' 63 window.history.replaceState({}, '', newUrl); 64 //console.log(`URL actualizada a: ${newUrl}`); 65 }) 66 .catch(error => { 67 console.error('Error al cargar la ficha:', error); 68 ocultarPreloader(); 69 }); 70} 71 72// Nueva función para ajustar la vista al cargar una ficha desde la URL inicial 73function inicializarVistaFicha(container) { 74 //console.log("Ajustando vista de ficha desde URL inicial."); 75 const searchBarContainer = document.querySelector('.search-bar-container'); 76 const cargarMasBtn = document.querySelector('.cargar-mas-btn'); 77 const fichaSidebar = container.querySelector('.ficha-sidebar .personaje-card, .ficha-sidebar .grupo-card'); 78 79 // Ocultar la barra de búsqueda 80 if (searchBarContainer) { 81 searchBarContainer.style.display = 'none'; 82 //console.log("Barra de búsqueda ocultada."); 83 } 84 85 // Ocultar el botón "Cargar Más" 86 if (cargarMasBtn) { 87 cargarMasBtn.style.display = 'none'; 88 //console.log("Botón 'Cargar Más' ocultado."); 89 } 90 91 // Asegurar que el card de la ficha esté visible 92 if (fichaSidebar) { 93 fichaSidebar.style.opacity = '1'; 94 fichaSidebar.style.display = 'block'; // Aseguramos que esté visible 95 fichaSidebar.classList.remove('hidden-opacity'); 96 //console.log("Ficha visible y ajustada."); 97 } 98 99 // Establecer el estado de la ficha como activa 100 isFichaSidebarActive = true; 101 actualizarEstadoBotonesTabs(); 102}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.