merge conflict fix
|  | @ -2,11 +2,13 @@ package org.datasurvey.web.rest; | |||
| 
 | ||||
| import java.net.URI; | ||||
| import java.net.URISyntaxException; | ||||
| import java.util.Arrays; | ||||
| import java.util.List; | ||||
| import java.util.Objects; | ||||
| import java.util.Optional; | ||||
| import javax.validation.Valid; | ||||
| import javax.validation.constraints.NotNull; | ||||
| import org.datasurvey.domain.EPreguntaCerrada; | ||||
| import org.datasurvey.domain.EPreguntaCerradaOpcion; | ||||
| import org.datasurvey.repository.EPreguntaCerradaOpcionRepository; | ||||
| import org.datasurvey.service.EPreguntaCerradaOpcionQueryService; | ||||
|  | @ -58,10 +60,15 @@ public class EPreguntaCerradaOpcionResource { | |||
|      * @return the {@link ResponseEntity} with status {@code 201 (Created)} and with body the new ePreguntaCerradaOpcion, or with status {@code 400 (Bad Request)} if the ePreguntaCerradaOpcion has already an ID. | ||||
|      * @throws URISyntaxException if the Location URI syntax is incorrect. | ||||
|      */ | ||||
|     @PostMapping("/e-pregunta-cerrada-opcions") | ||||
|     @PostMapping("/e-pregunta-cerrada-opcions/{id}") | ||||
|     public ResponseEntity<EPreguntaCerradaOpcion> createEPreguntaCerradaOpcion( | ||||
|         @Valid @RequestBody EPreguntaCerradaOpcion ePreguntaCerradaOpcion | ||||
|         @Valid @RequestBody EPreguntaCerradaOpcion ePreguntaCerradaOpcion, | ||||
|         @PathVariable(value = "id", required = false) final Long id | ||||
|     ) throws URISyntaxException { | ||||
|         EPreguntaCerrada ePreguntaCerrada = new EPreguntaCerrada(); | ||||
|         ePreguntaCerrada.setId(id); | ||||
|         ePreguntaCerradaOpcion.setEPreguntaCerrada(ePreguntaCerrada); | ||||
| 
 | ||||
|         log.debug("REST request to save EPreguntaCerradaOpcion : {}", ePreguntaCerradaOpcion); | ||||
|         if (ePreguntaCerradaOpcion.getId() != null) { | ||||
|             throw new BadRequestAlertException("A new ePreguntaCerradaOpcion cannot already have an ID", ENTITY_NAME, "idexists"); | ||||
|  | @ -76,7 +83,7 @@ public class EPreguntaCerradaOpcionResource { | |||
|     /** | ||||
|      * {@code PUT  /e-pregunta-cerrada-opcions/:id} : Updates an existing ePreguntaCerradaOpcion. | ||||
|      * | ||||
|      * @param id the id of the ePreguntaCerradaOpcion to save. | ||||
|      * @param id                     the id of the ePreguntaCerradaOpcion to save. | ||||
|      * @param ePreguntaCerradaOpcion the ePreguntaCerradaOpcion to update. | ||||
|      * @return the {@link ResponseEntity} with status {@code 200 (OK)} and with body the updated ePreguntaCerradaOpcion, | ||||
|      * or with status {@code 400 (Bad Request)} if the ePreguntaCerradaOpcion is not valid, | ||||
|  | @ -110,7 +117,7 @@ public class EPreguntaCerradaOpcionResource { | |||
|     /** | ||||
|      * {@code PATCH  /e-pregunta-cerrada-opcions/:id} : Partial updates given fields of an existing ePreguntaCerradaOpcion, field will ignore if it is null | ||||
|      * | ||||
|      * @param id the id of the ePreguntaCerradaOpcion to save. | ||||
|      * @param id                     the id of the ePreguntaCerradaOpcion to save. | ||||
|      * @param ePreguntaCerradaOpcion the ePreguntaCerradaOpcion to update. | ||||
|      * @return the {@link ResponseEntity} with status {@code 200 (OK)} and with body the updated ePreguntaCerradaOpcion, | ||||
|      * or with status {@code 400 (Bad Request)} if the ePreguntaCerradaOpcion is not valid, | ||||
|  | @ -196,4 +203,15 @@ public class EPreguntaCerradaOpcionResource { | |||
|             .headers(HeaderUtil.createEntityDeletionAlert(applicationName, true, ENTITY_NAME, id.toString())) | ||||
|             .build(); | ||||
|     } | ||||
| 
 | ||||
|     @PostMapping("/e-pregunta-cerrada-opcions/deleteMany") | ||||
|     public ResponseEntity<Void> deleteManyEPreguntaCerradaOpcion(@Valid @RequestBody int[] ids) { | ||||
|         for (int id : ids) { | ||||
|             ePreguntaCerradaOpcionService.delete((long) id); | ||||
|         } | ||||
|         return ResponseEntity | ||||
|             .noContent() | ||||
|             .headers(HeaderUtil.createEntityDeletionAlert(applicationName, true, ENTITY_NAME, Arrays.toString(ids))) | ||||
|             .build(); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -2,14 +2,21 @@ package org.datasurvey.web.rest; | |||
| 
 | ||||
| import java.net.URI; | ||||
| import java.net.URISyntaxException; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Objects; | ||||
| import java.util.Optional; | ||||
| import java.util.stream.Collectors; | ||||
| import java.util.stream.Stream; | ||||
| import javax.validation.Valid; | ||||
| import javax.validation.constraints.NotNull; | ||||
| import org.datasurvey.domain.EPreguntaAbierta; | ||||
| import org.datasurvey.domain.EPreguntaCerrada; | ||||
| import org.datasurvey.domain.EPreguntaCerradaOpcion; | ||||
| import org.datasurvey.domain.Encuesta; | ||||
| import org.datasurvey.domain.enumeration.AccesoEncuesta; | ||||
| import org.datasurvey.repository.EncuestaRepository; | ||||
| import org.datasurvey.service.*; | ||||
| import org.datasurvey.service.EncuestaQueryService; | ||||
| import org.datasurvey.service.EncuestaService; | ||||
| import org.datasurvey.service.MailService; | ||||
|  | @ -45,16 +52,28 @@ public class EncuestaResource { | |||
| 
 | ||||
|     private final MailService mailService; | ||||
| 
 | ||||
|     private final EPreguntaCerradaService ePreguntaCerradaService; | ||||
| 
 | ||||
|     private final EPreguntaAbiertaService ePreguntaAbiertaService; | ||||
| 
 | ||||
|     private final EPreguntaCerradaOpcionService ePreguntaCerradaOpcionService; | ||||
| 
 | ||||
|     public EncuestaResource( | ||||
|         EncuestaService encuestaService, | ||||
|         EncuestaRepository encuestaRepository, | ||||
|         EncuestaQueryService encuestaQueryService, | ||||
|         MailService mailService | ||||
|         MailService mailService, | ||||
|         EPreguntaCerradaService ePreguntaCerradaService, | ||||
|         EPreguntaAbiertaService ePreguntaAbiertaService, | ||||
|         EPreguntaCerradaOpcionService ePreguntaCerradaOpcionService | ||||
|     ) { | ||||
|         this.encuestaService = encuestaService; | ||||
|         this.encuestaRepository = encuestaRepository; | ||||
|         this.encuestaQueryService = encuestaQueryService; | ||||
|         this.mailService = mailService; | ||||
|         this.ePreguntaCerradaService = ePreguntaCerradaService; | ||||
|         this.ePreguntaAbiertaService = ePreguntaAbiertaService; | ||||
|         this.ePreguntaCerradaOpcionService = ePreguntaCerradaOpcionService; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | @ -80,7 +99,7 @@ public class EncuestaResource { | |||
|     /** | ||||
|      * {@code PUT  /encuestas/:id} : Updates an existing encuesta. | ||||
|      * | ||||
|      * @param id the id of the encuesta to save. | ||||
|      * @param id       the id of the encuesta to save. | ||||
|      * @param encuesta the encuesta to update. | ||||
|      * @return the {@link ResponseEntity} with status {@code 200 (OK)} and with body the updated encuesta, | ||||
|      * or with status {@code 400 (Bad Request)} if the encuesta is not valid, | ||||
|  | @ -120,7 +139,7 @@ public class EncuestaResource { | |||
|     /** | ||||
|      * {@code PATCH  /encuestas/:id} : Partial updates given fields of an existing encuesta, field will ignore if it is null | ||||
|      * | ||||
|      * @param id the id of the encuesta to save. | ||||
|      * @param id       the id of the encuesta to save. | ||||
|      * @param encuesta the encuesta to update. | ||||
|      * @return the {@link ResponseEntity} with status {@code 200 (OK)} and with body the updated encuesta, | ||||
|      * or with status {@code 400 (Bad Request)} if the encuesta is not valid, | ||||
|  | @ -166,6 +185,55 @@ public class EncuestaResource { | |||
|         return ResponseEntity.ok().body(entityList); | ||||
|     } | ||||
| 
 | ||||
|     @GetMapping("/encuestas/preguntas/{id}") | ||||
|     public ResponseEntity<List<Object>> getPreguntasByIdEncuesta(@PathVariable Long id) { | ||||
|         List<EPreguntaCerrada> preguntasCerradas = ePreguntaCerradaService.findAll(); | ||||
|         List<EPreguntaAbierta> preguntasAbiertas = ePreguntaAbiertaService.findAll(); | ||||
|         List<Object> preguntas = Stream.concat(preguntasCerradas.stream(), preguntasAbiertas.stream()).collect(Collectors.toList()); | ||||
|         List<Object> preguntasFiltered = new ArrayList<>(); | ||||
| 
 | ||||
|         for (Object obj : preguntas) { | ||||
|             if (obj.getClass() == EPreguntaCerrada.class) { | ||||
|                 if (((EPreguntaCerrada) obj).getEncuesta() != null) { | ||||
|                     if (((EPreguntaCerrada) obj).getEncuesta().getId().equals(id)) { | ||||
|                         preguntasFiltered.add(obj); | ||||
|                     } | ||||
|                 } | ||||
|             } else if (obj.getClass() == EPreguntaAbierta.class) { | ||||
|                 if (((EPreguntaAbierta) obj).getEncuesta() != null) { | ||||
|                     if (((EPreguntaAbierta) obj).getEncuesta().getId().equals(id)) { | ||||
|                         preguntasFiltered.add(obj); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return ResponseEntity.ok().body(preguntasFiltered); | ||||
|     } | ||||
| 
 | ||||
|     @GetMapping("/encuestas/preguntas-opciones/{id}") | ||||
|     public ResponseEntity<List<List<EPreguntaCerradaOpcion>>> getPreguntaCerradaOpcionByIdEncuesta(@PathVariable Long id) { | ||||
|         List<List<EPreguntaCerradaOpcion>> res = new ArrayList<>(); | ||||
|         List<EPreguntaCerrada> preguntasCerradas = ePreguntaCerradaService.findAll(); | ||||
|         List<EPreguntaCerrada> preguntasCerradasFiltered = preguntasCerradas | ||||
|             .stream() | ||||
|             .filter(p -> Objects.nonNull(p.getEncuesta())) | ||||
|             .filter(p -> p.getEncuesta().getId().equals(id)) | ||||
|             .collect(Collectors.toList()); | ||||
|         List<EPreguntaCerradaOpcion> opciones = ePreguntaCerradaOpcionService.findAll(); | ||||
| 
 | ||||
|         for (EPreguntaCerrada ePreguntaCerrada : preguntasCerradasFiltered) { | ||||
|             long preguntaCerradaId = ePreguntaCerrada.getId(); | ||||
|             List<EPreguntaCerradaOpcion> opcionesFiltered = opciones | ||||
|                 .stream() | ||||
|                 .filter(o -> Objects.nonNull(o.getEPreguntaCerrada())) | ||||
|                 .filter(o -> o.getEPreguntaCerrada().getId().equals(preguntaCerradaId)) | ||||
|                 .collect(Collectors.toList()); | ||||
|             res.add(opcionesFiltered); | ||||
|         } | ||||
| 
 | ||||
|         return ResponseEntity.ok().body(res); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * {@code GET  /encuestas/count} : count all the encuestas. | ||||
|      * | ||||
|  |  | |||
|  | @ -16,8 +16,8 @@ export class EPreguntaCerradaOpcionService { | |||
| 
 | ||||
|   constructor(protected http: HttpClient, protected applicationConfigService: ApplicationConfigService) {} | ||||
| 
 | ||||
|   create(ePreguntaCerradaOpcion: IEPreguntaCerradaOpcion): Observable<EntityResponseType> { | ||||
|     return this.http.post<IEPreguntaCerradaOpcion>(this.resourceUrl, ePreguntaCerradaOpcion, { observe: 'response' }); | ||||
|   create(ePreguntaCerradaOpcion: IEPreguntaCerradaOpcion, preguntaId?: number): Observable<EntityResponseType> { | ||||
|     return this.http.post<IEPreguntaCerradaOpcion>(`${this.resourceUrl}/${preguntaId}`, ePreguntaCerradaOpcion, { observe: 'response' }); | ||||
|   } | ||||
| 
 | ||||
|   update(ePreguntaCerradaOpcion: IEPreguntaCerradaOpcion): Observable<EntityResponseType> { | ||||
|  | @ -49,6 +49,10 @@ export class EPreguntaCerradaOpcionService { | |||
|     return this.http.delete(`${this.resourceUrl}/${id}`, { observe: 'response' }); | ||||
|   } | ||||
| 
 | ||||
|   deleteMany(ids: number[]): Observable<EntityResponseType> { | ||||
|     return this.http.post<IEPreguntaCerradaOpcion>(`${this.resourceUrl}/deleteMany`, ids, { observe: 'response' }); | ||||
|   } | ||||
| 
 | ||||
|   addEPreguntaCerradaOpcionToCollectionIfMissing( | ||||
|     ePreguntaCerradaOpcionCollection: IEPreguntaCerradaOpcion[], | ||||
|     ...ePreguntaCerradaOpcionsToCheck: (IEPreguntaCerradaOpcion | null | undefined)[] | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| <form *ngIf="encuesta" name="deleteForm" (ngSubmit)="confirmDelete(encuesta)"> | ||||
| <form class="ds-form" *ngIf="encuesta" name="deleteForm" (ngSubmit)="confirmDelete(encuesta!)"> | ||||
|   <div class="modal-header"> | ||||
|     <h4 class="modal-title" data-cy="encuestaDeleteDialogHeading" jhiTranslate="entity.delete.title">Confirm delete operation</h4> | ||||
|     <h2 class="ds-title" data-cy="encuestaDeleteDialogHeading" jhiTranslate="entity.delete.title">Confirm delete operation</h2> | ||||
| 
 | ||||
|     <button type="button" class="close" data-dismiss="modal" aria-hidden="true" (click)="cancel()">×</button> | ||||
|   </div> | ||||
|  | @ -14,11 +14,11 @@ | |||
|   </div> | ||||
| 
 | ||||
|   <div class="modal-footer"> | ||||
|     <button type="button" class="btn btn-secondary" data-dismiss="modal" (click)="cancel()"> | ||||
|       <fa-icon icon="ban"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span> | ||||
|     <button type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal" (click)="cancel()"> | ||||
|       <fa-icon icon="arrow-left"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span> | ||||
|     </button> | ||||
| 
 | ||||
|     <button id="jhi-confirm-delete-encuesta" data-cy="entityConfirmDeleteButton" type="submit" class="btn btn-danger"> | ||||
|     <button id="jhi-confirm-delete-encuesta" data-cy="entityConfirmDeleteButton" type="submit" class="ds-btn ds-btn--danger"> | ||||
|       <fa-icon icon="times"></fa-icon> <span jhiTranslate="entity.action.delete">Delete</span> | ||||
|     </button> | ||||
|   </div> | ||||
|  |  | |||
|  | @ -1,9 +1,8 @@ | |||
| import { Component } from '@angular/core'; | ||||
| import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; | ||||
| import { EstadoEncuesta } from 'app/entities/enumerations/estado-encuesta.model'; | ||||
| 
 | ||||
| import { IEncuesta } from '../encuesta.model'; | ||||
| import { EncuestaService } from '../service/encuesta.service'; | ||||
| import { EstadoEncuesta } from 'app/entities/enumerations/estado-encuesta.model'; | ||||
| 
 | ||||
| @Component({ | ||||
|   templateUrl: './encuesta-delete-dialog.component.html', | ||||
|  | @ -17,9 +16,9 @@ export class EncuestaDeleteDialogComponent { | |||
|     this.activeModal.dismiss(); | ||||
|   } | ||||
| 
 | ||||
|   confirmDelete(encuesta: IEncuesta): void { | ||||
|     encuesta.estado = EstadoEncuesta.DELETED; | ||||
|     this.encuestaService.update(encuesta).subscribe(() => { | ||||
|   confirmDelete(encuest: IEncuesta): void { | ||||
|     encuest.estado = EstadoEncuesta.DELETED; | ||||
|     this.encuestaService.deleteEncuesta(encuest).subscribe(() => { | ||||
|       this.activeModal.close('deleted'); | ||||
|     }); | ||||
|   } | ||||
|  |  | |||
|  | @ -0,0 +1,25 @@ | |||
| <form name="deleteForm" (ngSubmit)="confirmDelete()"> | ||||
|   <div class="modal-header"> | ||||
|     <h4 class="modal-title" data-cy="encuestaDeleteDialogHeading" jhiTranslate="entity.delete.title">Confirm delete operation</h4> | ||||
| 
 | ||||
|     <button type="button" class="close" data-dismiss="modal" aria-hidden="true" (click)="cancel()">×</button> | ||||
|   </div> | ||||
| 
 | ||||
|   <div class="modal-body"> | ||||
|     <jhi-alert-error></jhi-alert-error> | ||||
| 
 | ||||
|     <p id="jhi-delete-encuesta-heading" jhiTranslate="dataSurveyApp.encuesta.delete.deleteoption"> | ||||
|       Are you sure you want to delete this option? | ||||
|     </p> | ||||
|   </div> | ||||
| 
 | ||||
|   <div class="modal-footer"> | ||||
|     <button type="button" class="btn btn-secondary" data-dismiss="modal" (click)="cancel()"> | ||||
|       <fa-icon icon="ban"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span> | ||||
|     </button> | ||||
| 
 | ||||
|     <button id="jhi-confirm-delete-encuesta" data-cy="entityConfirmDeleteButton" type="submit" class="btn btn-danger"> | ||||
|       <fa-icon icon="times"></fa-icon> <span jhiTranslate="entity.action.delete">Delete</span> | ||||
|     </button> | ||||
|   </div> | ||||
| </form> | ||||
|  | @ -0,0 +1,17 @@ | |||
| import { Component } from '@angular/core'; | ||||
| import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; | ||||
| 
 | ||||
| @Component({ | ||||
|   templateUrl: './encuesta-delete-option-dialog.component.html', | ||||
| }) | ||||
| export class EncuestaDeleteOptionDialogComponent { | ||||
|   constructor(protected activeModal: NgbActiveModal) {} | ||||
| 
 | ||||
|   cancel(): void { | ||||
|     this.activeModal.dismiss(); | ||||
|   } | ||||
| 
 | ||||
|   confirmDelete(): void { | ||||
|     this.activeModal.close('confirm'); | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,25 @@ | |||
| <form name="deleteForm" (ngSubmit)="confirmDelete()"> | ||||
|   <div class="modal-header"> | ||||
|     <h4 class="modal-title" data-cy="encuestaDeleteDialogHeading" jhiTranslate="entity.delete.title">Confirm delete operation</h4> | ||||
| 
 | ||||
|     <button type="button" class="close" data-dismiss="modal" aria-hidden="true" (click)="cancel()">×</button> | ||||
|   </div> | ||||
| 
 | ||||
|   <div class="modal-body"> | ||||
|     <jhi-alert-error></jhi-alert-error> | ||||
| 
 | ||||
|     <p id="jhi-delete-encuesta-heading" jhiTranslate="dataSurveyApp.encuesta.delete.deletequestion"> | ||||
|       Are you sure you want to delete this question? | ||||
|     </p> | ||||
|   </div> | ||||
| 
 | ||||
|   <div class="modal-footer"> | ||||
|     <button type="button" class="btn btn-secondary" data-dismiss="modal" (click)="cancel()"> | ||||
|       <fa-icon icon="ban"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span> | ||||
|     </button> | ||||
| 
 | ||||
|     <button id="jhi-confirm-delete-encuesta" data-cy="entityConfirmDeleteButton" type="submit" class="btn btn-danger"> | ||||
|       <fa-icon icon="times"></fa-icon> <span jhiTranslate="entity.action.delete">Delete</span> | ||||
|     </button> | ||||
|   </div> | ||||
| </form> | ||||
|  | @ -0,0 +1,17 @@ | |||
| import { Component } from '@angular/core'; | ||||
| import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; | ||||
| 
 | ||||
| @Component({ | ||||
|   templateUrl: './encuesta-delete-question-dialog.component.html', | ||||
| }) | ||||
| export class EncuestaDeleteQuestionDialogComponent { | ||||
|   constructor(protected activeModal: NgbActiveModal) {} | ||||
| 
 | ||||
|   cancel(): void { | ||||
|     this.activeModal.dismiss(); | ||||
|   } | ||||
| 
 | ||||
|   confirmDelete(): void { | ||||
|     this.activeModal.close('confirm'); | ||||
|   } | ||||
| } | ||||
|  | @ -7,6 +7,8 @@ import { EncuestaDeleteDialogComponent } from './delete/encuesta-delete-dialog.c | |||
| import { EncuestaRoutingModule } from './route/encuesta-routing.module'; | ||||
| import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; | ||||
| import { EncuestaPublishDialogComponent } from './encuesta-publish-dialog/encuesta-publish-dialog.component'; | ||||
| import { EncuestaDeleteQuestionDialogComponent } from './encuesta-delete-question-dialog/encuesta-delete-question-dialog.component'; | ||||
| import { EncuestaDeleteOptionDialogComponent } from './encuesta-delete-option-dialog/encuesta-delete-option-dialog.component'; | ||||
| 
 | ||||
| @NgModule({ | ||||
|   imports: [SharedModule, EncuestaRoutingModule, FontAwesomeModule], | ||||
|  | @ -16,6 +18,8 @@ import { EncuestaPublishDialogComponent } from './encuesta-publish-dialog/encues | |||
|     EncuestaUpdateComponent, | ||||
|     EncuestaDeleteDialogComponent, | ||||
|     EncuestaPublishDialogComponent, | ||||
|     EncuestaDeleteQuestionDialogComponent, | ||||
|     EncuestaDeleteOptionDialogComponent, | ||||
|   ], | ||||
|   entryComponents: [EncuestaDeleteDialogComponent], | ||||
| }) | ||||
|  |  | |||
|  | @ -40,6 +40,45 @@ | |||
|     <span jhiTranslate="dataSurveyApp.encuesta.home.notFound">No surveys found</span> | ||||
|   </div> | ||||
| 
 | ||||
|   <form class="ds-form"> | ||||
|     <div class="input-group"> | ||||
|       <div class="col-3"> | ||||
|         <div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div> | ||||
|         <input type="text" name="searchString" placeholder="Buscar por nombre..." [(ngModel)]="searchString" /> | ||||
|       </div> | ||||
|       <div class="col-3"> | ||||
|         <div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div> | ||||
|         <select name="accesoEncuestas" id="accesoEncuesta" [(ngModel)]="accesoEncuesta" style="width: 200px"> | ||||
|           <option value="" selected="selected" disabled="disabled">Filtrar por acceso</option> | ||||
|           <option value="">Todos Accesos</option> | ||||
|           <option value="Public">Públicas</option> | ||||
|           <option value="Private">Privadas</option> | ||||
|         </select> | ||||
|       </div> | ||||
|       <div class="col-3"> | ||||
|         <div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div> | ||||
|         <select name="estadoEncuesta" id="estadoEncuesta" [(ngModel)]="estadoEncuesta" style="width: 200px"> | ||||
|           <option value="" selected="selected" disabled="disabled">Filtrar por estado</option> | ||||
|           <option value="">Todos Estados</option> | ||||
|           <option value="Draft">Borradores</option> | ||||
|           <option value="Active">Activadas</option> | ||||
|           <option value="Finished">Finalizadas</option> | ||||
|         </select> | ||||
|       </div> | ||||
|       <!--<div class="col-3"> | ||||
|           <div class="input-group-addon "><i class="glyphicon glyphicon-search"></i></div> | ||||
|           <select id="categoriaEncuesta"  name="categoriaEncuesta" [(ngModel)]="categoriaEncuesta"> | ||||
|             <option [ngValue]="null" selected>Filtre por categoría</option> | ||||
|             <option | ||||
|               *ngFor="let categoriaOption of categoriasSharedCollection; trackBy: trackCategoriaById" | ||||
|               [ngValue]="categoriaOption.nombre"    > | ||||
|               {{ categoriaOption.nombre }} | ||||
|             </option> | ||||
|           </select> | ||||
|         </div>--> | ||||
|     </div> | ||||
|   </form> | ||||
| 
 | ||||
|   <!-- Lista de Encuestas del Usuario --> | ||||
|   <div class="ds-list" (contextmenu)="openContextMenu($event)" *ngIf="!isAdmin()"> | ||||
|     <!-- Context Menu --> | ||||
|  | @ -85,17 +124,22 @@ | |||
|         </div> | ||||
|         <div class="ds-contextmenu__divider" id="contextmenu-delete--separator"> | ||||
|           <li> | ||||
|             <button type="button"><fa-icon class="contextmenu__icon" [icon]="faTrashAlt"></fa-icon>Eliminar</button> | ||||
|             <button type="button" (click)="deleteSurvey()"> | ||||
|               <fa-icon class="contextmenu__icon" [icon]="faTrashAlt"></fa-icon>Eliminar | ||||
|             </button> | ||||
|           </li> | ||||
|         </div> | ||||
|       </ul> | ||||
|     </div> | ||||
| 
 | ||||
|     <div | ||||
|       class="ds-list--entity" | ||||
|       *ngFor="let encuesta of encuestas; trackBy: trackId" | ||||
|       class="ds-list--entity card-encuesta lift" | ||||
|       *ngFor=" | ||||
|         let encuesta of encuestas! | filter: 'nombre':searchString | filter: 'acceso':accesoEncuesta | filter: 'estado':estadoEncuesta; | ||||
|         trackBy: trackId | ||||
|       " | ||||
|       (dblclick)="openSurvey($event)" | ||||
|       (click)="selectSurvey($event)" | ||||
|       [hidden]="encuesta.estado == 'DELETED'" | ||||
|       [attr.data-id]="encuesta.id" | ||||
|     > | ||||
|       <div class="entity-header"> | ||||
|  | @ -165,21 +209,55 @@ | |||
|       </div> | ||||
| 
 | ||||
|       <!-- <p> | ||||
|         <a [routerLink]="['/encuesta', encuesta.id, 'view']">{{ encuesta.id }}</a> | ||||
|       </p> | ||||
|       <p>{{ encuesta.nombre }}</p> | ||||
|       <p>{{ encuesta.descripcion }}</p> | ||||
|       <p>{{ encuesta.fechaCreacion | formatMediumDatetime }}</p> | ||||
|       <p>{{ encuesta.fechaPublicacion | formatMediumDatetime }}</p> | ||||
|       <p>{{ encuesta.fechaFinalizar | formatMediumDatetime }}</p> | ||||
|       <p>{{ encuesta.fechaFinalizada | formatMediumDatetime }}</p> | ||||
|       <p>{{ encuesta.calificacion }}</p> | ||||
|       <p jhiTranslate="{{ 'dataSurveyApp.AccesoEncuesta.' + encuesta.acceso }}">{{ encuesta.acceso }}</p> | ||||
|       <p>{{ encuesta.contrasenna }}</p> | ||||
|       <p jhiTranslate="{{ 'dataSurveyApp.EstadoEncuesta.' + encuesta.estado }}">{{ encuesta.estado }}</p> | ||||
|       <div> | ||||
|         <div *ngIf="encuesta.categoria"> | ||||
|           <a [routerLink]="['/categoria', encuesta.categoria?.id, 'view']">{{ encuesta.categoria?.nombre }}</a> | ||||
|           <a [routerLink]="['/encuesta', encuesta.id, 'view']">{{ encuesta.id }}</a> | ||||
|         </p> | ||||
|         <p>{{ encuesta.nombre }}</p> | ||||
|         <p>{{ encuesta.descripcion }}</p> | ||||
|         <p>{{ encuesta.fechaCreacion | formatMediumDatetime }}</p> | ||||
|         <p>{{ encuesta.fechaPublicacion | formatMediumDatetime }}</p> | ||||
|         <p>{{ encuesta.fechaFinalizar | formatMediumDatetime }}</p> | ||||
|         <p>{{ encuesta.fechaFinalizada | formatMediumDatetime }}</p> | ||||
|         <p>{{ encuesta.calificacion }}</p> | ||||
|         <p jhiTranslate="{{ 'dataSurveyApp.AccesoEncuesta.' + encuesta.acceso }}">{{ encuesta.acceso }}</p> | ||||
|         <p>{{ encuesta.contrasenna }}</p> | ||||
|         <p jhiTranslate="{{ 'dataSurveyApp.EstadoEncuesta.' + encuesta.estado }}">{{ encuesta.estado }}</p> | ||||
|         <div> | ||||
|           <div *ngIf="encuesta.categoria"> | ||||
|             <a [routerLink]="['/categoria', encuesta.categoria?.id, 'view']">{{ encuesta.categoria?.nombre }}</a> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div> | ||||
|           <div *ngIf="encuesta.usuarioExtra"> | ||||
|             <a [routerLink]="['/usuario-extra', encuesta.usuarioExtra?.id, 'view']">{{ encuesta.usuarioExtra?.id }}</a> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="text-right"> | ||||
|           <div class="btn-group"> | ||||
|             <button | ||||
|               type="submit" | ||||
|               [routerLink]="['/encuesta', encuesta.id, 'view']" | ||||
|               class="btn btn-info btn-sm" | ||||
|               data-cy="entityDetailsButton" | ||||
|             > | ||||
|               <fa-icon icon="eye"></fa-icon> | ||||
|               <span class="d-none d-md-inline" jhiTranslate="entity.action.view">View</span> | ||||
|             </button> | ||||
| 
 | ||||
|             <button | ||||
|               type="submit" | ||||
|               [routerLink]="['/encuesta', encuesta.id, 'edit']" | ||||
|               class="btn btn-primary btn-sm" | ||||
|               data-cy="entityEditButton" | ||||
|             > | ||||
|               <fa-icon icon="pencil-alt"></fa-icon> | ||||
|               <span class="d-none d-md-inline" jhiTranslate="entity.action.edit">Edit</span> | ||||
|             </button> | ||||
| 
 | ||||
|             <button type="submit" (click)="delete(encuesta)" class="btn btn-danger btn-sm" data-cy="entityDeleteButton"> | ||||
|               <fa-icon icon="times"></fa-icon> | ||||
|               <span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span> | ||||
|             </button> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div> | ||||
|  | @ -218,7 +296,6 @@ | |||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| 
 | ||||
| <div class="table-responsive" id="entities" *ngIf="isAdmin() && encuestas && encuestas.length > 0"> | ||||
|   <table class="table table-striped" aria-describedby="page-heading"> | ||||
|     <thead> | ||||
|  | @ -233,9 +310,15 @@ | |||
|       </tr> | ||||
|     </thead> | ||||
|     <tbody> | ||||
|       <tr *ngFor="let encuesta of encuestas; trackBy: trackId" data-cy="entityTable"> | ||||
|       <tr | ||||
|         *ngFor=" | ||||
|           let encuesta of encuestas | filter: 'nombre':searchString | filter: 'acceso':accesoEncuesta | filter: 'estado':estadoEncuesta; | ||||
|           trackBy: trackId | ||||
|         " | ||||
|         data-cy="entityTable" | ||||
|       > | ||||
|         <td>{{ encuesta.nombre }}</td> | ||||
|         <td>{{ encuesta.fechaCreacion | formatMediumDatetime }}</td> | ||||
|         <td>{{ encuesta.fechaCreacion | formatShortDatetime | titlecase }}</td> | ||||
|         <td jhiTranslate="{{ 'dataSurveyApp.AccesoEncuesta.' + encuesta.acceso }}">{{ encuesta.acceso }}</td> | ||||
|         <td jhiTranslate="{{ 'dataSurveyApp.EstadoEncuesta.' + encuesta.estado }}">{{ encuesta.estado }}</td> | ||||
|         <td> | ||||
|  | @ -245,9 +328,7 @@ | |||
|         </td> | ||||
|         <td> | ||||
|           <div *ngIf="encuesta.usuarioExtra"> | ||||
|             <a [routerLink]="['/usuario-extra', encuesta.usuarioExtra?.nombre, 'view']"> | ||||
|               {{ encuesta.usuarioExtra?.nombre }} | ||||
|             </a> | ||||
|             {{ encuesta.usuarioExtra?.user?.login }} | ||||
|           </div> | ||||
|         </td> | ||||
|         <td class="text-right"> | ||||
|  |  | |||
|  | @ -22,6 +22,8 @@ import { EstadoEncuesta } from 'app/entities/enumerations/estado-encuesta.model' | |||
| import { AccountService } from 'app/core/auth/account.service'; | ||||
| import { Account } from 'app/core/auth/account.model'; | ||||
| import { Router } from '@angular/router'; | ||||
| import { EncuestaPublishDialogComponent } from '../encuesta-publish-dialog/encuesta-publish-dialog.component'; | ||||
| import { IUser } from '../../user/user.model'; | ||||
| 
 | ||||
| import { | ||||
|   faShareAlt, | ||||
|  | @ -38,7 +40,6 @@ import { | |||
| } from '@fortawesome/free-solid-svg-icons'; | ||||
| 
 | ||||
| import * as $ from 'jquery'; | ||||
| import { EncuestaPublishDialogComponent } from '../encuesta-publish-dialog/encuesta-publish-dialog.component'; | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'jhi-encuesta', | ||||
|  | @ -70,6 +71,15 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | |||
| 
 | ||||
|   categoriasSharedCollection: ICategoria[] = []; | ||||
|   usuarioExtrasSharedCollection: IUsuarioExtra[] = []; | ||||
|   userSharedCollection: IUser[] = []; | ||||
| 
 | ||||
|   selectedIdSurvey: number | null = null; | ||||
|   encuestaencontrada: IEncuesta | null = null; | ||||
| 
 | ||||
|   public searchString: string; | ||||
|   public accesoEncuesta: string; | ||||
|   //public categoriaEncuesta: string;
 | ||||
|   public estadoEncuesta: string; | ||||
| 
 | ||||
|   editForm = this.fb.group({ | ||||
|     id: [], | ||||
|  | @ -99,7 +109,11 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | |||
|     protected fb: FormBuilder, | ||||
|     protected accountService: AccountService, | ||||
|     protected router: Router | ||||
|   ) {} | ||||
|   ) { | ||||
|     this.searchString = ''; | ||||
|     this.accesoEncuesta = ''; | ||||
|     this.estadoEncuesta = ''; | ||||
|   } | ||||
| 
 | ||||
|   resetForm(): void { | ||||
|     this.editForm.reset(); | ||||
|  | @ -108,25 +122,69 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | |||
|   loadAll(): void { | ||||
|     this.isLoading = true; | ||||
| 
 | ||||
|     this.encuestaService.query().subscribe( | ||||
|       (res: HttpResponse<IEncuesta[]>) => { | ||||
|         this.isLoading = false; | ||||
|         const tmpEncuestas = res.body ?? []; | ||||
|         if (this.isAdmin()) { | ||||
|           this.encuestas = tmpEncuestas; | ||||
|         } else { | ||||
|           this.encuestas = tmpEncuestas | ||||
|             .filter(e => e.usuarioExtra?.id === this.usuarioExtra?.id) | ||||
|             .filter(e => e.estado !== EstadoEncuesta.DELETED); | ||||
|     this.usuarioExtraService | ||||
|       .retrieveAllPublicUsers() | ||||
|       .pipe(finalize(() => this.loadUserExtras())) | ||||
|       .subscribe(res => { | ||||
|         this.userSharedCollection = res; | ||||
|       }); | ||||
|   } | ||||
| 
 | ||||
|   loadPublicUser(): void { | ||||
|     this.usuarioExtraService | ||||
|       .retrieveAllPublicUsers() | ||||
|       .pipe(finalize(() => this.loadUserExtras())) | ||||
|       .subscribe(res => { | ||||
|         this.userSharedCollection = res; | ||||
|       }); | ||||
|   } | ||||
| 
 | ||||
|   loadUserExtras() { | ||||
|     this.usuarioExtraService | ||||
|       .query() | ||||
|       .pipe( | ||||
|         finalize(() => | ||||
|           this.encuestaService.query().subscribe( | ||||
|             (res: HttpResponse<IEncuesta[]>) => { | ||||
|               this.isLoading = false; | ||||
|               const tmpEncuestas = res.body ?? []; | ||||
|               if (this.isAdmin()) { | ||||
|                 this.encuestas = tmpEncuestas; | ||||
|                 this.encuestas.forEach(e => { | ||||
|                   e.usuarioExtra = this.usuarioExtrasSharedCollection?.find(pU => pU.id == e.usuarioExtra?.id); | ||||
|                 }); | ||||
|               } else { | ||||
|                 this.encuestas = tmpEncuestas | ||||
|                   .filter(e => e.usuarioExtra?.id === this.usuarioExtra?.id) | ||||
|                   .filter(e => e.estado !== EstadoEncuesta.DELETED); | ||||
|               } | ||||
|             }, | ||||
|             () => { | ||||
|               this.isLoading = false; | ||||
|             } | ||||
|           ) | ||||
|         ) | ||||
|       ) | ||||
|       .subscribe( | ||||
|         (res: HttpResponse<IUsuarioExtra[]>) => { | ||||
|           this.isLoading = false; | ||||
|           this.usuarioExtrasSharedCollection = res.body ?? []; | ||||
|           this.usuarioExtrasSharedCollection.forEach(uE => { | ||||
|             uE.user = this.userSharedCollection?.find(pU => pU.id == uE.user?.id); | ||||
|           }); | ||||
|         }, | ||||
|         () => { | ||||
|           this.isLoading = false; | ||||
|         } | ||||
|       }, | ||||
|       () => { | ||||
|         this.isLoading = false; | ||||
|       } | ||||
|     ); | ||||
|       ); | ||||
|   } | ||||
| 
 | ||||
|   ngOnInit(): void { | ||||
|     this.searchString = ''; | ||||
|     this.accesoEncuesta = ''; | ||||
|     //this.categoriaEncuesta = '';
 | ||||
|     this.estadoEncuesta = ''; | ||||
| 
 | ||||
|     document.body.addEventListener('click', e => { | ||||
|       document.getElementById('contextmenu')!.classList.add('ds-contextmenu--closed'); | ||||
|       document.getElementById('contextmenu')!.classList.remove('ds-contextmenu--open'); | ||||
|  | @ -159,6 +217,7 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | |||
|         this.usuarioExtraService.find(account.id).subscribe(usuarioExtra => { | ||||
|           this.usuarioExtra = usuarioExtra.body; | ||||
|           this.loadAll(); | ||||
| 
 | ||||
|           this.loadRelationshipsOptions(); | ||||
|           if (this.usuarioExtra !== null) { | ||||
|             if (this.usuarioExtra.id === undefined) { | ||||
|  | @ -190,6 +249,49 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | |||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   deleteSurvey(): void { | ||||
|     if (this.selectedIdSurvey != null) { | ||||
|       this.getEncuesta(this.selectedIdSurvey) | ||||
|         .pipe( | ||||
|           finalize(() => { | ||||
|             const modalRef = this.modalService.open(EncuestaDeleteDialogComponent, { size: 'lg', backdrop: 'static' }); | ||||
|             modalRef.componentInstance.encuesta = this.encuestaencontrada; | ||||
| 
 | ||||
|             modalRef.closed.subscribe(reason => { | ||||
|               if (reason === 'deleted') { | ||||
|                 this.loadAll(); | ||||
|               } | ||||
|             }); | ||||
|           }) | ||||
|         ) | ||||
|         .subscribe(data => { | ||||
|           console.log(data); | ||||
|           this.encuestaencontrada = data; | ||||
|         }); | ||||
| 
 | ||||
|       /*const modalRef = this.modalService.open(EncuestaDeleteDialogComponent, { size: 'lg', backdrop: 'static' }); | ||||
|       modalRef.componentInstance.encuesta = this.getEncuesta(this.selectedSurvey) | ||||
|         .pipe(finalize(() => | ||||
|           modalRef.closed.subscribe(reason => { | ||||
|             if (reason === 'deleted') { | ||||
|               this.loadAll(); | ||||
|             } | ||||
|           }) | ||||
|         )) | ||||
|         .subscribe(data=> { | ||||
|           console.log(data); | ||||
|           //this.encuestaencontrada = data;
 | ||||
|         }); | ||||
| */ | ||||
| 
 | ||||
|       // unsubscribe not needed because closed completes on modal close
 | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   getEncuesta(id: number) { | ||||
|     return this.encuestaService.findEncuesta(id); | ||||
|   } | ||||
| 
 | ||||
|   previousState(): void { | ||||
|     window.history.back(); | ||||
|   } | ||||
|  | @ -375,6 +477,9 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | |||
|       } else if ((event.target as HTMLElement).classList.contains('ds-list--entity')) { | ||||
|         event.target.classList.add('active'); | ||||
|         document.getElementById('contextmenu-create--separator')!.style.display = 'none'; | ||||
| 
 | ||||
|         this.selectedIdSurvey = Number(event.target.dataset.id); | ||||
|         //this.selectedSurvey = event.target.dataset.encuesta;
 | ||||
|       } | ||||
| 
 | ||||
|       document.getElementById('contextmenu')!.style.top = event.layerY + 'px'; | ||||
|  |  | |||
|  | @ -45,6 +45,27 @@ export class EncuestaService { | |||
|       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); | ||||
|   } | ||||
| 
 | ||||
|   findQuestions(id: number): Observable<EntityResponseType> { | ||||
|     return this.http | ||||
|       .get<any>(`${this.resourceUrl}/preguntas/${id}`, { observe: 'response' }) | ||||
|       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); | ||||
|   } | ||||
| 
 | ||||
|   findQuestionsOptions(id: number): Observable<EntityResponseType> { | ||||
|     return this.http | ||||
|       .get<any>(`${this.resourceUrl}/preguntas-opciones/${id}`, { observe: 'response' }) | ||||
|       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); | ||||
|   } | ||||
| 
 | ||||
