Skip to content

Commit

Permalink
Implementación de libros descartados
Browse files Browse the repository at this point in the history
Se añade un atributo y la funcionalidad para actualizarlo, de forma que
si marcamos un libro como descartado, cuando ocultemos los libros que
tenemos también se oculten los descartados.
  • Loading branch information
Verdoso committed Dec 21, 2021
1 parent 20f01cc commit bb31745
Show file tree
Hide file tree
Showing 6 changed files with 409 additions and 269 deletions.
70 changes: 63 additions & 7 deletions src/main/frontend/src/vue/biblioteca.vue
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
v-model="soloNoEnPropiedad"
@input="cambioSoloNoEnPropiedad()"
v-if="integracioncalibre"
>Ocultar los que ya tengo</b-switch>
>Ocultar los que tengo/descartados</b-switch>
</p>
</b-field>
</div>
Expand Down Expand Up @@ -160,6 +160,28 @@
:icon="props.row.inCalibre ? 'check' : 'times'"
></b-icon>
</b-table-column>
<b-table-column
field="descartado"
label="Descarte"
:visible="integracioncalibre"
width="5%"
v-slot="props"
>
<b-tooltip
:type="!props.row.descartado ? 'is-danger' : 'is-success'"
:label="props.row.descartado ? 'Mostrar' : 'Descartar'"
>
<b-button
size="is-small"
outlined
rounded
icon-pack="fa"
:type="props.row.descartado ? 'is-danger' : 'is-success'"
:icon-right="props.row.descartado ? 'eye-slash' : 'eye'"
@click="descartar(props.row)"
/>
</b-tooltip>
</b-table-column>
<template #detail="props">
<article class="media">
<figure class="media-left">
Expand Down Expand Up @@ -285,13 +307,17 @@ export default {
data.results.forEach(item => {
this.data.push(item);
});
this.loading = false;
this.$nextTick(() => {
this.loading = false;
});
})
.catch(error => {
this.data = [];
this.total = 0;
throw error;
this.loading = false;
this.$nextTick(() => {
this.data = [];
this.total = 0;
throw error;
this.loading = false;
});
});
},
/*
Expand Down Expand Up @@ -372,6 +398,36 @@ export default {
cambioSoloNoEnPropiedad() {
this.loadAsyncData();
},
descartar(libro) {
var formData = new FormData();
formData.append("id", libro.id);
formData.append("descartado", !libro.descartado);
axios
.post("/librarian/preferences/descarte", formData, {
headers: { "Content-Type": "multipart/form-data" }
})
.then(response => {
libro.descartado = !libro.descartado;
this.$buefy.notification.open({
type: "is-info",
duration: 2000,
message: `${libro.titulo} ${libro.descartado? 'descartado' : 'mostrado'}`,
hasIcon: true
});
if (libro.descartado && this.soloNoEnPropiedad) {
this.loadAsyncData();
}
})
.catch(error => {
this.$buefy.notification.open({
type: "is-danger",
duration: 2000,
message: "Error descartando libro: " + error,
hasIcon: true
});
throw error;
});
},
guardarFechaBase() {
if (this.fechaBase) {
var formData = new FormData();
Expand All @@ -397,7 +453,7 @@ export default {
this.$buefy.notification.open({
type: "is-danger",
duration: 5000,
message: "Error almacenando fecha base: " + e,
message: "Error almacenando fecha base: " + error,
hasIcon: true
});
throw error;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,23 +38,31 @@ public ResponseEntity<Long> fechaBase() {
.orElseGet(OK_BUILDER::build);
}

@PostMapping(value = "/fecha_base", produces = MediaType.TEXT_HTML_VALUE )
@PostMapping(value = "/fecha_base", produces = MediaType.TEXT_HTML_VALUE)
public ResponseEntity<String> guardarFechaBase(@RequestParam(name = "fechaBase") long fechaBaseLong) {
preferencesService
.setFechaBase(Instant.ofEpochMilli(fechaBaseLong).atZone(ZoneId.systemDefault()).toLocalDate());
return OK_BUILDER.build();
}

@PostMapping(value = "/autoresFavoritos", produces = MediaType.TEXT_HTML_VALUE )
@PostMapping(value = "/descarte", produces = MediaType.TEXT_HTML_VALUE)
public ResponseEntity<String> descartarLibro(@RequestParam(name = "id") Integer libroId,
@RequestParam(name = "descartado") boolean descartado) {
preferencesService.setDescarte(libroId, descartado);
bibliotecaService.setDescarte(libroId, descartado);
return OK_BUILDER.build();
}

@PostMapping(value = "/autoresFavoritos", produces = MediaType.TEXT_HTML_VALUE)
public ResponseEntity<String> guardarAutoresFavoritos(
@RequestParam(name = "autoresFavoritos") Set<String> autoresFavoritos,
@RequestParam(name = "autoresNoFavoritos") Set<String> autoresNoFavoritos) {
preferencesService.actualizarAutoresPreferidos(autoresFavoritos, autoresNoFavoritos);
bibliotecaService.actualizaAutoresFavoritos(preferencesService.getAutoresPreferidos());
bibliotecaService.actualizaAutoresPreferidos(preferencesService.getAutoresPreferidos());
return OK_BUILDER.body("OK");
}

@PostMapping(value = "/idiomasFavoritos", produces = MediaType.TEXT_HTML_VALUE )
@PostMapping(value = "/idiomasFavoritos", produces = MediaType.TEXT_HTML_VALUE)
public ResponseEntity<String> guardarIdiomasFavoritos(
@RequestParam(name = "idiomasFavoritos") Set<String> idiomasFavoritos,
@RequestParam(name = "idiomasNoFavoritos") Set<String> idiomasNoFavoritos) {
Expand All @@ -63,7 +71,7 @@ public ResponseEntity<String> guardarIdiomasFavoritos(
return OK_BUILDER.body("OK");
}

@PostMapping(value = "/generosFavoritos", produces = MediaType.TEXT_HTML_VALUE )
@PostMapping(value = "/generosFavoritos", produces = MediaType.TEXT_HTML_VALUE)
public ResponseEntity<String> guardarGenerosFavoritos(
@RequestParam(name = "generosFavoritos") Set<String> generosFavoritos,
@RequestParam(name = "generosNoFavoritos") Set<String> generosNoFavoritos) {
Expand Down
Loading

0 comments on commit bb31745

Please sign in to comment.