Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
e88ae69
Visualizacion de las cartas
noriegaby Aug 9, 2023
8b5a4a2
MODIFICACION DEL BOTON
noriegaby Aug 9, 2023
e62117d
cambios de css
noriegaby Aug 9, 2023
26123ec
prueba para cambios
LauraBeGa Aug 10, 2023
77c1b7d
2da prueba de cambios
noriegaby Aug 10, 2023
b95dbee
Cambios despues de Github
noriegaby Aug 15, 2023
05eab80
filtro, se muestra la informacion correcta
noriegaby Aug 16, 2023
ac4ec01
cambios en rama Gaby
noriegaby Aug 16, 2023
784b062
ultima recuperacion de cambios
noriegaby Aug 16, 2023
09fe13b
cambios pokemon.html e index.html
noriegaby Aug 16, 2023
04cfced
cambios de main.js
noriegaby Aug 16, 2023
097cbab
cambios en css
noriegaby Aug 16, 2023
c6f91a5
cambios en data.js
noriegaby Aug 16, 2023
cdb243f
borrador para borrar
LauraBeGa Aug 17, 2023
95f7539
buscar por nombre
noriegaby Aug 17, 2023
8bf51ca
filtro por nombre con type
noriegaby Aug 17, 2023
111aa0c
filtros asce-desce
noriegaby Aug 18, 2023
87ec970
cambios de css de Lau
noriegaby Aug 23, 2023
6c854fe
Acomodo de los filtros y se agrega el de numeros
noriegaby Aug 23, 2023
a48fcb4
calculo y mejor orden en los botones e input
noriegaby Aug 23, 2023
31c034c
test y cobertura 100 de funciones
noriegaby Aug 24, 2023
981b5a3
responsive
noriegaby Aug 30, 2023
ffabed4
test y responsive
noriegaby Aug 30, 2023
cb55966
cambios para pasar los test
noriegaby Aug 30, 2023
ea0e0b2
recuperacion de imagen en index
noriegaby Sep 4, 2023
346712c
commit final
LauraBeGa Sep 4, 2023
38c51c0
agregando el readme
noriegaby Sep 4, 2023
662daa4
Guardar cambios locales en src/data.js
noriegaby Sep 4, 2023
fbbc4e7
commit final rama laura
LauraBeGa Sep 5, 2023
a16f151
commit final
LauraBeGa Sep 5, 2023
31df981
recuperacion de informacion
noriegaby Sep 5, 2023
2c049f5
#commit final laura
LauraBeGa Sep 5, 2023
a3482e0
commit para fusionar a main
noriegaby Sep 5, 2023
dc2252d
Actualizar rama main con cambios remotos
noriegaby Sep 5, 2023
2c8d680
ultimo ajuste README
LauraBeGa Sep 5, 2023
5fc4850
readme
noriegaby Sep 5, 2023
e0a32e5
Readme rama laura
LauraBeGa Sep 5, 2023
8f3e8cc
cambios ortograficos al readme
noriegaby Sep 5, 2023
26a75d1
cargando imagenes para readme
noriegaby Sep 5, 2023
fbe0a27
imagenes readme
noriegaby Sep 5, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added 7-Objetivos-de-aprendizaje
Empty file.
673 changes: 67 additions & 606 deletions README.md

Large diffs are not rendered by default.

7,550 changes: 7,550 additions & 0 deletions package-lock.json

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@
"eslint": "^8.3.0",
"gh-pages": "^3.1.0",
"htmlhint": "^1.0.0",
"jest": "^27.0.1",
"jest": "^27.5.1",
"opener": "^1.5.1",
"serve": "^13.0.2"
"serve": "^14.2.0"
},
"engines": {
"node": ">=16.x"
Expand All @@ -31,4 +31,4 @@
"version": "6.4.0",
"commit": "4ea26447e1a259476f237a7a6212e3a02409910b"
}
}
}
50 changes: 44 additions & 6 deletions src/data.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,47 @@
// estas funciones son de ejemplo

export const example = () => {
return 'example';
};
function filterPokemonsByType(pokemons, type) {
return pokemons.filter(pokemon => pokemon.type.includes(type));
} // funcion para el primer filtro por tipo de pokemon

function filterPokemonsByName(pokemons, name) {
return pokemons.filter(pokemon => pokemon.name.toLowerCase().includes(name.toLowerCase()));
}
function generateQuickMoveNames(quickMoves) {
return quickMoves.map(move => move.name).join(', ');
}// extraer el nombre del string del objeto del atributo quick moves

function generateResistantList(resistantTypes) {
return resistantTypes.join(', ');
} // extraer resistencia del objeto

