generated from ICEI-PUC-Minas-PMV-ADS/WebApplicationProject-Template-v2
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathcatalogo.js
115 lines (91 loc) · 3.55 KB
/
catalogo.js
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
function fetchData(url) {
return fetch(url)
.then(response => response.json())
.catch(error => {
console.error('Erro ao carregar o JSON:', error);
throw error;
});
}
function createCards(artigos) {
const catalogoList = document.querySelector('.catalogoList');
artigos.forEach((artigo, index) => {
const catalogoItem = document.createElement('div')
catalogoItem.className = 'catalogoItem';
catalogoItem.id = `item ${artigo.id}`;
catalogoItem.dataset.keywords = artigo.keywords.join('').toLowerCase();
const catalogoImgDiv = document.createElement('div');
catalogoImgDiv.className = 'catalogoImg';
const catalogoImg = document.createElement('img');
catalogoImg.src = artigo.capa;
catalogoImg.alt = artigo.titulo;
catalogoImgDiv.appendChild(catalogoImg);
const catalogoTitleDiv = document.createElement('div');
catalogoTitleDiv.className = 'catalogoTitle';
const catalogoTitle = document.createElement('h6')
catalogoTitle.innerHTML = artigo.titulo;
catalogoTitleDiv.appendChild(catalogoTitle);
catalogoItem.appendChild(catalogoImgDiv);
catalogoItem.appendChild(catalogoTitleDiv);
catalogoItem.addEventListener('click', () => {
window.location.href = `pagArtigos.html?artigoIndex=${index}`;
});
catalogoList.appendChild(catalogoItem);
});
}
function artigosFiltros(filtro) {
const catalogoItems = document.querySelectorAll('.catalogoItem');
catalogoItems.forEach(item => {
const keywords = item.dataset.keywords;
const match = keywords.includes(filtro.toLowerCase());
if (match) {
item.style.display = 'block';
} else {
item.style.display = 'none';
}
});
}
function searchInArticles(searchTerm) {
const catalogoItems = document.querySelectorAll('.catalogoItem');
const lowerCaseSearchTerm = searchTerm.toLowerCase().trim();
catalogoItems.forEach(item => {
const keywords = item.dataset.keywords;
const title = item.querySelector('.catalogoTitle').textContent.toLowerCase();
const keywordsMatch = keywords.includes(lowerCaseSearchTerm);
const titleMatch = title.includes(lowerCaseSearchTerm);
if (keywordsMatch || titleMatch) {
item.style.display = 'block';
} else {
item.style.display = 'none';
}
});
}
function limparFiltro() {
const catalogoItems = document.querySelectorAll('.catalogoItem');
catalogoItems.forEach(item => {
item.style.display = 'block';
});
}
function init() {
fetchData('../Gersons/artigos.json')
.then(data => {
const artigos = data.artigo;
createCards(artigos);
const filtrosBtn = document.querySelectorAll('.filterBtn');
filtrosBtn.forEach(button => {
button.addEventListener('click', () => {
const filtro = button.getAttribute('data-filter');
artigosFiltros(filtro);
});
});
const limparBtn = document.querySelector('.clearFilter');
limparBtn.addEventListener('click', () => {
limparFiltro();
});
const searchInput = document.getElementById('searchInput');
searchInput.addEventListener('input', () => {
const searchTerm = searchInput.value;
searchInArticles(searchTerm);
});
});
}
init();