-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
74 lines (62 loc) · 2.27 KB
/
app.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
// Fetch data from API
let url = "https://restcountries.com/v3.1/all"
let data = []
async function getData(url) {
let response = await fetch(url)
data = await response.json()
renderDB(data)
}
getData(url)
//display countries
let countries = document.getElementById('countries')
function renderDB(data) {
let dataDB = ""
data.forEach(element => {
dataDB += `
<div class="cards" onclick="viewSingleCountry('${element.name.common}')">
<img src="${element.flags.png}" alt="${element.name.common} flag">
<div class="card-details" >
<h2>${element.name.common}</h2>
<p><span class="prop-name">Population:</span> <span class="prop-value">${element.population}</span></p>
<p><span class="prop-name">Region:</span> <span class="prop-value">${element.region}</span></p>
<p><span class="prop-name">Capital:</span> <span class="prop-value">${element.capital}</span></p>
</div>
</div>`
})
countries.innerHTML = dataDB
}
//view single countries on a separate page
function viewSingleCountry(name) {
let country = data.filter(country => country.name.common == name)
localStorage.setItem('viewCountry', JSON.stringify(country))
window.location.href = `country.html`
}
//Search feature
let searchInput = document.getElementById('search')
searchInput.addEventListener('input', () => {
let searchValue = searchInput.value.toUpperCase()
let cardsDB = document.querySelectorAll(".cards");
for(let i = 0; i < cardsDB.length; i++) {
let countryName = cardsDB[i].querySelector('h2').innerHTML
if (countryName.toUpperCase().indexOf(searchValue) > -1) {
cardsDB[i].style.display = ""
} else {
cardsDB[i].style.display = "none"
}
}
})
//filter feature
let region = document.getElementById("region")
let selectToggle = document.getElementById("select-toggle")
let selectList = document.getElementById("select-list")
//toggle filter list
selectToggle.addEventListener("click", () => {
selectList.classList.toggle("hidden")
})
let selectItems = document.querySelectorAll("#select-list li")
selectItems.forEach(region => {
region.addEventListener("click", () => {
let selectedRegion = data.filter(country => country.region == region.textContent)
renderDB(selectedRegion)
})
})