$ cp ../../ten/dist/reading-list/stylesheets/main.css app/styles/app.css
$ cp ../../ten/dist/reading-list/index.html app/templates/application.hbs
Y dejar en el template solo la parte del contenido.
Copiamos la lista de modelos del README de ten
y le agregamos un atributo
shelves
a cada libro.
Listamos todos los libros de una para ver como conectamos el modelo con el template.
Y que filtre la lista de libros por un shelve
.
Primero muevo el template al componente y veo como se engancha facil. Luego creo una propiedad calculada para filtrar la lista. Ahí me doy cuenta que preciso que los modelos sean Ember.Object.
También aprovecho para ordenar la lista.
Reemplazo y hago que se filtre por el shelve que le paso al componente
Vemos que la ruta de inicio es index
y no application
Vemos como las rutas y los templates se anidan
Es lo mismo
Agrego la ruta y el template. Agrego la subruta result y vemos como funciona Luego agrego la accion search y la engancho con el valor del input
La URL es https://openlibrary.org/search.json?q=the+lord+of+the+rings donde tenemos que usar + en vez de espacios.
El formato del resultado tiene la siguiente estructura:
Un primer nivel con la cantidad de resultados
{
"numFound": 629,
"docs": [
{...},
{...},
{...},
...
{...}]
}
y cada resultado dentro de docs
tiene el siguiente formato
{
cover_i: 258027,
has_fulltext: true,
edition_count: 120,
title: "The Lord of the Rings",
author_name: [
"J. R. R. Tolkien"
],
first_publish_year: 1954,
key: "OL27448W",
ia: [
"returnofking00tolk_1",
"lordofrings00tolk_1",
"lordofrings00tolk_0",
"lordofrings00tolk_3",
"lordofrings00tolk_2",
"lordofrings00tolk",
"twotowersbeingse1970tolk",
"lordofring00tolk",
"lordofrings56tolk",
"lordofringstolk00tolk",
"fellowshipofring00tolk_0"
],
author_key: [
"OL26320A"
],
public_scan_b: true
}
Configurar CORS
if (environment === 'development') {
ENV.contentSecurityPolicy = {
'default-src': "'self' http://localhost:4200",
'connect-src': "'self' http://localhost:4200 https://openlibrary.org"
}
}
Tips
Para usar JSONP y limitar la cantidad:
return $.getJSON('https://openlibrary.org/search.json?q=' + term + '&limit=30&callback=')
Agregar el template loading...
Se puede usar un spinner de aca http://tobiasahlin.com/spinkit/
Para esta sección puedes utilizar una versión online del API en https://reading-list-api.herokuapp.com
Levantamos el servidor de desarrollo con la configuración de proxy y apuntamos
a nuestro servidor API ember serve --proxy http://localhost:3000
. Estamos
asumiendo que nuestro servidor API está levantado en localhost:3000.
Creamos el modelo con las propiedades básicas y luego configuramos el adaptador a REST adapter.
Al configurar REST adapter a nivel de application estamos configurando que es el adaptador por defecto para todos los modelos.
Usamos el addon ember-moment que utiliza la librería momentjs para formatos de fechas.
ember install ember-moment
Separar la implementación actual del buscador en un adaptader, un serializador y un modelo.
Creamos una acción en los resultados de la busqueda y creamos un nuevo libro con
el resultado seleccionado. Luego guardamos el nuevo libro, una vez guardado
navegamos a la lista de next to read
.
Crear la ruta con el template y luego agregar un comando que elimine un registro.