/proyecto_1

Primary LanguageJavaScript

Proyecto 1 Curso FrontEnd Básico

Monitor de valor del Bitcoin

Objetivo:

Contruir una pequeña aplicación que es capaz de de consultar el precio del bitcoin en distintas monedas y desplegar una tabla con la lista de monedas. Tambien contempla un filtro. En esta primera versión debemos contruir un prototipo como el de la siguiente imagen:

// @TODO: diagrama prototipo

Requerimientos:

  • NodeJS >= 8.4 instalado a través de NVM. Instrucciones acá
  • Git
  • Crear un proyecto en GITHUB. Instrucciones [acá]
  • Crear una cuenta TRAVIS y linkear el repositorio al proyecto github. Instrucciones [acá]

Contexto

La aplicación posee una funcionalidad ya desarrollada que utiliza la siguiente url para obtener una lista https://blockchain.info/es/ticker y devuelve un objeto JSON el cual utilizaremos en este proyecto.

Instalación

  • ejecutar npm i
  • ejecutar npm start
  • abrir http://localhost:3000/ en el navegador

Parte 0: Configurar proyecto

  • En al archivo package.json agregar o modificar las propiedades que cumplan con este formato:
   ...
   "author": {
       "name": "nombre apellido",
       "email": "email"
   },
   ...
   "config": {
       "title": "titulo del sitio web"
   },
   ...
  • Escribir la información de git asociada al proyecto
  • Cambiarse a la rama dev utilizando git checkout dev ya que seguimos gitflow
  • Crear version 0.0.0 utilizando el siguiente comando npm version 0.0.0
  • Ejecutar el siguiente comando git push origin {--tags,dev}

Resultado esperado:

<Foto tab de github mostrando head en 1 respecto de la rama master>

Parte 1: Crear las columnas de la tabla basado en data proveniente de una petición HTTP

En el archivo ./src/index.js hay una función llamada createTable(). Implementar el código que sea capaz de dibujar las columnas de una tabla basada en la data provista en la variable tableData.

  • En el archivo index.html escribir el código HTML necesario. La tabla debe estar estructurada siguiendo la estructura recomendada en este link utilizando los elementos <thead> y <th>. Se debe agregar una clase al tag <table></table> llamada home__table. El agregar esta clase es sumamente importante ya que los test automatizados se basarán en esto para corroborar que la tabla cumple con los requisitos de esta tarea.

  • Los nombres de las columnas de la tabla deben estar basados en la estructura del objeto que representa el valor del Bitcoin para una divisa. Adicionalmente debe agregarse una columna extra al inicio de nombre "Currency"

  • Los nombres de las columnas deben comenzar con la primera letra en mayúscula

Resultado esperado:

Alt text

Parte 2: Crear las filas de la tabla basado en data proveniente de una petición HTTP

En el archivo ./src/index.js hay una función llamada createTable(). Implementar el código que sea capaz de dibujar los datos de una tabla basada en la data provista en la variable tableData.

  • Escribir el código que sea capaz de dibujar los datos de la tabla siguiendo la estructura recomendada en el ejercicio anterior, por lo tanto las filas y columnas deberían estar contenidas dentro de la etiqueta <tbody></tbody>

  • Dado que la petición HTTP responde un objeto con la siguiente estructura:

    {
        "<CÓDIGO_MONEDA>": { 
            // PROPIEDADES MONEDA
        },
        "<CÓDIGO_MONEDA>": { 
            // PROPIEDADES MONEDA
        },
        ....
    }

utilizar la primera columna para escribir el código de la moneda y en las siguiente las propiedades de la moneda.

Resultado esperado:

Alt text

Opcional: Las columnas de la tabla deben ser capaces de reaccionar a un "cambio de contrato". Esto es: si las propiedades de los objetos provistos para cada tipo de moneda cambian en el futuro, (ejemplo: se agrega un nuevo campo o se quita uno) la tabla debe ser capaz de dibujar las columnas basado en las propiedades.

// @TODO: Pauta puntajes items anteriores

Parte 3: Selector de moneda

En el archivo ./src/index.js hay una función llamada createTable(). Implementar el código que sea capaz de crear una lista de tags <option> y <select> utilizando la estructura recomendada en este link. Cada option debe contener el texto con el código de la moneda. Adicionalmente, tal y como está descrito en el link de referencia, cada <option> debe tener el atributo value también con el código de la moneda. Agregar al select una nueva opción que contenga el texto TODOS y que no tenga el atributo value. Esta opción debe ser la primera de la lista. Se debe agregar una clase al tag <select> llamada home__select--currency. El agregar esta clase es sumamente importante ya que los test automatizados se basarán en esto para corroborar que el selector de moneda cumple con los requisitos de esta tarea.

Resultado esperado:

Selector de moneda cerrado Alt text

Selector de moneda abierto Alt text

Parte 4: Agregar una clase a la fila de la tabla que contiene la moneda seleccionada en el select

El selector debe ser capaz de agregar la clase row__currency--selected a la fila correspondiente a la moneda seleccionada por el usuario en el selector. Esta funcionalidad debe seguir las siguientes reglas:

  • Solo una fila puede contener la clase row__currency--selected
  • Al seleccionar la opción TODOS, ninguna fila puede contener la clase row__currency--selected

Resultado esperado:

Selector de moneda opción CNY Alt text

Selector de moneda opción CLP Alt text

Selector de moneda opción TODOS. (opción por defecto) Alt text

Parte 5: Agregar estilos utilizando las propiedades de SASS

Primer release


Ya tenemos nuestra primera funcionalidad: Somos capaces de dibujar una lista de monedas provenientes de una API REST y somos capaces de darle la posibilidad al usuario a que encuentre dentro de la lista la moneda que más le interese. Ahora estamos en condiciones de entregar al usuario una version de nuestra aplicación y lo que haremos será publicar en un servidor nuestra aplicación. No veremos los detalles de este proceso por ahora, solo explicaremos cuales son los requisitos para concretar esto.

El 1er requisito será crear una cuenta en HEROKU, una plataforma que permite publicar de manera gratuita una aplicación. Instrucciones [acá]

El 2do requisito será ir a nuestra cuenta Travis y crear 2 variable de ambiente. - HEROKU_APP_NAME: debe ser el nombre de la aplicación creada en Heroku - HEROKU_KEY: debe ser la key generada por heroku para nuestra app de la cuál hablamos en las instrucciones anteriores.

Feedback, Issues, Changelog, Roadmap

Parte 6: Redondeo de valor

Parte 7: Actualización cada 1 minuto

Parte 8: Guardar en caché la última petición exitosa