Git Product home page Git Product logo

kindlebueno's People

Contributors

livchits avatar mborroni avatar

Watchers

 avatar  avatar  avatar

kindlebueno's Issues

Crear el método search()

  • .search(keywords) retorna un array de los eBooks que incluyan las keywords en title o author, sin importar si están en mayúscula o minúscula (no es case sensitive)

Modificar recentSearch

Hacer los cambios a partir del branch recentKeywords

  1. Cambiar la lógica para Implementar un buffer:
  • Guardar las búsquedas en un array una despúes de otra.
  • Al llegar a las cinco búsquedas revertir el orden del array y comenzar a sumar las búsquedas al principio y elimnando la última (que es ls más antigua)

Modificar search

  1. Usar el getter library

  2. Dividir en funciones y sacarlas del método:

  • Función para limpiar las keywords
  • Función que va dentro del filter

3 . Sacar la lógica de .search a una nueva clase ¿Search?:

  • propiedad _recentSearches = [];
  • metodos: .updateRecentSearches y .recentSearches (getter)

Crear método finishCurrentBook()

  • Método de la clase Kindle
  • Si no tenemos libro actual, no modificar nada y mostrar el siguiente error por consola 'There is no current book to finish, you must add one first.'
  • Marcar el libro actual como leído
  • Setearle la fecha de lectura (Date.now())
  • Setear como último libro leído (_last) el recién finalizado (_current)
  • Setear como libro actual (_current) al próximo a leer (_next)
  • Setear como próximo libro (_next) al primero de los no leídos que no sea el libro actual
  • Actualizar la cantidad de libros leídos
  • Actualizar la cantidad de libros no leídos

Crear el getter library()

.library (getter): retorna un array que contiene los libros del kindle, de la forma{ title: <TITLE>, genre: <GENRE>, author: <AUTHOR>, cover: <COVER> }

Crear el método sortBy()

  • .sortBy(criteria) retorna un array de los eBooks ordenado (de forma ascendente) por title o author, según si se recibe el string 'title' o 'author' como parámetro

Crear método isEqual()

  • Método estático de la clase EBook.
  • .isEqual(eBookA, eBookB): compara si dos eBooks son iguales

Crear el método filterBy()

  • .filterBy(criteria) retorna un array de los eBooks ya leídos o no leídos aún, según si se recibe el string 'read' o 'unread' como parámetro

  • Usar el getter library

Crear el método _exists()

_exists() debería ser un método de la clase Kindle que chequea si un eBook ya existe en el Kindle.
Es útil para el proceso de agregar nuevos libros.

Crear método addEBook()

  • método de la clase Kindle
  • .add(eBook) agrega un nuevo libro a la _library del Kindle
  • el método recibe un objeto eBook de la forma { title: <TITLE>, genre: , author: , cover: } y setea las propiedades correspondientes
  • actualizar la cantidad de libros no leídos
  • si ya existe un libro en el Kindle con las mismas propiedades, no debe agregarse y debe mostrarse el siguiente mensaje (warning) por consola "${eBook.title}" already exists in library

Qué pasa cuando agregamos un libro al Kindle (.add(eBook)):

  • Si no tenemos libros actualmente en el Kindle, el nuevo libro que se agregue pasará a ser el _current (_next y _last no se modifican)
  • Si tengo exactamente 1 libro en el Kindle (caso anterior), el nuevo libro que se agregue pasará a ser _next (_last queda igual)
  • Si tengo 2 o más libros, el nuevo libro que se agregue pasará a la lista de libros del Kindle, _current, _next y _last no se modifican

correcciones

  • para actualizar this.readBooks y this.notReadYetBooks alcanza con sumar y restar. La solución con reduce funciona, pero están haciendo muchos cálculos innecesarios y va a ser cada vez más costoso a medida que se agreguen libros

  • en lugar de preguntar por la longitud de _library, pueden aprovechar la info que les da _current y _next, además es más clara la intención de esta forma

  • Usar el operador de negación en lugar de comparar con un booleano

  • falta implementar el método filterBy

  • Buffer debería tener un método en su interfaz que permita obtener los recientes, de forma más declarativa

  • La búsqueda debería ser funcionalidad del Kindle en si, no una clase aparte. En todo caso pueden tener un archivo para funciones utilitarias sueltas

Modificar finishCurrenBook

  1. Poner la lógica de la actualización de _next en una nueva función (updateNextBook)

  2. Corregir typo en library

Actualizar método search()

  1. Agregar mensaje cuando no hay resultados.
  2. Eliminar espacios al principio y la final de las keywords a buscar.

Crear el setter currentEBook()

  • Setea cualquier libro disponible en el Kindle como el actual (_current) y el libro actual (_current) pasa a ser el próximo (_next). En el caso de que elijamos el mismo libro que ya estamos leyendo, no hacer nada

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.