|   findEncuesta(id: number): Observable<IEncuesta> { | ||||
|     return this.http.get<IEncuesta>(`${this.resourceUrl}/${id}`); | ||||
|   } | ||||
| 
 | ||||
|   deleteEncuesta(encuesta: IEncuesta): Observable<EntityResponseType> { | ||||
|     //const copy = this.convertDateFromClient(encuesta);
 | ||||
|     return this.http.put<IEncuesta>(`${this.resourceUrl}/${getEncuestaIdentifier(encuesta) as number}`, encuesta, { observe: 'response' }); | ||||
|   } | ||||
| 
 | ||||
|   query(req?: any): Observable<EntityArrayResponseType> { | ||||
|     const options = createRequestOption(req); | ||||
|     return this.http | ||||
|  |  | |||
|  | @ -1,4 +1,401 @@ | |||
| <div class="row justify-content-center"> | ||||
| <div> | ||||
|   <h2 id="page-heading" data-cy="EPreguntaCerradaHeading"> | ||||
|     <p class="ds-title">{{ encuesta!.nombre }}</p> | ||||
|     <p class="ds-subtitle">Creada el día {{ encuesta!.fechaCreacion | formatShortDatetime | lowercase }}</p> | ||||
| 
 | ||||
|     <div class="d-flex justify-content-end"> | ||||
|       <button type="button" class="ds-btn ds-btn--secondary" (click)="previousState()"> | ||||
|         <fa-icon icon="arrow-left"></fa-icon>  <span jhiTranslate="entity.action.cancel">Cancel</span> | ||||
|       </button> | ||||
|       <button type="button" class="ds-btn ds-btn--secondary" (click)="loadAll()" [disabled]="isLoading"> | ||||
|         <fa-icon icon="sync" [spin]="isLoading"></fa-icon>  <span>Refrescar preguntas</span> | ||||
|       </button> | ||||
|       <button | ||||
|         type="button" | ||||
|         class="ds-btn ds-btn--secondary" | ||||
|         (click)="createQuestion()" | ||||
|         [disabled]="isLoading" | ||||
|         data-toggle="modal" | ||||
|         data-target="#crearPregunta" | ||||
|       > | ||||
|         <fa-icon icon="sync" [icon]="faPlus"></fa-icon>  <span>Crear pregunta</span> | ||||
|       </button> | ||||
|       <ng-container *ngIf="encuesta!.estado === 'DRAFT'"> | ||||
|         <button type="button" class="ds-btn ds-btn--primary" (click)="publishSurvey()">Publicar encuesta</button> | ||||
|       </ng-container> | ||||
|       <ng-container *ngIf="encuesta!.estado === 'ACTIVE'"> | ||||
|         <button type="button" class="ds-btn ds-btn--danger" (click)="finishSurvey()">Finalizar encuesta</button> | ||||
|       </ng-container> | ||||
|     </div> | ||||
|   </h2> | ||||
| 
 | ||||
|   <jhi-alert-error></jhi-alert-error> | ||||
| 
 | ||||
|   <!-- <jhi-alert></jhi-alert> --> | ||||
| 
 | ||||
|   <div class="alert alert-warning" id="no-result" *ngIf="ePreguntas?.length === 0"> | ||||
|     <span>No se encontraron preguntas</span> | ||||
|   </div> | ||||
| 
 | ||||
|   <div class="ds-survey" id="entities" *ngIf="ePreguntas && ePreguntas.length > 0"> | ||||
|     <div class="ds-survey--all-question-wrapper"> | ||||
|       <div class="ds-survey--question-wrapper" *ngFor="let ePregunta of ePreguntas; let i = index; trackBy: trackId"> | ||||
|         <div | ||||
|           [attr.data-index]="ePregunta.id" | ||||
|           [attr.data-tipo]="ePregunta.tipo" | ||||
|           [attr.data-opcional]="ePregunta.opcional" | ||||
|           class="ds-survey--question" | ||||
|         > | ||||
|           <div class="ds-survey--titulo"> | ||||
|             <span class="ds-survey--titulo--name">{{ i + 1 }}. {{ ePregunta.nombre }}</span> | ||||
|             <fa-icon | ||||
|               *ngIf="encuesta!.estado === 'DRAFT'" | ||||
|               class="ds-survey--titulo--icon" | ||||
|               [icon]="faTimes" | ||||
|               (click)="deleteQuestion($event)" | ||||
|               [attr.data-id]="ePregunta.id" | ||||
|               [attr.data-type]="ePregunta.tipo" | ||||
|             ></fa-icon> | ||||
|           </div> | ||||
|           <div> | ||||
|             <span *ngIf="ePregunta.tipo === 'SINGLE'" class="ds-subtitle" | ||||
|               >Pregunta de respuesta {{ 'dataSurveyApp.PreguntaCerradaTipo.SINGLE' | translate | lowercase }} | ||||
|               {{ ePregunta.opcional ? '(opcional)' : '' }}</span | ||||
|             > | ||||
|             <span *ngIf="ePregunta.tipo === 'MULTIPLE'" class="ds-subtitle" | ||||
|               >Pregunta de respuesta {{ 'dataSurveyApp.PreguntaCerradaTipo.MULTIPLE' | translate | lowercase }} | ||||
|               {{ ePregunta.opcional ? '(opcional)' : '' }}</span | ||||
|             > | ||||
|             <span *ngIf="!ePregunta.tipo" class="ds-subtitle" | ||||
|               >Pregunta de respuesta abierta {{ ePregunta.opcional ? '(opcional)' : '' }}</span | ||||
|             > | ||||
|           </div> | ||||
|           <ng-container *ngIf="ePregunta.tipo"> | ||||
|             <ng-container *ngFor="let ePreguntaOpcion of ePreguntasOpciones; let j = index; trackBy: trackId"> | ||||
|               <ng-container *ngFor="let ePreguntaOpcionFinal of ePreguntaOpcion"> | ||||
|                 <ng-container *ngIf="ePregunta.id === ePreguntaOpcionFinal.epreguntaCerrada.id"> | ||||
|                   <div | ||||
|                     class="ds-survey--option ds-survey--option--base ds-survey--closed-option can-delete" | ||||
|                     [attr.data-id]="ePreguntaOpcionFinal.id" | ||||
|                   > | ||||
|                     <!-- <input class="ds-survey--checkbox" id="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}" type="checkbox" disabled /> --> | ||||
|                     <label for="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}">{{ ePreguntaOpcionFinal.nombre }}</label> | ||||
|                     <fa-icon | ||||
|                       *ngIf="encuesta!.estado === 'DRAFT'" | ||||
|                       class="ds-survey--titulo--icon ds-survey--titulo--icon--small" | ||||
|                       [icon]="faTimes" | ||||
|                       (click)="deleteOption($event)" | ||||
|                       [attr.data-optionid]="ePreguntaOpcionFinal.id" | ||||
|                     ></fa-icon> | ||||
|                   </div> | ||||
|                 </ng-container> | ||||
|               </ng-container> | ||||
|             </ng-container> | ||||
|             <div | ||||
|               class="ds-survey--option ds-survey--option--add ds-survey--closed-option" | ||||
|               (click)="resetForm($event)" | ||||
|               data-toggle="modal" | ||||
|               data-target="#crearOpcion" | ||||
|               [attr.data-id]="ePregunta.id" | ||||
|             > | ||||
|               <fa-icon | ||||
|                 class="ds-survey--add-option--icon" | ||||
|                 [icon]="faPlus" | ||||
|                 [attr.data-id]="ePregunta.id" | ||||
|                 [attr.data-type]="ePregunta.tipo" | ||||
|               ></fa-icon> | ||||
|               <span class="ds-survey--add-option">Añadir opción</span> | ||||
|             </div> | ||||
|           </ng-container> | ||||
|           <div class="ds-survey--option ds-survey--option--base ds-survey--open-option" *ngIf="!ePregunta.tipo"> | ||||
|             <textarea name="" id="" cols="30" rows="10" disabled></textarea> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
|     <!-- <table class="table table-striped" aria-describedby="page-heading"> | ||||
|       <thead> | ||||
|         <tr> | ||||
|           <th scope="col"><span jhiTranslate="global.field.id">ID</span></th> | ||||
|           <th scope="col"><span jhiTranslate="dataSurveyApp.ePreguntaCerrada.nombre">Nombre</span></th> | ||||
|           <th scope="col"><span jhiTranslate="dataSurveyApp.ePreguntaCerrada.tipo">Tipo</span></th> | ||||
|           <th scope="col"><span jhiTranslate="dataSurveyApp.ePreguntaCerrada.opcional">Opcional</span></th> | ||||
|           <th scope="col"><span jhiTranslate="dataSurveyApp.ePreguntaCerrada.orden">Orden</span></th> | ||||
|           <th scope="col"><span jhiTranslate="dataSurveyApp.ePreguntaCerrada.encuesta">Encuesta</span></th> | ||||
|           <th scope="col"></th> | ||||
|         </tr> | ||||
|       </thead> | ||||
|       <tbody> | ||||
|         <tr *ngFor="let ePreguntaCerrada of ePreguntaCerradas; trackBy: trackId" data-cy="entityTable"> | ||||
|           <td> | ||||
|             <a [routerLink]="['/e-pregunta-cerrada', ePreguntaCerrada.id, 'view']">{{ ePreguntaCerrada.id }}</a> | ||||
|           </td> | ||||
|           <td>{{ ePreguntaCerrada.nombre }}</td> | ||||
|           <td *ngIf="ePreguntaCerrada.tipo != undefined" jhiTranslate="{{ 'dataSurveyApp.PreguntaCerradaTipo.' + ePreguntaCerrada.tipo }}">{{ ePreguntaCerrada.tipo }}</td> | ||||
|           <td *ngIf="ePreguntaCerrada.tipo == undefined"></td> | ||||
|            | ||||
|           <td>{{ ePreguntaCerrada.opcional }}</td> | ||||
|           <td>{{ ePreguntaCerrada.orden }}</td> | ||||
|           <td> | ||||
|             <div *ngIf="ePreguntaCerrada.encuesta"> | ||||
|               <a [routerLink]="['/encuesta', ePreguntaCerrada.encuesta?.id, 'view']">{{ ePreguntaCerrada.encuesta?.id }}</a> | ||||
|             </div> | ||||
|           </td> | ||||
|           <td class="text-right"> | ||||
|             <div class="btn-group"> | ||||
|               <button | ||||
|                 type="submit" | ||||
|                 [routerLink]="['/e-pregunta-cerrada', ePreguntaCerrada.id, 'view']" | ||||
|                 class="btn btn-info btn-sm" | ||||
|                 data-cy="entityDetailsButton" | ||||
|               > | ||||
|                 <fa-icon icon="eye"></fa-icon> | ||||
|                 <span class="d-none d-md-inline" jhiTranslate="entity.action.view">View</span> | ||||
|               </button> | ||||
| 
 | ||||
|               <button | ||||
|                 type="submit" | ||||
|                 [routerLink]="['/e-pregunta-cerrada', ePreguntaCerrada.id, 'edit']" | ||||
|                 class="btn btn-primary btn-sm" | ||||
|                 data-cy="entityEditButton" | ||||
|               > | ||||
|                 <fa-icon icon="pencil-alt"></fa-icon> | ||||
|                 <span class="d-none d-md-inline" jhiTranslate="entity.action.edit">Edit</span> | ||||
|               </button> | ||||
| 
 | ||||
|               <button type="submit" (click)="delete(ePreguntaCerrada)" class="btn btn-danger btn-sm" data-cy="entityDeleteButton"> | ||||
|                 <fa-icon icon="times"></fa-icon> | ||||
|                 <span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span> | ||||
|               </button> | ||||
|             </div> | ||||
|           </td> | ||||
|         </tr> | ||||
|       </tbody> | ||||
|     </table> --> | ||||
|   </div> | ||||
| </div> | ||||
| 
 | ||||
| <!-- Create Option Modal --> | ||||
| <div class="modal fade ds-modal" id="crearOpcion" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> | ||||
|   <div class="modal-dialog modal-dialog-centered" role="document"> | ||||
|     <div class="modal-content"> | ||||
|       <form autocomplete="off" class="ds-form" name="editForm" role="form" novalidate (ngSubmit)="save()" [formGroup]="editForm"> | ||||
|         <div class="modal-header"> | ||||
|           <h1 class="modal-title" id="exampleModalLongTitle">Crear Opción</h1> | ||||
|         </div> | ||||
|         <div class="modal-body"> | ||||
|           <!-- Survey Closed Question Create Option Modal --> | ||||
|           <div> | ||||
|             <jhi-alert-error></jhi-alert-error> | ||||
| 
 | ||||
|             <div class="form-group"> | ||||
|               <label class="form-control-label" jhiTranslate="dataSurveyApp.ePreguntaCerradaOpcion.nombre" for="field_nombre">Nombre</label> | ||||
|               <input type="text" class="form-control" name="nombre" id="field_nombre" data-cy="nombre" formControlName="nombre" /> | ||||
|               <div *ngIf="editForm.get('nombre')!.invalid && (editForm.get('nombre')!.dirty || editForm.get('nombre')!.touched)"> | ||||
|                 <small | ||||
|                   class="form-text text-danger" | ||||
|                   *ngIf="editForm.get('nombre')?.errors?.required" | ||||
|                   jhiTranslate="entity.validation.required" | ||||
|                 > | ||||
|                   This field is required. | ||||
|                 </small> | ||||
|                 <small | ||||
|                   class="form-text text-danger" | ||||
|                   *ngIf="editForm.get('nombre')?.errors?.minlength" | ||||
|                   jhiTranslate="entity.validation.minlength" | ||||
|                   [translateValues]="{ min: 1 }" | ||||
|                 > | ||||
|                   This field is required to be at least 1 characters. | ||||
|                 </small> | ||||
|                 <small | ||||
|                   class="form-text text-danger" | ||||
|                   *ngIf="editForm.get('nombre')?.errors?.maxlength" | ||||
|                   jhiTranslate="entity.validation.maxlength" | ||||
|                   [translateValues]="{ max: 500 }" | ||||
|                 > | ||||
|                   This field cannot be longer than 500 characters. | ||||
|                 </small> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="modal-footer"> | ||||
|           <input id="createAnother" type="checkbox" (change)="createAnotherChange($event)" /> | ||||
|           <label for="createAnother">Crear otra</label> | ||||
|           <button id="cancelBtn" type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal"> | ||||
|             <fa-icon icon="arrow-left"></fa-icon>  <span jhiTranslate="entity.action.cancel">Cancel</span> | ||||
|           </button> | ||||
|           <button | ||||
|             type="submit" | ||||
|             id="save-entity" | ||||
|             data-cy="entityCreateSaveButton" | ||||
|             class="ds-btn ds-btn--primary" | ||||
|             [disabled]="editForm.invalid || isSaving" | ||||
|           > | ||||
|             <span jhiTranslate="entity.action.create">Create</span> | ||||
|           </button> | ||||
|         </div> | ||||
|       </form> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| 
 | ||||
| <!-- ------------------------------------------------------------------------------------------------- --> | ||||
| 
 | ||||
| <!-- Create Question Modal --> | ||||
| <div | ||||
|   class="modal fade ds-modal" | ||||
|   id="crearPregunta" | ||||
|   tabindex="-1" | ||||
|   role="dialog" | ||||
|   aria-labelledby="exampleModalCenterTitle" | ||||
|   aria-hidden="true" | ||||
| > | ||||
|   <div class="modal-dialog modal-dialog-centered" role="document"> | ||||
|     <div class="modal-content"> | ||||
|       <form | ||||
|         autocomplete="off" | ||||
|         class="ds-form" | ||||
|         name="editFormQuestion" | ||||
|         role="form" | ||||
|         novalidate | ||||
|         (ngSubmit)="saveQuestion()" | ||||
|         [formGroup]="editFormQuestion" | ||||
|       > | ||||
|         <div class="modal-header"> | ||||
|           <h1 class="modal-title" id="exampleModalLongTitle">Crear Pregunta</h1> | ||||
|         </div> | ||||
|         <div class="modal-body"> | ||||
|           <!-- Survey Create Question Modal --> | ||||
|           <div> | ||||
|             <jhi-alert-error></jhi-alert-error> | ||||
| 
 | ||||
|             <div class="form-group"> | ||||
|               <label class="form-control-label" for="field_nombre">Pregunta</label> | ||||
|               <input type="text" class="form-control" name="nombre" id="field_nombre" data-cy="nombre" formControlName="nombre" /> | ||||
|               <div | ||||
|                 *ngIf=" | ||||
|                   editFormQuestion.get('nombre')!.invalid && | ||||
|                   (editFormQuestion.get('nombre')!.dirty || editFormQuestion.get('nombre')!.touched) | ||||
|                 " | ||||
|               > | ||||
|                 <small | ||||
|                   class="form-text text-danger" | ||||
|                   *ngIf="editFormQuestion.get('nombre')?.errors?.required" | ||||
|                   jhiTranslate="entity.validation.required" | ||||
|                 > | ||||
|                   This field is required. | ||||
|                 </small> | ||||
|                 <small | ||||
|                   class="form-text text-danger" | ||||
|                   *ngIf="editFormQuestion.get('nombre')?.errors?.minlength" | ||||
|                   jhiTranslate="entity.validation.minlength" | ||||
|                   [translateValues]="{ min: 1 }" | ||||
|                 > | ||||
|                   This field is required to be at least 1 characters. | ||||
|                 </small> | ||||
|                 <small | ||||
|                   class="form-text text-danger" | ||||
|                   *ngIf="editFormQuestion.get('nombre')?.errors?.maxlength" | ||||
|                   jhiTranslate="entity.validation.maxlength" | ||||
|                   [translateValues]="{ max: 500 }" | ||||
|                 > | ||||
|                   This field cannot be longer than 500 characters. | ||||
|                 </small> | ||||
|               </div> | ||||
|             </div> | ||||
| 
 | ||||
|             <!-- Custom Form Group (Closed & Open Question Validation) --> | ||||
|             <div class="form-group"> | ||||
|               <label class="form-control-label" for="field_tipo">Tipo de pregunta</label> | ||||
|               <select class="form-control" name="tipopregunta" formControlName="tipopregunta" id="field_tipo" data-cy="tipopregunta"> | ||||
|                 <option selected value="CLOSED">Opción multiple</option> | ||||
|                 <option value="OPEN">Respuesta abierta</option> | ||||
|               </select> | ||||
|               <div | ||||
|                 *ngIf=" | ||||
|                   editFormQuestion.get('tipopregunta')!.invalid && | ||||
|                   (editFormQuestion.get('tipopregunta')!.dirty || editFormQuestion.get('tipopregunta')!.touched) | ||||
|                 " | ||||
|               > | ||||
|                 <small | ||||
|                   class="form-text text-danger" | ||||
|                   *ngIf="editFormQuestion.get('tipopregunta')?.errors?.required" | ||||
|                   jhiTranslate="entity.validation.required" | ||||
|                 > | ||||
|                   This field is required. | ||||
|                 </small> | ||||
|               </div> | ||||
|             </div> | ||||
| 
 | ||||
|             <ng-container *ngIf="editFormQuestion.get('tipopregunta')!.value === 'CLOSED'"> | ||||
|               <div class="form-group"> | ||||
|                 <label class="form-control-label" jhiTranslate="dataSurveyApp.ePreguntaCerrada.tiporespuesta" for="field_tipo">Tipo</label> | ||||
|                 <select class="form-control" name="tipo" formControlName="tipo" id="field_tipo" data-cy="tipo"> | ||||
|                   <option selected value="SINGLE">{{ 'dataSurveyApp.PreguntaCerradaTipo.SINGLE' | translate }}</option> | ||||
|                   <option value="MULTIPLE">{{ 'dataSurveyApp.PreguntaCerradaTipo.MULTIPLE' | translate }}</option> | ||||
|                 </select> | ||||
|                 <div | ||||
|                   *ngIf=" | ||||
|                     editFormQuestion.get('tipo')!.invalid && (editFormQuestion.get('tipo')!.dirty || editFormQuestion.get('tipo')!.touched) | ||||
|                   " | ||||
|                 > | ||||
|                   <small | ||||
|                     class="form-text text-danger" | ||||
|                     *ngIf="editFormQuestion.get('tipo')?.errors?.required" | ||||
|                     jhiTranslate="entity.validation.required" | ||||
|                   > | ||||
|                     This field is required. | ||||
|                   </small> | ||||
|                 </div> | ||||
|               </div> | ||||
|             </ng-container> | ||||
| 
 | ||||
|             <div class="form-group"> | ||||
|               <label class="form-control-label" for="field_opcional">Opcional</label> | ||||
|               <input type="checkbox" class="form-check" name="opcional" id="field_opcional" data-cy="opcional" formControlName="opcional" /> | ||||
|               <div | ||||
|                 *ngIf=" | ||||
|                   editFormQuestion.get('opcional')!.invalid && | ||||
|                   (editFormQuestion.get('opcional')!.dirty || editFormQuestion.get('opcional')!.touched) | ||||
|                 " | ||||
|               > | ||||
|                 <small | ||||
|                   class="form-text text-danger" | ||||
|                   *ngIf="editFormQuestion.get('opcional')?.errors?.required" | ||||
|                   jhiTranslate="entity.validation.required" | ||||
|                 > | ||||
|                   This field is required. | ||||
|                 </small> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="modal-footer"> | ||||
|           <input id="createAnotherQuestion" type="checkbox" (change)="createAnotherQuestionChange($event)" /> | ||||
|           <label for="createAnotherQuestion">Crear otra</label> | ||||
|           <button id="cancelBtnQuestion" type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal"> | ||||
|             <fa-icon icon="arrow-left"></fa-icon>  <span jhiTranslate="entity.action.cancel">Cancel</span> | ||||
|           </button> | ||||
|           <button | ||||
|             type="submit" | ||||
|             id="save-question" | ||||
|             data-cy="entityCreateSaveButton" | ||||
|             class="ds-btn ds-btn--primary" | ||||
|             [disabled]="editFormQuestion.invalid || isSaving" | ||||
|           > | ||||
|             <span jhiTranslate="entity.action.create">Create</span> | ||||
|           </button> | ||||
|         </div> | ||||
|       </form> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| 
 | ||||
| <!-- ------------------------------------------------------------------------------------------------- --> | ||||
| 
 | ||||
| <!-- <div class="row justify-content-center"> | ||||
|   <div class="col-8"> | ||||
|     <form name="editForm" role="form" novalidate (ngSubmit)="save()" [formGroup]="editForm"> | ||||
|       <h2 id="jhi-encuesta-heading" data-cy="EncuestaCreateUpdateHeading" jhiTranslate="dataSurveyApp.encuesta.home.createOrEditLabel"> | ||||
|  | @ -259,4 +656,4 @@ | |||
|       </div> | ||||
|     </form> | ||||
|   </div> | ||||
| </div> | ||||
| </div> --> | ||||
|  |  | |||
|  | @ -1,4 +1,9 @@ | |||
| import { Component, OnInit } from '@angular/core'; | ||||
| import { IEPreguntaAbierta } from './../../e-pregunta-abierta/e-pregunta-abierta.model'; | ||||
| import { EPreguntaCerrada } from './../../e-pregunta-cerrada/e-pregunta-cerrada.model'; | ||||
| import { EPreguntaCerradaOpcion, IEPreguntaCerradaOpcion } from './../../e-pregunta-cerrada-opcion/e-pregunta-cerrada-opcion.model'; | ||||
| import { EPreguntaAbiertaService } from './../../e-pregunta-abierta/service/e-pregunta-abierta.service'; | ||||
| import { EPreguntaCerradaOpcionService } from './../../e-pregunta-cerrada-opcion/service/e-pregunta-cerrada-opcion.service'; | ||||
| import { AfterViewChecked, Component, OnInit } from '@angular/core'; | ||||
| import { HttpResponse } from '@angular/common/http'; | ||||
| import { FormBuilder, Validators } from '@angular/forms'; | ||||
| import { ActivatedRoute } from '@angular/router'; | ||||
|  | @ -15,82 +20,254 @@ import { CategoriaService } from 'app/entities/categoria/service/categoria.servi | |||
| import { IUsuarioExtra } from 'app/entities/usuario-extra/usuario-extra.model'; | ||||
| import { UsuarioExtraService } from 'app/entities/usuario-extra/service/usuario-extra.service'; | ||||
| 
 | ||||
| import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; | ||||
| import { IEPreguntaCerrada } from 'app/entities/e-pregunta-cerrada/e-pregunta-cerrada.model'; | ||||
| import { EPreguntaCerradaService } from 'app/entities/e-pregunta-cerrada/service/e-pregunta-cerrada.service'; | ||||
| import { EPreguntaCerradaDeleteDialogComponent } from 'app/entities/e-pregunta-cerrada/delete/e-pregunta-cerrada-delete-dialog.component'; | ||||
| 
 | ||||
| import { faTimes, faPlus } from '@fortawesome/free-solid-svg-icons'; | ||||
| import { PreguntaCerradaTipo } from 'app/entities/enumerations/pregunta-cerrada-tipo.model'; | ||||
| import { EncuestaDeleteQuestionDialogComponent } from '../encuesta-delete-question-dialog/encuesta-delete-question-dialog.component'; | ||||
| import { EncuestaDeleteOptionDialogComponent } from '../encuesta-delete-option-dialog/encuesta-delete-option-dialog.component'; | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'jhi-encuesta-update', | ||||
|   templateUrl: './encuesta-update.component.html', | ||||
| }) | ||||
| export class EncuestaUpdateComponent implements OnInit { | ||||
| export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||
|   faTimes = faTimes; | ||||
|   faPlus = faPlus; | ||||
| 
 | ||||
|   isSaving = false; | ||||
|   isSavingQuestion = false; | ||||
| 
 | ||||
|   categoriasSharedCollection: ICategoria[] = []; | ||||
|   usuarioExtrasSharedCollection: IUsuarioExtra[] = []; | ||||
| 
 | ||||
|   // editForm = this.fb.group({
 | ||||
|   //   id: [],
 | ||||
|   //   nombre: [null, [Validators.required, Validators.minLength(1), Validators.maxLength(50)]],
 | ||||
|   //   descripcion: [],
 | ||||
|   //   fechaCreacion: [null, [Validators.required]],
 | ||||
|   //   fechaPublicacion: [],
 | ||||
|   //   fechaFinalizar: [],
 | ||||
|   //   fechaFinalizada: [],
 | ||||
|   //   calificacion: [null, [Validators.required]],
 | ||||
|   //   acceso: [null, [Validators.required]],
 | ||||
|   //   contrasenna: [],
 | ||||
|   //   estado: [null, [Validators.required]],
 | ||||
|   //   categoria: [],
 | ||||
|   //   usuarioExtra: [],
 | ||||
|   // });
 | ||||
| 
 | ||||
|   editForm = this.fb.group({ | ||||
|     id: [], | ||||
|     nombre: [null, [Validators.required, Validators.minLength(1), Validators.maxLength(50)]], | ||||
|     descripcion: [], | ||||
|     fechaCreacion: [null, [Validators.required]], | ||||
|     fechaPublicacion: [], | ||||
|     fechaFinalizar: [], | ||||
|     fechaFinalizada: [], | ||||
|     calificacion: [null, [Validators.required]], | ||||
|     acceso: [null, [Validators.required]], | ||||
|     contrasenna: [], | ||||
|     estado: [null, [Validators.required]], | ||||
|     categoria: [], | ||||
|     usuarioExtra: [], | ||||
|     nombre: [null, [Validators.required, Validators.minLength(1), Validators.maxLength(500)]], | ||||
|     // orden: [null, [Validators.required]],
 | ||||
|     // cantidad: [null, [Validators.required]],
 | ||||
|     // ePreguntaCerrada: [],
 | ||||
|   }); | ||||
| 
 | ||||
|   editFormQuestion = this.fb.group({ | ||||
|     id: [], | ||||
|     nombre: [null, [Validators.required, Validators.minLength(1), Validators.maxLength(500)]], | ||||
|     tipo: [PreguntaCerradaTipo.SINGLE], | ||||
|     opcional: [false], | ||||
|     tipopregunta: ['CLOSED'], | ||||
|   }); | ||||
| 
 | ||||
|   ePreguntas?: any[]; | ||||
|   ePreguntasOpciones?: any[]; | ||||
|   encuesta: Encuesta | null = null; | ||||
| 
 | ||||
|   isLoading = false; | ||||
| 
 | ||||
|   createAnother: Boolean = false; | ||||
|   createAnotherQuestion: Boolean = false; | ||||
|   selectedQuestionToCreateOption: IEPreguntaCerrada | null = null; | ||||
| 
 | ||||
|   constructor( | ||||
|     protected encuestaService: EncuestaService, | ||||
|     protected categoriaService: CategoriaService, | ||||
|     protected usuarioExtraService: UsuarioExtraService, | ||||
|     protected activatedRoute: ActivatedRoute, | ||||
|     protected fb: FormBuilder | ||||
|     protected fb: FormBuilder, | ||||
|     protected modalService: NgbModal, | ||||
|     protected ePreguntaCerradaService: EPreguntaCerradaService, | ||||
|     protected ePreguntaCerradaOpcionService: EPreguntaCerradaOpcionService, | ||||
|     protected ePreguntaAbiertaService: EPreguntaAbiertaService | ||||
|   ) {} | ||||
| 
 | ||||
|   loadAll(): void { | ||||
|     this.isLoading = true; | ||||
| 
 | ||||
|     this.encuestaService.findQuestions(this.encuesta?.id!).subscribe( | ||||
|       (res: any) => { | ||||
|         this.isLoading = false; | ||||
|         this.ePreguntas = res.body ?? []; | ||||
|         console.log(this.ePreguntas); | ||||
|       }, | ||||
|       () => { | ||||
|         this.isLoading = false; | ||||
|       } | ||||
|     ); | ||||
| 
 | ||||
|     this.encuestaService.findQuestionsOptions(this.encuesta?.id!).subscribe( | ||||
|       (res: any) => { | ||||
|         this.isLoading = false; | ||||
|         this.ePreguntasOpciones = res.body ?? []; | ||||
|       }, | ||||
|       () => { | ||||
|         this.isLoading = false; | ||||
|       } | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   ngOnInit(): void { | ||||
|     this.activatedRoute.data.subscribe(({ encuesta }) => { | ||||
|       console.log(this.activatedRoute.data); | ||||
|       console.log(encuesta); | ||||
| 
 | ||||
|       if (encuesta.id === undefined) { | ||||
|         const today = dayjs().startOf('day'); | ||||
|         encuesta.fechaCreacion = today; | ||||
|         encuesta.fechaPublicacion = today; | ||||
|         encuesta.fechaFinalizar = today; | ||||
|         encuesta.fechaFinalizada = today; | ||||
|       } else { | ||||
|         this.encuesta = encuesta; | ||||
|         this.loadAll(); | ||||
|       } | ||||
| 
 | ||||
|       this.updateForm(encuesta); | ||||
|       // this.updateForm(encuesta);
 | ||||
| 
 | ||||
|       this.loadRelationshipsOptions(); | ||||
|       // this.loadRelationshipsOptions();
 | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   ngAfterViewChecked(): void { | ||||
|     this.initListeners(); | ||||
|   } | ||||
| 
 | ||||
|   trackId(index: number, item: IEPreguntaCerrada): number { | ||||
|     return item.id!; | ||||
|   } | ||||
| 
 | ||||
|   delete(ePreguntaCerrada: IEPreguntaCerrada): void { | ||||
|     const modalRef = this.modalService.open(EPreguntaCerradaDeleteDialogComponent, { size: 'lg', backdrop: 'static' }); | ||||
|     modalRef.componentInstance.ePreguntaCerrada = ePreguntaCerrada; | ||||
|     // unsubscribe not needed because closed completes on modal close
 | ||||
|     modalRef.closed.subscribe(reason => { | ||||
|       if (reason === 'deleted') { | ||||
|         this.loadAll(); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   initListeners(): void { | ||||
|     const checkboxes = document.getElementsByClassName('ds-survey--checkbox'); | ||||
|     for (let i = 0; i < checkboxes.length; i++) { | ||||
|       checkboxes[i].addEventListener('click', e => { | ||||
|         if ((e.target as HTMLInputElement).checked) { | ||||
|           (e.target as HTMLElement).offsetParent!.classList.add('ds-survey--closed-option--active'); | ||||
|         } else { | ||||
|           (e.target as HTMLElement).offsetParent!.classList.remove('ds-survey--closed-option--active'); | ||||
|         } | ||||
|       }); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   previousState(): void { | ||||
|     window.history.back(); | ||||
|   } | ||||
| 
 | ||||
|   save(): void { | ||||
|     this.isSaving = true; | ||||
|     const encuesta = this.createFromForm(); | ||||
|     if (encuesta.id !== undefined) { | ||||
|       this.subscribeToSaveResponse(this.encuestaService.update(encuesta)); | ||||
|     } else { | ||||
|       this.subscribeToSaveResponse(this.encuestaService.create(encuesta)); | ||||
|   publishSurvey(): void {} | ||||
| 
 | ||||
|   finishSurvey(): void {} | ||||
| 
 | ||||
|   addOption(event: any): void {} | ||||
| 
 | ||||
|   resetForm(event: any): void { | ||||
|     this.editForm.reset(); | ||||
|     if (event !== null) { | ||||
|       const id = event.target.dataset.id; | ||||
|       this.ePreguntaCerradaService.find(id).subscribe(e => { | ||||
|         this.selectedQuestionToCreateOption = e.body; | ||||
|       }); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   trackCategoriaById(index: number, item: ICategoria): number { | ||||
|   deleteQuestion(event: any) { | ||||
|     const modalRef = this.modalService.open(EncuestaDeleteQuestionDialogComponent, { size: 'lg', backdrop: 'static' }); | ||||
|     modalRef.closed.subscribe(reason => { | ||||
|       if (reason === 'confirm') { | ||||
|         const id = event.target.dataset.id; | ||||
|         if (event.target.dataset.type) { | ||||
|           // Delete closed question
 | ||||
|           const questionElement = (event.target as HTMLElement).parentElement?.parentElement; | ||||
|           const optionIdsToDelete: number[] = []; | ||||
| 
 | ||||
|           // Get options IDs
 | ||||
|           questionElement?.childNodes.forEach((e, i) => { | ||||
|             if (e.nodeName !== 'DIV') return; | ||||
|             if (i === 0) return; | ||||
|             if ((e as HTMLElement).dataset.id === undefined) return; | ||||
|             if (!(e as HTMLElement).classList.contains('can-delete')) return; | ||||
|             let optionId = (e as HTMLElement).dataset.id; | ||||
|             optionIdsToDelete.push(+optionId!); | ||||
|           }); | ||||
| 
 | ||||
|           if (optionIdsToDelete.length === 0) { | ||||
|             this.ePreguntaCerradaService.delete(id).subscribe(e => { | ||||
|               this.loadAll(); | ||||
|             }); | ||||
|           } else { | ||||
|             // Delete question options
 | ||||
|             this.ePreguntaCerradaOpcionService.deleteMany(optionIdsToDelete).subscribe(e => { | ||||
|               // Delete question
 | ||||
|               this.ePreguntaCerradaService.delete(id).subscribe(e => { | ||||
|                 this.loadAll(); | ||||
|               }); | ||||
|             }); | ||||
|           } | ||||
|         } else { | ||||
|           // Delete open question
 | ||||
|           this.ePreguntaAbiertaService.delete(id).subscribe(e => { | ||||
|             this.loadAll(); | ||||
|           }); | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   deleteOption(event: any): void { | ||||
|     const modalRef = this.modalService.open(EncuestaDeleteOptionDialogComponent, { size: 'lg', backdrop: 'static' }); | ||||
|     modalRef.closed.subscribe(reason => { | ||||
|       if (reason === 'confirm') { | ||||
|         const id = event.target.dataset.optionid; | ||||
|         this.ePreguntaCerradaOpcionService.delete(id).subscribe(e => { | ||||
|           this.ePreguntas = []; | ||||
|           this.ePreguntasOpciones = []; | ||||
|           this.loadAll(); | ||||
|         }); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   save(): void { | ||||
|     this.isSaving = true; | ||||
|     const ePreguntaCerradaOpcion = this.createFromForm(); | ||||
|     if (ePreguntaCerradaOpcion.id !== undefined) { | ||||
|       this.subscribeToSaveResponse(this.ePreguntaCerradaOpcionService.update(ePreguntaCerradaOpcion)); | ||||
|     } else { | ||||
|       this.subscribeToSaveResponse( | ||||
|         this.ePreguntaCerradaOpcionService.create(ePreguntaCerradaOpcion, this.selectedQuestionToCreateOption?.id!) | ||||
|       ); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   trackEPreguntaCerradaById(index: number, item: IEPreguntaCerrada): number { | ||||
|     return item.id!; | ||||
|   } | ||||
| 
 | ||||
|   trackUsuarioExtraById(index: number, item: IUsuarioExtra): number { | ||||
|     return item.id!; | ||||
|   } | ||||
| 
 | ||||
|   protected subscribeToSaveResponse(result: Observable<HttpResponse<IEncuesta>>): void { | ||||
|   protected subscribeToSaveResponse(result: Observable<HttpResponse<IEPreguntaCerradaOpcion>>): void { | ||||
|     result.pipe(finalize(() => this.onSaveFinalize())).subscribe( | ||||
|       () => this.onSaveSuccess(), | ||||
|       () => this.onSaveError() | ||||
|  | @ -98,7 +275,14 @@ export class EncuestaUpdateComponent implements OnInit { | |||
|   } | ||||
| 
 | ||||
|   protected onSaveSuccess(): void { | ||||
|     this.previousState(); | ||||
|     // this.previousState();
 | ||||
|     this.resetForm(null); | ||||
|     this.ePreguntas = []; | ||||
|     this.ePreguntasOpciones = []; | ||||
|     this.loadAll(); | ||||
|     if (!this.createAnother) { | ||||
|       $('#cancelBtn').click(); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   protected onSaveError(): void { | ||||
|  | @ -109,79 +293,221 @@ export class EncuestaUpdateComponent implements OnInit { | |||
|     this.isSaving = false; | ||||
|   } | ||||
| 
 | ||||
|   protected updateForm(encuesta: IEncuesta): void { | ||||
|     this.editForm.patchValue({ | ||||
|       id: encuesta.id, | ||||
|       nombre: encuesta.nombre, | ||||
|       descripcion: encuesta.descripcion, | ||||
|       fechaCreacion: encuesta.fechaCreacion ? encuesta.fechaCreacion.format(DATE_TIME_FORMAT) : null, | ||||
|       fechaPublicacion: encuesta.fechaPublicacion ? encuesta.fechaPublicacion.format(DATE_TIME_FORMAT) : null, | ||||
|       fechaFinalizar: encuesta.fechaFinalizar ? encuesta.fechaFinalizar.format(DATE_TIME_FORMAT) : null, | ||||
|       fechaFinalizada: encuesta.fechaFinalizada ? encuesta.fechaFinalizada.format(DATE_TIME_FORMAT) : null, | ||||
|       calificacion: encuesta.calificacion, | ||||
|       acceso: encuesta.acceso, | ||||
|       contrasenna: encuesta.contrasenna, | ||||
|       estado: encuesta.estado, | ||||
|       categoria: encuesta.categoria, | ||||
|       usuarioExtra: encuesta.usuarioExtra, | ||||
|     }); | ||||
| 
 | ||||
|     this.categoriasSharedCollection = this.categoriaService.addCategoriaToCollectionIfMissing( | ||||
|       this.categoriasSharedCollection, | ||||
|       encuesta.categoria | ||||
|     ); | ||||
|     this.usuarioExtrasSharedCollection = this.usuarioExtraService.addUsuarioExtraToCollectionIfMissing( | ||||
|       this.usuarioExtrasSharedCollection, | ||||
|       encuesta.usuarioExtra | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   protected loadRelationshipsOptions(): void { | ||||
|     this.categoriaService | ||||
|       .query() | ||||
|       .pipe(map((res: HttpResponse<ICategoria[]>) => res.body ?? [])) | ||||
|       .pipe( | ||||
|         map((categorias: ICategoria[]) => | ||||
|           this.categoriaService.addCategoriaToCollectionIfMissing(categorias, this.editForm.get('categoria')!.value) | ||||
|         ) | ||||
|       ) | ||||
|       .subscribe((categorias: ICategoria[]) => (this.categoriasSharedCollection = categorias)); | ||||
| 
 | ||||
|     this.usuarioExtraService | ||||
|       .query() | ||||
|       .pipe(map((res: HttpResponse<IUsuarioExtra[]>) => res.body ?? [])) | ||||
|       .pipe( | ||||
|         map((usuarioExtras: IUsuarioExtra[]) => | ||||
|           this.usuarioExtraService.addUsuarioExtraToCollectionIfMissing(usuarioExtras, this.editForm.get('usuarioExtra')!.value) | ||||
|         ) | ||||
|       ) | ||||
|       .subscribe((usuarioExtras: IUsuarioExtra[]) => (this.usuarioExtrasSharedCollection = usuarioExtras)); | ||||
|   } | ||||
| 
 | ||||
|   protected createFromForm(): IEncuesta { | ||||
|   protected createFromForm(): IEPreguntaCerradaOpcion { | ||||
|     return { | ||||
|       ...new Encuesta(), | ||||
|       id: this.editForm.get(['id'])!.value, | ||||
|       // ...new EPreguntaCerradaOpcion(),
 | ||||
|       id: undefined, | ||||
|       nombre: this.editForm.get(['nombre'])!.value, | ||||
|       descripcion: this.editForm.get(['descripcion'])!.value, | ||||
|       fechaCreacion: this.editForm.get(['fechaCreacion'])!.value | ||||
|         ? dayjs(this.editForm.get(['fechaCreacion'])!.value, DATE_TIME_FORMAT) | ||||
|         : undefined, | ||||
|       fechaPublicacion: this.editForm.get(['fechaPublicacion'])!.value | ||||
|         ? dayjs(this.editForm.get(['fechaPublicacion'])!.value, DATE_TIME_FORMAT) | ||||
|         : undefined, | ||||
|       fechaFinalizar: this.editForm.get(['fechaFinalizar'])!.value | ||||
|         ? dayjs(this.editForm.get(['fechaFinalizar'])!.value, DATE_TIME_FORMAT) | ||||
|         : undefined, | ||||
|       fechaFinalizada: this.editForm.get(['fechaFinalizada'])!.value | ||||
|         ? dayjs(this.editForm.get(['fechaFinalizada'])!.value, DATE_TIME_FORMAT) | ||||
|         : undefined, | ||||
|       calificacion: this.editForm.get(['calificacion'])!.value, | ||||
|       acceso: this.editForm.get(['acceso'])!.value, | ||||
|       contrasenna: this.editForm.get(['contrasenna'])!.value, | ||||
|       estado: this.editForm.get(['estado'])!.value, | ||||
|       categoria: this.editForm.get(['categoria'])!.value, | ||||
|       usuarioExtra: this.editForm.get(['usuarioExtra'])!.value, | ||||
|       orden: 10, | ||||
|       cantidad: 0, | ||||
|       ePreguntaCerrada: this.selectedQuestionToCreateOption, | ||||
|     }; | ||||
|   } | ||||
| 
 | ||||
|   createAnotherChange(event: any) { | ||||
|     this.createAnother = event.target.checked; | ||||
|   } | ||||
| 
 | ||||
|   createQuestion(): void { | ||||
|     const surveyId = this.encuesta?.id; | ||||
|     console.log(surveyId); | ||||
|   } | ||||
| 
 | ||||
|   protected createFromFormClosedQuestion(): IEPreguntaCerrada { | ||||
|     return { | ||||
|       // ...new EPreguntaCerrada(),
 | ||||
|       id: undefined, | ||||
|       nombre: this.editFormQuestion.get(['nombre'])!.value, | ||||
|       tipo: this.editFormQuestion.get(['tipo'])!.value, | ||||
|       opcional: this.editFormQuestion.get(['opcional'])!.value, | ||||
|       orden: 10, | ||||
|       encuesta: this.encuesta, | ||||
|     }; | ||||
|   } | ||||
| 
 | ||||
|   protected createFromFormOpenQuestion(): IEPreguntaAbierta { | ||||
|     return { | ||||
|       // ...new EPreguntaAbierta(),
 | ||||
|       id: undefined, | ||||
|       nombre: this.editFormQuestion.get(['nombre'])!.value, | ||||
|       opcional: this.editFormQuestion.get(['opcional'])!.value, | ||||
|       orden: 10, | ||||
|       encuesta: this.encuesta, | ||||
|     }; | ||||
|   } | ||||
| 
 | ||||
|   createAnotherQuestionChange(event: any) { | ||||
|     this.createAnotherQuestion = event.target.checked; | ||||
|   } | ||||
| 
 | ||||
|   saveQuestion(): void { | ||||
|     this.isSavingQuestion = true; | ||||
|     const tipoPregunta = this.editFormQuestion.get(['tipopregunta'])!.value; | ||||
| 
 | ||||
|     if (tipoPregunta === 'CLOSED') { | ||||
|       const ePreguntaCerrada = this.createFromFormClosedQuestion(); | ||||
|       if (ePreguntaCerrada.id !== undefined) { | ||||
|         this.subscribeToSaveResponseQuestionClosed(this.ePreguntaCerradaService.update(ePreguntaCerrada)); | ||||
|       } else { | ||||
|         this.subscribeToSaveResponseQuestionClosed(this.ePreguntaCerradaService.create(ePreguntaCerrada)); | ||||
|       } | ||||
|     } else if (tipoPregunta === 'OPEN') { | ||||
|       const ePreguntaAbierta = this.createFromFormOpenQuestion(); | ||||
|       if (ePreguntaAbierta.id !== undefined) { | ||||
|         this.subscribeToSaveResponseQuestionOpen(this.ePreguntaAbiertaService.update(ePreguntaAbierta)); | ||||
|       } else { | ||||
|         this.subscribeToSaveResponseQuestionOpen(this.ePreguntaAbiertaService.create(ePreguntaAbierta)); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   protected subscribeToSaveResponseQuestionClosed(result: Observable<HttpResponse<IEPreguntaCerrada>>): void { | ||||
|     result.pipe(finalize(() => this.onSaveFinalizeQuestion())).subscribe( | ||||
|       () => this.onSaveSuccessQuestion(), | ||||
|       () => this.onSaveErrorQuestion() | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   protected subscribeToSaveResponseQuestionOpen(result: Observable<HttpResponse<IEPreguntaAbierta>>): void { | ||||
|     result.pipe(finalize(() => this.onSaveFinalizeQuestion())).subscribe( | ||||
|       () => this.onSaveSuccessQuestion(), | ||||
|       () => this.onSaveErrorQuestion() | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   protected onSaveSuccessQuestion(): void { | ||||
|     this.editFormQuestion.reset({ tipo: PreguntaCerradaTipo.SINGLE, tipopregunta: 'CLOSED', opcional: false }); | ||||
|     this.editForm.reset(); | ||||
|     this.ePreguntas = []; | ||||
|     this.ePreguntasOpciones = []; | ||||
|     this.loadAll(); | ||||
|     if (!this.createAnotherQuestion) { | ||||
|       $('#cancelBtnQuestion').click(); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   protected onSaveErrorQuestion(): void { | ||||
|     // Api for inheritance.
 | ||||
|   } | ||||
| 
 | ||||
|   protected onSaveFinalizeQuestion(): void { | ||||
|     this.isSavingQuestion = false; | ||||
|   } | ||||
| 
 | ||||
|   // previousState(): void {
 | ||||
|   //   window.history.back();
 | ||||
|   // }
 | ||||
| 
 | ||||
|   // save(): void {
 | ||||
|   //   this.isSaving = true;
 | ||||
|   //   const encuesta = this.createFromForm();
 | ||||
|   //   if (encuesta.id !== undefined) {
 | ||||
|   //     this.subscribeToSaveResponse(this.encuestaService.update(encuesta));
 | ||||
|   //   } else {
 | ||||
|   //     this.subscribeToSaveResponse(this.encuestaService.create(encuesta));
 | ||||
|   //   }
 | ||||
|   // }
 | ||||
| 
 | ||||
|   trackCategoriaById(index: number, item: ICategoria): number { | ||||
|     return item.id!; | ||||
|   } | ||||
| 
 | ||||
|   trackUsuarioExtraById(index: number, item: IUsuarioExtra): number { | ||||
|     return item.id!; | ||||
|   } | ||||
| 
 | ||||
|   // protected subscribeToSaveResponse(result: Observable<HttpResponse<IEncuesta>>): void {
 | ||||
|   //   result.pipe(finalize(() => this.onSaveFinalize())).subscribe(
 | ||||
|   //     () => this.onSaveSuccess(),
 | ||||
|   //     () => this.onSaveError()
 | ||||
|   //   );
 | ||||
|   // }
 | ||||
| 
 | ||||
|   // protected onSaveSuccess(): void {
 | ||||
|   //   this.previousState();
 | ||||
|   // }
 | ||||
| 
 | ||||
|   // protected onSaveError(): void {
 | ||||
|   //   // Api for inheritance.
 | ||||
|   // }
 | ||||
| 
 | ||||
|   // protected onSaveFinalize(): void {
 | ||||
|   //   this.isSaving = false;
 | ||||
|   // }
 | ||||
| 
 | ||||
|   // protected updateForm(encuesta: IEncuesta): void {
 | ||||
|   //   this.editForm.patchValue({
 | ||||
|   //     id: encuesta.id,
 | ||||
|   //     nombre: encuesta.nombre,
 | ||||
|   //     descripcion: encuesta.descripcion,
 | ||||
|   //     fechaCreacion: encuesta.fechaCreacion ? encuesta.fechaCreacion.format(DATE_TIME_FORMAT) : null,
 | ||||
|   //     fechaPublicacion: encuesta.fechaPublicacion ? encuesta.fechaPublicacion.format(DATE_TIME_FORMAT) : null,
 | ||||
|   //     fechaFinalizar: encuesta.fechaFinalizar ? encuesta.fechaFinalizar.format(DATE_TIME_FORMAT) : null,
 | ||||
|   //     fechaFinalizada: encuesta.fechaFinalizada ? encuesta.fechaFinalizada.format(DATE_TIME_FORMAT) : null,
 | ||||
|   //     calificacion: encuesta.calificacion,
 | ||||
|   //     acceso: encuesta.acceso,
 | ||||
|   //     contrasenna: encuesta.contrasenna,
 | ||||
|   //     estado: encuesta.estado,
 | ||||
|   //     categoria: encuesta.categoria,
 | ||||
|   //     usuarioExtra: encuesta.usuarioExtra,
 | ||||
|   //   });
 | ||||
| 
 | ||||
|   //   this.categoriasSharedCollection = this.categoriaService.addCategoriaToCollectionIfMissing(
 | ||||
|   //     this.categoriasSharedCollection,
 | ||||
|   //     encuesta.categoria
 | ||||
|   //   );
 | ||||
|   //   this.usuarioExtrasSharedCollection = this.usuarioExtraService.addUsuarioExtraToCollectionIfMissing(
 | ||||
|   //     this.usuarioExtrasSharedCollection,
 | ||||
|   //     encuesta.usuarioExtra
 | ||||
|   //   );
 | ||||
|   // }
 | ||||
| 
 | ||||
|   // protected loadRelationshipsOptions(): void {
 | ||||
|   //   this.categoriaService
 | ||||
|   //     .query()
 | ||||
|   //     .pipe(map((res: HttpResponse<ICategoria[]>) => res.body ?? []))
 | ||||
|   //     .pipe(
 | ||||
|   //       map((categorias: ICategoria[]) =>
 | ||||
|   //         this.categoriaService.addCategoriaToCollectionIfMissing(categorias, this.editForm.get('categoria')!.value)
 | ||||
|   //       )
 | ||||
|   //     )
 | ||||
|   //     .subscribe((categorias: ICategoria[]) => (this.categoriasSharedCollection = categorias));
 | ||||
| 
 | ||||
|   //   this.usuarioExtraService
 | ||||
|   //     .query()
 | ||||
|   //     .pipe(map((res: HttpResponse<IUsuarioExtra[]>) => res.body ?? []))
 | ||||
|   //     .pipe(
 | ||||
|   //       map((usuarioExtras: IUsuarioExtra[]) =>
 | ||||
|   //         this.usuarioExtraService.addUsuarioExtraToCollectionIfMissing(usuarioExtras, this.editForm.get('usuarioExtra')!.value)
 | ||||
|   //       )
 | ||||
|   //     )
 | ||||
|   //     .subscribe((usuarioExtras: IUsuarioExtra[]) => (this.usuarioExtrasSharedCollection = usuarioExtras));
 | ||||
|   // }
 | ||||
| 
 | ||||
|   // protected createFromForm(): IEncuesta {
 | ||||
|   //   return {
 | ||||
|   //     ...new Encuesta(),
 | ||||
|   //     id: this.editForm.get(['id'])!.value,
 | ||||
|   //     nombre: this.editForm.get(['nombre'])!.value,
 | ||||
|   //     descripcion: this.editForm.get(['descripcion'])!.value,
 | ||||
|   //     fechaCreacion: this.editForm.get(['fechaCreacion'])!.value
 | ||||
|   //       ? dayjs(this.editForm.get(['fechaCreacion'])!.value, DATE_TIME_FORMAT)
 | ||||
|   //       : undefined,
 | ||||
|   //     fechaPublicacion: this.editForm.get(['fechaPublicacion'])!.value
 | ||||
|   //       ? dayjs(this.editForm.get(['fechaPublicacion'])!.value, DATE_TIME_FORMAT)
 | ||||
|   //       : undefined,
 | ||||
|   //     fechaFinalizar: this.editForm.get(['fechaFinalizar'])!.value
 | ||||
|   //       ? dayjs(this.editForm.get(['fechaFinalizar'])!.value, DATE_TIME_FORMAT)
 | ||||
|   //       : undefined,
 | ||||
|   //     fechaFinalizada: this.editForm.get(['fechaFinalizada'])!.value
 | ||||
|   //       ? dayjs(this.editForm.get(['fechaFinalizada'])!.value, DATE_TIME_FORMAT)
 | ||||
|   //       : undefined,
 | ||||
|   //     calificacion: this.editForm.get(['calificacion'])!.value,
 | ||||
|   //     acceso: this.editForm.get(['acceso'])!.value,
 | ||||
|   //     contrasenna: this.editForm.get(['contrasenna'])!.value,
 | ||||
|   //     estado: this.editForm.get(['estado'])!.value,
 | ||||
|   //     categoria: this.editForm.get(['categoria'])!.value,
 | ||||
|   //     usuarioExtra: this.editForm.get(['usuarioExtra'])!.value,
 | ||||
|   //   };
 | ||||
|   // }
 | ||||
| } | ||||
|  |  | |||
|  | @ -22,7 +22,23 @@ | |||
|   <div class="alert alert-warning" id="no-result" *ngIf="usuarioExtras?.length === 0"> | ||||
|     <span jhiTranslate="dataSurveyApp.usuarioExtra.home.notFound">No usuarioExtras found</span> | ||||
|   </div> | ||||
| 
 | ||||
|   <form class="ds-form d-inline"> | ||||
|     <div class="input-group"> | ||||
|       <div class="col-3"> | ||||
|         <div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div> | ||||
|         <input type="text" name="searchNombreUsuario" placeholder="Buscar por nombre..." [(ngModel)]="searchNombreUsuario" /> | ||||
|       </div> | ||||
|       <div class="col-3"> | ||||
|         <div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div> | ||||
|         <select name="searchEstadoUsuario" id="searchEstadoUsuario" [(ngModel)]="searchEstadoUsuario" style="width: 200px"> | ||||
|           <option value="" selected="selected" disabled="disabled">Filtrar por estado</option> | ||||
|           <option value="">Todos Estados</option> | ||||
|           <option value="Active">Activos</option> | ||||
|           <option value="Suspended">Bloqueados</option> | ||||
|         </select> | ||||
|       </div> | ||||
|     </div> | ||||
|   </form> | ||||
|   <div class="table-responsive" id="entities" *ngIf="usuarioExtras && usuarioExtras.length > 0"> | ||||
|     <table class="table table-striped" aria-describedby="page-heading"> | ||||
|       <thead> | ||||
|  | @ -37,7 +53,13 @@ | |||
|         </tr> | ||||
|       </thead> | ||||
|       <tbody> | ||||
|         <tr *ngFor="let usuarioExtra of usuarioExtras; trackBy: trackId" data-cy="entityTable"> | ||||
|         <tr | ||||
|           *ngFor=" | ||||
|             let usuarioExtra of usuarioExtras | filter: 'nombre':searchNombreUsuario | filter: 'estado':searchEstadoUsuario; | ||||
|             trackBy: trackId | ||||
|           " | ||||
|           data-cy="entityTable" | ||||
|         > | ||||
|           <td *ngIf="usuarioExtra.user"> | ||||
|             <ul class="listRoles"> | ||||
|               <li *ngFor="let userRole of usuarioExtra.user.authorities"> | ||||
|  |  | |||
|  | @ -18,8 +18,13 @@ export class UsuarioExtraComponent implements OnInit { | |||
|   publicUsers?: IUser[]; | ||||
|   isLoading = false; | ||||
|   successChange = false; | ||||
|   public searchNombreUsuario: string; | ||||
|   public searchEstadoUsuario: string; | ||||
| 
 | ||||
|   constructor(protected usuarioExtraService: UsuarioExtraService, protected modalService: NgbModal) {} | ||||
|   constructor(protected usuarioExtraService: UsuarioExtraService, protected modalService: NgbModal) { | ||||
|     this.searchNombreUsuario = ''; | ||||
|     this.searchEstadoUsuario = ''; | ||||
|   } | ||||
| 
 | ||||
|   loadPublicUser(): void { | ||||
|     this.usuarioExtraService | ||||
|  | @ -61,6 +66,8 @@ export class UsuarioExtraComponent implements OnInit { | |||
|   } | ||||
| 
 | ||||
|   ngOnInit(): void { | ||||
|     this.searchNombreUsuario = ''; | ||||
|     this.searchEstadoUsuario = ''; | ||||
|     this.loadAll(); | ||||
|   } | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,78 +1,272 @@ | |||
| <div class="row"> | ||||
|   <div class="col-md-3"> | ||||
|     <span class="hipster img-fluid rounded"></span> | ||||
|   </div> | ||||
|   <div class="col"> | ||||
|     <div class="container-fluid navbar navbar-marketing navbar-expand-lg bg-white navbar-light"> | ||||
|       <div class="container px-5 py-4"> | ||||
|         <a class="text-dark" href="index.html" | ||||
|           ><img src="http://datasurvey.org/content/img_datasurvey/datasurvey-logo-text-black.svg" width="300" alt="" | ||||
|         /></a> | ||||
| 
 | ||||
|   <div class="col-md-9"> | ||||
|     <h1 class="display-4"><span jhiTranslate="home.title">Welcome, Java Hipster!</span> (Data Survey)</h1> | ||||
|         <div class="col-6" style="text-align: end"> | ||||
|           <a href="#"> | ||||
|             <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Encuestas</button> | ||||
|           </a> | ||||
|           <a href="login" [hidden]="!notAccount"> | ||||
|             <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Iniciar Sesión</button> | ||||
|           </a> | ||||
| 
 | ||||
|     <p class="lead" jhiTranslate="home.subtitle">This is your homepage</p> | ||||
| 
 | ||||
|     <div [ngSwitch]="account !== null"> | ||||
|       <div class="alert alert-success" *ngSwitchCase="true"> | ||||
|         <span id="home-logged-message" *ngIf="account" jhiTranslate="home.logged.message" [translateValues]="{ username: account.login }" | ||||
|           >You are logged in as user "{{ account.login }}".</span | ||||
|         > | ||||
|       </div> | ||||
| 
 | ||||
|       <div class="alert alert-warning" *ngSwitchCase="false"> | ||||
|         <span jhiTranslate="global.messages.info.authenticated.prefix">If you want to </span> | ||||
|         <a class="alert-link" (click)="login()" jhiTranslate="global.messages.info.authenticated.link">sign in</a | ||||
|         ><span jhiTranslate="global.messages.info.authenticated.suffix" | ||||
|           >, you can try the default accounts:<br />- Administrator (login="admin" and password="admin") <br />- User (login="user" and | ||||
|           password="user").</span | ||||
|         > | ||||
|       </div> | ||||
| 
 | ||||
|       <div class="alert alert-warning" *ngSwitchCase="false"> | ||||
|         <span jhiTranslate="global.messages.info.register.noaccount">You don't have an account yet?</span>  | ||||
|         <a class="alert-link" routerLink="account/register" jhiTranslate="global.messages.info.register.link">Register a new account</a> | ||||
|           <a href="account/register" [hidden]="!notAccount"> | ||||
|             <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Registrarse</button> | ||||
|           </a> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <!-- Page Header--> | ||||
|     <div | ||||
|       class="page-header-ui page-header-ui-dark bg-img-cover overlay overlay-40" | ||||
|       style="background-image: url('../../content/img_datasurvey/banner2.png')" | ||||
|     > | ||||
|       <div class="page-header-ui-content py-5 position-relative"> | ||||
|         <div class="container px-5"> | ||||
|           <div class="row gx-5 justify-content-center"> | ||||
|             <div class="col-xl-8 col-lg-10 text-center"> | ||||
|               <div data-aos="fade-up"> | ||||
|                 <h1 class="page-header-ui-title">¡Le damos la bienvenida a DataSurvey!</h1> | ||||
|                 <h5 class="page-header-ui-text"> | ||||
|                   Somos su mejor aliado para la recolección de información, a través de nuestra plataforma. | ||||
|                 </h5> | ||||
|                 <div class="row" [hidden]="!notAccount"> | ||||
|                   <div class="col"> | ||||
|                     <a routerLink="/login"> | ||||
|                       <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Comenzar</button> | ||||
|                     </a> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               </div> | ||||
|               <!--<div class="row"> | ||||
|                 <div class="col"> | ||||
|                   <a routerLink="/login"> | ||||
|                     <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Iniciar Sesión</button> | ||||
|                   </a> | ||||
|                   <a routerLink="/account/register"> | ||||
|                     <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Registrarse</button> | ||||
|                   </a> | ||||
|                 </div> | ||||
|               </div>--> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div class="svg-border-rounded text-white"> | ||||
|         <!-- Rounded SVG Border--> | ||||
|         <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 144.54 17.34" preserveAspectRatio="none" fill="currentColor"> | ||||
|           <path d="M144.54,17.34H0V0H144.54ZM0,0S32.36,17.34,72.27,17.34,144.54,0,144.54,0"></path> | ||||
|         </svg> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div class="bg-white py-10" id="get-started"> | ||||
|       <div class="container px-5"> | ||||
|         <div class="row gx-5 text-center"> | ||||
|           <div class="col-lg-4 mb-5 mb-lg-0"> | ||||
|             <div class="icon-stack icon-stack-xl bg-gradient-primary-to-secondary text-white mb-4"><i class="fa fa-droplet"></i></div> | ||||
|             <h2>El Mejor diseño</h2> | ||||
|             <p class="mb-0">Tenemos el mejor diseño para que pueda disfrutar visualmente de la plataforma.</p> | ||||
|           </div> | ||||
|           <div class="col-lg-4 mb-5 mb-lg-0"> | ||||
|             <div class="icon-stack icon-stack-xl bg-gradient-primary-to-secondary text-white mb-4"><i class="fa fa-code"></i></div> | ||||
|             <h2>Fácil uso</h2> | ||||
|             <p class="mb-0">Contamos con una plataforma muy sencilla de usar.</p> | ||||
|           </div> | ||||
|           <div class="col-lg-4"> | ||||
|             <div class="icon-stack icon-stack-xl bg-gradient-primary-to-secondary text-white mb-4"><i class="fa fa-truck"></i></div> | ||||
|             <h2>Diverso contenido</h2> | ||||
|             <p class="mb-0">Podrá encontrar y crear encuestas de diferentes categorías.</p> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div class="svg-border-rounded text-light"> | ||||
|         <!-- Rounded SVG Border--> | ||||
|         <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 144.54 17.34" preserveAspectRatio="none" fill="currentColor"> | ||||
|           <path d="M144.54,17.34H0V0H144.54ZM0,0S32.36,17.34,72.27,17.34,144.54,0,144.54,0"></path> | ||||
|         </svg> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div class="bg-light py-10 container-encuestas"> | ||||
|       <div class="container px-0"> | ||||
|         <h1 class="text-center mb-4">Encuestas</h1> | ||||
|         <div class="row gx-5" *ngIf="encuestas && encuestas.length > 0"> | ||||
|           <div class="col-xl-4 col-lg-4 col-md-6 mb-5" *ngFor="let encuesta of encuestasMostradas; trackBy: trackId"> | ||||
|             <div | ||||
|               class="card-encuesta lift h-100" | ||||
|               (dblclick)="openSurvey($event)" | ||||
|               (click)="selectSurvey($event)" | ||||
|               [attr.data-id]="encuesta.id" | ||||
|             > | ||||
|               <div class="card-body p-3"> | ||||
|                 <div class="card-title mb-0">{{ encuesta.nombre }}</div> | ||||
|                 <div class="entity-body--row m-2"> | ||||
|                   <span class="tag mt-2">{{ encuesta.categoria?.nombre | lowercase }}</span> | ||||
|                 </div> | ||||
|                 <div class="entity-body--row m-2"> | ||||
|                   <span class="subtitle mt-2">{{ encuesta.descripcion | titlecase }}</span> | ||||
|                 </div> | ||||
|                 <div class="text-xs text-gray-500"> | ||||
|                   <div class="entity-body"> | ||||
|                     <div class="entity-body--row m-2"> | ||||
|                       <span class="mt-2" | ||||
|                         >Fecha Publicada  <fa-icon class="entity-icon--access" [icon]="faCalendarAlt"></fa-icon>  {{ | ||||
|                           encuesta.fechaPublicacion | formatShortDatetime | titlecase | ||||
|                         }}</span | ||||
|                       > | ||||
|                     </div> | ||||
|                     <div class="entity-body--row m-2"> | ||||
|                       <span class="mt-2" | ||||
|                         >Fecha de Finalización   <fa-icon class="entity-icon--access" [icon]="faCalendarAlt"></fa-icon | ||||
|                         >  {{ encuesta.fechaFinalizar | formatShortDatetime | titlecase }}</span | ||||
|                       > | ||||
|                     </div> | ||||
|                     <div class="entity-body--row m-2"> | ||||
|                       <p>Calificacion</p> | ||||
|                       <fa-icon *ngFor="let i of [].constructor(encuesta.calificacion)" class="entity-icon--star" [icon]="faStar"></fa-icon> | ||||
|                       <fa-icon | ||||
|                         *ngFor="let i of [].constructor(5 - encuesta.calificacion!)" | ||||
|                         class="entity-icon--star--off" | ||||
|                         [icon]="faStar" | ||||
|                       ></fa-icon> | ||||
|                     </div> | ||||
|                     <div class="entity-body--row m-2"> | ||||
|                       <button class="ds-btn btn-card"><fa-icon [icon]="faPollH"></fa-icon>  Completar encuesta</button> | ||||
|                     </div> | ||||
|                   </div> | ||||
|                 </div> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|           <div class="row"> | ||||
|             <div class="col"> | ||||
|               <a routerLink="#"> | ||||
|                 <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Ver todas las encuestas</button> | ||||
|               </a> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div class="container my-5"> | ||||
|       <div class="text-center mb-4"> | ||||
|         <h1>Preguntas frecuentes</h1> | ||||
|       </div> | ||||
| 
 | ||||
|     <p jhiTranslate="home.question">If you have any question on JHipster:</p> | ||||
|       <!--Accordion wrapper--> | ||||
|       <div class="accordion md-accordion" id="accordionEx" role="tablist" aria-multiselectable="true"> | ||||
|         <!-- Accordion card --> | ||||
|         <div class="card accordion-item"> | ||||
|           <!-- Card header --> | ||||
|           <div class="card-header" role="tab" id="headingOne1"> | ||||
|             <a | ||||
|               data-toggle="collapse" | ||||
|               data-parent="#accordionEx" | ||||
|               href="#collapseOne1" | ||||
|               aria-expanded="true" | ||||
|               aria-controls="collapseOne1" | ||||
|               class="accordion-header" | ||||
|             > | ||||
|               <h2 class="mb-0"> | ||||
|                 <button | ||||
|                   class="accordion-button py-4 collapsed" | ||||
|                   type="button" | ||||
|                   data-bs-toggle="collapse" | ||||
|                   data-bs-target="#collapseOne1" | ||||
|                   aria-expanded="true" | ||||
|                   aria-controls="collapseOne" | ||||
|                 > | ||||
|                   ¿Qué métodos de pago estás disponibles en DataSurvey? | ||||
|                 </button> | ||||
|               </h2> | ||||
|             </a> | ||||
|           </div> | ||||
| 
 | ||||
|     <ul> | ||||
|       <li> | ||||
|         <a href="https://www.jhipster.tech/" target="_blank" rel="noopener noreferrer" jhiTranslate="home.link.homepage" | ||||
|           >JHipster homepage</a | ||||
|         > | ||||
|       </li> | ||||
|       <li> | ||||
|         <a | ||||
|           href="https://stackoverflow.com/tags/jhipster/info" | ||||
|           target="_blank" | ||||
|           rel="noopener noreferrer" | ||||
|           jhiTranslate="home.link.stackoverflow" | ||||
|           >JHipster on Stack Overflow</a | ||||
|         > | ||||
|       </li> | ||||
|       <li> | ||||
|         <a | ||||
|           href="https://github.com/jhipster/generator-jhipster/issues?state=open" | ||||
|           target="_blank" | ||||
|           rel="noopener noreferrer" | ||||
|           jhiTranslate="home.link.bugtracker" | ||||
|           >JHipster bug tracker</a | ||||
|         > | ||||
|       </li> | ||||
|       <li> | ||||
|         <a href="https://gitter.im/jhipster/generator-jhipster" target="_blank" rel="noopener noreferrer" jhiTranslate="home.link.chat" | ||||
|           >JHipster public chat room</a | ||||
|         > | ||||
|       </li> | ||||
|       <li> | ||||
|         <a href="https://twitter.com/jhipster" target="_blank" rel="noopener noreferrer" jhiTranslate="home.link.follow" | ||||
|           >follow @jhipster on Twitter</a | ||||
|         > | ||||
|       </li> | ||||
|     </ul> | ||||
|           <!-- Card body --> | ||||
|           <div id="collapseOne1" class="collapse show" role="tabpanel" aria-labelledby="headingOne1" data-parent="#accordionEx"> | ||||
|             <div class="card-body">DataSurvey utiliza PayPal como método de pago para la compra de plantillas.</div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <!-- Accordion card --> | ||||
| 
 | ||||
|     <p> | ||||
|       <span jhiTranslate="home.like">If you like JHipster, don't forget to give us a star on</span> | ||||
|       <a href="https://github.com/jhipster/generator-jhipster" target="_blank" rel="noopener noreferrer" jhiTranslate="home.github" | ||||
|         >GitHub</a | ||||
|       >! | ||||
|     </p> | ||||
|         <!-- Accordion card --> | ||||
|         <div class="card accordion-item"> | ||||
|           <!-- Card header --> | ||||
|           <div class="card-header" role="tab" id="headingTwo2"> | ||||
|             <a | ||||
|               data-toggle="collapse" | ||||
|               data-parent="#accordionEx" | ||||
|               href="#collapseTwo2" | ||||
|               aria-expanded="true" | ||||
|               aria-controls="collapseTwo2" | ||||
|               class="accordion-header" | ||||
|             > | ||||
|               <h2 class="mb-0"> | ||||
|                 <button | ||||
|                   class="accordion-button py-4 collapsed" | ||||
|                   type="button" | ||||
|                   data-bs-toggle="collapse" | ||||
|                   data-bs-target="#collapseTwo2" | ||||
|                   aria-expanded="true" | ||||
|                   aria-controls="collapseTwo" | ||||
|                 > | ||||
|                   ¿Debo iniciar sesión o registrarme para poder completar encuestas? | ||||
|                 </button> | ||||
|               </h2> | ||||
|             </a> | ||||
|           </div> | ||||
| 
 | ||||
|           <!-- Card body --> | ||||
|           <div id="collapseTwo2" class="collapse" role="tabpanel" aria-labelledby="headingTwo2" data-parent="#accordionEx"> | ||||
|             <div class="card-body"> | ||||
|               Uno de los objetivos de DataSurvey es que se puedan compartir las encuestas con todos los usuarios, sin necesidad de tener una | ||||
|               cuenta en la plataforma. | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <!-- Accordion card --> | ||||
| 
 | ||||
|         <!-- Accordion card --> | ||||
|         <div class="card"> | ||||
|           <!-- Card header --> | ||||
|           <!-- Card header --> | ||||
|           <div class="card-header" role="tab" id="headingThree3"> | ||||
|             <a | ||||
|               data-toggle="collapse" | ||||
|               data-parent="#accordionEx" | ||||
|               href="#collapseThree3" | ||||
|               aria-expanded="true" | ||||
|               aria-controls="collapseThree3" | ||||
|               class="accordion-header" | ||||
|             > | ||||
|               <h2 class="mb-0"> | ||||
|                 <button | ||||
|                   class="accordion-button py-4 collapsed" | ||||
|                   type="button" | ||||
|                   data-bs-toggle="collapse" | ||||
|                   data-bs-target="#collapseThree3" | ||||
|                   aria-expanded="true" | ||||
|                   aria-controls="collapseThree" | ||||
|                 > | ||||
|                   ¿Cómo comparto una encuesta? | ||||
|                 </button> | ||||
|               </h2> | ||||
|             </a> | ||||
|           </div> | ||||
|           <!-- Card body --> | ||||
|           <div id="collapseThree3" class="collapse" role="tabpanel" aria-labelledby="headingThree3" data-parent="#accordionEx"> | ||||
|             <div class="card-body"> | ||||
|               La plataforma tiene dos tipos de encuestas: públicas y privadas. Las públicas pueden ser compartidas con todo tipo de usuario, | ||||
|               sin ninguna excepción, mientras que las encuestas privadas, necesitan de una clave para poder ser completadas. | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <!-- Accordion card --> | ||||
|       </div> | ||||
|       <!-- Accordion wrapper --> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
|  |  | |||
|  | @ -10,6 +10,201 @@ Main page styles | |||
|   background-size: contain; | ||||
| } | ||||
| 
 | ||||
| .bg-img-cover { | ||||
|   background-position: center; | ||||
|   background-size: cover; | ||||
|   background-repeat: no-repeat; | ||||
| } | ||||
| 
 | ||||
| .overlay { | ||||
|   position: relative; | ||||
| } | ||||
| .overlay:before { | ||||
|   content: ''; | ||||
|   position: absolute; | ||||
|   top: 0; | ||||
|   left: 0; | ||||
|   right: 0; | ||||
|   bottom: 0; | ||||
|   background-color: #000; | ||||
|   opacity: 0.5; | ||||
| } | ||||
| 
 | ||||
| .overlay-10:before { | ||||
|   opacity: 0.1; | ||||
| } | ||||
| 
 | ||||
| .overlay-20:before { | ||||
|   opacity: 0.2; | ||||
| } | ||||
| 
 | ||||
| .overlay-30:before { | ||||
|   opacity: 0.3; | ||||
| } | ||||
| 
 | ||||
| .overlay-40:before { | ||||
|   opacity: 0.4; | ||||
| } | ||||
| 
 | ||||
| .overlay-50:before { | ||||
|   opacity: 0.5; | ||||
| } | ||||
| 
 | ||||
| .overlay-60:before { | ||||
|   opacity: 0.6; | ||||
| } | ||||
| 
 | ||||
| .overlay-70:before { | ||||
|   opacity: 0.7; | ||||
| } | ||||
| 
 | ||||
| .overlay-80:before { | ||||
|   opacity: 0.8; | ||||
| } | ||||
| 
 | ||||
| .overlay-90:before { | ||||
|   opacity: 0.9; | ||||
| } | ||||
| 
 | ||||
| .fixed-top, | ||||
| .page-header-ui.navbar-fixed .navbar { | ||||
|   position: fixed; | ||||
|   top: 0; | ||||
|   right: 0; | ||||
|   left: 0; | ||||
|   z-index: 1030; | ||||
| } | ||||
| 
 | ||||
| .text-white-75, | ||||
| .page-header-ui-dark .page-header-ui-text a { | ||||
|   color: rgba(255, 255, 255, 0.75) !important; | ||||
| } | ||||
| .page-header-ui { | ||||
|   position: relative; | ||||
|   padding-top: 8rem; | ||||
|   padding-bottom: 8rem; | ||||
| } | ||||
| .page-header-ui .page-header-ui-content .page-header-ui-title { | ||||
|   font-size: 2.5rem; | ||||
| } | ||||
| .page-header-ui .page-header-ui-content .page-header-ui-text { | ||||
|   font-size: 1.15rem; | ||||
| } | ||||
| .page-header-ui .page-header-ui-content .page-header-ui-text.small { | ||||
|   font-size: 0.9rem; | ||||
| } | ||||
| 
 | ||||
| .page-header-ui-dark { | ||||
|   color: #fff; | ||||
|   background-color: #212832; | ||||
| } | ||||
| 
 | ||||
| .svg-border-rounded svg { | ||||
|   position: absolute; | ||||
|   bottom: 0; | ||||
|   left: 0; | ||||
|   height: 1rem; | ||||
|   width: 100%; | ||||
| } | ||||
| @media (min-width: 576px) { | ||||
|   .svg-border-rounded svg { | ||||
|     height: 1.5rem; | ||||
|   } | ||||
| } | ||||
| @media (min-width: 768px) { | ||||
|   .svg-border-rounded svg { | ||||
|     height: 2rem; | ||||
|   } | ||||
| } | ||||
| @media (min-width: 992px) { | ||||
|   .svg-border-rounded svg { | ||||
|     height: 2.5rem; | ||||
|   } | ||||
| } | ||||
| @media (min-width: 1200px) { | ||||
|   .svg-border-rounded svg { | ||||
|     height: 3rem; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|   Cards | ||||
| **/ | ||||
| .lift { | ||||
|   box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); | ||||
|   transition: transform 0.15s ease-in-out, box-shadow 0.15s ease-in-out; | ||||
| } | ||||
| .lift:hover { | ||||
|   transform: translateY(-0.3333333333rem); | ||||
|   box-shadow: 0 0.5rem 2rem 0 rgba(33, 40, 50, 0.25); | ||||
| } | ||||
| .lift:active { | ||||
|   transform: none; | ||||
|   box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); | ||||
| } | ||||
| 
 | ||||
| .lift-sm { | ||||
|   box-shadow: 0 0.125rem 0.25rem 0 rgba(33, 40, 50, 0.2); | ||||
| } | ||||
| .lift-sm:hover { | ||||
|   transform: translateY(-0.1666666667rem); | ||||
|   box-shadow: 0 0.25rem 1rem 0 rgba(33, 40, 50, 0.25); | ||||
| } | ||||
| .lift-sm:active { | ||||
|   transform: none; | ||||
|   box-shadow: 0 0.125rem 0.25rem 0 rgba(33, 40, 50, 0.2); | ||||
| } | ||||
| 
 | ||||
| /*.card.lift { | ||||
|   text-decoration: none; | ||||
|   color: inherit; | ||||
| } | ||||
| 
 | ||||
| .card-flag { | ||||
|   position: absolute; | ||||
|   font-size: 0.7rem; | ||||
|   padding: 0.3rem 0.5rem; | ||||
|   line-height: 1; | ||||
| } | ||||
| 
 | ||||
| .card-flag-dark { | ||||
|   background-color: rgba(33, 40, 50, 0.7); | ||||
|   color: #fff; | ||||
| } | ||||
| 
 | ||||
| .card-flag-light { | ||||
|   background-color: rgba(255, 255, 255, 0.7); | ||||
|   color: #69707a; | ||||
| } | ||||
| 
 | ||||
| .card-flag-lg { | ||||
|   font-size: 0.9rem; | ||||
|   padding: 0.5rem 0.65rem; | ||||
| } | ||||
| 
 | ||||
| .card-flag-top-right { | ||||
|   border-top-left-radius: 0.25rem; | ||||
|   border-bottom-left-radius: 0.25rem; | ||||
|   top: 0.5rem; | ||||
|   right: 0; | ||||
| } | ||||
| 
 | ||||
| .card-flag-top-left { | ||||
|   border-top-right-radius: 0.25rem; | ||||
|   border-bottom-right-radius: 0.25rem; | ||||
|   top: 0.5rem; | ||||
|   left: 0; | ||||
| }*/ | ||||
| 
 | ||||
| .border-cyan { | ||||
|   border-color: #00cfd5 !important; | ||||
| } | ||||
| 
 | ||||
| .py-10 { | ||||
|   padding-top: 6rem !important; | ||||
|   padding-bottom: 6rem !important; | ||||
| } | ||||
| 
 | ||||
| /* wait autoprefixer update to allow simple generation of high pixel density media query */ | ||||
| @media only screen and (-webkit-min-device-pixel-ratio: 2), | ||||
|   only screen and (-moz-min-device-pixel-ratio: 2), | ||||
|  | @ -21,3 +216,199 @@ Main page styles | |||
|     background-size: contain; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| .icon-stack { | ||||
|   display: inline-flex; | ||||
|   justify-content: center; | ||||
|   align-items: center; | ||||
|   border-radius: 100%; | ||||
|   height: 2.5rem; | ||||
|   width: 2.5rem; | ||||
|   font-size: 1rem; | ||||
|   background-color: #f2f6fc; | ||||
|   flex-shrink: 0; | ||||
| } | ||||
| .icon-stack svg { | ||||
|   height: 1rem; | ||||
|   width: 1rem; | ||||
| } | ||||
| 
 | ||||
| .icon-stack-sm { | ||||
|   height: 2rem; | ||||
|   width: 2rem; | ||||
| } | ||||
| 
 | ||||
| .icon-stack-lg { | ||||
|   height: 4rem; | ||||
|   width: 4rem; | ||||
|   font-size: 1.5rem; | ||||
| } | ||||
| .icon-stack-lg svg { | ||||
|   height: 1.5rem; | ||||
|   width: 1.5rem; | ||||
| } | ||||
| 
 | ||||
| .icon-stack-xl { | ||||
|   height: 5rem; | ||||
|   width: 5rem; | ||||
|   font-size: 1.75rem; | ||||
| } | ||||
| .icon-stack-xl svg { | ||||
|   height: 1.75rem; | ||||
|   width: 1.75rem; | ||||
| } | ||||
| 
 | ||||
| .container-encuestas { | ||||
|   background-image: url('../../content/img_datasurvey/background encuestas landing.png'); | ||||
|   max-height: 1536px; | ||||
|   overflow-y: auto; | ||||
| } | ||||
| .bg-gradient-primary-to-secondary { | ||||
|   background-color: #1c44b2 !important; | ||||
|   background-image: linear-gradient(135deg, #1c44b2 0%, #00b88d 100%) !important; | ||||
| } | ||||
| 
 | ||||
| /*.card .entity-icon--star { | ||||
|   color: #ffcc47; | ||||
|   margin-right: 0.2rem; | ||||
| } | ||||
| 
 | ||||
| .card .card-title { | ||||
|   font-size: 2em; | ||||
| } | ||||
| 
 | ||||
| .card .tag { | ||||
|   font-size: 0.8rem; | ||||
|   color: #f8f8f8; | ||||
|   margin-top: 0.5rem; | ||||
|   padding: 0.2rem 1.5rem; | ||||
|   background-color: #2962ff94; | ||||
|   border-radius: 15px; | ||||
| } | ||||
| 
 | ||||
| .card .subtitle { | ||||
|   color: rgba(0, 0, 0, 0.54); | ||||
|   font-size: 0.9rem; | ||||
| } | ||||
| 
 | ||||
| .card .btn-card { | ||||
|   padding: 11px 10px !important; | ||||
| }*/ | ||||
| 
 | ||||
| .accordion-button { | ||||
|   position: relative; | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
|   width: 100%; | ||||
|   padding: 1rem 1.25rem; | ||||
|   font-size: 1rem; | ||||
|   color: #69707a; | ||||
|   text-align: left; | ||||
|   background-color: #fff; | ||||
|   border: 0; | ||||
|   border-radius: 0; | ||||
|   overflow-anchor: none; | ||||
|   transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, | ||||
|     border-radius 0.15s ease; | ||||
| } | ||||
| @media (prefers-reduced-motion: reduce) { | ||||
|   .accordion-button { | ||||
|     transition: none; | ||||
|   } | ||||
| } | ||||
| .accordion-button:not(.collapsed) { | ||||
|   color: #0057da; | ||||
|   background-color: #e6effe; | ||||
|   box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125); | ||||
| } | ||||
| .accordion-button:not(.collapsed)::after { | ||||
|   background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230057da'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); | ||||
|   transform: rotate(-180deg); | ||||
| } | ||||
| .accordion-button::after { | ||||
|   flex-shrink: 0; | ||||
|   width: 1.25rem; | ||||
|   height: 1.25rem; | ||||
|   margin-left: auto; | ||||
|   content: ''; | ||||
|   background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2369707a'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); | ||||
|   background-repeat: no-repeat; | ||||
|   background-size: 1.25rem; | ||||
|   transition: transform 0.2s ease-in-out; | ||||
| } | ||||
| @media (prefers-reduced-motion: reduce) { | ||||
|   .accordion-button::after { | ||||
|     transition: none; | ||||
|   } | ||||
| } | ||||
| .accordion-button:hover { | ||||
|   z-index: 2; | ||||
| } | ||||
| .accordion-button:focus { | ||||
|   z-index: 3; | ||||
|   border-color: transparent; | ||||
|   outline: 0; | ||||
|   box-shadow: 0 0 0 0.25rem #00b88d3a; | ||||
| } | ||||
| 
 | ||||
| .accordion-header { | ||||
|   margin-bottom: 0; | ||||
| } | ||||
| 
 | ||||
| .accordion-item { | ||||
|   background-color: #fff; | ||||
|   border: 1px solid rgba(0, 0, 0, 0.125); | ||||
| } | ||||
| .accordion-item:first-of-type { | ||||
|   border-top-left-radius: 0.35rem; | ||||
|   border-top-right-radius: 0.35rem; | ||||
| } | ||||
| .accordion-item:first-of-type .accordion-button { | ||||
|   border-top-left-radius: calc(0.35rem - 1px); | ||||
|   border-top-right-radius: calc(0.35rem - 1px); | ||||
| } | ||||
| .accordion-item:not(:first-of-type) { | ||||
|   border-top: 0; | ||||
| } | ||||
| .accordion-item:last-of-type { | ||||
|   border-bottom-right-radius: 0.35rem; | ||||
|   border-bottom-left-radius: 0.35rem; | ||||
| } | ||||
| .accordion-item:last-of-type .accordion-button.collapsed { | ||||
|   border-bottom-right-radius: calc(0.35rem - 1px); | ||||
|   border-bottom-left-radius: calc(0.35rem - 1px); | ||||
| } | ||||
| .accordion-item:last-of-type .accordion-collapse { | ||||
|   border-bottom-right-radius: 0.35rem; | ||||
|   border-bottom-left-radius: 0.35rem; | ||||
| } | ||||
| 
 | ||||
| .accordion-body { | ||||
|   padding: 1rem 1.25rem; | ||||
| } | ||||
| 
 | ||||
| .accordion-flush .accordion-collapse { | ||||
|   border-width: 0; | ||||
| } | ||||
| .accordion-flush .accordion-item { | ||||
|   border-right: 0; | ||||
|   border-left: 0; | ||||
|   border-radius: 0; | ||||
| } | ||||
| .accordion-flush .accordion-item:first-child { | ||||
|   border-top: 0; | ||||
| } | ||||
| .accordion-flush .accordion-item:last-child { | ||||
|   border-bottom: 0; | ||||
| } | ||||
| .accordion-flush .accordion-item .accordion-button { | ||||
|   border-radius: 0; | ||||
| } | ||||
| 
 | ||||
| .card-header { | ||||
|   padding: 0; | ||||
| } | ||||
| 
 | ||||
| .card-header .collapsed { | ||||
|   background-color: #e6effe; | ||||
| } | ||||
|  |  | |||
|  | @ -1,11 +1,26 @@ | |||
| import { Component, OnInit, OnDestroy } from '@angular/core'; | ||||
| import { HttpResponse } from '@angular/common/http'; | ||||
| import { Router } from '@angular/router'; | ||||
| import { Subject } from 'rxjs'; | ||||
| import { takeUntil } from 'rxjs/operators'; | ||||
| import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; | ||||
| 
 | ||||
| import { IEncuesta } from 'app/entities/encuesta/encuesta.model'; | ||||
| import { EncuestaService } from 'app/entities/encuesta/service/encuesta.service'; | ||||
| import { FormBuilder } from '@angular/forms'; | ||||
| import { ActivatedRoute } from '@angular/router'; | ||||
| 
 | ||||
| import { ICategoria } from 'app/entities/categoria/categoria.model'; | ||||
| import { CategoriaService } from 'app/entities/categoria/service/categoria.service'; | ||||
| import { IUsuarioExtra, UsuarioExtra } from 'app/entities/usuario-extra/usuario-extra.model'; | ||||
| import { UsuarioExtraService } from 'app/entities/usuario-extra/service/usuario-extra.service'; | ||||
| import { AccountService } from 'app/core/auth/account.service'; | ||||
| import { Account } from 'app/core/auth/account.model'; | ||||
| 
 | ||||
| import { faPollH, faCalendarAlt, faStar } from '@fortawesome/free-solid-svg-icons'; | ||||
| 
 | ||||
| import * as $ from 'jquery'; | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'jhi-home', | ||||
|   templateUrl: './home.component.html', | ||||
|  | @ -13,16 +28,48 @@ import { Account } from 'app/core/auth/account.model'; | |||
| }) | ||||
| export class HomeComponent implements OnInit, OnDestroy { | ||||
|   account: Account | null = null; | ||||
| 
 | ||||
|   private readonly destroy$ = new Subject<void>(); | ||||
| 
 | ||||
|   constructor(private accountService: AccountService, private router: Router) {} | ||||
|   usuarioExtra: UsuarioExtra | null = null; | ||||
|   encuestas?: IEncuesta[]; | ||||
|   encuestasMostradas: IEncuesta[] = new Array(3); | ||||
|   isLoading = false; | ||||
| 
 | ||||
|   faStar = faStar; | ||||
|   faCalendarAlt = faCalendarAlt; | ||||
|   faPollH = faPollH; | ||||
| 
 | ||||
|   notAccount: boolean = true; | ||||
| 
 | ||||
|   public searchEncuestaPublica: string; | ||||
| 
 | ||||
|   constructor( | ||||
|     protected encuestaService: EncuestaService, | ||||
|     protected modalService: NgbModal, | ||||
|     protected categoriaService: CategoriaService, | ||||
|     protected usuarioExtraService: UsuarioExtraService, | ||||
|     protected activatedRoute: ActivatedRoute, | ||||
|     protected fb: FormBuilder, | ||||
|     protected accountService: AccountService, | ||||
|     protected router: Router | ||||
|   ) { | ||||
|     this.searchEncuestaPublica = ''; | ||||
|   } | ||||
| 
 | ||||
|   ngOnInit(): void { | ||||
|     this.searchEncuestaPublica = ''; | ||||
|     this.accountService | ||||
|       .getAuthenticationState() | ||||
|       .pipe(takeUntil(this.destroy$)) | ||||
|       .subscribe(account => (this.account = account)); | ||||
|       .subscribe(account => { | ||||
|         if (account !== null) { | ||||
|           this.account = account; | ||||
|           this.notAccount = false; | ||||
|         } else { | ||||
|           this.notAccount = true; | ||||
|         } | ||||
|       }); | ||||
|     this.loadAll(); | ||||
|   } | ||||
| 
 | ||||
|   login(): void { | ||||
|  | @ -33,4 +80,44 @@ export class HomeComponent implements OnInit, OnDestroy { | |||
|     this.destroy$.next(); | ||||
|     this.destroy$.complete(); | ||||
|   } | ||||
| 
 | ||||
|   ngAfterViewInit(): void {} | ||||
| 
 | ||||
|   trackId(index: number, item: IEncuesta): number { | ||||
|     return item.id!; | ||||
|   } | ||||
| 
 | ||||
|   loadAll(): void { | ||||
|     this.isLoading = true; | ||||
| 
 | ||||
|     this.encuestaService.query().subscribe( | ||||
|       (res: HttpResponse<IEncuesta[]>) => { | ||||
|         this.isLoading = false; | ||||
|         const tmpEncuestas = res.body ?? []; | ||||
|         this.encuestas = tmpEncuestas.filter(e => e.estado === 'ACTIVE' && e.acceso === 'PUBLIC'); | ||||
|         this.encuestasMostradas = this.encuestas.reverse().slice(0, 3); | ||||
|       }, | ||||
|       () => { | ||||
|         this.isLoading = false; | ||||
|       } | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   openSurvey(event: any): void { | ||||
|     const surveyId = event.target.getAttribute('data-id'); | ||||
|     this.router.navigate(['/encuesta', surveyId, 'edit']); | ||||
|   } | ||||
| 
 | ||||
|   selectSurvey(event: any): void { | ||||
|     document.querySelectorAll('.ds-list--entity').forEach(e => { | ||||
|       e.classList.remove('active'); | ||||
|     }); | ||||
|     if (event.target.classList.contains('ds-list--entity')) { | ||||
|       event.target.classList.add('active'); | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   counter(i: number) { | ||||
|     return new Array(i); | ||||
|   } | ||||
| } | ||||
|  |  | |||
|  | @ -4,9 +4,10 @@ import { RouterModule } from '@angular/router'; | |||
| import { SharedModule } from 'app/shared/shared.module'; | ||||
| import { HOME_ROUTE } from './home.route'; | ||||
| import { HomeComponent } from './home.component'; | ||||
| import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; | ||||
| 
 | ||||
| @NgModule({ | ||||
|   imports: [SharedModule, RouterModule.forChild([HOME_ROUTE])], | ||||
|   imports: [SharedModule, RouterModule.forChild([HOME_ROUTE]), FontAwesomeModule], | ||||
|   declarations: [HomeComponent], | ||||
| }) | ||||
| export class HomeModule {} | ||||
|  |  | |||
|  | @ -1,3 +1,8 @@ | |||
| <div class="footer"> | ||||
|   <p jhiTranslate="footer">This is your footer</p> | ||||
| <div #footer class="footer"> | ||||
|   <div> | ||||
|     <p> | ||||
|       Copyright © Derechos reservados - Desarrollado por | ||||
|       <a style="color: #00b88d" href="http://pablobonilla.io/quantum" target="_blank">Quantum</a> | ||||
|     </p> | ||||
|   </div> | ||||
| </div> | ||||
|  |  | |||
|  | @ -0,0 +1,7 @@ | |||
| .footer { | ||||
|   background: #192e4d; | ||||
|   color: white; | ||||
|   padding: 12px 0; | ||||
|   font-size: 0.8em; | ||||
|   text-align: center; | ||||
| } | ||||
|  | @ -3,5 +3,6 @@ import { Component } from '@angular/core'; | |||
| @Component({ | ||||
|   selector: 'jhi-footer', | ||||
|   templateUrl: './footer.component.html', | ||||
|   styleUrls: ['./footer.component.scss'], | ||||
| }) | ||||
| export class FooterComponent {} | ||||
|  |  | |||
|  | @ -19,3 +19,4 @@ | |||
|     </div> | ||||
|   </div> | ||||
| </ng-template> | ||||
| <jhi-footer></jhi-footer> | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| <div class="logo"> | ||||
|   <a routerLink="/" class="simple-text"> | ||||
|     <div class="logo-image-small"> | ||||
|       <img src="../../../content/img_datasurvey/datasurvey-logo-text.svg" /> | ||||
|       <img src="../../../content/img_datasurvey/datasurvey-logo-text-white-PNG.png" /> | ||||
|     </div> | ||||
|   </a> | ||||
| </div> | ||||
|  | @ -103,7 +103,7 @@ | |||
|     <li class="position-absolute fixed-bottom w-100 mb-5"> | ||||
|       <a (click)="logout()" class="p-3 w-100 m-0 text-center"> | ||||
|         <!-- <i class="nc-icon nc-user-run"></i> --> | ||||
|         <p style="letter-spacing: 0.3rem">Cerrar Sesion</p> | ||||
|         <p style="letter-spacing: 0.3rem">Cerrar Sesión</p> | ||||
|       </a> | ||||
|     </li> | ||||
|     <li class="position-absolute fixed-bottom w-100 mb-5" style="bottom: -4rem"> | ||||
|  |  | |||
|  | @ -61,8 +61,11 @@ export class SidebarComponent { | |||
|       if (account !== null) { | ||||
|         this.usuarioExtraService.find(account.id).subscribe(usuarioExtra => { | ||||
|           this.usuarioExtra = usuarioExtra.body; | ||||
|           this.usuarioExtra!.nombre = | ||||
|             usuarioExtra.body!.nombre!.trim().split(' ')[0] + ' ' + usuarioExtra.body!.nombre!.trim().split(' ')[1]; | ||||
|           const fullName = this.usuarioExtra!.nombre; | ||||
|           const firstName = fullName?.split(' ')[0] === undefined ? '' : fullName?.split(' ')[0]; | ||||
|           const lastName = fullName?.split(' ')[1] === undefined ? '' : fullName?.split(' ')[1]; | ||||
| 
 | ||||
|           this.usuarioExtra!.nombre = `${firstName} ${lastName}`; | ||||
|         }); | ||||
|       } | ||||
|     }); | ||||
|  |  | |||
|  | @ -0,0 +1,57 @@ | |||
| .app-loading .container { | ||||
|   margin: auto auto; | ||||
|   height: 100vh; | ||||
|   display: flex; | ||||
|   flex-direction: column; | ||||
|   justify-content: center; | ||||
|   align-items: center; | ||||
| } | ||||
| .app-loading .tittle { | ||||
|   margin-bottom: 40px; | ||||
|   color: #44b9ff; | ||||
|   letter-spacing: 4px; | ||||
|   text-transform: uppercase; | ||||
| } | ||||
| .app-loading .square-container { | ||||
|   list-style-type: none; | ||||
|   display: flex; | ||||
|   position: relative; | ||||
| } | ||||
| .app-loading .square { | ||||
|   margin: 4px; | ||||
|   width: 30px; | ||||
|   height: 30px; | ||||
|   border-radius: 7px; | ||||
|   animation: rotating 2s ease infinite; | ||||
| } | ||||
| .app-loading .square1 { | ||||
|   background: #192e4d; | ||||
|   animation-delay: 0.2s; | ||||
| } | ||||
| .app-loading .square2 { | ||||
|   background: #018adf; | ||||
|   animation-delay: 0.4s; | ||||
| } | ||||
| .app-loading .square3 { | ||||
|   background: #20a9fe; | ||||
|   animation-delay: 0.6s; | ||||
| } | ||||
| .app-loading .square4 { | ||||
|   background: #00e0ac; | ||||
|   animation-delay: 0.8s; | ||||
| } | ||||
| .app-loading .square5 { | ||||
|   background: #70ffde; | ||||
|   animation-delay: 1s; | ||||
| } | ||||
| @keyframes rotating { | ||||
|   0% { | ||||
|     transform: rotate(0) scale(1); | ||||
|   } | ||||
|   50% { | ||||
|     transform: rotate(90deg) scale(0.6); | ||||
|   } | ||||
|   100% { | ||||
|     transform: rotate(90deg) scale(1); | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,199 @@ | |||
| .loader { | ||||
|   height: 100%; | ||||
|   width: 100%; | ||||
| } | ||||
| .loader .l_main { | ||||
|   position: absolute; | ||||
|   top: 20%; | ||||
|   left: 50%; | ||||
|   width: 172px; | ||||
|   height: 128px; | ||||
|   margin: 0; | ||||
|   -webkit-transform: translate(-50%, -50%); | ||||
|   transform: translate(-50%, -50%); | ||||
| } | ||||
| @media (max-width: 550px) { | ||||
|   .loader { | ||||
|     -webkit-transform: scale(0.75); | ||||
|     transform: scale(0.75); | ||||
|   } | ||||
| } | ||||
| @media (max-width: 440px) { | ||||
|   .loader { | ||||
|     -webkit-transform: scale(0.5); | ||||
|     transform: scale(0.5); | ||||
|   } | ||||
| } | ||||
| .l_square { | ||||
|   position: relative; | ||||
| } | ||||
| .l_square:nth-child(1) { | ||||
|   margin-left: 0px; | ||||
| } | ||||
| .l_square:nth-child(2) { | ||||
|   margin-left: 44px; | ||||
| } | ||||
| .l_square:nth-child(3) { | ||||
|   margin-left: 88px; | ||||
| } | ||||
| .l_square:nth-child(4) { | ||||
|   margin-left: 132px; | ||||
| } | ||||
| .l_square span { | ||||
|   position: absolute; | ||||
|   top: 0px; | ||||
|   left: 20px; | ||||
|   height: 36px; | ||||
|   width: 36px; | ||||
|   border-radius: 2px; | ||||
|   background-color: #1c44b2; | ||||
| } | ||||
| .l_square span:nth-child(1) { | ||||
|   top: 0px; | ||||
| } | ||||
| .l_square span:nth-child(2) { | ||||
|   top: 44px; | ||||
| } | ||||
| .l_square span:nth-child(3) { | ||||
|   top: 88px; | ||||
| } | ||||
| .l_square:nth-child(1) span { | ||||
|   -webkit-animation: animsquare1 2s infinite ease-in; | ||||
|   animation: animsquare1 2s infinite ease-in; | ||||
| } | ||||
| .l_square:nth-child(2) span { | ||||
|   -webkit-animation: animsquare2 2s infinite ease-in; | ||||
|   animation: animsquare2 2s infinite ease-in; | ||||
| } | ||||
| .l_square:nth-child(3) span { | ||||
|   -webkit-animation: animsquare3 2s infinite ease-in; | ||||
|   animation: animsquare3 2s infinite ease-in; | ||||
| } | ||||
| .l_square:nth-child(4) span { | ||||
|   -webkit-animation: animsquare4 2s infinite ease-in; | ||||
|   animation: animsquare4 2s infinite ease-in; | ||||
| } | ||||
| .l_square span:nth-child(1) { | ||||
|   -webkit-animation-delay: 0s; | ||||
|   animation-delay: 0s; | ||||
| } | ||||
| .l_square span:nth-child(2) { | ||||
|   -webkit-animation-delay: 0.15s; | ||||
|   animation-delay: 0.15s; | ||||
| } | ||||
| .l_square span:nth-child(3) { | ||||
|   -webkit-animation-delay: 0.3s; | ||||
|   animation-delay: 0.3s; | ||||
| } | ||||
| @-webkit-keyframes animsquare1 { | ||||
|   0%, | ||||
|   5%, | ||||
|   95%, | ||||
|   100% { | ||||
|     -webkit-transform: translate(0px, 0px) rotate(0deg); | ||||
|     transform: translate(0px, 0px) rotate(0deg); | ||||
|   } | ||||
|   30%, | ||||
|   70% { | ||||
|     -webkit-transform: translate(-40px, 0px) rotate(-90deg); | ||||
|     transform: translate(-40px, 0px) rotate(-90deg); | ||||
|   } | ||||
| } | ||||
| @keyframes animsquare1 { | ||||
|   0%, | ||||
|   5%, | ||||
|   95%, | ||||
|   100% { | ||||
|     -webkit-transform: translate(0px, 0px) rotate(0deg); | ||||
|     transform: translate(0px, 0px) rotate(0deg); | ||||
|   } | ||||
|   30%, | ||||
|   70% { | ||||
|     -webkit-transform: translate(-40px, 0px) rotate(-90deg); | ||||
|     transform: translate(-40px, 0px) rotate(-90deg); | ||||
|   } | ||||
| } | ||||
| @-webkit-keyframes animsquare2 { | ||||
|   0%, | ||||
|   10%, | ||||
|   90%, | ||||
|   100% { | ||||
|     -webkit-transform: translate(0px, 0px) rotate(0deg); | ||||
|     transform: translate(0px, 0px) rotate(0deg); | ||||
|   } | ||||
|   35%, | ||||
|   65% { | ||||
|     -webkit-transform: translate(-40px, 0px) rotate(-90deg); | ||||
|     transform: translate(-40px, 0px) rotate(-90deg); | ||||
|   } | ||||
| } | ||||
| @keyframes animsquare2 { | ||||
|   0%, | ||||
|   10%, | ||||
|   90%, | ||||
|   100% { | ||||
|     -webkit-transform: translate(0px, 0px) rotate(0deg); | ||||
|     transform: translate(0px, 0px) rotate(0deg); | ||||
|   } | ||||
|   35%, | ||||
|   65% { | ||||
|     -webkit-transform: translate(-40px, 0px) rotate(-90deg); | ||||
|     transform: translate(-40px, 0px) rotate(-90deg); | ||||
|   } | ||||
| } | ||||
| @-webkit-keyframes animsquare3 { | ||||
|   0%, | ||||
|   15%, | ||||
|   85%, | ||||
|   100% { | ||||
|     -webkit-transform: translate(0px, 0px) rotate(0deg); | ||||
|     transform: translate(0px, 0px) rotate(0deg); | ||||
|   } | ||||
|   40%, | ||||
|   60% { | ||||
|     -webkit-transform: translate(-40px, 0px) rotate(-90deg); | ||||
|     transform: translate(-40px, 0px) rotate(-90deg); | ||||
|   } | ||||
| } | ||||
| @keyframes animsquare3 { | ||||
|   0%, | ||||
|   15%, | ||||
|   85%, | ||||
|   100% { | ||||
|     -webkit-transform: translate(0px, 0px) rotate(0deg); | ||||
|     transform: translate(0px, 0px) rotate(0deg); | ||||
|   } | ||||
|   40%, | ||||
|   60% { | ||||
|     -webkit-transform: translate(-40px, 0px) rotate(-90deg); | ||||
|     transform: translate(-40px, 0px) rotate(-90deg); | ||||
|   } | ||||
| } | ||||
| @-webkit-keyframes animsquare4 { | ||||
|   0%, | ||||
|   20%, | ||||
|   80%, | ||||
|   100% { | ||||
|     -webkit-transform: translate(0px, 0px) rotate(0deg); | ||||
|     transform: translate(0px, 0px) rotate(0deg); | ||||
|   } | ||||
|   45%, | ||||
|   55% { | ||||
|     -webkit-transform: translate(-40px, 0px) rotate(-90deg); | ||||
|     transform: translate(-40px, 0px) rotate(-90deg); | ||||
|   } | ||||
| } | ||||
| @keyframes animsquare4 { | ||||
|   0%, | ||||
|   20%, | ||||
|   80%, | ||||
|   100% { | ||||
|     -webkit-transform: translate(0px, 0px) rotate(0deg); | ||||
|     transform: translate(0px, 0px) rotate(0deg); | ||||
|   } | ||||
|   45%, | ||||
|   55% { | ||||
|     -webkit-transform: translate(-40px, 0px) rotate(-90deg); | ||||
|     transform: translate(-40px, 0px) rotate(-90deg); | ||||
|   } | ||||
| } | ||||
|  | @ -102,7 +102,7 @@ | |||
|   font-weight: normal; | ||||
| } | ||||
| 
 | ||||
| .app-loading .lds-pacman { | ||||
| /*.app-loading .lds-pacman { | ||||
|   position: relative; | ||||
|   margin: auto; | ||||
|   width: 200px !important; | ||||
|  | @ -149,4 +149,4 @@ | |||
| .app-loading .lds-pacman > div:nth-child(1) div:nth-child(3) { | ||||
|   -webkit-animation-delay: 0s; | ||||
|   animation-delay: 0s; | ||||
| } | ||||
| }*/ | ||||
|  |  | |||
| After Width: | Height: | Size: 1.3 MiB | 
| After Width: | Height: | Size: 141 KiB | 
| After Width: | Height: | Size: 1.8 MiB | 
| After Width: | Height: | Size: 769 KiB | 
| After Width: | Height: | Size: 74 KiB | 
|  | @ -1 +1 @@ | |||
| <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 2528.24 410.62"><defs><style>.cls-1{font-size:300px;fill:#282828;font-family:Avenir-Heavy, "Avenir 85 Heavy";font-weight:800;}.cls-2{fill:#1072e8;}.cls-3{opacity:0.3;isolation:isolate;}.cls-4{fill:#2f92dd;}</style></defs><title>Asset 5</title><g id="Layer_2" data-name="Layer 2"><g id="Quantum"><text class="cls-1" transform="translate(540.01 301.05)">DATASURVEY</text><g id="Logo"><path class="cls-2" d="M210,210v99.82l-.72.15H110V210Z"/><path class="cls-2" d="M406.53,209.47c0,69.41-38.34,130.67-96.74,167.11a234.09,234.09,0,0,1-99.79,34V309.78c55.73-11.31,97-51.71,97-99.81,0-46-37.74-85-89.8-98.19A58.58,58.58,0,0,0,202.63,110H110V210H10V80H80V10H193.46c48,0,95.09,14.89,133.34,44.07C375.53,91.21,406.53,147,406.53,209.47Z"/><image class="cls-3" width="89" height="89" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAABZCAYAAABVC4ivAAAACXBIWXMAAAsSAAALEgHS3X78AAAIBElEQVR4Xu3d3VLiTBcF4LV354eIyIBazOEceAfeAJfuDXg4Z96ARfnVG/GHkO5e30E6DCKIKM4IZFVRapmK8Ljd6VDlbiGJJl8bXXdAk88nWndAk9cREZn/mmvaQYP8zszBvgAO3wOwGrtBXpMFXBkOhzIej2fQnU6HV1dXBMBV2NJc+FYnAAsAuby81DzPdTKZ6GAwkLIsJY5j3t7estVq+W6366+vrz0AonKewTbIKzIHrBcXF6bb7Zo8z6Msy0xZlgoAxhjGcezLsrR5nrvBYGADtG+Q16QGvry8NHd3d6bdbkcAEgCJMSYyxhiSYq11zjlLckpyWhRF+evXL3t1deUxV81NT17IInAURUmSJGlZlq0oilre+xSAEREYY2ySJIW11kynU7TbbY5Go1nLqM/ZrJPnMg98e3sbRVGUtFqtzDl3rKpdkj1jzKlz7sw5dyoiP5xzHVXNsixL4ziO8jw3w+HwxQqkqeSQReAkSZI0TTMAbVXtiMgJyQ6ADECkqo7ks6pGqHpwaYyZ9vv9Mqw+BKGaG2QsB86yLANwrKon3vsegF6APgKgIlKSfCBJ730hIs9FURiS4pxrKnk+a4C7qtr33p+pah9Al2SGasHwLCJKslDVR5JxHMdmPB5rmqazc5PkQSO/BSwiPwLsuaqekzwF0AWQiogH8EDSisgDycQYY6y12u12Jc/zppKB9cDGmFMA5yQHAM5F5DT05EhEpiQhIo8AEhGJnHPGez+Pe9g9+b3AAAYi8jN83hORI5J1q5iSTFU18t4rSUnT9FU/Bg4QeVNgkoNQxScikgLwodWmIhJ5742qajjv0hwU8geAfwI4I9kD0EZ1E1KSnIpIRFJVdSVunYNB/iDwuYj056oYJKUGFhFFtdKQuY+vchDInwA+BdANvTgSES8iNgCvreA6e4/8SeAfANqh/yqAcr6Cw2Nt9vq9i88CkzxGdRudsLqnUCyYrWoR89nbSt4GsIhkAGJUt9E+9GNggyoG9hR5i8AJqhVFfWOxEW6dvUPeMnDdIhiqeGNgYM968raBZcML3KrsTSV/BTBJDeeuW8WHsheV/JXA28jWTvSv8sXAH67e+ew08i4AAzuMvCvAwI4i7xIwsIPIuwYM7BjyLgIDO4S8q8DAjiDvMjCwA8i7Dgx8c+R9AAa+MfK+AAPfFHmfgIFviLxvwMA3Q95HYOAbIe8rMPBNkPcZGPgGyPsODPxj5EMABv4h8qEAA/8I+ZCAgX+AfGjAwF9GPkRg4C8iHyow8JeQDxkY+AvIhw4MfDFyA1zly5Ab4D/5EuQG+GW2jtwAv85WkRvg5dkacgO8OltBboDfzqeRG+D1+RRyA/y+fBi5AX5/PoTcAG+WjZEb4M2zEXID/LG8G7kB/njehdwAfy5rkRvgz+dN5AZ4O1mJ3ABvL0uR54Hv7u5Mq9WKa2BV7Rpj+jgwYKn+if3N76vq+2ba18AAtJ4f3Gq1MlTTV0/q0Yqs5qX9ZDUB8ExE+qjGLLZFpIVq4okBoHw5QmbXpmIzBKjm1tezkQlUuFwz6HvVKAa5uLgwaZpGSZKkzrkjVe1473thOOg5qko+F5FTkj1WY72OSKbhvPXEqdmTWfGzvnWCoJdqPmc9Rr3eKMDjD/zKvECeaxMKwEwmk6Qsy5aqtkXkBEBPVfskT0Nr6JE8QVW9KauxXspqjmU9cryu4p1rE3WVhtdSshqAagFYAI6kB+C99wRA5xziOH51nmWVLHmeK4AoTdMkiqIWySOSnQDdRTXitiMiR1INpTMAZk9GRFzAlfCL28nULQJVBVsReSY5AVCISIEK3qmqQ8A2xtRVPavuRWQZDodyc3OjvV7PSDWLMjXGZACygJ0BSAFEAdJLNVpRJAymQ9UqgB2s3sWEamZ4bRMRGZN8APAkIhOSBYDSOeeMMT7Pc6Zp+qJ9zJDrihuPxzIYDOTx8VGzLDMAjHMuCsdqONRLNXX1OTyJ2exKEdnpVcSS1D3YAigC8H8k71HNUH5W1Wkcx7YoCjdXybNNXZZe+MqylHBQbU9VdaFin8PJEaDTOeB6ZQLsH7ILLeKJ5L2I3InIf977B+/9s7W2TJLEGWN8HMfLK3k+cRzTOUdrrTPGWFUtSD6TfJDqwmZF5HEBeN8qeBapBu/V15sJgIcA/D9VvXfOPYlIYa21x8fHPrSLlT0ZnU6HNzc3PDs780VR2CRJCufck6pGrFKIyAOAJAxoNmG87QyX7xituCuRP+tiT9KRLEg+e+8fVPWe5D3JJ1UtiqKwo9HI39zcvKjkFzvmhD93vbi4iNI0jZ1zaZIkmapmInLknMtUtUUykT/zgxXYL9jFiAidcwyriFJEpt77Z5JPJJ+8909xHE+yLCum06m9vr52wNs75rDb7frb21vXbren0+kUWZZ5kqVUS5jYGGOcc4Yvp/7tHbK8vMkgAO+cc3EcW2ttKSKFqhZxHE+NMdP7+3v3+/fvF1sSAXi991NdzZeXl1rvexTHcWSMiYqiMHEcG+eceu8lTdMZ7MLQ/L3I/HsRk8kEIkJjjLfWuiRJnLXWTqdT2+/3bQB2wDt2MZtbIchwOJTRaKR5npt+v6/OOSmKQrvdrgDAsiH5+xxjDPM8pzGGaZr6drvtR6PRm9vEAUuQgT9rZsxhj8djmUwmAgBFURwU7nzqG41Wq8X5DQ/DY+nukm9uFTeHDbzuuYcIvYj16sZjWTbej28B/iDzFuiybIzcZPP8H+Y/C/188ppfAAAAAElFTkSuQmCC"/><polygon class="cls-4" points="80 10.36 80 80 10.35 80 80 10.36"/></g></g></g></svg> | ||||
| <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 2528.24 410.62"><defs><style>.cls-1{font-size:285px;fill:#282828;font-family:"Noto Sans JP", "Helvetica Neue";font-weight:800;}.cls-2{fill:#1072e8;}.cls-3{opacity:0.3;isolation:isolate;}.cls-4{fill:#2f92dd;}</style></defs><title>Asset 5</title><g id="Layer_2" data-name="Layer 2"><g id="Quantum"><text class="cls-1" transform="translate(540.01 301.05)">DATASURVEY</text><g id="Logo"><path class="cls-2" d="M210,210v99.82l-.72.15H110V210Z"/><path class="cls-2" d="M406.53,209.47c0,69.41-38.34,130.67-96.74,167.11a234.09,234.09,0,0,1-99.79,34V309.78c55.73-11.31,97-51.71,97-99.81,0-46-37.74-85-89.8-98.19A58.58,58.58,0,0,0,202.63,110H110V210H10V80H80V10H193.46c48,0,95.09,14.89,133.34,44.07C375.53,91.21,406.53,147,406.53,209.47Z"/><image class="cls-3" width="89" height="89" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAABZCAYAAABVC4ivAAAACXBIWXMAAAsSAAALEgHS3X78AAAIBElEQVR4Xu3d3VLiTBcF4LV354eIyIBazOEceAfeAJfuDXg4Z96ARfnVG/GHkO5e30E6DCKIKM4IZFVRapmK8Ljd6VDlbiGJJl8bXXdAk88nWndAk9cREZn/mmvaQYP8zszBvgAO3wOwGrtBXpMFXBkOhzIej2fQnU6HV1dXBMBV2NJc+FYnAAsAuby81DzPdTKZ6GAwkLIsJY5j3t7estVq+W6366+vrz0AonKewTbIKzIHrBcXF6bb7Zo8z6Msy0xZlgoAxhjGcezLsrR5nrvBYGADtG+Q16QGvry8NHd3d6bdbkcAEgCJMSYyxhiSYq11zjlLckpyWhRF+evXL3t1deUxV81NT17IInAURUmSJGlZlq0oilre+xSAEREYY2ySJIW11kynU7TbbY5Go1nLqM/ZrJPnMg98e3sbRVGUtFqtzDl3rKpdkj1jzKlz7sw5dyoiP5xzHVXNsixL4ziO8jw3w+HwxQqkqeSQReAkSZI0TTMAbVXtiMgJyQ6ADECkqo7ks6pGqHpwaYyZ9vv9Mqw+BKGaG2QsB86yLANwrKon3vsegF6APgKgIlKSfCBJ730hIs9FURiS4pxrKnk+a4C7qtr33p+pah9Al2SGasHwLCJKslDVR5JxHMdmPB5rmqazc5PkQSO/BSwiPwLsuaqekzwF0AWQiogH8EDSisgDycQYY6y12u12Jc/zppKB9cDGmFMA5yQHAM5F5DT05EhEpiQhIo8AEhGJnHPGez+Pe9g9+b3AAAYi8jN83hORI5J1q5iSTFU18t4rSUnT9FU/Bg4QeVNgkoNQxScikgLwodWmIhJ5742qajjv0hwU8geAfwI4I9kD0EZ1E1KSnIpIRFJVdSVunYNB/iDwuYj056oYJKUGFhFFtdKQuY+vchDInwA+BdANvTgSES8iNgCvreA6e4/8SeAfANqh/yqAcr6Cw2Nt9vq9i88CkzxGdRudsLqnUCyYrWoR89nbSt4GsIhkAGJUt9E+9GNggyoG9hR5i8AJqhVFfWOxEW6dvUPeMnDdIhiqeGNgYM968raBZcML3KrsTSV/BTBJDeeuW8WHsheV/JXA28jWTvSv8sXAH67e+ew08i4AAzuMvCvAwI4i7xIwsIPIuwYM7BjyLgIDO4S8q8DAjiDvMjCwA8i7Dgx8c+R9AAa+MfK+AAPfFHmfgIFviLxvwMA3Q95HYOAbIe8rMPBNkPcZGPgGyPsODPxj5EMABv4h8qEAA/8I+ZCAgX+AfGjAwF9GPkRg4C8iHyow8JeQDxkY+AvIhw4MfDFyA1zly5Ab4D/5EuQG+GW2jtwAv85WkRvg5dkacgO8OltBboDfzqeRG+D1+RRyA/y+fBi5AX5/PoTcAG+WjZEb4M2zEXID/LG8G7kB/njehdwAfy5rkRvgz+dN5AZ4O1mJ3ABvL0uR54Hv7u5Mq9WKa2BV7Rpj+jgwYKn+if3N76vq+2ba18AAtJ4f3Gq1MlTTV0/q0Yqs5qX9ZDUB8ExE+qjGLLZFpIVq4okBoHw5QmbXpmIzBKjm1tezkQlUuFwz6HvVKAa5uLgwaZpGSZKkzrkjVe1473thOOg5qko+F5FTkj1WY72OSKbhvPXEqdmTWfGzvnWCoJdqPmc9Rr3eKMDjD/zKvECeaxMKwEwmk6Qsy5aqtkXkBEBPVfskT0Nr6JE8QVW9KauxXspqjmU9cryu4p1rE3WVhtdSshqAagFYAI6kB+C99wRA5xziOH51nmWVLHmeK4AoTdMkiqIWySOSnQDdRTXitiMiR1INpTMAZk9GRFzAlfCL28nULQJVBVsReSY5AVCISIEK3qmqQ8A2xtRVPavuRWQZDodyc3OjvV7PSDWLMjXGZACygJ0BSAFEAdJLNVpRJAymQ9UqgB2s3sWEamZ4bRMRGZN8APAkIhOSBYDSOeeMMT7Pc6Zp+qJ9zJDrihuPxzIYDOTx8VGzLDMAjHMuCsdqONRLNXX1OTyJ2exKEdnpVcSS1D3YAigC8H8k71HNUH5W1Wkcx7YoCjdXybNNXZZe+MqylHBQbU9VdaFin8PJEaDTOeB6ZQLsH7ILLeKJ5L2I3InIf977B+/9s7W2TJLEGWN8HMfLK3k+cRzTOUdrrTPGWFUtSD6TfJDqwmZF5HEBeN8qeBapBu/V15sJgIcA/D9VvXfOPYlIYa21x8fHPrSLlT0ZnU6HNzc3PDs780VR2CRJCufck6pGrFKIyAOAJAxoNmG87QyX7xituCuRP+tiT9KRLEg+e+8fVPWe5D3JJ1UtiqKwo9HI39zcvKjkFzvmhD93vbi4iNI0jZ1zaZIkmapmInLknMtUtUUykT/zgxXYL9jFiAidcwyriFJEpt77Z5JPJJ+8909xHE+yLCum06m9vr52wNs75rDb7frb21vXbren0+kUWZZ5kqVUS5jYGGOcc4Yvp/7tHbK8vMkgAO+cc3EcW2ttKSKFqhZxHE+NMdP7+3v3+/fvF1sSAXi991NdzZeXl1rvexTHcWSMiYqiMHEcG+eceu8lTdMZ7MLQ/L3I/HsRk8kEIkJjjLfWuiRJnLXWTqdT2+/3bQB2wDt2MZtbIchwOJTRaKR5npt+v6/OOSmKQrvdrgDAsiH5+xxjDPM8pzGGaZr6drvtR6PRm9vEAUuQgT9rZsxhj8djmUwmAgBFURwU7nzqG41Wq8X5DQ/DY+nukm9uFTeHDbzuuYcIvYj16sZjWTbej28B/iDzFuiybIzcZPP8H+Y/C/188ppfAAAAAElFTkSuQmCC"/><polygon class="cls-4" points="80 10.36 80 80 10.35 80 80 10.36"/></g></g></g></svg> | ||||
| Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB | 
| After Width: | Height: | Size: 70 KiB | 
|  | @ -98,3 +98,4 @@ | |||
| @import 'paper-dashboard/datasurvey-list'; | ||||
| @import 'paper-dashboard/datasurvey-table'; | ||||
| @import 'paper-dashboard/datasurvey-contextmenu'; | ||||
| @import 'paper-dashboard/datasurvey-survey-update'; | ||||
|  |  | |||
|  | @ -61,12 +61,21 @@ | |||
| } | ||||
| 
 | ||||
| .ds-btn--danger { | ||||
|   background-color: transparent; | ||||
|   color: #e73636; | ||||
|   background-color: #e73636; | ||||
|   color: #fff; | ||||
| 
 | ||||
|   &:hover { | ||||
|     background-color: #f7f9ff; | ||||
|     color: #d33232; | ||||
|     background-color: #d33232; | ||||
|   } | ||||
| 
 | ||||
|   &--light { | ||||
|     background-color: transparent; | ||||
|     color: #e73636; | ||||
| 
 | ||||
|     &:hover { | ||||
|       background-color: #f7f9ff; | ||||
|       color: #d33232; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -75,7 +75,9 @@ $form-background: #f1f5f9; | |||
|   } | ||||
| 
 | ||||
|   label { | ||||
|     font-size: 0.8rem; | ||||
|     color: #757d94; | ||||
|     margin-bottom: 0.5rem; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -32,7 +32,7 @@ | |||
|     margin: 1rem; | ||||
|     word-wrap: break-word; | ||||
| 
 | ||||
|     *:not(div) { | ||||
|     * { | ||||
|       pointer-events: none; | ||||
|     } | ||||
| 
 | ||||
|  | @ -78,6 +78,7 @@ | |||
|       width: 25px; | ||||
|       height: 25px; | ||||
|       color: #313747; | ||||
|       pointer-events: visible !important; | ||||
|     } | ||||
| 
 | ||||
|     .entity-share:hover { | ||||
|  | @ -131,3 +132,116 @@ | |||
|     background-color: #e8f0fe !important; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|   Cards | ||||
| **/ | ||||
| .lift { | ||||
|   box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); | ||||
|   transition: transform 0.15s ease-in-out, box-shadow 0.15s ease-in-out; | ||||
| } | ||||
| .lift:hover { | ||||
|   transform: translateY(-0.3333333333rem); | ||||
|   box-shadow: 0 0.5rem 2rem 0 rgba(33, 40, 50, 0.25); | ||||
| } | ||||
| .lift:active { | ||||
|   transform: none; | ||||
|   box-shadow: 0 0.15rem 1.75rem 0 rgba(33, 40, 50, 0.15); | ||||
| } | ||||
| 
 | ||||
| .lift-sm { | ||||
|   box-shadow: 0 0.125rem 0.25rem 0 rgba(33, 40, 50, 0.2); | ||||
| } | ||||
| .lift-sm:hover { | ||||
|   transform: translateY(-0.1666666667rem); | ||||
|   box-shadow: 0 0.25rem 1rem 0 rgba(33, 40, 50, 0.25); | ||||
| } | ||||
| .lift-sm:active { | ||||
|   transform: none; | ||||
|   box-shadow: 0 0.125rem 0.25rem 0 rgba(33, 40, 50, 0.2); | ||||
| } | ||||
| 
 | ||||
| .card-encuesta { | ||||
|   border-radius: 12px; | ||||
|   background-color: #ffffff; | ||||
|   margin-bottom: 20px; | ||||
|   position: relative; | ||||
|   border: 0 none; | ||||
| } | ||||
| 
 | ||||
| .card-encuesta.lift { | ||||
|   text-decoration: none; | ||||
|   color: inherit; | ||||
| } | ||||
| 
 | ||||
| .card-flag { | ||||
|   position: absolute; | ||||
|   font-size: 0.7rem; | ||||
|   padding: 0.3rem 0.5rem; | ||||
|   line-height: 1; | ||||
| } | ||||
| 
 | ||||
| .card-flag-dark { | ||||
|   background-color: rgba(33, 40, 50, 0.7); | ||||
|   color: #fff; | ||||
| } | ||||
| 
 | ||||
| .card-flag-light { | ||||
|   background-color: rgba(255, 255, 255, 0.7); | ||||
|   color: #69707a; | ||||
| } | ||||
| 
 | ||||
| .card-flag-lg { | ||||
|   font-size: 0.9rem; | ||||
|   padding: 0.5rem 0.65rem; | ||||
| } | ||||
| 
 | ||||
| .card-flag-top-right { | ||||
|   border-top-left-radius: 0.25rem; | ||||
|   border-bottom-left-radius: 0.25rem; | ||||
|   top: 0.5rem; | ||||
|   right: 0; | ||||
| } | ||||
| 
 | ||||
| .card-flag-top-left { | ||||
|   border-top-right-radius: 0.25rem; | ||||
|   border-bottom-right-radius: 0.25rem; | ||||
|   top: 0.5rem; | ||||
|   left: 0; | ||||
| } | ||||
| 
 | ||||
| .card-encuesta .entity-icon--star { | ||||
|   color: #ffcc47; | ||||
|   margin-right: 0.2rem; | ||||
| } | ||||
| 
 | ||||
| .card-encuesta .card-title { | ||||
|   font-size: 2em; | ||||
| } | ||||
| 
 | ||||
| .card-encuesta .tag { | ||||
|   font-size: 0.8rem; | ||||
|   color: #f8f8f8; | ||||
|   margin-top: 0.5rem; | ||||
|   padding: 0.2rem 1.5rem; | ||||
|   background-color: #2962ff94; | ||||
|   border-radius: 15px; | ||||
| } | ||||
| 
 | ||||
| .card-encuesta .subtitle { | ||||
|   color: rgba(0, 0, 0, 0.54); | ||||
|   font-size: 0.9rem; | ||||
| } | ||||
| 
 | ||||
| .card-encuesta .btn-card { | ||||
|   padding: 11px 10px !important; | ||||
| } | ||||
| 
 | ||||
| .border-cyan { | ||||
|   border-color: #00cfd5 !important; | ||||
| } | ||||
| 
 | ||||
| .py-10 { | ||||
|   padding-top: 6rem !important; | ||||
|   padding-bottom: 6rem !important; | ||||
| } | ||||
|  |  | |||
|  | @ -13,6 +13,12 @@ | |||
|   .modal-footer { | ||||
|     border: none; | ||||
|     padding: 2rem; | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
| 
 | ||||
|     label { | ||||
|       margin: 0 0.2rem 0 0; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   .modal-body { | ||||
|  |  | |||
|  | @ -0,0 +1,164 @@ | |||
| .ds-survey { | ||||
|   display: flex; | ||||
| 
 | ||||
|   &--titulo { | ||||
|     display: flex; | ||||
|     justify-content: space-between; | ||||
|     align-items: center; | ||||
| 
 | ||||
|     &--name { | ||||
|       color: #1f3779; | ||||
|     } | ||||
| 
 | ||||
|     &--icon { | ||||
|       border-radius: 50%; | ||||
|       background-color: #f1f5f9; | ||||
|       cursor: pointer; | ||||
|       display: flex; | ||||
|       justify-content: center; | ||||
|       align-items: center; | ||||
|       transition: background-color 0.2s ease-in-out; | ||||
|       font-size: 1rem; | ||||
|       padding: 0.8rem; | ||||
|       width: 25px; | ||||
|       height: 25px; | ||||
|       color: #1f3779; | ||||
|       pointer-events: visible !important; | ||||
|       transition: all 0.1s ease-in-out; | ||||
| 
 | ||||
|       * { | ||||
|         pointer-events: none; | ||||
|       } | ||||
| 
 | ||||
|       &:hover { | ||||
|         background-color: #e73636; | ||||
|         color: #fff; | ||||
|       } | ||||
| 
 | ||||
|       &--small { | ||||
|         font-size: 0.8rem; | ||||
|         padding: 0.3rem; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   &--all-question-wrapper { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     border: 2px dashed #f1f1f1; | ||||
|     border-radius: $border-radius-x-large; | ||||
|     padding: 2rem 5rem; | ||||
|     margin: 0 auto; | ||||
|   } | ||||
| 
 | ||||
|   &--question-wrapper { | ||||
|     margin: 0 auto; | ||||
|   } | ||||
| 
 | ||||
|   &--question { | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     font-size: 1.2rem; | ||||
|     color: #15131d; | ||||
|     padding: 2rem; | ||||
|     border-bottom: 1px solid #e9e9e9; | ||||
|   } | ||||
| 
 | ||||
|   &--option { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     margin: 0.5rem 0; | ||||
|     border-radius: 5px; | ||||
|     font-weight: 500; | ||||
|     letter-spacing: 0.025rem; | ||||
|     color: #787878; | ||||
|     background-color: transparent; | ||||
|     position: relative; | ||||
|     top: 0; | ||||
|     transition: all 0.1s ease-in-out; | ||||
| 
 | ||||
|     &--base { | ||||
|       border: 1px solid #e6e6e6; | ||||
|     } | ||||
| 
 | ||||
|     &--add { | ||||
|       border: 2px dashed #9c9c9c; | ||||
|       transition: all 0.1s ease-in-out; | ||||
| 
 | ||||
|       &:hover { | ||||
|         border: 2px dashed #727272; | ||||
|       } | ||||
| 
 | ||||
|       &:hover .ds-survey--add-option { | ||||
|         color: #727272; | ||||
|       } | ||||
| 
 | ||||
|       &:hover .ds-survey--add-option--icon { | ||||
|         color: #727272; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   &--closed-option { | ||||
|     display: flex; | ||||
|     width: 25rem; | ||||
|     align-items: center; | ||||
|     font-size: 0.9rem; | ||||
|     color: #15131d; | ||||
|     padding: 1rem; | ||||
|     transition: all 0.1s ease-in-out; | ||||
|     cursor: pointer; | ||||
|     position: relative; | ||||
| 
 | ||||
|     label { | ||||
|       width: 100%; | ||||
|       margin: 0; | ||||
|       color: #1f3779; | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   &--open-option { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     font-size: 0.9rem; | ||||
|     color: #15131d; | ||||
|     transition: all 0.1s ease-in-out; | ||||
|     position: relative; | ||||
| 
 | ||||
|     & textarea { | ||||
|       width: 25rem; | ||||
|       height: 20rem; | ||||
|       padding: 1rem 3rem; | ||||
|       color: #787878; | ||||
|       border: none; | ||||
|       resize: none; | ||||
| 
 | ||||
|       &:disabled { | ||||
|         background-color: transparent; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   &--add-option { | ||||
|     width: 100%; | ||||
|     color: #919191; | ||||
|     transition: all 0.1s ease-in-out; | ||||
|     pointer-events: none; | ||||
| 
 | ||||
|     &--icon { | ||||
|       margin: 0 1rem; | ||||
|       display: flex; | ||||
|       justify-content: center; | ||||
|       align-items: center; | ||||
|       width: 25px; | ||||
|       height: 25px; | ||||
|       color: #919191; | ||||
|       pointer-events: visible !important; | ||||
|       transition: all 0.1s ease-in-out; | ||||
| 
 | ||||
|       * { | ||||
|         pointer-events: none; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | @ -23,7 +23,8 @@ | |||
|       "opcional": "Opcional", | ||||
|       "orden": "Orden", | ||||
|       "ePreguntaCerradaOpcion": "E Pregunta Cerrada Opcion", | ||||
|       "encuesta": "Encuesta" | ||||
|       "encuesta": "Encuesta", | ||||
|       "tiporespuesta": "Tipo de respuesta" | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  |  | |||
|  | @ -12,7 +12,9 @@ | |||
|       "updated": "Una encuesta ha sido actualizado con el identificador {{ param }}", | ||||
|       "deleted": "Una encuesta ha sido eliminada con el identificador {{ param }}", | ||||
|       "delete": { | ||||
|         "question": "¿Seguro que quiere eliminar la encuesta {{ id }}?" | ||||
|         "question": "¿Seguro que quiere eliminar la encuesta {{ id }}?", | ||||
|         "deletequestion": "¿Seguro que quiere eliminar esta pregunta?", | ||||
|         "deleteoption": "¿Seguro que quiere eliminar esta opción?" | ||||
|       }, | ||||
|       "detail": { | ||||
|         "title": "Encuesta" | ||||
|  |  | |||
|  | @ -137,7 +137,7 @@ | |||
|       "value": "Valor" | ||||
|     }, | ||||
|     "delete": { | ||||
|       "title": "Confirmar operación de borrado", | ||||
|       "title": "Confirmar de operación", | ||||
|       "status": "Confirmar cambio de estado" | ||||
|     }, | ||||
|     "validation": { | ||||
|  |  | |||
|  | @ -12,6 +12,8 @@ | |||
|     <link rel="icon" href="favicon.ico" /> | ||||
|     <link rel="manifest" href="manifest.webapp" /> | ||||
|     <link rel="stylesheet" href="content/css/loading.css" /> | ||||
|     <link rel="stylesheet" href="content/css/loading-2.css" /> | ||||
|     <link rel="stylesheet" href="content/css/loading-boxes.css" /> | ||||
|     <!-- jhipster-needle-add-resources-to-root - JHipster will add new resources here --> | ||||
|   </head> | ||||
|   <body> | ||||
|  | @ -23,16 +25,23 @@ | |||
|     <![endif]--> | ||||
|     <jhi-main> | ||||
|       <div class="app-loading"> | ||||
|         <div class="lds-pacman"> | ||||
|           <div> | ||||
|             <div></div> | ||||
|             <div></div> | ||||
|             <div></div> | ||||
|         <div class="loader"> | ||||
|           <div class="l_main"> | ||||
|             <div class="l_square"><span></span><span></span><span></span></div> | ||||
|             <div class="l_square"><span></span><span></span><span></span></div> | ||||
|             <div class="l_square"><span></span><span></span><span></span></div> | ||||
|             <div class="l_square"><span></span><span></span><span></span></div> | ||||
|           </div> | ||||
|           <div> | ||||
|             <div></div> | ||||
|             <div></div> | ||||
|             <div></div> | ||||
|         </div> | ||||
| 
 | ||||
|         <div class="container"> | ||||
|           <div class="tittle"><h2>Cargando</h2></div> | ||||
|           <div class="square-container"> | ||||
|             <div class="square square1"> </div> | ||||
|             <div class="square square2"> </div> | ||||
|             <div class="square square3"> </div> | ||||
|             <div class="square square4"> </div> | ||||
|             <div class="square square5"> </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|  |  | |||