-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
132 lines (107 loc) · 4.22 KB
/
Copy pathscript.js
File metadata and controls
132 lines (107 loc) · 4.22 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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
document.addEventListener('DOMContentLoaded', function () {
let productsContainer = document.querySelector('.products');
let produtos = [];
async function fetchProducts() {
try {
let response = await fetch('https://fakestoreapi.com/products');
produtos = await response.json();
localStorage.setItem('products', JSON.stringify(produtos));
renderizarProdutos(produtos);
atualizarFiltroCategorias(obterCategorias(produtos));
} catch (error) {
console.log('Erro ao buscar os produtos:', error);
}
}
function renderizarProdutos(produtos) {
productsContainer.innerHTML = '';
produtos.forEach(function (produto) {
let description = produto.description;
let card = document.createElement('div');
card.classList.add('card', 'col-md-3', 'mb-4', 'h-100');
card.innerHTML = `
<div class="card" style="width: 100%;height:100%;margin: 10px;">
<img src="${produto.image}" class="product-image" alt="..." style="width:200px">
<div class="card-body">
<h2 class="product-title">${produto.title}</h2>
<h4 class="product-category">${produto.category}</h4>
<p class="product-description">${description.length > 80 ? description.substring(0, 80).concat('...more') : description}</p>
<h6 class="product-price">$${produto.price}</h6>
<a href="detalhes.html?id=${produto.id}" class="btn btn-primary">Detalhes</a>
</div>
</div>
`;
productsContainer.appendChild(card);
});
}
fetchProducts();
let filtro = document.getElementById('filtro');
let inputPesquisa = document.getElementById('pesquisa');
let btnFiltrar = document.getElementById('btn-filtrar');
let btnPesquisar = document.getElementById('btn-pesquisar');
btnFiltrar.addEventListener('click', function () {
let categoriaSelecionada = filtro.value;
filtrarProdutos(categoriaSelecionada);
});
btnPesquisar.addEventListener('click', function () {
let categoriaPesquisada = inputPesquisa.value.trim().toLowerCase();
filtrarProdutos(categoriaPesquisada);
});
function filtrarProdutos(categoria) {
let produtosFiltrados = [];
if (categoria === 'todos') {
produtosFiltrados = produtos;
} else {
produtosFiltrados = produtos.filter(function (produto) {
return produto.category.toLowerCase() === categoria.toLowerCase();
});
}
localStorage.setItem('pesquisa', JSON.stringify(produtosFiltrados));
window.location.href = 'pesquisa.html';
}
function atualizarFiltroCategorias(categorias) {
filtro.innerHTML = '';
let optionTodos = document.createElement('option');
optionTodos.value = 'todos';
optionTodos.text = 'Todos';
filtro.appendChild(optionTodos);
categorias.forEach(function (categoria) {
let option = document.createElement('option');
option.value = categoria;
option.text = categoria;
filtro.appendChild(option);
});
}
function obterCategorias(produtos) {
let categorias = [];
produtos.forEach(function (produto) {
if (!categorias.includes(produto.category)) {
categorias.push(produto.category);
}
});
return categorias;
}
});
document.addEventListener('DOMContentLoaded', function () {
let productImage = document.getElementById('productImage');
let productTitle = document.getElementById('productTitle');
let productPrice = document.getElementById('productPrice');
let productDescription = document.getElementById('productDescription');
let btnVoltar = document.getElementById('btnVoltar');
let urlParams = new URLSearchParams(window.location.search);
let productId = urlParams.get('id');
let produtos = JSON.parse(localStorage.getItem('products'));
let produto = produtos.find(function (produto) {
return produto.id === parseInt(productId);
});
if (produto) {
productImage.src = produto.image;
productTitle.textContent = produto.title;
productPrice.textContent = produto.price;
productDescription.textContent = produto.description;
} else {
productTitle.textContent = 'Produto não encontrado.';
}
btnVoltar.addEventListener('click', function () {
window.location.href = 'index.html';
});
});