Paso 3: Ver las reviews de un libro - Relación composite
URL: | https://github.com/Uniandes-isis2603/frontstepbystep.git |
---|---|
Release: | git checkout -f paso-3 |
- Aplicación
- Requerimientos nuevos
- Cambios importantes
- Actualizar el template del detalle de book
- Crear modulo para review
- Crear el controlador para los reviews
- Actualizaciones para incluir el nuevo modulo
- Mejoras pantalla inicial
- Nuevo footer
Aplicación
Requerimientos nuevos
- Al mostrar el detalle de un libro se tiene se despliegan sus reviews
Cambios importantes
- Actualizar el template del detalle de
book
para que se pueda acceder a losreviews
. - Crear el nuevo módulo
reviewModule
en el archivoreviews/reviews.mod.js
- Crear el controlador
- Actualizar el
index.html
yapp.js
para incluir el nuevo módulo
Actualizar el template del detalle de book
El template del detalle de book tiene dos nuevos elementos:
- uno para que el usuario obtenga los reviews (en el ejemplo lo hicimos con un
nav-tabs
. Este elemento tiene el enlace al estado de listar los reviewsreviewsList
. Note que este estado recibe de parámetro el id del book actual.
- un nuevo
div
que define una nueva vista, la hemos llamadochildrenView
que se utilizará en el módulo dereviewModule
para desplegar la lista de reviews.
La parte final del archivo books.detail.html
es entonces:
Crear modulo para review
El módulo review tiene, por ahora, dos estados:
reviews
: estado abstracto que hereda debookDetail
para así tener acceso alid
del libro que está seleccionado.reviewsList
: estado para listar los reviews; este hereda del estado anteriorreviews
La siguiente figura muestra la jerarquía de estados entre book y review:
Estado reviews
El estado reviews
es un estado abstracto. Este estado utiliza la vista childrenView
que fue definida en el estado padre bookDetail
.
Template reviews.html
El template reviews.html
se despliega en la zona llamada childrenView
. Este template a su vez define dos zonas: una para el detalle del review y otra para la lista de reviews.
Estado reviewsList
El estado reviewsList
tiene com padre el estado abstracto reviews
. Su template es reviews.list.html
y su controlador es reviewsCtrl
Crear el controlador para los reviews
En el controlador, hacemos uso del $state para obtener el id del libro que se esta consultando, y se hace una petición de tipo GET que nos trae los reviews asociados con el libro. Es decir,
a través de la ruta "/api/books/idBook/reviews"
Actualizaciones para incluir el nuevo modulo
Siempre que se define un nuevo módulo se deben agregar todos los archivos javascript del módulo en el index y se debe definir en el módulo principal la dependencia al nuevo.
index.html
El nuevo módulo reviews tiene el archivo donde se redefine el módulo y el archivo donde se define el controlador del módulo.
app.js
En el módulo mainApp
se incluye la nueva dependencia a reviewModule
.
Mejoras pantalla inicial
En este paso también se harán algunas mejoras a la pantalla inicial.
- Ver un encabezado
- Ver un footer
Cambios importantes
- Crear el nuevo encabezado en el
index.html
- Crear el nuevo footer en el
index.html
Nuevo encabezado
Para realizar este encabezado tenemos dentro de la división del container-fluid
dos filas (row):
- una para mostrar el título, la imagen y los botones de
Sign Up
ylogin
- otra para mostrar la barra de menús y el icono del
shopping cart
Los distintos glyphicon
de bootstrap, como los utilizados para login, signout o shopping cart, pueden ser encontrados aquí.
Estilos
Los estilos mainHeader
, mainTitle
están definidos en el archivo resources/css/app.css
Nuevo footer
El footer, de este ejemplo, es una franja en la parte baja de la pantalla que aparecerá siempre en la aplicación. En el index.html
tenemos al final del body la definición del footer así: