diff --git a/src/data.js b/src/data.js index 214e5603..c17342b0 100644 --- a/src/data.js +++ b/src/data.js @@ -12,11 +12,81 @@ export function filtradoWeakness(valor) { return pkmWeak; } -/* export function filterStrength(valor) { - if(valor === '') - const pkmWeak = POKEMON.filter((pkm) => (pkm.weaknesses.includes(valor))); - return pkmWeak; -} */ +export function filterStrength(valor) { + if (valor === 'Grass') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Flying' || 'Fire' || 'Ice' || 'Bug' || 'Poison'))); + return pkmStg; + } + if (valor === 'Poison') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Psychic' || 'Ground'))); + return pkmStg; + } + if (valor === 'Fire') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Ground' || 'water' || 'Rock'))); + return pkmStg; + } + if (valor === 'Ice') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Fighting' || 'Rock' || 'Steel' || 'Fire'))); + return pkmStg; + } + if (valor === 'Flying') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Rock' || 'Ice' || 'Electric'))); + return pkmStg; + } + if (valor === 'Psychic') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Bug' || 'Ghost' || 'Dark'))); + return pkmStg; + } + if (valor === 'Water') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Grass' || 'Electric'))); + return pkmStg; + } + if (valor === 'Ground') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Water' || 'Grass' || 'Ice'))); + return pkmStg; + } + if (valor === 'Rock') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Water' || 'Grass' || 'Steel' || 'Fighting' || 'Ground'))); + return pkmStg; + } + if (valor === 'Electric') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Ground'))); + return pkmStg; + } + if (valor === 'Bug') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Flying' || 'Fire' || 'Rock'))); + return pkmStg; + } + if (valor === 'Normal') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Fighting'))); + return pkmStg; + } + if (valor === 'Fighting') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Flying' || 'Psychic' || 'Fairy'))); + return pkmStg; + } + if (valor === 'Ghost') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Ghost' || 'Dark'))); + return pkmStg; + } + if (valor === 'Dark') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Fighting' || 'Bug' || 'Fairy'))); + return pkmStg; + } + if (valor === 'Steel') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Ground' || 'Fighting'))); + return pkmStg; + } + if (valor === 'Dragon') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Dragon' || 'Fairy' || 'Ice'))); + return pkmStg; + } + if (valor === 'Fairy') { + const pkmStg = POKEMON.filter((pkm) => (pkm.type.includes('Poison' || 'Steel'))); + return pkmStg; + } + return filterStrength; +} // sort by numero decreciente export function sortBy(dato) { @@ -25,18 +95,18 @@ export function sortBy(dato) { return numOrder; } if (dato === 'aToZ') { - const azOrder = POKEMON.sort((a, b) => { + POKEMON.sort((a, b) => { if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } - return azOrder; + return sortBy; }); } if (dato === 'ZtoA') { - const zaOrder = POKEMON.sort((a, b) => { + POKEMON.sort((a, b) => { if (b.name < a.name) { return -1; } if (b.name > a.name) { return 1; } - return zaOrder; + return sortBy; }); } - + return sortBy; } diff --git a/src/main.js b/src/main.js index a1f63f69..1b586fbf 100644 --- a/src/main.js +++ b/src/main.js @@ -1,5 +1,7 @@ import POKEMON from './data/pokemon/pokemon.js'; -import { filtradoTypo, filtradoWeakness, sortBy } from './data.js'; +import { + filtradoTypo, filtradoWeakness, filterStrength, sortBy, +} from './data.js'; /* muestra los objetos */ const main = document.getElementById('all'); @@ -7,7 +9,7 @@ const overlay = document.getElementById('overlay'); const fortaleza = ['Ground', 'Rock', 'water']; function createCard(data) { - for (let i = 0; i < data.length; i + 1) { + for (let i = 0; i < data.length; i += 1) { const newBtn = document.createElement('button'); newBtn.setAttribute('class', 'indPkm'); newBtn.setAttribute('name', data[i].name); @@ -32,7 +34,7 @@ function createCard(data) { createCard(POKEMON); function createOverCard(data) { - for (let i = 0; i < data.length; i + 1) { + for (let i = 0; i < data.length; i += 1) { const divOne = document.createElement('div'); divOne.setAttribute('class', 'contImg'); divOne.setAttribute('id', data[i].id); @@ -83,7 +85,7 @@ document.querySelectorAll('.typeOption button').forEach((elemento) => { }); }); -// Filtrado por Debilidad +// Filtrado "Debil contra" document.querySelectorAll('.typeWeakness button').forEach((elemento) => { elemento.addEventListener('click', () => { @@ -94,6 +96,17 @@ document.querySelectorAll('.typeWeakness button').forEach((elemento) => { }); }); +// filtrado "Fuerte contra" + +document.querySelectorAll('.typeStrength button').forEach((elemento) => { + elemento.addEventListener('click', () => { + const valor = elemento.value; + main.innerHTML = ''; + const pkmStg = filterStrength(valor); + createCard(pkmStg); + }); +}); + // listener para las imagenes para overlay document.querySelectorAll('#all .indPkm').forEach((elemento) => { elemento.addEventListener('click', () => { diff --git a/test/data.spec.js b/test/data.spec.js index b5ad8093..43081247 100644 --- a/test/data.spec.js +++ b/test/data.spec.js @@ -44,9 +44,9 @@ describe('data-lover', () => { sortBy('aToZ'); expect(POKEMON[4].name).toBe('Arcanine'); }); - it('debería retornar "Ratata" para sortPkm[35].name con Orden de la Z a la A', () => { + it('debería retornar "Rattata" para sortPkm[35].name con Orden de la Z a la A', () => { sortBy('ZtoA'); - expect(POKEMON[35].name).toBe('Ratata'); + expect(POKEMON[35].name).toBe('Rattata'); }); }); });