Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
3
respuestas

[Duda] Buenas tengo problemas

No he podido hacer funcionar este Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

import getDatos from "./getDatos.js";

// Mapea los elementos DOM que desea actualizar const elementos = { top5: document.querySelector('[data-name="top5"]'), lancamentos: document.querySelector('[data-name="lanzamientos"]'), series: document.querySelector('[data-name="series"]') };

// Funcion para crear la lista de peliculas function crearListaPeliculas(elemento, dados) { // Verifica si hay un elemento

  • dentro de la seccion const ulExistente = elemento.querySelector('ul');
    // Si ya existe un elemento <ul> dentro de la sección, elimínelo
    if (ulExistente) {
        elemento.removeChild(ulExistente);
    }
    
    const ul = document.createElement('ul');
    ul.className = 'lista';
    const listaHTML = dados.map((pelicula) => `
        <li>
            <a href="/detalles.html?id=${pelicula.id}">
                <img src="${pelicula.posterUrl}" alt="${pelicula.titulo}">
            </a>
        </li>
    `).join('');
    
    ul.innerHTML = listaHTML;
    elemento.appendChild(ul);
    

    }

    // Función genérica para manejo de errores. function tratarErrores(mensajeError) { console.error(mensajeError); }

    function limpiarErrores() { for (const section of sectionsParaOcultar) { section.classList.toggle('hidden') } }

    const categoriaSelect = document.querySelector('[data-categorias]'); const sectionsParaOcultar = document.querySelectorAll('.section'); // Adicione a classe CSS 'hide-when-filtered' a las seccione o títulos que desea ocultar.

    categoriaSelect.addEventListener('change', async function handleMudancaCategoria() { const categoriaSelecionada = categoriaSelect.value;

    // Limpia el contenido actual en la pantalla
    if (categoriaSelecionada === 'todos') {
        // recarga los datos originales
        limpiarErrores();
    } else {
        limpiarErrores();
        // Realizar una solicitud al punto final con la categoría seleccionada
        try {
            const data = await getDatos(`/series/categorias/${categoriaSelecionada}`);
            crearListaPeliculas(categorias, data);
        } catch (error) {
            tratarErrores("Se produjo un error al cargar los datos de la categoría..");
        }
    }
    

    });

    // Array de URLs para las solicitudes gerarSeries(); async function gerarSeries() { const urls = ['/series/top5', '/series/lanzamientos', '/series/categorias/'];

    try {
        // Hace todas las solicitudes en paralelo
        const data = await Promise.all(urls.map(url => getDatos(url)));
        crearListaPeliculas(elementos.top5, data[0]);
        crearListaPeliculas(elementos.lanzamientos, data[1]);
        crearListaPeliculas(elementos.series, data[2]);
    } catch (error) {
        tratarErrores("Se produjo un error al cargar los datos..");
    }
    

    }

3 respuestas

y esto import getdatos from "./getDatos.js";

// Mapea los elementos DOM que desea actualizar const elementos = { top5: document.querySelector('[data-name="top5"]'), lanzamientos: document.querySelector('[data-name="lanzamientos"]'), series: document.querySelector('[data-name="series"]') };

// Funcion para crear la lista de peliculas

function crearListaPeliculas(elemento, datos) { // Verifica si hay un elemento

  • dentro de la seccion const ulExistente = elemento.querySelector('ul');
    // Si un elemento <ul> ya existe dentro de la seccion, borrarlo
    if (ulExistente) {
        elemento.removeChild(ulExistente);
    }
    
    const ul = document.createElement('ul');
    ul.className = 'lista';
    const listaHTML = datos.map((pelicula) => `
        <li>
            <a href="/detalles.html?id=${pelicula.id}">
                <img src="${pelicula.posterUrl}" alt="${pelicula.titulo}">
            </a>
        </li>
    `).join('');
    
    ul.innerHTML = listaHTML;
    elemento.appendChild(ul);
    

    }

    // Funcion genérica para tratamiento de errores function tratarConErrores(mensajeError) { console.error(mensajeError); }

    const categoriaSelect = document.querySelector('[data-categorias]'); const sectionsParaOcultar = document.querySelectorAll('.section'); // Adicione a classe CSS 'hide-when-filtered' às seções e títulos que deseja ocultar.

    categoriaSelect.addEventListener('change', function () { const categoria = document.querySelector('[data-name="categorias"]'); const categoriaSeleccionada = categoriaSelect.value;

    if (categoriaSeleccionada === 'todos') {
    
        for (const section of sectionsParaOcultar) {
            section.classList.remove('hidden')
        }
        categoria.classList.add('hidden');
    
    } else {
    
        for (const section of sectionsParaOcultar) {
            section.classList.add('hidden')
        }
    
        categoria.classList.remove('hidden')
        // Haga una solicitud para el endpoint com la categoria seleccionada
        getdatos(`/series/categorias/${categoriaSeleccionada}`)
            .then(data => {
                crearListaPeliculas(categorias, data);
            })
            .catch(error => {
                tratarConErrores("Ocurrio un error al cargar los datos de la categoria.");
            });
    }
    

    });

    // Array de URLs para las solicitudes generaSeries(); function generaSeries() { const urls = ['/series/top5', '/series/lanzamientos', '/series'];

    // Hace todas las solicitudes en paralelo
    Promise.all(urls.map(url => getdatos(url)))
        .then(data => {
            crearListaPeliculas(elementos.top5, data[0]);
            crearListaPeliculas(elementos.lanzamientos, data[1]);
            crearListaPeliculas(elementos.series, data[2]);
        })
        .catch(error => {
            tratarConErrores("Ocurrio un error al cargar los datos.");
        });
    

    }

¡Hola Diego, espero que estés bien!

Entiendo que estás teniendo problemas para hacer funcionar tu API y conectarla al Front End. Por lo que puedo ver en el código que has compartido, parece que estás tratando de mapear una ruta para filtrar series por categoría.

**Ha probado el nombre del método getdatos? o sería getDatos? recuerda que el Javascript tiene sensibilidad con el mayúsculas y minúsculas de las palabras. Además, podría mostrar tu código JS del getDatos.js? **

Es posible que el problema esté en la implementación de este método en tu servicio SeriesService. Asegúrate de que estás manejando correctamente el parámetro dinámico nomeGenero y que estás realizando la consulta correspondiente en tu repositorio SerieRepository para obtener las series por categoría.

Además, parece que estás utilizando un tipo de dato Categoria que se mapea desde un string a un enum en tu aplicación. Asegúrate de que esta conversión se esté realizando correctamente.

Finalmente, parece que estás probando el filtrado por categorías en el Front End y obteniendo resultados para las diferentes categorías, lo cual es un buen indicio de que la lógica en el Back End está funcionando correctamente.

Espero que estos consejos te ayuden a solucionar tus problemas. ¡Sigue adelante y no dudes en compartir más detalles si necesitas más ayuda!

Espero haber ayudado y buenos estudios!

Gracias después de muchas lágrimas y analizar y entender el código este era el culpable: const sectionsParaOcultar = document.querySelectorAll('.section'); // Adicione a classe CSS 'hide-when-filtered' a las seccione o títulos que desea ocultar.

la solución: //const sectionsParaOcultar = document.querySelectorAll('.section'); // Adicione a classe CSS 'hide-when-filtered' a las seccione o títulos que desea ocultar. y después jajajjaja:

funciono puedo dormir en paz

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad