En este proyecto se contruyó una página web de pokemones para visualizar un conjunto (set) de datos generado con ChatGPT.
La página web permite visualizar la data, filtrarla, ordenarla y calcular estadística por tipo de pokemon y realizar la busqueda de algun pokemon en particular. La interfaz es sencilla haciendo que el uso de la aplicación sea intuitiva y fácil de usar.
visualizar la data, filtrarla, ordenarla y calcular alguna estadística.
[ x ] Las funcionalidades de ordenar deben operar sobre la data filtrada. Por ejemplo, si filtro los pokemones de tipo fuego y luego los ordeno por nombre ascendentemente, la aplicación deberá mantener el filtro aplicado y ordenar los pokemones de tipo fuego.
[ x ] La aplicación debe permitir a la usuaria reiniciar la aplicación, limpiando
filtros y ordenamiento, con un <button> con un atributo de datos
data-testid="button-clear".
[ x ] Las operaciones de filtrar, ordenar, limpiar, etc. no deben recargar la página, si no que deben agregar el contenido en una manera dinámica via javascript.
[ x ] La aplicación será responsive, es decir, debe visualizarse sin problemas desde distintos tamaños de pantallas: móviles, tablets y desktops.
***-
Uso de HTML semántico
- [ x ] Tiene un
<header>con<h1> - [ x ] Tiene un
<footer> - [ x ] Tiene un
<main>con<h2> - [ x ] Todas las etiquetas de controles (inputs, selects, radio, etc) tienen
<label> - [ x ]
<ul>esta usado para dibujar la data - [ x ] Los hijos de
<li>usan attributos de microdataitemscopeeitemprop
- [ x ] Tiene un
-
Uso de selectores de CSS
- [ x ] Uso de selector class para los items
- [ x ] Uso de flexbox en sentido
rowycolumn - [ x ] Uso de flexbox para el elemento que contiene los items
- [ x ] Uso de flexbox para el elemento que contiene los UI inputs
-
Uso de selectores del DOM
- [ x ] La aplicación usa
querySelectorpara buscar los elementos del DOM
- [ x ] La aplicación usa
-
Manejo de eventos del DOM (listeners, propagación, delegación)
- [ x ]
addEventListenercon callback que tiene parámetro deevent, lo que permite el uso del objetoeventconevent.targetoevent.currentTarget - [ x ] La aplicación registra Event Listeners
para escuchar
click,change,keyupdependiendo del evento que se quiere escuchar
- [ x ]
-
Manipulación dinámica del DOM
- [ x ] La aplicación actualiza el atributo
innerHTML. - [ x ] La aplicación usa
createElementyappendChild, o template strings para crear elementos
- [ x ] La aplicación actualiza el atributo
-
Variables (declaración, asignación, ámbito)
-
Uso de condicionales (if-else, switch, operador ternario, lógica booleana)
- [ x ] La aplicación usa el statement
if..elsepara evaluar condiciones
- [ x ] La aplicación usa el statement
-
Uso de bucles/ciclos (while, for, for..of)
-
Funciones (params, args, return)
En el archivo
dataFunctions.jsdefine las siguientes funciones:- [ x ] una función
sortByque tiene 3 parámetros (data,sortBy,sortOrder) y devuelve el arreglo ordenado - [ x ] una función
filterByque tiene 3 parámetros (data,filterBy,value) y devuelve el arreglo filtrado - [ x ] una función
computeStatsque tiene al menos un parámetro (data) y devuelve un valor computado
Más sobre estos puntos en la sección dataFunctions.js
- [ x ] una función
-
Arrays (arreglos)
- [ x ] Uso de Arreglos
- [ x ] Uso de Array.prototype.sort() - MDN o Array.prototype.toSorted - MDN
- [ x ] Uso de Array.prototype.forEach() - MDN
- [ x ] Uso de Array.prototype.map() - MDN
- [ x ] Uso de Array.prototype.filter() - MDN
- Uso de Array.prototype.reduce() - MDN
-
Objetos
- [ x ] Uso de notación de punto para acceder propiedades
- [ x ] Uso de notación de brackets para acceder propiedades
-
Módulos de ECMAScript (ES Modules)
La estructura de cada objeto de nuestro data es la siguiente:
-
id: Identificador único, el id es un string de no más de 32 characteres, en minúscula, compuesto solo por letras, números, underscore (_) o guión (-). -
name: El nombre de los pokemones. -
type: Un objeto que tiene 2 propiedadestypeNameytypeImage.typeName-> muestra un a un arreglo con los nombres de los tipos de pokemon,typeImage-> muestra un array de las imagenes de los tipos de pokemones. -
image: URL de la imagen del pokemon. -
weaknesses: Un objeto que tiene 2 propiedadesweaknessesNameyweaknessesImage.weaknessesName-> muestra un arreglo con los nombres de las debilidades de los pokemones,weaknessesImage-> muestra un array de las imagenes de las debilidades de los pokemones. -
baseStats: Un objeto con al menos 4 , en formato"nombre": "valor", por ejemplo:"baseStats": { "hp": "40", "attack": "80", "defense": "35", "speed": "70", }
-
height: La altura del pokemón. -
category: La categoria del pokemón. -
ability: La abilidad del pokemón. -
weight: El peso del pokemón.Los valores de las propiedades, son tipo
number,booleano unstring,objetoyarray.
La data final de nuestro proyecto, según los requisitos anteriores es la siguiente:
export default [
{
id: "6",
name: "Charizard",
type: {
typeName: ["Fire", "Flying"],
typeImage: ["./assets/fuego.png", "./assets/volador.png"],
},
image: "./assets/Charizard.png",
weaknesses: {
weaknessesName: ["Water", "Electric", "Rock"],
weaknessesImage: [
"./assets/agua.png",
"./assets/electrico.png",
"./assets/roca.png",
],
},
baseStats: {
hp: "78",
attack: "84",
defense: "78",
speed: "100",
},
height: "1.7",
category: "Flame",
ability: "Blaze",
weight: "90.5",
},
//... 23 objetos más
];Prototipo Móvil
Prototipo Web
Reflexiona y luego marca los objetivos que has llegado a entender y aplicar en tu proyecto. Piensa en eso al decidir tu estrategia de trabajo.
-
[ x ] Uso de HTML semántico
-
[ x ] Uso de selectores de CSS
-
[ x ] Modelo de caja (box model): borde, margen, padding
-
[ x ] Uso de flexbox en CSS
-
[ x ] Uso de selectores del DOM
-
[ x ] Manejo de eventos del DOM (listeners, propagación, delegación)
-
[ x ] Manipulación dinámica del DOM
-
[ x ] Diferenciar entre tipos de datos primitivos y no primitivos
-
[ x ] Arrays (arreglos)
-
[ x ] Objetos (key, value)
-
[ x ] Variables (declaración, asignación, ámbito)
-
[ x ] Uso de condicionales (if-else, switch, operador ternario, lógica booleana)
-
[ x ] Uso de bucles/ciclos (while, for, for..of)
-
[ x ] Funciones (params, args, return)
-
Pruebas unitarias (unit tests)
-
[ x ] Módulos de ECMAScript (ES Modules)
-
[ x ] Uso de linter (ESLINT)
-
[ x ] Uso de identificadores descriptivos (Nomenclatura y Semántica)
-
[ x ] Diferenciar entre expresiones (expressions) y sentencias (statements)
-
[ x ] Git: Instalación y configuración
-
[ x ] Git: Control de versiones con git (init, clone, add, commit, status, push, pull, remote)
-
[ x ] Git: Integración de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag)
-
[ x ] GitHub: Creación de cuenta y repos, configuración de llaves SSH
-
GitHub: Despliegue con GitHub Pages
-
[ x ] GitHub: Colaboración en Github (branches | forks | pull requests | code review | tags)
- [ x ] Diseñar y desarrollar un producto o servicio poniendo a las usuarias en el centro
-
[ x ] Crear prototipos de alta fidelidad que incluyan interacciones
-
[ x ] Seguir los principios básicos de diseño visual
-
[ x ] Planear y ejecutar testeos de usabilidad de prototipos en distintos niveles de fidelidad
-
[ x ] Dando Instrucciones
-
[ x ] Few shot prompting
- Git
- GitHub
- GitHub Pages
- [Mozilla]
- [https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach]
- [https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/map]
- [https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce]
- [https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/sort]
- [Trello][https://trello.com/b/iP4j4Jfu/dataverse-pokemones]
- [Figma][https://www.figma.com/file/twg4MrXgEyAfpr7BHI7aYH/Data-Pokemon?type=design&node-id=0-1&mode=design&t=xSH2aC8qhrQSdYBp-0]
- Node.js
- Jest
- [Chart][https://www.chartjs.org/docs/latest/]















