-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
180 lines (144 loc) · 6.82 KB
/
script.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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
'use strict';
// objekt för globala variabler
const app =
{
länder: [],
städer: [],
besökta: [],
invånare: 0
}
// kontroll utskrift
console.log(localStorage);
// kollar om det finns något sparat i localStorage och sparar då det i arrayen
if(localStorage.getItem('id') !== null) {
app.besökta = JSON.parse(localStorage.getItem("id") || "[]");
}
// kontroll utskrift
console.log(app.besökta);
// hämtar länderna...
fetch('./land.json')
.then(resp => resp.json())
.then(data => land(data))
//...sparar i en array och anropar funktionen meny
function land(data){
for (let index = 0; index < data.length; index++) {
const element = data[index];
app.länder.unshift(element);
}
meny();
}
// hämtar städerna...
fetch('./stad.json')
.then(resp => resp.json())
.then(data => stad(data))
// ...sparar i en array
function stad(data){
for (let index = 0; index < data.length; index++) {
const element = data[index];
app.städer.push(element);
}
}
// funktion som renderar huvudmeyn...
function meny() {
// variabel för städer sorterade efter land
let stadLand = [];
let landNamn = "";
let landID = "";
// loopar igenom länderna och skriver ut huvudmenyn...
for (let index = 0; index < app.länder.length; index++) {
const land = app.länder[index];
landID = land.id;
landNamn = land.countryname;
document.getElementById('landMeny').innerHTML += `<li ><button id="`+landID+`">`+landNamn+`</button></li>`;
}
// ...och meny valet för "mina resmål"
document.getElementById('besöktMeny').innerHTML += `<li><button id="visited">Mina resmål</button></li>`;
// tömmer eventuellt tidigare innehåll och visar instruktioner.
document.getElementById('footer').innerHTML = "";
document.getElementById('content').innerHTML = `<h2>Välj först land sedan stad i menyerna.<br />Klicka på "besökt" om du vill spara.<br />Du hittar sparade resmål under menyvalet "Mina resmål"<br /> för att radera klickar du på "rensa"</h2>`;
// fångar upp klick på "mina resmål"
let visaStäder = document.getElementById('visited');
visaStäder.addEventListener('click', function() {
// tömmer eventuellt tidigare innehåll
document.getElementById('stadInfo').innerHTML = "";
document.getElementById('footer').innerHTML = "";
// div med lista för besökta städer + rubrik
document.getElementById('content').innerHTML =`<div id="besökta"><ul></ul></div>`;
document.getElementById('besökta').insertAdjacentHTML('beforebegin', `<h2>Du har besökt följande städer</h2>`)
// loopar igenom arrayen med sparade stad id
for (let index = 0; index < app.besökta.length; index++) {
const element = app.besökta[index];
// letar upp det matchande objektet
let staden = app.städer.find(a => a.id == element);
// sparar och adderar antalet invånare
app.invånare += staden.population;
// skriver ut listan av städer
document.getElementById('besökta').innerHTML += `<li>`+staden.stadname+`</li>`;
}
// kontrollutskrift
console.log(app.invånare);
// skriver ut resultatet på uträkningen
document.getElementById('besökta').insertAdjacentHTML('afterend', `<h2>Du har haft möjligheten att träffa<br /> `+app.invånare+`<br />människor på dina resmål!</h2>`);
// nollställer uträkningen
app.invånare = 0;
// skriver ut och fångar upp klick på rensa knappen
document.getElementById('footer').innerHTML = `<li ><button id="rensa">Rensa</button></li>`;
let rensaMinnet = document.getElementById('rensa');
rensaMinnet.addEventListener('click', function() {
// tömmer localstorage och nollställer arrayen
localStorage.clear();
app.besökta = [];
// tömmer eventuellt tidigare innehåll
document.getElementById('content').innerHTML = "";
document.getElementById('footer').innerHTML = "";
// skriver ut meddelande om att minnet är rensat
document.getElementById('content').innerHTML = `<h2>Minnet är tömt!</h2>`
});
});
// fångar upp klick på land,
let landMeny = document.getElementById('landMeny');
landMeny.addEventListener('click', function(event) {
// tömmer eventuellt tidigare innehåll
document.getElementById('content').innerHTML = "";
document.getElementById('stadInfo').innerHTML ="";
document.getElementById('footer').innerHTML = "";
// fångar upp id på klickat land
landID = event.target.id;
// letar upp landet för att spara landsnamnet
let landet = app.länder.find(a => a.id == landID);
landNamn = landet.countryname;
// filtrerar fram städer som tillhör valde landet
stadLand = app.städer.filter(a => a.countryid == landID);
// loopar igenom de filtrerade städerna
for (let index = 0; index < stadLand.length; index++) {
const stad = stadLand[index];
let stadID = stad.id;
let stadNamn = stad.stadname;
// skriver ut undermenyn med städer
document.getElementById('content').innerHTML += `<li><button id="`+stadID+`">`+stadNamn+`</button></li>`;
}
// fångar upp klick på stad
let stadMeny = document.getElementById('content');
stadMeny.addEventListener('click', function(event) {
// fångar upp id på klickad stad
let stadID = event.target.id;
// letar upp staden för att spara namnet och antalet invånare
const stad = stadLand.find(a => a.id == stadID);
let namn = stad.stadname;
let invånare = stad.population;
// skriver ut informationen om staden + besökt knappen
document.getElementById('stadInfo').innerHTML = `<div id="stad"><p>`+namn+` är en stad i `+landNamn+` här bor `+invånare+` invånare.</p></div><div class="flex-container"><button id="spara">Besökt</button></div>`;
// fångar klick på besökt knapp
const spara = document.getElementById('spara');
spara.addEventListener('click', function() {
// sparar stadens id i arrayen...
app.besökta.push(stadID);
// ...och i localstorage
localStorage.setItem("id", JSON.stringify(app.besökta));
// kontrollutskrift
console.log('localS', localStorage);
console.log('besökta', app.besökta);
});
});
});
}