export const anotherExample = () => {
return 'OMG';
function generateWeaknessesList(weaknessesTypes) {
return weaknessesTypes.join(', ');

//extraer debilidad del objeto
}
function sortPokemonsByNameAscending(pokemons) {
return pokemons.slice().sort((a, b) => a.name.localeCompare(b.name));
}
function sortPokemonsByNameDescending(pokemons) {
return pokemons.slice().sort((a, b) => a.name.localeCompare(b.name)).reverse();
}
function sortPokemonsByNumberAscending(pokemons) {
return pokemons.slice().sort((a, b) => parseInt(a.num) - parseInt(b.num));
}
function calculateAverageAttack(pokemons) {
const totalAttack = pokemons.reduce((sum, pokemon) => sum + parseInt(pokemon.stats["base-attack"]), 0);
return totalAttack / pokemons.length;
}

export {
filterPokemonsByName,
filterPokemonsByType,
generateQuickMoveNames,
generateResistantList,
generateWeaknessesList,
sortPokemonsByNameAscending,
sortPokemonsByNameDescending,
sortPokemonsByNumberAscending,
calculateAverageAttack,
};

Binary file added src/data/pokemon/Readme/Imagen3.1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/Imagen4.1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/Logo-Pokemon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/Trello.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/inerfaz 3.2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/interfaz 2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/interfaz 3,3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/interfaz 3.3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/interfaz 3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/interfaz 5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/interfaz.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/poke 1.1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/poke 1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/poke 2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/poke 3.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/poke 4.1.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/poke 4.2.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/poke 4.3.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/poke 4.4.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/poke 4.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/poke 5.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/responci.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/test.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/data/pokemon/Readme/test1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 16 additions & 9 deletions src/index.html
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Data Lovers</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div id="root"></div>
<script src="main.js" type="module"></script>
</body>
<head>
<meta charset="utf-8">
<title>Data Lovers</title>
<link rel="stylesheet" href="style.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<img src="https://1000marcas.net/wp-content/uploads/2020/01/Logo-Pokemon.png" alt="Logo de Pokémon"id="pokemon1">
<div class="container">
<form class="form" action="pokemon.html">
<button id="boton" name="info" class="image-button"></button>
</form>
<img src="https://www.megaidea.net/wp-content/uploads/2021/08/Pokemon30.png" alt="Imagen de pokemones" id="imaPokemonInicio">
</div>
<div id="root"></div>
</body>
</html>
156 changes: 151 additions & 5 deletions src/main.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,152 @@
import { example } from './data.js';
// import data from './data/lol/lol.js';
import data from './data/pokemon/pokemon.js';
// import data from './data/rickandmorty/rickandmorty.js';
import {
filterPokemonsByName,
filterPokemonsByType,
generateQuickMoveNames,
generateResistantList,
generateWeaknessesList,
sortPokemonsByNameAscending,
sortPokemonsByNameDescending,
sortPokemonsByNumberAscending,
calculateAverageAttack,

} from "./data.js";

console.log(example, data);
import pokemonData from "./data/pokemon/pokemon.js";

// Obtiene los datos de los pokémones
const pokemons = pokemonData.pokemon;

// Genera una tarjeta HTML para un Pokémon dado
function generatePokemonCard(pokemon) {

const card = document.createElement("div");
card.classList.add("card");

// Genera listas de movimientos, resistencias y debilidades
const quickMoveNames = generateQuickMoveNames(pokemon["quick-move"]);
const resistantList = generateResistantList(pokemon.resistant);
const weaknessesList = generateWeaknessesList(pokemon.weaknesses);

// Llena la tarjeta con información del Pokémon
card.innerHTML = `
<img src="${pokemon.img}" alt="${pokemon.name}">
<h3>#${pokemon.num}</h3>
<h2>${pokemon.name}</h2>
<div class="additional-info">
<p1>About: ${pokemon.about}</p1> <br> <br><hr>
<p2>Rarity: ${pokemon["pokemon-rarity"]}</p2><br><br>
<p3>Type: ${pokemon.type.join(", ")}</p3><br><br>
<p4>${pokemon.generation.num}</p4><br><br>
<p5>Quick move: ${quickMoveNames}</p5><br><br>
<p6>Resistant: ${resistantList}</p6><br><br>
<p7>Weaknesses: ${weaknessesList}</p7><br><br>
<p8>Attack: ${pokemon.stats["base-attack"]}</p8><br><br>
<p8>Defense: ${pokemon.stats["base-defense"]}</p8>
</div>
`;

return card;
}

function showPokemons(selectedType, nameFilter, sortedPokemons, sortedPokemons2, sortedPokemonsByNumber) {
const pokemonContainer = document.getElementById("pokemon-container");
const averageAttackElement = document.getElementById("average-attack"); // Nuevo elemento para mostrar el promedio
pokemonContainer.innerHTML = ""; // Limpia el contenedor antes de agregar tarjetas

let filteredPokemons = [...pokemons]; // Crear una copia de pokemons para no modificar la lista original

if (nameFilter) {
// Filtrar por nombre si se escribe
filteredPokemons = filterPokemonsByName(filteredPokemons, nameFilter);
}

if (selectedType !== "") {
// Filtrar por tipo si se selecciona un tipo
filteredPokemons = filterPokemonsByType(filteredPokemons, selectedType);

// Calcular el promedio de ataque de los pokémones filtrados por tipo
const averageAttack = calculateAverageAttack(filteredPokemons);
averageAttackElement.textContent = `Average Attack: ${averageAttack.toFixed(2)}`;
} else {
averageAttackElement.textContent = "Average Attack: ";
}

if (sortedPokemons) {
// Ordenar por nombre ascendente si el botón de orden ascendente está activo
filteredPokemons = sortPokemonsByNameAscending(filteredPokemons);
}

if (sortedPokemons2) {
// Ordenar por nombre descendente si el botón de orden descendente está activo
filteredPokemons = sortPokemonsByNameDescending(filteredPokemons);
}

if (sortedPokemonsByNumber) {
// Ordenar por número ascendente si el botón de orden ascendente por número está activo
filteredPokemons = sortPokemonsByNumberAscending(filteredPokemons);
}

// Mostrar los pokémones filtrados y ordenados
for (const pokemon of filteredPokemons) {
const card = generatePokemonCard(pokemon);
pokemonContainer.appendChild(card);
}
}

const typeSelect = document.getElementById("type-select");
const nameInput = document.getElementById("name-input");
const ascendButton = document.getElementById("ascend-button");
const descendButton = document.getElementById("descend-button");
const ascendNumberButton = document.getElementById("ascend-number-button");


// Agrega un evento para detectar cambios en la selección de tipos
typeSelect.addEventListener("change", (event) => {
const selectedType = event.target.value;
const nameFilter = nameInput.value;
const sortedPokemons = sortPokemonsByNameAscending(pokemons);
const sortedPokemons2 = sortPokemonsByNameDescending(pokemons);
showPokemons(selectedType, nameFilter,sortedPokemons, sortedPokemons2);
});

// Agregar evento para detectar cambios en el campo de nombre
nameInput.addEventListener("input", () => {
const selectedType = typeSelect.value;
const nameFilter = nameInput.value;
const sortedPokemons = ascendButton.classList.contains("active"); // Verificar si el botón de orden ascendente está activo
const sortedPokemons2 = descendButton.classList.contains("active"); // Verificar si el botón de orden descendente está activo
showPokemons(selectedType, nameFilter, sortedPokemons, sortedPokemons2);
});

// Agregar evento para el botón "Ascendente"
ascendButton.addEventListener("click", () => {
const selectedType = typeSelect.value;
const nameFilter = nameInput.value;
const sortedPokemons = true; // Establecer orden ascendente
const sortedPokemons2 = false; // Establecer orden descendente a falso
showPokemons(selectedType, nameFilter, sortedPokemons, sortedPokemons2);

});

// Agregar evento para el botón "Descendente"
descendButton.addEventListener("click", () => {
const selectedType = typeSelect.value;
const nameFilter = nameInput.value;
const sortedPokemons = false; // Establecer orden ascendente a falso
const sortedPokemons2 = true; // Establecer orden descendente
showPokemons(selectedType, nameFilter, sortedPokemons, sortedPokemons2);

});
// Agregar evento para el botón "Ascendente" por número
ascendNumberButton.addEventListener("click", () => {
const selectedType = typeSelect.value;
const nameFilter = nameInput.value;
const sortedPokemons = false; // Establecer orden ascendente por nombre a falso
const sortedPokemons2 = false; // Establecer orden descendente por nombre a falso
const sortedPokemonsByNumber = true; // Establecer orden ascendente por número
showPokemons(selectedType, nameFilter, sortedPokemons, sortedPokemons2, sortedPokemonsByNumber);

});

// Mostrar todos los pokémones al cargar la página inicialmente
showPokemons("", "", false, false); // Mostrar todos los pokémones al principio
64 changes: 64 additions & 0 deletions src/pokemon.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Data Lovers</title>
<link rel="stylesheet" href="style.css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
<img
src="https://1000marcas.net/wp-content/uploads/2020/01/Logo-Pokemon.png"
alt="Logo de Pokémon"
id="pokemon2"
/>
<main>
<div class="filter-container">
<div class="input-container">
<div class="input-row">
<select id="type-select">
<option value="">Type</option>
<option value="bug">Bug</option>
<option value="dark">Dark</option>
<option value="dragon">Dragon</option>
<option value="electric">Electric</option>
<option value="fairy">Fairy</option>
<option value="fighting">Fighting</option>
<option value="fire">Fire</option>
<option value="flying">Flying</option>
<option value="ghost">Ghost</option>
<option value="grass">Grass</option>
<option value="ground">Ground</option>
<option value="ice">Ice</option>
<option value="normal">Normal</option>
<option value="poison">Poison</option>
<option value="psychic">Psychic</option>
<option value="rock">Rock</option>
<option value="steel">Steel</option>
<option value="water">Water</option>
</select>
<p id="average-attack">Average Attack:</p>
<input
type="text"
id="name-input"
placeholder="Enter Pokemon name..."
/>
</div>
<div class="button-container">
<button id="ascend-button">A - Z</button>
<button id="descend-button">Z - A</button>
<button id="ascend-number-button">1 - 251</button>
</div>
</div>
</div>
<div class="container">
<form class="form" action="index.html">
<button id="boton1" name="info" class="imagen-button2"></button>
</form>
</div>
<div id="pokemon-container" class="card-container"></div>
<script src="main.js" type="module"></script>
</main>
</body>
</html>

Loading