-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
235 lines (225 loc) · 8.56 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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
// DOM Manipulation
const mainScreen = document.querySelector('.main-screen')
const mainScreenInner = document.querySelector('.left-main-screen-inner')
const shinyPoke = document.querySelector('.poke-image-shiny')
const pokeNumber = document.querySelector('.poke-number')
const pokeName = document.querySelector('.poke-name')
const frontImg = document.querySelector('.front-image')
const backImg = document.querySelector('.back-image')
const frontImgShiny = document.querySelector('.front-image-shiny')
const backImgShiny = document.querySelector('.back-image-shiny')
const firstType = document.querySelector('.first-type')
const secondType = document.querySelector('.second-type')
const inputSearch = document.querySelector('.input')
const randButton = document.querySelector('.lucky-button')
const searchButton = document.querySelector('.search-button')
const hpStat = document.querySelector('.poke-hp')
const attkStat = document.querySelector('.poke-attack')
const defStat = document.querySelector('.poke-defense')
const spAttkStat = document.querySelector('.poke-spec-attack')
const spDefStat = document.querySelector('.poke-spec-defense')
const speedStat = document.querySelector('.poke-speed')
//Variables
let pokeApi = `https://pokeapi.co/api/v2/pokemon/`
let isShow = true
//Pokémon types and colors for background
let normal = '#A8A77A'
let fire = '#EE8130'
let water = '#6390F0'
let electric = '#F7D02C'
let grass = '#7AC74C'
let ice = '#96D9D6'
let fighting = '#C22E28'
let poison = '#A33EA1'
let ground = '#E2BF65'
let flying = '#A98FF3'
let psychic = '#F95587'
let bug = '#A6B91A'
let rock = '#B6A136'
let ghost = '#735797'
let dragon = '#6F35FC'
let dark = '#705746'
let steel = '#B7B7CE'
let fairy = '#D685AD'
//Function to show the hidden classes once you press a button to display info (on click in HTML)
showPoke = () => {
if (isShow) {
;(mainScreen.style.display = 'block')((shinyPoke.style.display = 'block'))
isShow = true
}
}
//Calling the API with Axios for the input
const getPokeApi = () => {
let input = inputSearch.value
axios.get(pokeApi + input).then((response) => {
displayPoke(response)
})
}
//Displaying the correct Pokémon/informaiton on the screens for input
displayPoke = (response) => {
secondType.innerHTML = ''
pokeName.innerHTML = response.data.forms[0].name
pokeNumber.innerHTML = response.data.id
frontImg.src = response.data.sprites.front_default
backImg.src = response.data.sprites.back_default
frontImgShiny.src = response.data.sprites.front_shiny
backImgShiny.src = response.data.sprites.back_shiny
hpStat.innerHTML = response.data.stats[0].base_stat
attkStat.innerHTML = response.data.stats[1].base_stat
defStat.innerHTML = response.data.stats[2].base_stat
spAttkStat.innerHTML = response.data.stats[3].base_stat
spDefStat.innerHTML = response.data.stats[4].base_stat
speedStat.innerHTML = response.data.stats[5].base_stat
firstType.innerHTML = response.data.types[0].type.name
//If statements to set the background color of the Pokédex to whatever the first type is
if (response.data.types[0].type.name === 'normal') {
mainScreenInner.style.background = normal
}
if (response.data.types[0].type.name === 'fire') {
mainScreenInner.style.backgroundColor = fire
}
if (response.data.types[0].type.name === 'water') {
mainScreenInner.style.backgroundColor = water
}
if (response.data.types[0].type.name === 'electric') {
mainScreenInner.style.backgroundColor = electric
}
if (response.data.types[0].type.name === 'grass') {
mainScreenInner.style.backgroundColor = grass
}
if (response.data.types[0].type.name === 'ice') {
mainScreenInner.style.backgroundColor = ice
}
if (response.data.types[0].type.name === 'fighting') {
mainScreenInner.style.backgroundColor = fighting
}
if (response.data.types[0].type.name === 'poison') {
mainScreenInner.style.backgroundColor = poison
}
if (response.data.types[0].type.name === 'ground') {
mainScreenInner.style.backgroundColor = ground
}
if (response.data.types[0].type.name === 'flying') {
mainScreenInner.style.backgroundColor = flying
}
if (response.data.types[0].type.name === 'psychic') {
mainScreenInner.style.backgroundColor = psychic
}
if (response.data.types[0].type.name === 'bug') {
mainScreenInner.style.backgroundColor = bug
}
if (response.data.types[0].type.name === 'rock') {
mainScreenInner.style.backgroundColor = rock
}
if (response.data.types[0].type.name === 'ghost') {
mainScreenInner.style.backgroundColor = ghost
}
if (response.data.types[0].type.name === 'dragon') {
mainScreenInner.style.backgroundColor = dragon
}
if (response.data.types[0].type.name === 'dark') {
mainScreenInner.style.backgroundColor = dark
}
if (response.data.types[0].type.name === 'steel') {
mainScreenInner.style.backgroundColor = steel
}
if (response.data.types[0].type.name === 'fairy') {
mainScreenInner.style.backgroundColor = fairy
}
secondType.innerHTML = response.data.types[1].type.name
}
//Getting the 'Feeling Chansey?' button to work
//Logic to choose a random number between 1-898 (amount of pokemon in national dex as of this project) plus API call with axios to tie it all together
const getRandPoke = () => {
let randomNum = Math.floor(Math.random() * 898)
axios.get(pokeApi + randomNum).then((response) => {
displayRandPoke(response)
})
}
//Displaying the correct Pokemon/information on the screens for the 'Feeling Chansey?' button
displayRandPoke = (response) => {
secondType.innerHTML = ''
pokeName.innerHTML = response.data.forms[0].name
pokeNumber.innerHTML = response.data.id
frontImg.src = response.data.sprites.front_default
backImg.src = response.data.sprites.back_default
frontImgShiny.src = response.data.sprites.front_shiny
backImgShiny.src = response.data.sprites.back_shiny
hpStat.innerHTML = response.data.stats[0].base_stat
attkStat.innerHTML = response.data.stats[1].base_stat
defStat.innerHTML = response.data.stats[2].base_stat
spAttkStat.innerHTML = response.data.stats[3].base_stat
spDefStat.innerHTML = response.data.stats[4].base_stat
speedStat.innerHTML = response.data.stats[5].base_stat
firstType.innerHTML = response.data.types[0].type.name
//If statements to set the background color of the Pokédex to whatever the first type is
if (response.data.types[0].type.name === 'normal') {
mainScreenInner.style.background = normal
}
if (response.data.types[0].type.name === 'fire') {
mainScreenInner.style.backgroundColor = fire
}
if (response.data.types[0].type.name === 'water') {
mainScreenInner.style.backgroundColor = water
}
if (response.data.types[0].type.name === 'electric') {
mainScreenInner.style.backgroundColor = electric
}
if (response.data.types[0].type.name === 'grass') {
mainScreenInner.style.backgroundColor = grass
}
if (response.data.types[0].type.name === 'ice') {
mainScreenInner.style.backgroundColor = ice
}
if (response.data.types[0].type.name === 'fighting') {
mainScreenInner.style.backgroundColor = fighting
}
if (response.data.types[0].type.name === 'poison') {
mainScreenInner.style.backgroundColor = poison
}
if (response.data.types[0].type.name === 'ground') {
mainScreenInner.style.backgroundColor = ground
}
if (response.data.types[0].type.name === 'flying') {
mainScreenInner.style.backgroundColor = flying
}
if (response.data.types[0].type.name === 'psychic') {
mainScreenInner.style.backgroundColor = psychic
}
if (response.data.types[0].type.name === 'bug') {
mainScreenInner.style.backgroundColor = bug
}
if (response.data.types[0].type.name === 'rock') {
mainScreenInner.style.backgroundColor = rock
}
if (response.data.types[0].type.name === 'ghost') {
mainScreenInner.style.backgroundColor = ghost
}
if (response.data.types[0].type.name === 'dragon') {
mainScreenInner.style.backgroundColor = dragon
}
if (response.data.types[0].type.name === 'dark') {
mainScreenInner.style.backgroundColor = dark
}
if (response.data.types[0].type.name === 'steel') {
mainScreenInner.style.backgroundColor = steel
}
if (response.data.types[0].type.name === 'fairy') {
mainScreenInner.style.backgroundColor = fairy
}
secondType.innerHTML = response.data.types[1].type.name
}
//Event Listeners
searchButton.addEventListener('click', getPokeApi)
//being able to press enter once you put an input to search
inputSearch.addEventListener(
'keydown',
(enter) => {
let keyCode = enter.keyCode || enter.which
if (keyCode === 13) {
getPokeApi()
}
},
false
)
randButton.addEventListener('click', getRandPoke)