-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathteste.js
More file actions
81 lines (69 loc) · 2.66 KB
/
teste.js
File metadata and controls
81 lines (69 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import getDados from "./getDados.js";
// Mapeia os elementos DOM que você deseja atualizar
const elementos = {
top5: document.querySelector('[data-name="top5"]'),
lancamentos: document.querySelector('[data-name="lancamentos"]'),
series: document.querySelector('[data-name="series"]')
};
// Função para criar a lista de filmes
function criarListaFilmes(elemento, dados) {
// Verifique se há um elemento <ul> dentro da seção
const ulExistente = elemento.querySelector('ul');
// Se um elemento <ul> já existe dentro da seção, remova-o
if (ulExistente) {
elemento.removeChild(ulExistente);
}
const ul = document.createElement('ul');
ul.className = 'lista';
const listaHTML = dados.slice(0, 5).map((filme) => `
<li>
<a href="/detalhes.html?id=${filme.id}">
<img src="${filme.poster}" alt="${filme.titulo}">
</a>
</li>
`).join('');
ul.innerHTML = listaHTML;
elemento.appendChild(ul);
}
// Função genérica para tratamento de erros
function lidarComErro(mensagemErro) {
console.error(mensagemErro);
}
function limparElementos() {
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' às seções e títulos que deseja ocultar.
categoriaSelect.addEventListener('change', async function handleMudancaCategoria() {
const categoriaSelecionada = categoriaSelect.value;
// Limpe o conteúdo atual na tela
if (categoriaSelecionada === 'todos') {
// Recarregue os dados originais
limparElementos();
} else {
limparElementos();
// Faça uma solicitação para o endpoint com a categoria selecionada
try {
const data = await getDados(`/series/categoria/${categoriaSelecionada}`);
criarListaFilmes(categoria, data);
} catch (error) {
lidarComErro("Ocorreu um erro ao carregar os dados da categoria.");
}
}
});
// Array de URLs para as solicitações
gerarSeries();
async function gerarSeries() {
const urls = ['/series/top5', '/series/lancamentos', '/series'];
try {
// Faz todas as solicitações em paralelo
const data = await Promise.all(urls.map(url => getDados(url)));
criarListaFilmes(elementos.top5, data[0]);
criarListaFilmes(elementos.lancamentos, data[1]);
criarListaFilmes(elementos.series, data[2]);
} catch (error) {
lidarComErro("Ocorreu um erro ao carregar os dados.");
}
}