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
bookpara que se pueda acceder a losreviews. - Crear el nuevo módulo
reviewModuleen el archivoreviews/reviews.mod.js - Crear el controlador
- Actualizar el
index.htmlyapp.jspara 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
divque define una nueva vista, la hemos llamadochildrenViewque se utilizará en el módulo dereviewModulepara 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 debookDetailpara así tener acceso aliddel 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 Upylogin - 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, mainTitleestá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í: