Skip to content
Snippets Groups Projects
Commit f37484f7 authored by josborg's avatar josborg
Browse files

Responsive bug en el delete resuelto

parent bb5b6ba0
No related branches found
No related tags found
No related merge requests found
Showing
with 211 additions and 123 deletions
......@@ -10,8 +10,6 @@
<th scope="col">id</th>
<th scope="col">code</th>
<th scope="col">Name</th>
<th scope="col">Creation</th>
<th scope="col">Accion</th>
</tr>
</thead>
<tbody *ngFor="let encuesta of encuestas; let i = index">
......@@ -19,19 +17,25 @@
<td>{{encuesta.id}}</td>
<td>{{encuesta.code}}</td>
<td>{{encuesta.name}}</td>
<td>{{encuesta.createdAt}}</td>
<td>
<div class="col">
<a class="btn btn-primary mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'preguntas']">Responder</a>
</tr>
<tr class="border-bottom-2">
<td colspan = "3">
<div class="container">
<div class="row">
<div class="col-sm">
<a class="btn btn-primary w-100 mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'preguntas']">Responder</a>
</div>
<div class="col-sm">
<a class="btn btn-primary w-100 mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'estadisticas']">Ranking</a>
</div>
<div class="col-sm" *ngIf="operacion == 'profesores'">
<button class="btn btn-danger w-100 mb-2 btn-block" data-bs-toggle="modal" data-bs-target="#modalDelete"
(click)="idEncuesta = encuesta.id">Eliminar</button>
</div>
<div class="col">
<a class="btn btn-primary mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'estadisticas']">Ranking</a>
<div class="col-sm" *ngIf="operacion == 'profesores'">
<a class="btn btn-warning w-100 mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'edit']">Editar</a>
</div>
<div *ngIf="operacion == 'profesores'" class="col">
<a class="btn btn-warning mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'edit']">Editar</a>
</div>
<div *ngIf="operacion == 'profesores'" class="col">
<button class="btn btn-danger mb-2 btn-block" (click)="deleteEncuesta(encuesta.id)">Eliminar</button>
</div>
</td>
</tr>
......@@ -49,3 +53,27 @@
</div>
</div>
</div>
<!-- Modal -->
<form class="modal fade" id="modalDelete" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"
#deleteForm="ngForm">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title" id="exampleModalLabel">Eliminar encuesta</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body container">
<p>Los datos asociados a la encuesta incluidos los resultados de los usuarios que la han realizado
seran eliminados permenetemente de la base de datos, este borrado será irreversible.
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-danger" data-bs-dismiss="modal" (click)="deleteEncuesta(idEncuesta)"
[disabled]="!deleteForm.form.valid">ELIMINAR</button>
</div>
</div>
</div>
</form>
\ No newline at end of file
......@@ -18,6 +18,7 @@ export class EncuestasListarComponent implements OnInit {
encuestas: Array<Encuesta> = [];
id: string = "";
operacion: string = "";
idEncuesta:Number = 0;
constructor(private ruta: ActivatedRoute, private router: Router,
private clienteApiRest: ClienteApiOrdersService, private clienteApiAuth: ClienteApiOAutchService, private datos: DataOrdersService) { }
......
......@@ -77,7 +77,7 @@ export class EstadisticasComponent implements OnInit {
this.soluciones.forEach(solucion => {
var corrects = solucion.respuestas.filter(r => r.correct)
this.aciertosPorEncuesta.push({name:solucion.name, userId: solucion.userId, idEncuesta: this.encuesta.id,
nAciertos: corrects.length, nPreguntas: this.encuesta.preguntas.length, diff: solucion.diff, valid: solucion.valid, ranking: 0})
nAciertos: corrects.length, nPreguntas: this.encuesta.preguntas.length, diff: solucion.diff, fin: solucion.fin, valid: solucion.valid, ranking: 0})
});
this.aciertosPorEncuesta.sort((a ,b) => this.compare(a,b))
......@@ -110,7 +110,11 @@ export class EstadisticasComponent implements OnInit {
}else if(a.nAciertos != b.nAciertos){
return(+b.nAciertos - +a.nAciertos);
}else{
if(this.encuesta.type.toString() == "RESPUESTA")
return (a.diff - b.diff);
else{
return (a.fin - b.fin);
}
}
}
......
<h1>nEncuestas: {{nEncuestas}}</h1>
<h1>nEncuestasContestadas: {{nEncuestasContestadas}}</h1>
<h1>nEncuestasContestadasFinalizadas: {{nEncuestasContestadasFinalizadas}}</h1>
<h1>nPreguntasContestadas: {{nPreguntasContestadas}}</h1>
<h1>nPreguntasContestadasAcertadas: {{nPreguntasContestadasAcertadas}}</h1>
<div class="container">
<div class="row">
<div class="col-lg-7 mx-auto">
......@@ -17,8 +11,6 @@
<th scope="col">id</th>
<th scope="col">code</th>
<th scope="col">Name</th>
<th scope="col">Creation</th>
<th scope="col">Accion</th>
</tr>
</thead>
<tbody *ngFor="let encuesta of encuestas; let i = index">
......@@ -26,19 +18,25 @@
<td>{{encuesta.id}}</td>
<td>{{encuesta.code}}</td>
<td>{{encuesta.name}}</td>
<td>{{encuesta.createdAt}}</td>
<td>
<div class="col">
<a class="btn btn-primary mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'preguntas']">Responder</a>
</tr>
<tr class="border-bottom-2">
<td colspan = "3">
<div class="container">
<div class="row">
<div class="col-sm">
<a class="btn btn-primary w-100 mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'preguntas']">Responder</a>
</div>
<div class="col-sm">
<a class="btn btn-primary w-100 mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'estadisticas']">Ranking</a>
</div>
<div class="col-sm" *ngIf="operacion == 'profesores'">
<button class="btn btn-danger w-100 mb-2 btn-block" data-bs-toggle="modal" data-bs-target="#modalDelete"
(click)="idEncuesta = encuesta.id">Eliminar</button>
</div>
<div class="col">
<a class="btn btn-primary mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'estadisticas']">Ranking</a>
<div class="col-sm" *ngIf="operacion == 'profesores'">
<a class="btn btn-warning w-100 mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'edit']">Editar</a>
</div>
<div *ngIf="operacion == 'profesores'" class="col">
<a class="btn btn-warning mb-2 btn-block" [routerLink]="['/client/encuestas/', encuesta.id, 'edit']">Editar</a>
</div>
<div *ngIf="operacion == 'profesores'" class="col">
<button class="btn btn-danger mb-2 btn-block" (click)="deleteEncuesta(encuesta.id)">Eliminar</button>
</div>
</td>
</tr>
......@@ -53,6 +51,57 @@
</div>
</div>
</div>
<div class="row">
<h1>Informe</h1>
<p>nEncuestas: {{nEncuestas}}</p>
<p>nEncuestasContestadas: {{nEncuestasContestadas}}</p>
<p>nEncuestasContestadasFinalizadas: {{nEncuestasContestadasFinalizadas}}</p>
<p>nPreguntasContestadas: {{nPreguntasContestadas}}</p>
<p>nPreguntasContestadasAcertadas: {{nPreguntasContestadasAcertadas}}</p>
</div>
<table class="table table-borderless">
<thead>
<tr>
<th scope="col">user.name</th>
<th scope="col">user.nTop1</th>
<th scope="col">user.bestRank</th>
</tr>
</thead>
<tbody *ngFor="let user of users; let i = index">
<tr>
<td>{{user.name}}</td>
<td>{{user.nTop1}}</td>
<td>{{user.bestRank}}</td>
</tr>
</tbody>
</table>
<table class="table table-borderless">
<thead>
<tr>
<th scope="col">user.name</th>
<th scope="col">user.idEncuesta</th>
<th scope="col">user.nAciertos</th>
<th scope="col">user.nPreguntas</th>
<th scope="col">user.diff</th>
<th scope="col">user.fin</th>
<th scope="col">user.valid</th>
<th scope="col">user.ranking</th>
</tr>
</thead>
<tbody *ngFor="let user of aciertosPorEncuesta; let i = index">
<tr>
<td>{{user.name}}</td>
<td>{{user.idEncuesta}}</td>
<td>{{user.nAciertos}}</td>
<td>{{user.nPreguntas}}</td>
<td>{{user.diff}}</td>
<td>{{user.fin}}</td>
<td>{{user.valid}}</td>
<td>{{user.ranking}}</td>
</tr>
</tbody>
</table>
</div>
<!--
......@@ -100,44 +149,25 @@
</table>
-->
<table class="table table-borderless">
<thead>
<tr>
<th scope="col">user.name</th>
<th scope="col">user.nTop1</th>
<th scope="col">user.bestRank</th>
</tr>
</thead>
<tbody *ngFor="let user of users; let i = index">
<tr>
<td>{{user.name}}</td>
<td>{{user.nTop1}}</td>
<td>{{user.bestRank}}</td>
</tr>
</tbody>
</table>
<table class="table table-borderless">
<thead>
<tr>
<th scope="col">user.name</th>
<th scope="col">user.idEncuesta</th>
<th scope="col">user.nAciertos</th>
<th scope="col">user.nPreguntas</th>
<th scope="col">user.diff</th>
<th scope="col">user.valid</th>
<th scope="col">user.ranking</th>
</tr>
</thead>
<tbody *ngFor="let user of aciertosPorEncuesta; let i = index">
<tr>
<td>{{user.name}}</td>
<td>{{user.idEncuesta}}</td>
<td>{{user.nAciertos}}</td>
<td>{{user.nPreguntas}}</td>
<td>{{user.diff}}</td>
<td>{{user.valid}}</td>
<td>{{user.ranking}}</td>
</tr>
</tbody>
</table>
\ No newline at end of file
<!-- Modal -->
<form class="modal fade" id="modalDelete" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"
#deleteForm="ngForm">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title" id="exampleModalLabel">Eliminar encuesta</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body container">
<p>Los datos asociados a la encuesta incluidos los resultados de los usuarios que la han realizado
seran eliminados permenetemente de la base de datos, este borrado será irreversible.
</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-danger" data-bs-dismiss="modal" (click)="deleteEncuesta(idEncuesta)"
[disabled]="!deleteForm.form.valid">ELIMINAR</button>
</div>
</div>
</div>
</form>
\ No newline at end of file
......@@ -21,6 +21,8 @@ export class PerfilComponent implements OnInit {
id: string = "";
operacion: string = "";
idEncuesta:Number = 0;
map = new Map();
nEncuestas: number = 0;
......@@ -143,13 +145,13 @@ export class PerfilComponent implements OnInit {
var corrects = solucion.respuestas.filter(r => r.correct)
this.nPreguntasContestadasAcertadas = this.nPreguntasContestadasAcertadas + corrects.length;
this.aciertosPorEncuesta.push({name:solucion.name, userId: solucion.userId, idEncuesta: encuesta.id,
nAciertos: corrects.length, nPreguntas: encuesta.preguntas.length, diff: solucion.diff, valid: solucion.valid, ranking: 0})
nAciertos: corrects.length, nPreguntas: encuesta.preguntas.length, diff: solucion.diff,fin: solucion.fin, valid: solucion.valid, ranking: 0})
});
}
}
var ranking = this.aciertosPorEncuesta.filter(a => a.idEncuesta == encuesta.id);
ranking.sort((a ,b) => this.compare(a,b))
ranking.sort((a ,b) => this.compare(a, b, encuesta))
for (let i = 0; i < ranking.length; i++) {
ranking[i].ranking = i+1;
}
......@@ -187,13 +189,17 @@ export class PerfilComponent implements OnInit {
}*/
console.log(this.users);
}
compare(a:any, b:any){
compare(a:any, b:any, encuesta:Encuesta){
if(a.valid != b.valid){
return(+b.valid - +a.valid);
}else if(a.nAciertos != b.nAciertos){
return(+b.nAciertos - +a.nAciertos);
}else{
if(encuesta.type.toString() == "RESPUESTA")
return (a.diff - b.diff);
else{
return(a.fin - b.fin)
}
}
}
......
......@@ -294,8 +294,8 @@ public class EncuestaController {
opcionRepository.deleteAll(opciones);
}
preguntaRepository.deleteAll(preguntas);
encuestaRepository.deleteById(id);/*
//Se eliminan las respuesta pues ya no tinen sentido pues las preguntas son distintas
encuestaRepository.deleteById(id);
//Se eliminan las respuesta
List<Solucion> soluciones = solucionRepository.findByIdEncuesta(id);
for (Solucion solucion : soluciones){
List<Respuesta> respuestas = solucion.getRespuestas();
......@@ -303,7 +303,7 @@ public class EncuestaController {
respuestaRepository.delete(respuesta);
}
solucionRepository.delete(solucion);
}*/
}
return "Encuaesta eliminada: " + id;
} else {
......
package com.uva.gateway.controller;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
......@@ -94,10 +96,15 @@ public class AuthController {
//Back delete
@DeleteMapping()
private String deleteAuth(HttpServletRequest req) {
RestTemplate restTemplate = new RestTemplate();
restTemplate.delete("http://api-poll:8082"+req.getRequestURI());
return "200";
private void deleteAuth(HttpServletRequest req) {
System.out.println("/api/auth");
try {
URI uri = new URI("http://api-poll:8082"+req.getRequestURI());
new RestTemplate().delete(uri);
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
\ No newline at end of file
package com.uva.gateway.controller;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
......@@ -42,12 +45,14 @@ public class BotController {
//Back POST
@PostMapping(consumes = MediaType.ALL_VALUE)
private String postDiscord(HttpServletRequest req, @RequestBody String body) {
private ResponseEntity<String> postDiscord(HttpServletRequest req, @RequestBody String body) {
System.out.println("/api/bot");
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
List<String> list = Collections.list(req.getHeaderNames());
for (String e : list) {
headers.set(e, req.getHeader(e));
}
HttpEntity request = new HttpEntity(body, headers);
ResponseEntity<String> response = restTemplate.exchange(
"http://api-discord:8081"+req.getRequestURI(),
......@@ -56,29 +61,20 @@ public class BotController {
String.class,
1
);
return response.toString();
return response;
}
//Back PUT
@PutMapping()
private ResponseEntity<String> putDiscord(HttpServletRequest req, @RequestBody String body) {
// create an instance of RestTemplate
System.out.println("/api/bot");
RestTemplate restTemplate = new RestTemplate();
// create headers
HttpHeaders headers = new HttpHeaders();
// set `Content-Type` and `Accept` headers
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
// example of custom header
//headers.set("X-Request-Source", "Desktop");
// build the request
HttpEntity request = new HttpEntity(headers);
// make an HTTP GET request with headers
List<String> list = Collections.list(req.getHeaderNames());
for (String e : list) {
headers.set(e, req.getHeader(e));
}
HttpEntity request = new HttpEntity(body, headers);
ResponseEntity<String> response = restTemplate.exchange(
"http://api-discord:8081"+req.getRequestURI(),
HttpMethod.PUT,
......@@ -91,10 +87,15 @@ public class BotController {
//Back delete
@DeleteMapping()
private String deleteDiscord(HttpServletRequest req) {
RestTemplate restTemplate = new RestTemplate();
restTemplate.delete("http://api-discord:8081"+req.getRequestURI());
return "200";
private void deleteDiscord(HttpServletRequest req) {
System.out.println("/api/bot");
try {
URI uri = new URI("http://api-discord:8081"+req.getRequestURI());
new RestTemplate().delete(uri);
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
\ No newline at end of file
package com.uva.gateway.controller;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collections;
import javax.servlet.http.HttpServletRequest;
......@@ -71,11 +73,13 @@ public class ClientController {
return response;
}
@DeleteMapping()
private String deleteClient(HttpServletRequest req) {
RestTemplate restTemplate = new RestTemplate();
restTemplate.delete("http://client:8080"+req.getRequestURI());
return "200";
private void deleteClient(HttpServletRequest req) {
try {
URI uri = new URI("http://client:8080"+req.getRequestURI());
new RestTemplate().delete(uri);
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
\ No newline at end of file
package com.uva.gateway.controller;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collections;
import java.util.List;
......@@ -94,10 +96,15 @@ public class PollController {
//Back delete
@DeleteMapping()
private String deleteEncuestas(HttpServletRequest req) {
RestTemplate restTemplate = new RestTemplate();
restTemplate.delete("http://api-poll:8082"+req.getRequestURI());
return "200";
private void deleteEncuestas(HttpServletRequest req) {
System.out.println("/api/encuestas");
try {
URI uri = new URI("http://api-poll:8082"+req.getRequestURI());
new RestTemplate().delete(uri);
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment