diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6f3a291 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} \ No newline at end of file diff --git a/README.md b/README.md index 554e57c..801accf 100644 --- a/README.md +++ b/README.md @@ -1,475 +1,27 @@ -# Data Lovers +# El mundo de Harry Potter -## Índice +Esta pagina esta enfocada en usuarios que conocen las peliculas de Harry Potter y quieren conocer mas informacion sobre sus personajes favoritos. En nuestra plataforma podran conocer a los personjes y sus caracteristicas, ademas de una seccion de patronus y varitas de cada personajes. -* [1. Preámbulo](#1-preámbulo) -* [2. Resumen del proyecto](#2-resumen-del-proyecto) -* [3. Objetivos de aprendizaje](#3-objetivos-de-aprendizaje) -* [4. Consideraciones generales](#4-consideraciones-generales) -* [5. Criterios de aceptación mínimos del proyecto](#5-criterios-de-aceptación-mínimos-del-proyecto) -* [6. Parte adicional-opcional](#6-parte-adicional-opcional) -* [7. Consideraciones técnicas](#7-consideraciones-técnicas) -* [8. Pistas, tips y lecturas complementarias](#8-pistas-tips-y-lecturas-complementarias) -* [9. Checklist](#9-checklist) +La problemática encontrada fue que en las peliculas no existe tanto detalle sobre cada personaje ni hay alguna plataforma de facil acceso que entregue informacion de manera didactica y facil de los personajes. +Nuestro diseño se baso en que fuera una pagina fluida, llamativa y facil de usar, ademas con una paleta de colores y una fuente que hace alusion al mundo de la magia. -*** +Historis de usuario: +Para relaizar nuestras historias de usuario entrevistamos 4 personas expectadoras de la saga de Harry potter, y preguntamos que les gustaria ver en una pagina que muestre informacion sobre los personajes. Estas entrevistas se realizarn a traves de audios de whatsapp y se recopiló los datos mas importantes. En resumen, a los usuarios les gustaria poder visualizar a todos los personajes principales y su informacion basica, tambien filtros que facilicitara la busqueda personajes en la plataforma , los filtros mas requeridos fueron de casas , alumno profesor , poder ordenar los personajes y poder buscarlos mediante de un buscador dinamico, poe otro lado tambien nos afirmaron que les gustaria ver imagenes claras y llamativas de cada varitas y patronus de los personajes, ya que no tenian nocion visual de cada uno. -## 1. Preámbulo +Nuestras historias de usuario las dividimos de la siguiente forma: +- **Primera historia de usuario**: Mostrar a todos los personajes con imagenes y su informacion. +- **Segunda historia de usuario**: Filtrar por casas y rol (alumnos y profesor) +- **Tercera historia de usuario**: Mostrar varitas y patronus de los personjes con sus imagenes respectivamente. +- **Cuarta historia de usuario**: Ordenar de forma alfabetica los personajes. +- **Quinta historia de usuario**: Buscador de personajes. -Según [Forbes](https://www.forbes.com/sites/bernardmarr/2018/05/21/how-much-data-do-we-create-every-day-the-mind-blowing-stats-everyone-should-read), -el 90% de la data que existe hoy ha sido creada durante los últimos dos años. -Cada día generamos 2.5 millones de terabytes de datos, una cifra sin -precedentes. +Nuestro primer prototipo fue diseñado de manera simple cubriendo las necesdades del usuario como se muestra a continuacion. + +
+Luego se diseño un prototipo de alta fidelidad donde se le dio estilo y aplico paleta de colores de harry potter ademas d e la fuente que se utilizaria y orden de nuestra pagina.
+ -No obstante, los datos por sí mismos son de poca utilidad. Para que esas -grandes cantidades de datos se conviertan en **información** fácil de leer para -los usuarios, necesitamos entender y procesar estos datos. Una manera simple de -hacerlo es creando _interfaces_ y _visualizaciones_. +Con estos prototipos se realizaron test de usabilidad mediante "https://maze.design/" donde 5 personas respondieron y realizaronn el test , la infomacion recopilada se encuentra en el siguiente link: "https://maze.design/projects/11107173/mazes/11107199/results" donde las respuestas en general fueron positivas. -En la siguiente imagen, podrás ver cómo con la data que que se ve en la parte -izquierda se puede construir una interfaz amigable y entendible por el usuario -al lado derecho. +Los problemas encontrados a travez de feedback de compañeras y usuarios fueron sobre la usabilidad , el usuario al ingresar no sabia muy bien que enia que hacer , por lo que se implemento cajas de texto que le indicaba al usuario que debia hacer, como hacer click en las imagenes. Otro problema enocntrado fue que al pasar a varitas y patronus el usuario no se podia devolver a personajes , por lo ue se implemento un boton que retorna todos lo personajes nuevamente. Los demas feedback fueron de uso de colores , en un ppricipio todos los colores eran oscuros , asi que se realizo otra paleta de colores con colores mas claros. -![json-interfaz](https://lh4.googleusercontent.com/Tn-RPXS26pVvOTdUzRT1KVaJ-_QbFs9SpcGLxSPE43fgbHaXtFgMUInuDt7kV41DkT1j8Tt29V0LxQW7SMtC6digOIhfTXSBKdwI08wUwhD3RAqlwy0hjfmhZ2BFe91mtmCSEqysfgk) - -## 2. Resumen del proyecto - -En este proyecto **construirás una _página web_ para visualizar un -_conjunto (set) de datos_** que se adecúe a lo que descubras que tu usuario -necesita. - -Como entregable final tendrás una página web que permita a los usuarios -**visualizar, filtrar, ordenar, etc.**. - -Te proponemos una serie de datos de diferentes _temáticas_ para que los -explores y decidas con cuál te interesa trabajar. Cada _set_ de datos viene con -información básica sobre los datos y su estructura, y una lista de las -necesidades de los usuarios que proviene de una investigación (_research_) -hecha por el equipo de Laboratoria. - -Una vez que elijas, diseña tu proyecto intentando ofrecerle la mejor experiencia -posible para ayudarle a satisfacer sus necesidades. - -Estos son datos que te proponemos: - -* [Pokémon](src/data/pokemon/pokemon.json): - En este set encontrarás una lista con los 151 Pokémon de la región de Kanto, junto con sus respectivas estadísticas usadas en el juego - [Pokémon GO](http://pokemongolive.com). - - [Investigación con jugadores de Pokémon Go](src/data/pokemon/README.md) - -* [League of Legends - Challenger leaderboard](src/data/lol/lol.json): - Este set de datos muestra la lista de campeones en una liga del - juego League of Legends (LoL). - - [Investigación con jugadores de LoL](src/data/lol/README.md) - -* [Harry Potter](src/data/potter/potter.json). - Este set de datos muestra la lista de los personajes del mundo de [Harry Potter: Wizards Unite](https://www.wizardingworld.com/), junto con sus respectivas características mencionadas en la serie de novelas de Harry Potter escrita por la autora británica J.K.Rowling. - - [Investigación con jugadores de Harry Potter: Wizards Unite](src/data/potter/README.md) - -## 3. Objetivos de aprendizaje - -El objetivo principal de este proyecto es que, entendiendo las necesidades de tus usuarios, aprendas a diseñar y construir una interfaz web donde se pueda visualizar y manipular data. - -Revisa la lista y reflexiona sobre los objetivos que conseguiste en el proyecto anterior. Piensa en eso al decidir tu estrategia de trabajo individual y de equipo. - -### UX -- [ ] Diseñar la aplicación pensando y entendiendo al usuario. -- [ ] Crear prototipos para obtener feedback e iterar. -- [ ] Aplicar los principios de diseño visual (contraste, alineación, jerarquía). -- [ ] Planear y ejecutar tests de usabilidad. - -### HTML y CSS -- [ ] Entender y reconocer por qué es importante el HTML semántico. -- [ ] Identificar y entender tipos de selectores en CSS. -- [ ] Entender como funciona `flexbox` en CSS. -- [ ] Construir tu aplicación respetando el diseño planeado (maquetación). - -### DOM -- [ ] Entender y reconocer los selectores del DOM (querySelector | querySelectorAll). -- [ ] Manejar eventos del DOM. (addEventListener) -- [ ] Manipular dinámicamente el DOM. (createElement, appendchild, innerHTML, value) - -### Javascript -- [ ] Manipular arrays (`filter` | `map` | `sort` | `reduce`). -- [ ] Manipular objects (key | value). -- [ ] Entender el uso de condicionales (`if-else` | `switch`). -- [ ] Entender el uso de bucles (`for` | `forEach`). -- [ ] Entender la diferencia entre expression y statements. -- [ ] Utilizar funciones (parámetros | argumentos | valor de retorno). -- [ ] Entender la diferencia entre tipos de datos atómicos y estructurados. -- [ ] Utilizar ES Modules (`import` | `export`). - -### Pruebas Unitarias (_testing_) -- [ ] Testear funciones (funciones puras). - -### Git y GitHub -- [ ] Ejecutar comandos de git (`add` | `commit` | `pull` | `status` | `push`). -- [ ] Utilizar los repositorios de GitHub (`clone` | `fork` | gh-pages). -- [ ] Colaborar en Github (pull requests). - -### Buenas prácticas de desarrollo -- [ ] Organizar y dividir el código en módulos (Modularización). -- [ ] Utilizar identificadores descriptivos (Nomenclatura | Semántica). -- [ ] Utilizar linter para seguir buenas prácticas (ESLINT). - -### Soft skills -- [ ] **Planificación, organización y manejo del tiempo** Organizarse utilizando historias de usuario, haciendo una estimación general de los tiempos que se necesitarán para la realización del proyecto. Conocer las ceremonias y artefactos ágiles (sprint planning, dailys, retrospectiva, tablero al menos, etc) a pesar de que no se utilicen con regularidad. - -- [ ] **Trabajo en equipo** Trabajar con otros de forma colaborativa y en base a un objetivo común, entregando ideas para la construcción del proyecto - -- [ ] **Autoaprendizaje** Demostrar interés y adquirir nuevos conocimientos autónomamente, estudiando de manera independiente, lo que se traduce, en que cuando es necesario, la estudiante buscará aclarar conceptos y resolver dudas sobre la materia. - -- [ ] **Presentaciones** Utilizar ciertas estrategias para hablar en público (tono y ritmo de voz adecuado, contacto visual con el público, interacción con medios de presentación), que permitan asegurar un mediano entendimiento de la audiencia. - -- [ ] **Adaptabilidad** Afrontar los cambios inesperados o nuevos desafíos con una actitud positiva, aunque no necesariamente se logre accionar o adaptarse de la mejor manera a los diferentes contextos. - -- [ ] **Solución de problemas** Trabajar en la búsqueda y en la elaboración de soluciones alternativas a problemas de mediana complejidad. - -- [ ] **Responsabilidad** Demostrar actitud de compromiso, reflejandolo en la entrega de trabajo a tiempo, llegando a la hora acordada y/o avisando cuando no se pueda asistir. - -- [ ] **Dar y recibir feedback** Escuchar los comentarios y críticas de los demás de manera respetuosa, y/o comunicar a los demás las opiniones de forma constructiva. - -- [ ] **Comunicación eficaz** Comunicar ideas a los demás cuando es necesario, aunque no siempre se fomenten de manera proactiva estas instancias de comunicación. - -## 4. Consideraciones generales - -* Este proyecto se debe resolver en duplas. -* El proyecto será entregado subiendo tu código a GitHub (`commit`/`push`) y la - interfaz será desplegada usando [GitHub Pages](https://pages.github.com/). -* Tiempo para completarlo: Toma como referencia 3 semanas (15 días hábiles). - -## 5. Criterios de aceptación mínimos del proyecto - -Los criterios para considerar que has completado este proyecto son: - -### Definición del producto - -Documenta brevemente tu trabajo en el archivo `README.md` de tu repositorio, -contándonos cómo fue tu proceso de diseño y cómo crees que el producto resuelve -el problema (o problemas) que tiene tu usuario. - -### Historias de usuario - -Una vez que entiendas las necesidades de tus usuarios, escribe las [Historias -de Usuario](https://es.wikipedia.org/wiki/Historias_de_usuario) que representen -todo lo que el usuario necesita hacer/ver. Las **Historias de Usuario** deben -ser el resultado de tu proceso de investigación o _research_ de tus usuarios. - -Asegúrate de incluir la definición de terminado (_definition of done_) y los -Criterios de Aceptación para cada una. - -En la medida de lo posible, termina una historia de usuario antes de pasar -a la siguiente (Cumple con Definición de Terminado + Criterios de Aceptación). - -### Diseño de la Interfaz de Usuario - -#### Prototipo de baja fidelidad - -Durante tu trabajo deberás haber hecho e iterado bocetos (_sketches_) de tu -solución usando papel y lápiz. Te recomendamos tomar fotos de todas las -iteraciones que hagas, que las subas a tu repositorio y las menciones en tu -`README.md`. - -#### Prototipo de alta fidelidad - -Lo siguiente es diseñar tu Interfaz de Usuario (UI por sus siglas en inglés - -_User Interface_). Para eso debes aprender a utilizar alguna herramienta de -diseño visual. Nosotros te recomendamos [Figma](https://www.figma.com/) que es -una herramienta que funciona en el navegador y, además, puedes crear una cuenta -gratis. Sin embargo, eres libre de utilizar otros editores gráficos como -Illustrator, Photoshop, PowerPoint, Keynote, etc. Recuerda utilizar la -[identidad gráfica](https://drive.google.com/open?id=1eeWFqrWpy-OYOH4EHDckFGunyrm9iNeE) -correspondiente a cada set de datos que elijas. - -El diseño debe representar el _ideal_ de tu solución. Digamos que es lo que -desearías implementar si tuvieras tiempo ilimitado para trabajar. Además, tu -diseño debe seguir los fundamentos de _visual design_. - -#### Testeos de usabilidad - -Durante el reto deberás hacer _tests_ de usabilidad con distintos usuarios, y -en base a los resultados, deberás iterar tus diseños. Cuéntanos -qué problemas de usabilidad detectaste a través de los _tests_ y cómo los -mejoraste en tu propuesta final. - -### Implementación de la Interfaz de Usuario (HTML/CSS/JS) - -Luego de diseñar tu interfaz de usuario deberás trabajar en su implementación. -**No** es necesario que construyas la interfaz exactamente como la diseñaste. -Tu tiempo de hacking es escaso, así que deberás priorizar - -Como mínimo, tu implementación debe: - -1. Mostrar la data en una interfaz: puede ser un card, una tabla, una lista, - etc. -2. Permitir al usuario interactuar para obtener la infomación que necesita. -3. Ser _responsive_, es decir, debe visualizarse sin problemas desde distintos - tamaños de pantallas: móviles, tablets y desktops. -4. Que la interfaz siga los fundamentos de _visual design_. - -### Pruebas unitarias - -El _boilerplate_ de este proyecto no incluye Pruebas Unitarias (_tests_), así es -que tendrás que escribirlas tú para las funciones encargadas de _procesar_, -_filtrar_ y _ordenar_ la data, así como _calcular_ estadísticas. - -Tus _pruebas unitarias_ deben dar una cobertura del 70% de _statements_ -(_sentencias_), _functions_ (_funciones_), _lines_ (_líneas_), y _branches_ -(_ramas_) del archivo `src/data.js` que contenga tus funciones y está detallado -en la sección de [Consideraciones técnicas](#srcdatajs). - -## 6. Parte adicional-opcional - -Si **terminaste** con todo lo anterior y te queda tiempo, intenta explorar y -completar parte o todo de lo siguiente. Así podrás -profundizar y/o ejercitar más sobre los objetivos de aprendizaje del proyecto. - -Features/características extra sugeridas: - -* En lugar de consumir la data estática brindada en este repositorio, puedes - consumir la data de forma dinámica, cargando un archivo JSON por medio de - `fetch`. La carpeta `src/data` contiene una versión `.js` y una `.json` de - de cada set datos. - -* Agregarle a tu interfaz de usuario implementada visualizaciones gráficas. Para - ello te recomendamos explorar librerías de gráficas como - [Chart.js](https://www.chartjs.org/) - o [Google Charts](https://developers.google.com/chart/). - -* 100% Coverage de pruebas unitarias. - -## 7. Consideraciones técnicas - -La lógica del proyecto debe estar implementada completamente en JavaScript -(ES6), HTML y CSS. En este proyecto NO está permitido usar librerías o -frameworks, solo [vanilla JavaScript](https://medium.com/laboratoria-how-to/vanillajs-vs-jquery-31e623bbd46e), -con la excepción de librerías para hacer gráficas (charts); ver -[_Parte opcional_](#6-hacker-edition) más arriba. - -No se debe utilizar la _pseudo-variable_ `this`. - -El _boilerplate_ contiene una estructura de archivos como punto de partida así -como toda la configuración de dependencias: - -```text -. -├── EXTRA.md -├── README.md -├── package.json -├── src -| ├── data (según con qué data trabajes) -| | ├── lol -| | | ├── lol.js -| | | ├── lol.json -| | | └── README.md -| | ├── pokemon -| | | ├── pokemon.js -| | | ├── pokemon.json -| | | └── README.md -| | └── potter -| | ├── potter.js -| | └── potter.json -| | └── README.md -| ├── data.js -| ├── index.html -| ├── main.js -| └── style.css -└── test - └── data.spec.js - -directory: 6 file: 17 -``` - -### `src/index.html` - -Como en el proyecto anterior, existe un archivo `index.html`. Como ya sabes, -acá va la página que se mostrará al usuario. También nos sirve para indicar -qué scripts se usarán y unir todo lo que hemos hecho. - -Encontrarás 1 etiqueta inicial, la cual si deseas puedes borrar y empezar de cero: - -``` -
-``` - -### `src/main.js` - -Acá escribirás todo el código que tenga que ver con la interacción del DOM -(seleccionar, actualizar y manipular elementos del DOM y eventos). Es decir, -en este archivo deberás invocar a tus funciones exportadas en el boilerplate, -según sea necesario para realizar operaciones como creación de nodos, -registro de manejadores de eventos (_event listeners_ o _event handlers_), .... - -En este archivo encontrarás una serie de _sentencias_ `import` -_comentadas_. Para _cargar_ las diferentes fuentes de datos tendrás que -_descomentar_ estas _sentencias_. Cada una de estas sentencias importará un -objeto, el cual ya se encuentra exportado en el boilerplate. Este objeto -contiene la data correspondiente a esa fuente de datos. - -Por ejemplo, si "descomentamos" la siguiente línea: - -```js -// import data from './data/pokemon/pokemon.js'; -``` - -La línea quedaría así: - -```js -import data from './data/pokemon/pokemon.js'; -``` - -Y ahora tendríamos la variable `data` disponible en el script `src/main.js`. - -### `src/data.js` - -El corazón de este proyecto es la manipulación de datos a través de arreglos -y objetos. - -Te recomendamos que este archivo contenga toda la funcionalidad que corresponda -a obtener, procesar y manipular datos (tus funciones). Por ejemplo: - -* `filterData(data, condition)`: esta función `filter` o filtrar recibiría la - data, y nos retornaría aquellos datos que sí cumplan con la condición. - -* `sortData(data, sortBy, sortOrder)`: esta función `sort` u ordenar - recibe tres parámetros. - El primer parámetro, `data`, nos entrega los datos. - El segundo parámetro, `sortBy`, nos dice con respecto a cuál de los campos de - la data se quiere ordenar. - El tercer parámetro, `sortOrder`, indica si se quiere ordenar de manera - ascendente o descendente. - -* Y así sucesivamente, según tu proyecto en particular. - -Estos nombres de funciones y de parámetros son solamente referenciales, lo que -decidas depende de tu propia implementación. - -Estas funciones deben ser [_puras_](https://medium.com/laboratoria-developers/introducci%C3%B3n-a-la-programaci%C3%B3n-funcional-en-javascript-parte-2-funciones-puras-b99e08c2895d) -e independientes del DOM. Estas funciones serán después usadas desde el archivo -`src/main.js`, al cargar la página, y cada vez que el usuario interactúe (click, -filtrado, ordenado, ...). - -### `src/data` - -En esta carpeta están los datos de las diferentes fuentes. Encontrarás una -carpeta por cada fuente, y dentro de cada carpeta dos archivos: uno con la -extensión `.js` y otro `.json`. Ambos archivos contienen la misma data; la -diferencia es que el `.js` lo usaremos a través de una etiqueta ` - - + + + + + + Potter Data + + + + + + + +
+ +
+

Bienvenidos al mundo de
Harry Potter

+

¡Busca tu personaje favorito!
+ Escoge una casa , varita y patronus.

+ +
+
+
+ +
+ + + + +
+ + +
+ + + + + + + + \ No newline at end of file diff --git a/src/main.js b/src/main.js index 71c59f2..22625bf 100644 --- a/src/main.js +++ b/src/main.js @@ -1,6 +1,324 @@ -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 data from './data/potter/potter.js'; +import { + filterDataHouse, + filterDataEstudiante, + filterDataProfesor, + filterDataVarita, + filterDataPatronus, + filterDataOtros, + buscador, + orden + +} from "./data.js"; -console.log(example, data); +//Traer data a un const +const datos = data; +// Map para recorrer y traer cada uno de los datos +const pintarPersonajes = (personajes) => { + document.getElementById("tarjetas").innerHTML = ""; + document.getElementById("varitas").innerHTML = ""; + document.getElementById("mostrarPatronus").innerHTML = ""; + personajes.map(dato => { + //Crear div contenedor , y luego colocar nombre de un id y class + var newDiv = document.createElement("div"); + newDiv.setAttribute('id', 'contenido'); + newDiv.setAttribute('class', 'contenido'); + //traer dato del nombre del personaje y colocar el ombre de una clase + const personaje = document.createElement('p'); + personaje.setAttribute('class', 'nombre'); + personaje.innerHTML = dato.name; + //console.log(divNombrePersonaje) + newDiv.appendChild(personaje) + // Traer imagen crear etiqueta img + const imagenPersonaje = document.createElement('img'); + imagenPersonaje.setAttribute('src', dato.image); + imagenPersonaje.setAttribute('class', 'imagePersonaje'); + //console.log(imagenPersonaje) + newDiv.appendChild(imagenPersonaje) + // para que se visualice en el id de la segunda pagina + document.getElementById("tarjetas").appendChild(newDiv) + + //MODAL + newDiv.addEventListener("click", () => { + const divcontenedor = document.createElement("div"); + divcontenedor.setAttribute("id", "contenedorM"); + divcontenedor.setAttribute("class", "contenedorM"); + //modal imagen + const contenedorimg = document.createElement("div"); + contenedorimg.setAttribute("id", "contenedorimg"); + contenedorimg.setAttribute("class", "contenedorimg"); + divcontenedor.appendChild(contenedorimg) + + //foto de la casa + const divModal = document.createElement("img"); + divModal.setAttribute("src", dato.houseImage); + divModal.setAttribute("class", "modal") + contenedorimg.appendChild(divModal) + + //foto personaje + const foto = document.createElement("img"); + foto.setAttribute("src", dato.image); + foto.setAttribute("class", "foto") + contenedorimg.appendChild(foto); + + // Salir + const span = document.createElement('span'); + span.setAttribute('id', 'close'); + span.setAttribute('class', 'close'); + span.innerHTML = '×'; + contenedorimg.appendChild(span) + // escritura P + const parrafo = document.createElement('p'); + parrafo.setAttribute('id', 'parrafo'); + + // llenando las caracterisiticas + const arrayCaracteristicas = [ + `Nombre: ${dato.name}
+ Casa: ${dato.house}
+ Especie: ${dato.species}
+ Fecha de nacimiento: ${dato.dateOfBirth}
+ Ascendencia: ${dato.ancestry}
+ Color de ojos: ${dato.eyeColour}
+ Color de cabello: ${dato.hairColour}
+ Actor: ${dato.actor}`, + ]; + parrafo.innerHTML = arrayCaracteristicas; + contenedorimg.appendChild(parrafo) + //mostrar en pantalla + document.getElementById("tarjetas").appendChild(divcontenedor); + //funcion cerrar y abrir modal + divcontenedor.classList.add("contenedorMActivo"); + span.addEventListener('click', () => { + divcontenedor.classList.remove("contenedorMActivo"); + + }) + }) + }) +} +const encabezadoPersonajes=()=>{ + document.getElementById("encabezadoPersonajes").style.display = "none"; + document.getElementById("rol").style.display = "none"; + document.getElementById("ordenar").style.display = "none"; + document.getElementById("contenedorBusqueda").style.display = "none"; + document.getElementById("tituloPersonajes").style.display = "none"; + + +} +//Varitas +const pintarVaritas = (varitaPersonaje) => { + varitaPersonaje.map(dato => { + const varitaPersonaje = document.getElementById("vari"); + varitaPersonaje.addEventListener('click', () => { + + document.getElementById("tarjetas").innerHTML = ""; + document.getElementById("mostrarPatronus").innerHTML = ""; + + + const divVarita = document.createElement("div"); + divVarita.setAttribute("id", "contenedorVarita"); + divVarita.setAttribute("class", "contenedorVarita"); + const varitas = document.createElement('p'); + varitas.setAttribute('class', 'varitas'); + varitas.innerHTML = `Madera: ${dato.wand.wood}
+
Nucleo: ${dato.wand.core}
+
Largo: ${dato.wand.length}
+
Portador: ${dato.name}`; + divVarita.appendChild(varitas) + const divImgVaritas = document.createElement("div"); + divImgVaritas.setAttribute("id", "divimgVaritas"); + divVarita.appendChild(divImgVaritas) + const varitaImagen = document.createElement("img"); + varitaImagen.setAttribute("src", dato.wandImage); + varitaImagen.setAttribute("id", "imagenVarita") + divImgVaritas.appendChild(varitaImagen); + document.getElementById("varitas").appendChild(divVarita); + + encabezadoPersonajes(); + document.getElementById("encabezadoPatronus").style.display = "none"; + document.getElementById("tituloPatronus").style.display = "none"; + document.getElementById("tituloVaritas").style.display = "block"; + document.getElementById("encabezadoVaritas").style.display = "block"; + + + }) + + }) + +} + +//pintar patronus +const pintarPatronus = (patronusPersonaje) => { + patronusPersonaje.map(dato => { + const patronusPersonaje = document.getElementById("patro"); + patronusPersonaje.addEventListener('click', () => { + document.getElementById("tarjetas").innerHTML = ""; + document.getElementById("varitas").innerHTML = ""; + + const divPatronus = document.createElement("div"); + divPatronus.setAttribute("id", "contenedorPatronus"); + divPatronus.setAttribute("class", "contenedorPatronus"); + const patronus = document.createElement('p'); + patronus.setAttribute('class', 'patronusP'); + patronus.innerHTML = ` Patronus : ${dato.patronus}
+
Creador: ${dato.name}`; + divPatronus.appendChild(patronus); + const divImagenPatronus = document.createElement("div"); + divImagenPatronus.setAttribute("id", "contenedorImagen"); + divPatronus.appendChild(divImagenPatronus); + const imagenPatronus = document.createElement("img"); + imagenPatronus.setAttribute("src", dato.patronusImage) + imagenPatronus.setAttribute("id", "imagenPatronus"); + divImagenPatronus.appendChild(imagenPatronus); + document.getElementById("mostrarPatronus").appendChild(divPatronus); + + encabezadoPersonajes(); + document.getElementById("tituloVaritas").style.display = "none"; + document.getElementById("encabezadoVaritas").style.display = "none"; + document.getElementById("tituloPatronus").style.display = "block"; + document.getElementById("encabezadoPatronus").style.display = "block"; + + }) + }) +} +pintarPersonajes(datos) +//seleccionar casas +const titulos= () =>{ document.getElementById("encabezadoPersonajes").style.display = "block"; + document.getElementById("tituloPersonajes").style.display = "block"; + document.getElementById("encabezadoVaritas").style.display = "none"; + document.getElementById("tituloVaritas").style.display = "none"; + document.getElementById("encabezadoPatronus").style.display = "none"; + document.getElementById("tituloPatronus").style.display = "none"}; + +const selectGry = document.getElementById("Gryffindor"); +selectGry.addEventListener("click", (event) => { + let resultGry = filterDataHouse(data, "Gryffindor"); + titulos(); + event.preventDefault(); + pintarPersonajes(resultGry) + +}); + +const selectSly = document.getElementById("Slytherin"); +selectSly.addEventListener("click", (event) => { + let resultSly = filterDataHouse(data, "Slytherin"); + titulos(); + event.preventDefault(); + pintarPersonajes(resultSly) + +}); +const selectHuff = document.getElementById("Hufflepuff"); +selectHuff.addEventListener("click", (event) => { + let resultHuff = filterDataHouse(data, "Hufflepuff"); + titulos(); + event.preventDefault(); + pintarPersonajes(resultHuff) + +}); +const selectRev = document.getElementById("Ravenclaw"); +selectRev.addEventListener("click", (event) => { + let resultRev = filterDataHouse(data, "Ravenclaw"); + titulos(); + event.preventDefault(); + pintarPersonajes(resultRev) + +}); +const selectAll = document.getElementById("Todos"); +selectAll.addEventListener("click", (event) => { + document.getElementById("rol").style.display = "block"; + document.getElementById("ordenar").style.display = "block"; + document.getElementById("contenedorBusqueda").style.display = "block"; + titulos(); + event.preventDefault(); + pintarPersonajes(datos) + +}); + +//seleccionar Rol +const selectRol = document.getElementById("rol"); +selectRol.addEventListener("change", () => { + let guardarRol = selectRol.options[selectRol.selectedIndex].value; + let resultEstudiante = filterDataEstudiante(data, guardarRol); + let resultProfesor = filterDataProfesor(data, guardarRol); + let resultOtros = filterDataOtros(data, guardarRol); + + if (guardarRol === "alumnos") { + pintarPersonajes(resultEstudiante) + } + if (guardarRol === "profesor") { + pintarPersonajes(resultProfesor) + } else if (guardarRol === "otros") { + pintarPersonajes(resultOtros) + } + +}) + +//filter patronus +let resultadoPatronus = filterDataPatronus(data); +pintarPatronus(resultadoPatronus); +//filter Varitas +let resultVarita = filterDataVarita(data); +pintarVaritas(resultVarita) + +//ORDEN +let ordenar = document.getElementById("ordenar"); +ordenar.addEventListener("change", () => { + let guardarOrden = ordenar.options[ordenar.selectedIndex].value; + let resultOrden= orden(data, guardarOrden); + + if (guardarOrden === "a") { + pintarPersonajes(resultOrden) + + } else if(guardarOrden==="d"){ + pintarPersonajes(resultOrden.reverse()) + } + +}) + +//buscador +var botonBuscar = document.getElementById("name-example"); +botonBuscar.addEventListener("keydown", (event) => { + if (event.keyCode === 13) { + event.preventDefault(); + document.getElementById("buscar").click(); + } + + var nombre = document.getElementById("name-example").value; + var buscado = buscador(data,nombre) + pintarPersonajes(buscado) +}) + + +//recargar +var botonRecargar=document.getElementById("recargar"); +botonRecargar.addEventListener("click", (event) => { + event.preventDefault(); + pintarPersonajes(datos) +}) + +//musica +var botonAudio =document.getElementById("ingresar"); +botonAudio.addEventListener("click", () =>{ + var audio = new Audio('./img/HP.mp3') ; + audio.play(); + audio.volume = 0.6; +}) + +//ocultar y mostrar +document.getElementById("portada").style.display = "block"; +document.getElementById("footer").style.display = "block"; +document.getElementById("pag2").style.display = "none"; +document.getElementById("encabezadoVaritas").style.display = "none"; +document.getElementById("encabezadoPatronus").style.display = "none"; +document.getElementById("tituloPersonajes").style.display = "block"; +document.getElementById("tituloVaritas").style.display = "none"; +document.getElementById("tituloPatronus").style.display = "none"; + + +const botonIngresar = document.getElementById("ingresar"); +botonIngresar.addEventListener("click", siguiente); + +function siguiente() { + document.getElementById("portada").style.display = "none"; + document.getElementById("pag2").style.display = "flex"; + +} diff --git a/src/style.css b/src/style.css index e69de29..54d319b 100644 --- a/src/style.css +++ b/src/style.css @@ -0,0 +1,1104 @@ +* { + margin: 0; + padding: 0; + ; +} + +body { + cursor: url(./img/harry_potter_logo\ \(6\).cur),pointer; + +} + + +@font-face { + font-family: "harry_pregular"; + src: url('./img/HARRYP__.TTF'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "fuente_2"; + src: url('./img/Alegreya-Medium.ttf'); + font-weight: normal; + font-style: normal; +} +footer { + width: 100%; + color: rgb(255, 255, 255); + text-align: center; + background-color:black; + padding-top: 3px; + padding-bottom: 8px; + font-size: 23px; +} +#contenedorFooter{ + flex-direction: row; + display: flex; +} +#contenedorFooter i{ + margin-right:10px; + color:white; + } +#logoHarry{ + width: 8%; + justify-content: flex-start; + display: flex; + border-left-width: 34px; + padding-left: 3%; + padding-top: 2%; +} +#contenedorLogos{ + display: flex; + align-content: center; + padding-left: 475px; + padding-top: 39px; + font-size: 35px; +} +#logoWizard{ + width: 10%; + justify-content: flex-end; + display: flex; + padding-left: 33%; + padding-top: 2%; + padding-bottom: 1%; +} +p{ + margin-top: -2%; +} + +#video { + position: sticky; + left: 0; + top: 0; + width: 100%; + height: auto; + z-index: 1; + visibility: visible; +} +#videoDos { + position: fixed; + width: 100%; + z-index: -10; + visibility: visible; + top: -40px; + +} + +#portada { + text-align: left; +} + +#inicio { + display: flex; + flex-direction: column; + background-color: rgba(138, 138, 138, 0.49); + border: 8px solid #dadada78; + border-radius: 10%; + z-index: 2; + position: absolute; + margin-left: 22%; + margin-top: -53%; + padding: 4%; + width: 47%; +} + +h1 { + font-family: harry_pregular; + text-align: center; + color: #ffffff; + font-size: 75px; +} + +h2 { + font-family: fuente_2; + color: #06212d; + display: flex; + justify-content: center; + font-size: 30px; +} + +h3 { + font-family: fuente_2; + color: #e4e4e4; + font-size: 22px; + word-spacing: 3px; + border: 2px solid #393956; + background: linear-gradient(to right, #63617fd6 0%, #9999ffc7 100%); + padding: 2%; + border-radius: 11px; + width: 87%; + margin-left: 5%; +} +h4 { + font-family: harry_pregular; + color: white; + font-size: 84px; + margin-top: -8%; + margin-left: -7%; +} + +#contenedorTitulos{ + position: absolute; + height: 3%; + width: 23%; + margin-left: 30%; + margin-top: 5%; +} + +#ingresar { + cursor: url(./img/Newts_Wand_Harry_Potter\ \(1\).cur),pointer; + display: flex; + background-color: #5B5C84; + height: 85px; + width: 25%; + justify-content: center; + font-size: 26px; + border: 2px solid #233C67; + color: #ffffff; + transition-duration: 0.4s; + margin-right: auto; + margin-left: auto; + margin-top: 7%; + border-radius: 10%; + +} + +#ingresar:hover { + color: #ffffff; + background-color: #233C67; + border: 2px solid #5B5C84; +} + +article label { + display: none; +} +#pag2{ + display: flex; + flex-direction: row; + font-weight: bold; + text-align: left; + flex-wrap: wrap; +} + +article{ + width: 23%; + margin-top: 0.9%; +} + +.menu { + display: flex; + align-items: center; + background:linear-gradient(to bottom, #63617fd9 0%, #9999ffc7 100%); +height: 100vh; + flex-direction: column; + margin-top: 0.5%; + border-radius: 15px; +} + +#btn-menu { + display: none; +} + +#casas { + width: 100%; + margin-top: 15%; +} + +.menu .items label { + position: relative; + background: #16325bde; + width: 93%; + height: 40px; + padding: 10px; + display: flex; + border: 1px solid #717171; + color: white; + align-items: center; + margin: 0; + cursor: url(./img/Newts_Wand_Harry_Potter\ \(1\).cur),pointer; +} + + +.menu .items label:hover { + background: #494b86; + +} + +.menu .items label span { + position: absolute; + top: 40%; + right: 19px; +} + +.menu .items ul { + width: 100%; + list-style: none; + overflow: hidden; + max-height: 0; + transition: all .4s linear; +} + +.menu .items ul li a { + width: 90%; + height: 17px; + padding: 10px; + display: block; + text-decoration: none; + background-color: #5b5c84; + color: white; + border: 1px solid #16325bde; + margin-left: 4px; + border-radius: 8px; + cursor: url(./img/Newts_Wand_Harry_Potter\ \(1\).cur),pointer; +} + +.menu .items ul li a:hover { + background: #223b66; +} + +.menu .items input:checked~ul { + height: auto; + max-height: 200px; + transform: all; +} + +.menu .items input { + display: none; +} + + +#logo { + height: auto; + width: 67%; + margin-top: 13px; +} + +aside { + width: -moz-available; + margin: 10px; +} + +.contenedorTarjetas { + width: 74%; +} + +.botonesAside { + display: flex; + flex-direction: row; + height: 70px; + font-size: 60%; + font: caption; + margin-left: 4%; + +} + +.seleccion { + background-color: rgb(136, 136, 226); +} + +.botones { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: space-around; + background-color: #16325B; + height: 10%; + font-size: 60%; + font: caption; + width: 100%; + color: white; + text-align: left; + border: 1px solid #404863; + margin: 4%; +} + +option { + font-weight: normal; + display: block; + background: #5b5c84; +} + +.botonRol { + position: absolute; + background-color: #233c67; + height: 9%; + font-size: 60%; + font: caption; + margin-top: 11%; + color: white; + border: 1px solid #404863; + margin-left: 20%; + width: 15%; + border-radius: 6px; + cursor: url(./img/Newts_Wand_Harry_Potter\ \(1\).cur),pointer; +} + +.botonOrden { + background-color: #233c67; + height: 9%; + font-size: 60%; + font: caption; + margin-top: 11%; + color: white; + border: 1px solid #404863; + margin-left: 2%; + width: 16%; + border-radius: 6px; + cursor: url(./img/Newts_Wand_Harry_Potter\ \(1\).cur),pointer; + position: absolute; +} + + +.busqueda { + position: absolute; + top: 36%; + left: 77%; + +} + +input{ + outline: none; + border: 3px solid #9595ee; + color: black; + border-radius: 11px; + transition: all 0.5s; + width: 180px; + background: whitesmoke; + height: 37px; +} + + +#buscar{ + margin-left: -36px; + background: whitesmoke; + border: 4px solid whitesmoke; + color: #63617f; + cursor: url(./img/Newts_Wand_Harry_Potter\ \(1\).cur),pointer; +} + +#recargar{ + margin-left: 10px; + background: whitesmoke; + border: 4px solid whitesmoke; + color: #63617f; + border-radius: 14px; + cursor: url(./img/Newts_Wand_Harry_Potter\ \(1\).cur),pointer; +} + +.imagePersonaje { + display: flex; + box-shadow: 0 2px 2px rgb(0, 0, 0, 0.2); + width: 189px; + height: 266px; + border-radius: 18px; + border-right: 2px solid #ffffff7d; + border-bottom: 2px solid #ffffffa6; + border-left: 2px solid #000000de; + border-top: 2px solid #000000d9; + margin: 9%; + cursor: url(./img/Newts_Wand_Harry_Potter\ \(1\).cur),pointer; +} + + +#contenido { + margin-top: 4%; + display: flex; + flex-direction: column-reverse; + margin: 2%; +} + +#tarjetas { + + display: flex; + flex-wrap: wrap; + padding: 1%; + margin-top: 12%; + margin-left: 2%; + +} + +.nombre { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: white; + background: #63617f; + border: 3px solid #2a2b6382; + height: 40px; + border-radius: 10px; + width: 92%; + margin-left: 12%; + margin-top: -2%; +} + + +.contenedorM { + position: fixed; + width: 100%; + height: 100vh; + top: 0; + left: 0; + background: rgb(0, 0, 0, 0.2); + display: flex; + justify-content: center; + align-items: center; + visibility: hidden; + opacity: 0; + transition: visivility 0s opacity 0, 5s; +} + +.contenedorMActivo { + visibility: visible; + opacity: 1; +} + +.modal { + position: relative; + width: 100%; + height: 100%; + z-index: 1; +} + +.contenedorimg { + position: relative; + background: burlywood; + width: 29%; + height: 69%; + display: flex; + align-items: center; + flex-direction: column; +} + +.foto { + position: absolute; + width: 27%; + height: 30%; + display: flex; + align-items: center; + flex-direction: column; + z-index: 4; + margin-top: 25%; +} + +#parrafo { + color: #404040; + position: absolute; + z-index: 2; + margin-top: 70%; +} + +.close { + position: absolute; + top: 10%; + right: 10%; + font-weight: bold; + cursor: pointer; + z-index: 3; + font-family: fantasy; + font-size: 30px; + cursor: url(./img/Newts_Wand_Harry_Potter\ \(1\).cur),pointer; + +} + +#imagenVarita { + display: flex; + width: 100%; + height: 177px; + border: 2px solid #000000d9; + +} + +#varitas { + display: flex; + flex-wrap: wrap; + margin-right: 4%; + margin-left: 2%; +} + +.varitas { + padding: 13%; + color: white; + height: 11%; + width: 68%; + display: flex; + border: 3px solid #2a2b6382; + background: #63617fe3; + align-items: center; + font-size: 15px; + line-height: 80%; + border-radius: 4%; + margin-top: 2%; + margin-left: 6%; +} + +.contenedorVarita { + height: auto; + width: 28%; + display: flex; + flex-direction: column-reverse; + justify-content: center; + margin-top: 2%; + margin-left: 4%; +} + +#divimgVaritas { + display: flex; + flex-wrap: wrap; + padding-left: 6%; +} + +#mostrarPatronus { + flex-direction: row; + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + margin-left: 2%; +} + +#contenedorPatronus { + width: 30%; + display: flex; + flex-direction: column-reverse; +} + +#contenedorImagen { + text-align: center; +} + +#imagenPatronus { + display: flex; + width: 75%; + height: auto; + border: 2px solid #000000d9; + +} + +.patronusP { + padding: 11%; + color: white; + height: 4%; + width: 53%; + display: flex; + border: 3px solid #2a2b6382; + background: #63617fe3; + align-items: center; + font-size: 15px; + line-height: 80%; + border-radius: 4%; + margin-top: 2%; +} + +@media (max-width: 430px) { + #video { + position: fixed; + left: -199px; + top: 0; + height: 100vh; + width: auto; + visibility: visible; + display: flex; + flex-wrap: wrap; + } + + #videoDos { + + position: fixed; + left: -259px; + top: 0; + height: 100vh; + width: auto; + visibility: visible; + display: flex; + flex-wrap: wrap; +} + #portada { + text-align: left; + } + + #inicio { + margin-left: 10%; + margin-right: 10%; + margin-top: 24%; + padding: 5%; + width: 63%; + } + + h1 { + font-family: harry_pregular; + text-align: center; + color: #ffffff; + font-size: 42px; + } + + h2 { + font-family: fuente_2; + color: #06212d; + ; + display: flex; + justify-content: center; + font-size: 20px; + } + + h3 { + font-family: fuente_2; + color: #e4e4e4; + display: flex; + font-size: 14px; + word-spacing: 3px; + border: 2px solid #393956; + background: #63617f; + padding: 3%; + margin-left: 11%; + margin-top: -1.8%; + width: 84%; + height: 18.1px; + border-radius: 2px; + } + h4 { + font-family: harry_pregular; + color: white; + font-size: 84px; + margin-top: 46%; + margin-left: -58%; + width: 247%; + } + + #contenedorTitulos{ + height: 3%; + width: 23%; + margin-left: 37%; + margin-top: 26%; + } + #ingresar { + display: flex; + background-color: #5B5C84; + height: 39px; + width: 53%; + font-size: 12px; + border: 2px solid #233C67; + color: #ffffff; + transition-duration: 0.4s; + margin-right: auto; + margin-left: auto; + margin-top: 7%; + } + + #contenedor { + display: flex; + flex-direction: row; + } + + .contenedorTarjetas { + display: flex; + flex-direction: column; + margin-left: 0%; + width: 100%; + + } + + .botonesAside { + z-index: 0; + font: caption; + margin-left: 60px; + display: flex; + flex-direction: column; + height: 144px; + margin-top: 50%; + } + + .botonRol { + background-color: #16325B; + font: caption; + width: 60%; + padding: 3%; + color: white; + border: 1px solid #404863; + margin-top: 45%; + margin-left: 6%; + } + + .botonOrden { + background-color: #16325B; + font: caption; + width: 60%; + padding: 3%; + color: white; + border: 1px solid #404863; + margin-left: 6%; + margin-top: 27%; + } + + .busqueda { + height: auto; + width: 77%; + display: flex; + flex-direction: column; + margin-left: 6%; + margin-right: auto; + margin-top: 44%; + } + + .botones { + display: flex; + background-color: #16325B; + height: 8%; + font-size: 87%; + width: 100%; + text-align: left; + border: 1px solid #404863; + margin: 3%; + } + + #tarjetas { + display: flex; + padding-left: 15%; + flex-direction: column; + margin-top: 37%; + padding-bottom: 32%; + } + + + + .contenedorM { + position: fixed; + width: 100%; + height: 100vh; + top: 0; + left: 0; + background: rgb(0, 0, 0, 0.2); + display: flex; + justify-content: center; + align-items: center; + visibility: hidden; + opacity: 0; + transition: visivility 0s opacity 0, 5s; + } + + .contenedorMActivo { + visibility: visible; + opacity: 1; + } + + .modal { + position: relative; + width: auto; + height: 100%; + z-index: 1; + } + + .contenedorimg { + position: relative; + background: burlywood; + width: 29%; + height: 69%; + display: flex; + align-items: center; + flex-direction: column; + margin-top: 27%; + } + + #contenido { + height: auto; + width: 62%; + display: flex; + flex-direction: column-reverse; + justify-content: center; + margin-top: 4%; + margin-left: -14%; + } + + + .nombre { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: white; + background: #63617f; + border: 3px solid #2a2b6382; + height: 40px; + border-radius: 10px; + width: 94%; + margin-left: 42%; + margin-top: -4%; + } + + .imagePersonaje { + display: flex; + box-shadow: 0 2px 2px rgb(0, 0, 0, 0.2); + width: 100%; + height: 100%; + border-radius: 18px; + border-right: 2px solid #ffffff7d; + border-bottom: 2px solid #ffffffa6; + border-left: 2px solid #000000de; + border-top: 2px solid #000000d9; + margin: 8%; + cursor: pointer; + margin-left: 39%; + } + + .foto { + position: absolute; + width: 72%; + height: 25%; + display: flex; + align-items: center; + flex-direction: column; + z-index: 4; + margin-top: 75%; + } + + #parrafo { + color: #404040; + position: absolute; + z-index: 2; + font-size: 13px; + word-spacing: 2px; + text-align: left; + margin-top: 181%; + width: 160%; + } + + .close { + position: absolute; + top: 39px; + left: 128%; + font-weight: 200; + cursor: pointer; + z-index: 3; + font-family: fantasy; + font-size: 30px; + } + + + #imagenVarita { + display: flex; + width: 76%; + height: 159px; + } + + #varitas { + display: flex; + flex-wrap: wrap; + padding-left: 7%; + margin-top: -36%; + } + + .varitas { + padding: 12%; + color: white; + height: 19%; +width: 47%; + display: flex; + border: 3px solid #2a2b6382; + background: #63617fe3; + align-items: center; + font-size: 15px; + line-height: 80%; + border-radius: 4%; + margin-left: 6%; + margin-top: 3%; + } + + .contenedorVarita { + height: auto; + width: 86%; + display: flex; + flex-direction: column-reverse; + justify-content: center; + margin-top: 2%; + margin-left: auto; + } + + #mostrarPatronus { + flex-direction: row; + display: flex; + flex-wrap: wrap; + justify-content: space-evenly; + margin-top: 10%; + } + + #contenedorPatronus { + width: 98%; + } + + #contenedorImagen { + text-align: center; + } + + #imagenPatronus { + display: flex; + width: 58%; + height: auto; + margin-left: 20%; + } + + .patronusP { +padding: 10%; + color: white; + width: 38%; + display: flex; + border: 3px solid #2a2b6382; + background: #63617fe3; + align-items: center; + line-height: 80%; + margin: 1%; + height: 0%; + margin-left: 20%; + } + + .items label { + position: relative; + background: #16325b; + width: 83%; + height: 40px; + padding: 10px; + display: flex; + border: 1px solid #717171; + color: white; + + } + #casas { + width: 100%; + margin-top: 5%; +} +article{ + width: 6%; + margin-top: 6px; + height: 4%; + position: fixed; + z-index:1; +} +article label{ + display: block; + color: white; + padding: 43%; + border: 2px solid #404863; + background: #63617f; + cursor: pointer; + text-align: center; + width: 83%; + margin-left: -2%; + margin-top: -2px; + height: 79%; + +} +.menu{ + position: fixed; + display: flex; + flex-direction: column; + align-items: center; + background-color: #404863; + width: 72%; + height: 92%; + margin-left: -320px; + z-index:1; +transition: all 0.5s; +} + +#btn-menu{ +display:none; +} + + +#btn-menu:checked ~ .menu{ + margin:0; +} +.busqueda { + position: static; + display: flex; + flex-direction: row; + margin-top: 10%; + +} + +input{ + outline: none; + border: 3px solid #9595ee; + color: black; + border-radius: 11px; + width: 76%; + background: whitesmoke; + + margin-top: 4%; + margin-left: 3%; +} + +#buscar{ + background: whitesmoke; + border: 4px solid whitesmoke; + color: #63617f; + margin-top: 7%; + height: 8%; +} +#recargar{ + background: whitesmoke; + border: 11px solid whitesmoke; + color: #63617f; + border-radius: 10px; + + margin-top: 4%; + margin-left: 6%; + +} +#logo { + height: auto; + width: 64%; + margin-top: 13px; +} +#contenedorFooter{ + flex-direction: row; + display: flex; +} +#contenedorFooter i{ + margin-right:10px; + } +footer { + width: 100%; + color: white; + text-align: center; + background-color:black; + font-size: 77%; + +} +p{ + margin-top: auto; +} +#logoHarry{ + width: 10%; + justify-content: flex-start; + display: flex; + border-left-width: 34px; + padding-left: 3%; + margin-top: 8px; +} +#contenedorFooter{ + flex-direction: row; + display: flex; + justify-content: space-between; +} +#contenedorLogos{ + display: flex; + align-content: center; + font-size: 27px; + padding-left: 1px; + margin-bottom: 4px; + margin-top: 0px; + padding-bottom: 3px; + border-bottom-width: 5‒; + padding-top: 27px; + +} +#logoWizard{ +width: 50px; +justify-content: flex-end; +display: flex; +padding-left: 0%; +padding-right: 3%; +margin-top: 10px; +height: 43px; +} +} \ No newline at end of file diff --git a/test/data.spec.js b/test/data.spec.js index 9344710..097fbf5 100644 --- a/test/data.spec.js +++ b/test/data.spec.js @@ -1,23 +1,220 @@ -import { example, anotherExample } from '../src/data.js'; +import { + filterDataHouse, + filterDataEstudiante, + filterDataProfesor, + filterDataOtros, + filterDataPatronus, + filterDataVarita, + buscador, + orden +} from "../src/data.js"; +//Data casas -describe('example', () => { +const dataHouse = [{ + name: 'Harry Potter', + house: 'Gryffindor' +}]; + +//test casa +describe('filterDataHouse', () => { test('is a function', () => { - expect(typeof example).toBe('function'); + expect(typeof filterDataHouse).toBe('function'); }); - test('returns `example`', () => { - expect(example()).toBe('example'); + it('deberia retornar Gryffindor ', () => { + expect(filterDataHouse(dataHouse).house); + }); + }); +const filterEstudiante = [{ + name: 'Harry Potter', + house: 'Gryffindor', + patronus: 'stag', + hogwartsStudent: true, +}]; -describe('anotherExample', () => { +describe('filterDataEstudiante', () => { test('is a function', () => { - expect(typeof anotherExample).toBe('function'); + expect(typeof filterDataEstudiante).toBe('function'); }); - test('returns `anotherExample`', () => { - expect(anotherExample()).toBe('OMG'); + it('deberia retornar true ', () => { + expect(filterDataEstudiante(filterEstudiante)[0].hogwartsStudent).toEqual(true); }); -}); + +}) + +const filterProfesor = [{ + name: 'Minerva McGonagall', + house: 'Gryffindor', + hogwartsStudent: false, + hogwartsStaff: true, +}]; + +describe('filterDataProfesor', () => { + test('is a function', () => { + expect(typeof filterDataProfesor).toBe('function'); + }); + + it('deberia retornar true ', () => { + expect(filterDataProfesor(filterProfesor)[0].hogwartsStaff).toEqual(true); + }); + +}) + +const filterOtros = [{ + name: 'Bellatrix Lestrange', + house: 'Slytherin', + hogwartsStudent: false, + hogwartsStaff: false, +}]; + +describe('filterDataOtros', () => { + test('is a function', () => { + expect(typeof filterDataOtros).toBe('function'); + }); + + it('deberia retornar false ', () => { + expect(filterDataOtros(filterOtros)[0].hogwartsStudent).toEqual(false) && + expect(filterDataOtros(filterOtros)[0].hogwartsStaff).toEqual(false); + }); + +}) + +const dataPatronus = [{ + name: 'Harry Potter', + house: 'Gryffindor', + patronus: 'stag' +}]; + +describe('filterDataPatronus', () => { + test('is a function', () => { + expect(typeof filterDataPatronus).toBe('function'); + }); + + it('deberia retornar stag ', () => { + expect(filterDataPatronus(dataPatronus)[0].patronus).toEqual("stag"); + }); + +}) + +const dataVaritas = [{ + name: 'Harry Potter', + house: 'Gryffindor', + patronus: 'stag', + wand: { + wood: 'holly', + core: 'phoenix feather', + length: 11, + } + }, + { + name: 'Kingsley Shacklebolt', + wand: { + wood: '', + core: '', + length: '', + } + }, + +]; + +describe('filterDataVarita', () => { + test('is a function', () => { + expect(typeof filterDataVarita).toBe('function'); + }); + + it('deberia retornar holly', () => { + expect(filterDataVarita(dataVaritas).wand) === ("holly") && + expect(filterDataVarita(dataVaritas).wand) === ("phoenix feather") && + expect(filterDataVarita(dataVaritas).wand) === ("11"); + }); + +}) + + + + +const dataOrdenOriginal = [{ + name: 'Arthur Weasley' + }, + { + name: 'Bellatrix Lestrange' + }, + { + name: 'Argus Filch' + } +]; + +const dataOrdenAZ = [{ + name: 'Argus Filch' + }, + { + name: 'Arthur Weasley' + }, + { + name: 'Bellatrix Lestrange' + } +]; +const dataOrdenZA = [{ + name: 'Bellatrix Lestrange' + }, + { + name: 'Arthur Weasley' + }, + { + name: 'Argus Filch' + } +]; + +describe('orden', () => { + test('is a function', () => { + expect(typeof orden).toBe('function'); + }); + + it('deberia retornar AZ ', () => { + expect(orden(dataOrdenOriginal)).toEqual(dataOrdenAZ); + }); + it('deberia retornar ZA ', () => { + expect(orden(dataOrdenOriginal).reverse()).toEqual(dataOrdenZA); + }); + + +}) + + +const dataBuscador = [{ + name: 'Argus Filch' + }, + { + name: 'Arthur Weasley' + }, + { + name: 'Bellatrix Lestrange' + } +]; +const buscar = "bel" || "BEL" || "Bel" +const buscado = [{ + name: 'Rubeus Hagrid' + }, + { + name: 'Bellatrix Lestrange' + }, + { + name: 'Vincent Crabbe' + } +]; + +describe('buscador', () => { + test('is a function', () => { + expect(typeof buscador).toBe('function'); + }); + it('deberia retornar Bellatrix ', () => { + expect(buscador(dataBuscador, buscar)) === (buscado) + + + }); +}) \ No newline at end of file