Merge branch 'feature/US-63' into feature/US-65
This commit is contained in:
		
						commit
						b72b286939
					
				|  | @ -159,6 +159,7 @@ public class MailService { | ||||||
|         sendEmailFromTemplate(user.getUser(), "mail/encuestaPublicaEmail", "email.public.title"); |         sendEmailFromTemplate(user.getUser(), "mail/encuestaPublicaEmail", "email.public.title"); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @Async | ||||||
|     public void sendEncuestaDeleted(UsuarioExtra user) { |     public void sendEncuestaDeleted(UsuarioExtra user) { | ||||||
|         log.debug("Sending encuesta deletion notification mail to '{}'", user.getUser().getEmail()); |         log.debug("Sending encuesta deletion notification mail to '{}'", user.getUser().getEmail()); | ||||||
|         sendEmailFromTemplate(user.getUser(), "mail/encuestaDeletedEmail", "email.encuestaDeleted.title"); |         sendEmailFromTemplate(user.getUser(), "mail/encuestaDeletedEmail", "email.encuestaDeleted.title"); | ||||||
|  |  | ||||||
|  | @ -126,6 +126,35 @@ public class EncuestaResource { | ||||||
| 
 | 
 | ||||||
|         Encuesta result = encuestaService.save(encuesta); |         Encuesta result = encuestaService.save(encuesta); | ||||||
| 
 | 
 | ||||||
|  |         if (encuesta.getUsuarioExtra().getUser() != null) { | ||||||
|  |             mailService.sendEncuestaDeleted(encuesta.getUsuarioExtra()); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return ResponseEntity | ||||||
|  |             .ok() | ||||||
|  |             .headers(HeaderUtil.createEntityUpdateAlert(applicationName, true, ENTITY_NAME, encuesta.getId().toString())) | ||||||
|  |             .body(result); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @PutMapping("/encuestas/update/{id}") | ||||||
|  |     public ResponseEntity<Encuesta> updateEncuestaReal( | ||||||
|  |         @PathVariable(value = "id", required = false) final Long id, | ||||||
|  |         @Valid @RequestBody Encuesta encuesta | ||||||
|  |     ) throws URISyntaxException { | ||||||
|  |         log.debug("REST request to update Encuesta : {}, {}", id, encuesta); | ||||||
|  |         if (encuesta.getId() == null) { | ||||||
|  |             throw new BadRequestAlertException("Invalid id", ENTITY_NAME, "idnull"); | ||||||
|  |         } | ||||||
|  |         if (!Objects.equals(id, encuesta.getId())) { | ||||||
|  |             throw new BadRequestAlertException("Invalid ID", ENTITY_NAME, "idinvalid"); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         if (!encuestaRepository.existsById(id)) { | ||||||
|  |             throw new BadRequestAlertException("Entity not found", ENTITY_NAME, "idnotfound"); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         Encuesta result = encuestaService.save(encuesta); | ||||||
|  | 
 | ||||||
|         return ResponseEntity |         return ResponseEntity | ||||||
|             .ok() |             .ok() | ||||||
|             .headers(HeaderUtil.createEntityUpdateAlert(applicationName, true, ENTITY_NAME, encuesta.getId().toString())) |             .headers(HeaderUtil.createEntityUpdateAlert(applicationName, true, ENTITY_NAME, encuesta.getId().toString())) | ||||||
|  |  | ||||||
|  | @ -2,11 +2,14 @@ package org.datasurvey.web.rest; | ||||||
| 
 | 
 | ||||||
| import java.net.URI; | import java.net.URI; | ||||||
| import java.net.URISyntaxException; | import java.net.URISyntaxException; | ||||||
|  | import java.util.Arrays; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Objects; | import java.util.Objects; | ||||||
| import java.util.Optional; | import java.util.Optional; | ||||||
| import javax.validation.Valid; | import javax.validation.Valid; | ||||||
| import javax.validation.constraints.NotNull; | import javax.validation.constraints.NotNull; | ||||||
|  | import org.datasurvey.domain.EPreguntaCerrada; | ||||||
|  | import org.datasurvey.domain.PPreguntaCerrada; | ||||||
| import org.datasurvey.domain.PPreguntaCerradaOpcion; | import org.datasurvey.domain.PPreguntaCerradaOpcion; | ||||||
| import org.datasurvey.repository.PPreguntaCerradaOpcionRepository; | import org.datasurvey.repository.PPreguntaCerradaOpcionRepository; | ||||||
| import org.datasurvey.service.PPreguntaCerradaOpcionQueryService; | import org.datasurvey.service.PPreguntaCerradaOpcionQueryService; | ||||||
|  | @ -58,10 +61,15 @@ public class PPreguntaCerradaOpcionResource { | ||||||
|      * @return the {@link ResponseEntity} with status {@code 201 (Created)} and with body the new pPreguntaCerradaOpcion, or with status {@code 400 (Bad Request)} if the pPreguntaCerradaOpcion has already an ID. |      * @return the {@link ResponseEntity} with status {@code 201 (Created)} and with body the new pPreguntaCerradaOpcion, or with status {@code 400 (Bad Request)} if the pPreguntaCerradaOpcion has already an ID. | ||||||
|      * @throws URISyntaxException if the Location URI syntax is incorrect. |      * @throws URISyntaxException if the Location URI syntax is incorrect. | ||||||
|      */ |      */ | ||||||
|     @PostMapping("/p-pregunta-cerrada-opcions") |     @PostMapping("/p-pregunta-cerrada-opcions/{id}") | ||||||
|     public ResponseEntity<PPreguntaCerradaOpcion> createPPreguntaCerradaOpcion( |     public ResponseEntity<PPreguntaCerradaOpcion> createPPreguntaCerradaOpcion( | ||||||
|         @Valid @RequestBody PPreguntaCerradaOpcion pPreguntaCerradaOpcion |         @Valid @RequestBody PPreguntaCerradaOpcion pPreguntaCerradaOpcion, | ||||||
|  |         @PathVariable(value = "id", required = false) final Long id | ||||||
|     ) throws URISyntaxException { |     ) throws URISyntaxException { | ||||||
|  |         PPreguntaCerrada pPreguntaCerrada = new PPreguntaCerrada(); | ||||||
|  |         pPreguntaCerrada.setId(id); | ||||||
|  |         pPreguntaCerradaOpcion.setPPreguntaCerrada(pPreguntaCerrada); | ||||||
|  | 
 | ||||||
|         log.debug("REST request to save PPreguntaCerradaOpcion : {}", pPreguntaCerradaOpcion); |         log.debug("REST request to save PPreguntaCerradaOpcion : {}", pPreguntaCerradaOpcion); | ||||||
|         if (pPreguntaCerradaOpcion.getId() != null) { |         if (pPreguntaCerradaOpcion.getId() != null) { | ||||||
|             throw new BadRequestAlertException("A new pPreguntaCerradaOpcion cannot already have an ID", ENTITY_NAME, "idexists"); |             throw new BadRequestAlertException("A new pPreguntaCerradaOpcion cannot already have an ID", ENTITY_NAME, "idexists"); | ||||||
|  | @ -196,4 +204,15 @@ public class PPreguntaCerradaOpcionResource { | ||||||
|             .headers(HeaderUtil.createEntityDeletionAlert(applicationName, true, ENTITY_NAME, id.toString())) |             .headers(HeaderUtil.createEntityDeletionAlert(applicationName, true, ENTITY_NAME, id.toString())) | ||||||
|             .build(); |             .build(); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     @PostMapping("/p-pregunta-cerrada-opcions/deleteMany") | ||||||
|  |     public ResponseEntity<Void> deleteManyPPreguntaCerradaOpcion(@Valid @RequestBody int[] ids) { | ||||||
|  |         for (int id : ids) { | ||||||
|  |             pPreguntaCerradaOpcionService.delete((long) id); | ||||||
|  |         } | ||||||
|  |         return ResponseEntity | ||||||
|  |             .noContent() | ||||||
|  |             .headers(HeaderUtil.createEntityDeletionAlert(applicationName, true, ENTITY_NAME, Arrays.toString(ids))) | ||||||
|  |             .build(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -2,15 +2,17 @@ package org.datasurvey.web.rest; | ||||||
| 
 | 
 | ||||||
| import java.net.URI; | import java.net.URI; | ||||||
| import java.net.URISyntaxException; | import java.net.URISyntaxException; | ||||||
|  | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Objects; | import java.util.Objects; | ||||||
| import java.util.Optional; | import java.util.Optional; | ||||||
|  | import java.util.stream.Collectors; | ||||||
|  | import java.util.stream.Stream; | ||||||
| import javax.validation.Valid; | import javax.validation.Valid; | ||||||
| import javax.validation.constraints.NotNull; | import javax.validation.constraints.NotNull; | ||||||
| import org.datasurvey.domain.Plantilla; | import org.datasurvey.domain.*; | ||||||
| import org.datasurvey.repository.PlantillaRepository; | import org.datasurvey.repository.PlantillaRepository; | ||||||
| import org.datasurvey.service.PlantillaQueryService; | import org.datasurvey.service.*; | ||||||
| import org.datasurvey.service.PlantillaService; |  | ||||||
| import org.datasurvey.service.criteria.PlantillaCriteria; | import org.datasurvey.service.criteria.PlantillaCriteria; | ||||||
| import org.datasurvey.web.rest.errors.BadRequestAlertException; | import org.datasurvey.web.rest.errors.BadRequestAlertException; | ||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
|  | @ -41,14 +43,26 @@ public class PlantillaResource { | ||||||
| 
 | 
 | ||||||
|     private final PlantillaQueryService plantillaQueryService; |     private final PlantillaQueryService plantillaQueryService; | ||||||
| 
 | 
 | ||||||
|  |     private final PPreguntaCerradaService pPreguntaCerradaService; | ||||||
|  | 
 | ||||||
|  |     private final PPreguntaAbiertaService pPreguntaAbiertaService; | ||||||
|  | 
 | ||||||
|  |     private final PPreguntaCerradaOpcionService pPreguntaCerradaOpcionService; | ||||||
|  | 
 | ||||||
|     public PlantillaResource( |     public PlantillaResource( | ||||||
|         PlantillaService plantillaService, |         PlantillaService plantillaService, | ||||||
|         PlantillaRepository plantillaRepository, |         PlantillaRepository plantillaRepository, | ||||||
|         PlantillaQueryService plantillaQueryService |         PlantillaQueryService plantillaQueryService, | ||||||
|  |         PPreguntaCerradaService pPreguntaCerradaService, | ||||||
|  |         PPreguntaAbiertaService pPreguntaAbiertaService, | ||||||
|  |         PPreguntaCerradaOpcionService ePreguntaCerradaOpcionService | ||||||
|     ) { |     ) { | ||||||
|         this.plantillaService = plantillaService; |         this.plantillaService = plantillaService; | ||||||
|         this.plantillaRepository = plantillaRepository; |         this.plantillaRepository = plantillaRepository; | ||||||
|         this.plantillaQueryService = plantillaQueryService; |         this.plantillaQueryService = plantillaQueryService; | ||||||
|  |         this.pPreguntaCerradaService = pPreguntaCerradaService; | ||||||
|  |         this.pPreguntaAbiertaService = pPreguntaAbiertaService; | ||||||
|  |         this.pPreguntaCerradaOpcionService = ePreguntaCerradaOpcionService; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | @ -154,6 +168,55 @@ public class PlantillaResource { | ||||||
|         return ResponseEntity.ok().body(entityList); |         return ResponseEntity.ok().body(entityList); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @GetMapping("/plantillas/preguntas/{id}") | ||||||
|  |     public ResponseEntity<List<Object>> getPreguntasByIdPlantilla(@PathVariable Long id) { | ||||||
|  |         List<PPreguntaCerrada> preguntasCerradas = pPreguntaCerradaService.findAll(); | ||||||
|  |         List<PPreguntaAbierta> preguntasAbiertas = pPreguntaAbiertaService.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() == PPreguntaCerrada.class) { | ||||||
|  |                 if (((PPreguntaCerrada) obj).getPlantilla() != null) { | ||||||
|  |                     if (((PPreguntaCerrada) obj).getPlantilla().getId().equals(id)) { | ||||||
|  |                         preguntasFiltered.add(obj); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } else if (obj.getClass() == PPreguntaAbierta.class) { | ||||||
|  |                 if (((PPreguntaAbierta) obj).getPlantilla() != null) { | ||||||
|  |                     if (((PPreguntaAbierta) obj).getPlantilla().getId().equals(id)) { | ||||||
|  |                         preguntasFiltered.add(obj); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return ResponseEntity.ok().body(preguntasFiltered); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @GetMapping("/plantillas/preguntas-opciones/{id}") | ||||||
|  |     public ResponseEntity<List<List<PPreguntaCerradaOpcion>>> getPreguntaCerradaOpcionByIdPlantilla(@PathVariable Long id) { | ||||||
|  |         List<List<PPreguntaCerradaOpcion>> res = new ArrayList<>(); | ||||||
|  |         List<PPreguntaCerrada> preguntasCerradas = pPreguntaCerradaService.findAll(); | ||||||
|  |         List<PPreguntaCerrada> preguntasCerradasFiltered = preguntasCerradas | ||||||
|  |             .stream() | ||||||
|  |             .filter(p -> Objects.nonNull(p.getPlantilla())) | ||||||
|  |             .filter(p -> p.getPlantilla().getId().equals(id)) | ||||||
|  |             .collect(Collectors.toList()); | ||||||
|  |         List<PPreguntaCerradaOpcion> opciones = pPreguntaCerradaOpcionService.findAll(); | ||||||
|  | 
 | ||||||
|  |         for (PPreguntaCerrada pPreguntaCerrada : preguntasCerradasFiltered) { | ||||||
|  |             long preguntaCerradaId = pPreguntaCerrada.getId(); | ||||||
|  |             List<PPreguntaCerradaOpcion> opcionesFiltered = opciones | ||||||
|  |                 .stream() | ||||||
|  |                 .filter(o -> Objects.nonNull(o.getPPreguntaCerrada())) | ||||||
|  |                 .filter(o -> o.getPPreguntaCerrada().getId().equals(preguntaCerradaId)) | ||||||
|  |                 .collect(Collectors.toList()); | ||||||
|  |             res.add(opcionesFiltered); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return ResponseEntity.ok().body(res); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * {@code GET  /plantillas/count} : count all the plantillas. |      * {@code GET  /plantillas/count} : count all the plantillas. | ||||||
|      * |      * | ||||||
|  |  | ||||||
|  | @ -2,15 +2,20 @@ package org.datasurvey.web.rest; | ||||||
| 
 | 
 | ||||||
| import java.net.URI; | import java.net.URI; | ||||||
| import java.net.URISyntaxException; | import java.net.URISyntaxException; | ||||||
|  | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Objects; | import java.util.Objects; | ||||||
| import java.util.Optional; | import java.util.Optional; | ||||||
|  | import java.util.stream.Collectors; | ||||||
| import javax.validation.Valid; | import javax.validation.Valid; | ||||||
| import javax.validation.constraints.NotNull; | import javax.validation.constraints.NotNull; | ||||||
| import org.datasurvey.domain.UsuarioEncuesta; | import org.datasurvey.domain.UsuarioEncuesta; | ||||||
|  | import org.datasurvey.domain.UsuarioExtra; | ||||||
| import org.datasurvey.repository.UsuarioEncuestaRepository; | import org.datasurvey.repository.UsuarioEncuestaRepository; | ||||||
|  | import org.datasurvey.service.EncuestaService; | ||||||
| import org.datasurvey.service.UsuarioEncuestaQueryService; | import org.datasurvey.service.UsuarioEncuestaQueryService; | ||||||
| import org.datasurvey.service.UsuarioEncuestaService; | import org.datasurvey.service.UsuarioEncuestaService; | ||||||
|  | import org.datasurvey.service.UsuarioExtraService; | ||||||
| import org.datasurvey.service.criteria.UsuarioEncuestaCriteria; | import org.datasurvey.service.criteria.UsuarioEncuestaCriteria; | ||||||
| import org.datasurvey.web.rest.errors.BadRequestAlertException; | import org.datasurvey.web.rest.errors.BadRequestAlertException; | ||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
|  | @ -36,6 +41,8 @@ public class UsuarioEncuestaResource { | ||||||
|     private String applicationName; |     private String applicationName; | ||||||
| 
 | 
 | ||||||
|     private final UsuarioEncuestaService usuarioEncuestaService; |     private final UsuarioEncuestaService usuarioEncuestaService; | ||||||
|  |     private final UsuarioExtraService usuarioExtraService; | ||||||
|  |     private final EncuestaService encuestaService; | ||||||
| 
 | 
 | ||||||
|     private final UsuarioEncuestaRepository usuarioEncuestaRepository; |     private final UsuarioEncuestaRepository usuarioEncuestaRepository; | ||||||
| 
 | 
 | ||||||
|  | @ -44,11 +51,15 @@ public class UsuarioEncuestaResource { | ||||||
|     public UsuarioEncuestaResource( |     public UsuarioEncuestaResource( | ||||||
|         UsuarioEncuestaService usuarioEncuestaService, |         UsuarioEncuestaService usuarioEncuestaService, | ||||||
|         UsuarioEncuestaRepository usuarioEncuestaRepository, |         UsuarioEncuestaRepository usuarioEncuestaRepository, | ||||||
|         UsuarioEncuestaQueryService usuarioEncuestaQueryService |         UsuarioEncuestaQueryService usuarioEncuestaQueryService, | ||||||
|  |         UsuarioExtraService usuarioExtraService, | ||||||
|  |         EncuestaService encuestaService | ||||||
|     ) { |     ) { | ||||||
|         this.usuarioEncuestaService = usuarioEncuestaService; |         this.usuarioEncuestaService = usuarioEncuestaService; | ||||||
|         this.usuarioEncuestaRepository = usuarioEncuestaRepository; |         this.usuarioEncuestaRepository = usuarioEncuestaRepository; | ||||||
|         this.usuarioEncuestaQueryService = usuarioEncuestaQueryService; |         this.usuarioEncuestaQueryService = usuarioEncuestaQueryService; | ||||||
|  |         this.usuarioExtraService = usuarioExtraService; | ||||||
|  |         this.encuestaService = encuestaService; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|  | @ -195,4 +206,23 @@ public class UsuarioEncuestaResource { | ||||||
|             .headers(HeaderUtil.createEntityDeletionAlert(applicationName, true, ENTITY_NAME, id.toString())) |             .headers(HeaderUtil.createEntityDeletionAlert(applicationName, true, ENTITY_NAME, id.toString())) | ||||||
|             .build(); |             .build(); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     @GetMapping("/usuario-encuestas/encuesta/{id}") | ||||||
|  |     public ResponseEntity<List<UsuarioEncuesta>> getColaboradores(@PathVariable Long id) { | ||||||
|  |         List<UsuarioExtra> usuariosExtras = usuarioExtraService.findAll(); | ||||||
|  |         List<UsuarioEncuesta> usuariosEncuestas = usuarioEncuestaService | ||||||
|  |             .findAll() | ||||||
|  |             .stream() | ||||||
|  |             .filter(uE -> Objects.nonNull(uE.getEncuesta())) | ||||||
|  |             .filter(uE -> uE.getEncuesta().getId().equals(id)) | ||||||
|  |             .collect(Collectors.toList()); | ||||||
|  | 
 | ||||||
|  |         for (UsuarioEncuesta usuarioEncuesta : usuariosEncuestas) { | ||||||
|  |             long usuarioExtraId = usuarioEncuesta.getUsuarioExtra().getId(); | ||||||
|  |             UsuarioExtra usuarioExtra = usuariosExtras.stream().filter(u -> u.getId() == usuarioExtraId).findFirst().get(); | ||||||
|  |             usuarioEncuesta.getUsuarioExtra().setNombre(usuarioExtra.getNombre()); | ||||||
|  |             usuarioEncuesta.getUsuarioExtra().setIconoPerfil(usuarioExtra.getIconoPerfil()); | ||||||
|  |         } | ||||||
|  |         return ResponseEntity.ok().body(usuariosEncuestas); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -56,5 +56,5 @@ email.private.text2=Saludos, | ||||||
| #DeletedEncuesta | #DeletedEncuesta | ||||||
| email.encuestaDeleted.title=Su encuesta ha sido eliminada | email.encuestaDeleted.title=Su encuesta ha sido eliminada | ||||||
| email.encuestaDeleted.greeting=Estimado {0} | email.encuestaDeleted.greeting=Estimado {0} | ||||||
| email.encuestaDeleted.text1=Su encuesta ha sido eliminada por un administrador | email.encuestaDeleted.text1=Lamentamos informarle que su encuesta ha sido eliminada por un administrador | ||||||
| email.encuestaDeleted.text2=Saludos, | email.encuestaDeleted.text2=Saludos, | ||||||
|  |  | ||||||
|  | @ -24,16 +24,16 @@ | ||||||
|               </div> |               </div> | ||||||
|               <div class="d-flex justify-content-center"> |               <div class="d-flex justify-content-center"> | ||||||
|                 <button class="ds-btn ds-btn--primary" routerLink="/login" jhiTranslate="global.messages.info.authenticated.link"> |                 <button class="ds-btn ds-btn--primary" routerLink="/login" jhiTranslate="global.messages.info.authenticated.link"> | ||||||
|                   sign in</button |                   sign in | ||||||
|                 >. |                 </button> | ||||||
|               </div> |               </div> | ||||||
|             </div> |             </div> | ||||||
|             <div *ngIf="error"> |             <div *ngIf="error"> | ||||||
|               <div class="alert alert-danger text-center my-2" jhiTranslate="activate.messages.error"></div> |               <div class="alert alert-danger text-center my-2" jhiTranslate="activate.messages.error"></div> | ||||||
|               <div class="d-flex justify-content-center"> |               <div class="d-flex justify-content-center"> | ||||||
|                 <button class="ds-btn ds-btn--primary" routerLink="/account/register" jhiTranslate="global.registerLink"> |                 <button class="ds-btn ds-btn--primary" routerLink="/account/register" jhiTranslate="global.registerLink"> | ||||||
|                   create account</button |                   create account | ||||||
|                 >. |                 </button> | ||||||
|               </div> |               </div> | ||||||
|             </div> |             </div> | ||||||
|           </div> |           </div> | ||||||
|  |  | ||||||
|  | @ -38,8 +38,8 @@ | ||||||
|                 </div> |                 </div> | ||||||
|                 <div class="d-flex justify-content-center"> |                 <div class="d-flex justify-content-center"> | ||||||
|                   <button class="ds-btn ds-btn--primary" routerLink="/login" jhiTranslate="global.messages.info.authenticated.botonInicio"> |                   <button class="ds-btn ds-btn--primary" routerLink="/login" jhiTranslate="global.messages.info.authenticated.botonInicio"> | ||||||
|                     sign in</button |                     sign in | ||||||
|                   >. |                   </button> | ||||||
|                 </div> |                 </div> | ||||||
|               </div> |               </div> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -18,7 +18,7 @@ import { AppRoutingModule } from './app-routing.module'; | ||||||
| import { HomeModule } from './home/home.module'; | import { HomeModule } from './home/home.module'; | ||||||
| import { EntityRoutingModule } from './entities/entity-routing.module'; | import { EntityRoutingModule } from './entities/entity-routing.module'; | ||||||
| import { ReactiveFormsModule } from '@angular/forms'; | import { ReactiveFormsModule } from '@angular/forms'; | ||||||
| 
 | import { PaginaPrincipalModule } from './pagina-principal/pagina-principal.module'; | ||||||
| import { SocialLoginModule, SocialAuthServiceConfig } from 'angularx-social-login'; | import { SocialLoginModule, SocialAuthServiceConfig } from 'angularx-social-login'; | ||||||
| import { GoogleLoginProvider } from 'angularx-social-login'; | import { GoogleLoginProvider } from 'angularx-social-login'; | ||||||
| // jhipster-needle-angular-add-module-import JHipster will add new module here
 | // jhipster-needle-angular-add-module-import JHipster will add new module here
 | ||||||
|  | @ -32,6 +32,7 @@ import { FooterComponent } from './layouts/footer/footer.component'; | ||||||
| import { PageRibbonComponent } from './layouts/profiles/page-ribbon.component'; | import { PageRibbonComponent } from './layouts/profiles/page-ribbon.component'; | ||||||
| import { ErrorComponent } from './layouts/error/error.component'; | import { ErrorComponent } from './layouts/error/error.component'; | ||||||
| import { SidebarComponent } from './layouts/sidebar/sidebar.component'; | import { SidebarComponent } from './layouts/sidebar/sidebar.component'; | ||||||
|  | import { PaginaPrincipalComponent } from './pagina-principal/pagina-principal.component'; | ||||||
| 
 | 
 | ||||||
| @NgModule({ | @NgModule({ | ||||||
|   imports: [ |   imports: [ | ||||||
|  | @ -39,6 +40,7 @@ import { SidebarComponent } from './layouts/sidebar/sidebar.component'; | ||||||
|     BrowserModule, |     BrowserModule, | ||||||
|     SharedModule, |     SharedModule, | ||||||
|     HomeModule, |     HomeModule, | ||||||
|  |     PaginaPrincipalModule, | ||||||
|     // jhipster-needle-angular-add-module JHipster will add new module here
 |     // jhipster-needle-angular-add-module JHipster will add new module here
 | ||||||
|     EntityRoutingModule, |     EntityRoutingModule, | ||||||
|     AppRoutingModule, |     AppRoutingModule, | ||||||
|  |  | ||||||
|  | @ -23,6 +23,6 @@ export class EncuestaDeleteDialogComponent { | ||||||
|     this.encuestaService.deleteEncuesta(encuesta).subscribe(() => { |     this.encuestaService.deleteEncuesta(encuesta).subscribe(() => { | ||||||
|       this.activeModal.close('deleted'); |       this.activeModal.close('deleted'); | ||||||
|     }); |     }); | ||||||
|     this.encuestaService.deletedNotification(encuesta); |     //this.encuestaService.deletedNotification(encuesta);
 | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,94 +1,17 @@ | ||||||
| <!--<div class="row justify-content-center"> |  | ||||||
|   <div class="col-8"> |  | ||||||
|     <div *ngIf="encuesta"> |  | ||||||
|       <h2 data-cy="encuestaDetailsHeading"><span jhiTranslate="dataSurveyApp.encuesta.detail.title">Encuesta</span></h2> |  | ||||||
| 
 |  | ||||||
|       <hr /> |  | ||||||
| 
 |  | ||||||
|       <jhi-alert-error></jhi-alert-error> |  | ||||||
| 
 |  | ||||||
|       <jhi-alert></jhi-alert> |  | ||||||
| 
 |  | ||||||
|       <dl class="row-md jh-entity-details"> |  | ||||||
|         <dt><span jhiTranslate="global.field.id">ID</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <span>{{ encuesta.id }}</span> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.nombre">Nombre</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <span>{{ encuesta.nombre }}</span> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.descripcion">Descripcion</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <span>{{ encuesta.descripcion }}</span> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.fechaCreacion">Fecha Creacion</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <span>{{ encuesta.fechaCreacion | formatMediumDatetime }}</span> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.fechaPublicacion">Fecha Publicacion</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <span>{{ encuesta.fechaPublicacion | formatMediumDatetime }}</span> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.fechaFinalizar">Fecha Finalizar</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <span>{{ encuesta.fechaFinalizar | formatMediumDatetime }}</span> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.fechaFinalizada">Fecha Finalizada</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <span>{{ encuesta.fechaFinalizada | formatMediumDatetime }}</span> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.calificacion">Calificacion</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <span>{{ encuesta.calificacion }}</span> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.acceso">Acceso</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <span jhiTranslate="{{ 'dataSurveyApp.AccesoEncuesta.' + encuesta.acceso }}">{{ encuesta.acceso }}</span> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.contrasenna">Contrasenna</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <span>{{ encuesta.contrasenna }}</span> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.estado">Estado</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <span jhiTranslate="{{ 'dataSurveyApp.EstadoEncuesta.' + encuesta.estado }}">{{ encuesta.estado }}</span> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.categoria">Categoria</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <div *ngIf="encuesta.categoria"> |  | ||||||
|             <a [routerLink]="['/categoria', encuesta.categoria?.id, 'view']">{{ encuesta.categoria?.nombre }}</a> |  | ||||||
|           </div> |  | ||||||
|         </dd> |  | ||||||
|         <dt><span jhiTranslate="dataSurveyApp.encuesta.usuarioExtra">Usuario Extra</span></dt> |  | ||||||
|         <dd> |  | ||||||
|           <div *ngIf="encuesta.usuarioExtra"> |  | ||||||
|             <a [routerLink]="['/usuario-extra', encuesta.usuarioExtra?.id, 'view']">{{ encuesta.usuarioExtra?.id }}</a> |  | ||||||
|           </div> |  | ||||||
|         </dd> |  | ||||||
|       </dl> |  | ||||||
| 
 |  | ||||||
|       <button type="submit" (click)="previousState()" class="btn btn-info" data-cy="entityDetailsBackButton"> |  | ||||||
|         <fa-icon icon="arrow-left"></fa-icon> <span jhiTranslate="entity.action.back">Back</span> |  | ||||||
|       </button> |  | ||||||
| 
 |  | ||||||
|       <button type="button" [routerLink]="['/encuesta', encuesta.id, 'edit']" class="btn btn-primary"> |  | ||||||
|         <fa-icon icon="pencil-alt"></fa-icon> <span jhiTranslate="entity.action.edit">Edit</span> |  | ||||||
|       </button> |  | ||||||
|     </div> |  | ||||||
|   </div> |  | ||||||
| </div>--> |  | ||||||
| 
 |  | ||||||
| <div class="container-fluid" *ngIf="encuesta"> | <div class="container-fluid" *ngIf="encuesta"> | ||||||
|   <div> |   <div> | ||||||
|     <h2 id="page-heading" data-cy="EPreguntaCerradaHeading"> |     <h2 id="page-heading" data-cy="EPreguntaCerradaHeading"> | ||||||
|       <p class="ds-title">Vista previa de {{ encuesta!.nombre }}</p> |       <div class="d-flex align-items-center"> | ||||||
|  |         <p class="ds-title">Vista previa de {{ encuesta!.nombre }}</p> | ||||||
|  |           <fa-icon class="ds-info--icon" [icon]="faQuestion" data-toggle="modal" data-target="#verParametros"></fa-icon> | ||||||
|  |       </div> | ||||||
|  | 
 | ||||||
|       <p class="ds-subtitle">Creada el día {{ encuesta!.fechaCreacion | formatShortDatetime | lowercase }}</p> |       <p class="ds-subtitle">Creada el día {{ encuesta!.fechaCreacion | formatShortDatetime | lowercase }}</p> | ||||||
|       <div class="d-flex justify-content-end"> |       <div class="d-flex justify-content-end"> | ||||||
|         <button type="button" class="ds-btn ds-btn--secondary" (click)="previousState()"> |         <button type="button" class="ds-btn ds-btn--secondary" (click)="previousState()"> | ||||||
|           <fa-icon icon="arrow-left"></fa-icon>  <span jhiTranslate="entity.action.back">Back</span> |           <fa-icon icon="arrow-left"></fa-icon>  <span jhiTranslate="entity.action.back">Back</span> | ||||||
|         </button> |         </button> | ||||||
|         <ng-container *ngIf="encuesta!.estado === 'DRAFT'"> |         <ng-container *ngIf="encuesta!.estado === 'DRAFT' && (isAutor() || isEscritor())"> | ||||||
|           <button type="button" class="ds-btn ds-btn--primary" (click)="publishSurvey()">Publicar encuesta</button> |           <button type="button" class="ds-btn ds-btn--primary" (click)="publishSurvey()">Publicar encuesta</button> | ||||||
|         </ng-container> |         </ng-container> | ||||||
|       </div> |       </div> | ||||||
|  | @ -167,77 +90,110 @@ | ||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|       <div class="col-3 info-encuesta"> |       <div | ||||||
|         <p style="font-size: 1.2em" class="ds-survey--titulo--name py-3">Cantidad de preguntas: {{ ePreguntas?.length }}</p> |         class="modal fade ds-modal" | ||||||
|         <!--<div> |         id="verParametros" | ||||||
|             <p style="font-size: 1.2em" class="ds-survey--titulo--name">Colaboradores</p> |         tabindex="-1" | ||||||
|           </div>--> |         role="dialog" | ||||||
|         <dl> |         aria-labelledby="exampleModalCenterTitle" | ||||||
|           <dt><span jhiTranslate="dataSurveyApp.encuesta.acceso">Acceso</span></dt> |         aria-hidden="true" | ||||||
|           <dd> |       > | ||||||
|             - |         <div class="modal-dialog modal-dialog-centered" role="document"> | ||||||
|             <span jhiTranslate="{{ 'dataSurveyApp.AccesoEncuesta.' + encuesta.acceso }}"> {{ encuesta.acceso }}</span> |           <div class="modal-content"> | ||||||
|           </dd> |             <div class="modal-header"> | ||||||
|         </dl> |               <h1 class="modal-title" id="exampleModalLongTitle">Información de encuesta</h1> | ||||||
|         <dl *ngIf="encuesta.acceso === 'PRIVATE'"> |             </div> | ||||||
|           <dt><span jhiTranslate="dataSurveyApp.encuesta.contrasenna">Contrasenna</span></dt> | 
 | ||||||
|           <dd> |             <div class="modal-body"> | ||||||
|             <span>- {{ encuesta.contrasenna }}</span> |               <div> | ||||||
|           </dd> |                 <div class="mb-5"> | ||||||
|         </dl> |                   <p style="font-size: 1.2em" class="ds-subtitle">Cantidad de preguntas</p> | ||||||
|         <dl> |                   <p>{{ ePreguntas?.length }}</p> | ||||||
|           <dt><span jhiTranslate="dataSurveyApp.encuesta.estado">Estado</span></dt> |                 </div> | ||||||
|           <dd> | 
 | ||||||
|             - <span jhiTranslate="{{ 'dataSurveyApp.EstadoEncuesta.' + encuesta.estado }}">{{ encuesta.estado }}</span> |                 <!--<div> | ||||||
|           </dd> |                     <p style="font-size: 1.2em" class="ds-survey--titulo--name">Colaboradores</p> | ||||||
|         </dl> |                   </div>--> | ||||||
|         <dl *ngIf="encuesta.categoria"> | 
 | ||||||
|           <dt><span jhiTranslate="dataSurveyApp.encuesta.categoria">Categoria</span></dt> |                 <div class="mb-5"> | ||||||
|           <dd> |                   <p class="ds-subtitle" jhiTranslate="dataSurveyApp.encuesta.acceso">Acceso</p> | ||||||
|             <a>- {{ encuesta.categoria?.nombre }}</a> |                   <p jhiTranslate="{{ 'dataSurveyApp.AccesoEncuesta.' + encuesta.acceso }}">{{ encuesta.acceso }}</p> | ||||||
|           </dd> |                 </div> | ||||||
|         </dl> | 
 | ||||||
|         <dl> |                 <div *ngIf="encuesta.acceso === 'PRIVATE'" class="mb-5"> | ||||||
|           <dt><span jhiTranslate="dataSurveyApp.encuesta.fechaPublicacion">Fecha Publicacion</span></dt> |                   <p class="ds-subtitle">Contraseña</p> | ||||||
|           <dd> |                   <p>{{ encuesta.contrasenna }}</p> | ||||||
|             <span |                 </div> | ||||||
|               >- | 
 | ||||||
|               {{ |                 <div class="mb-5"> | ||||||
|                 encuesta.fechaPublicacion === undefined ? 'Sin publicar' : (encuesta.fechaPublicacion | formatShortDatetime | lowercase) |                   <p class="ds-subtitle">Estado:</p> | ||||||
|               }}</span |                   <p jhiTranslate="{{ 'dataSurveyApp.EstadoEncuesta.' + encuesta.estado }}">{{ encuesta.estado }}</p> | ||||||
|             > |                 </div> | ||||||
|           </dd> | 
 | ||||||
|         </dl> |                 <div *ngIf="encuesta.categoria" class="mb-5"> | ||||||
|         <dl> |                   <p class="ds-subtitle">Categoría</p> | ||||||
|           <dt><span jhiTranslate="dataSurveyApp.encuesta.fechaFinalizar">Fecha Finalizar</span></dt> |                   <P> </P> {{ encuesta.categoria?.nombre }} | ||||||
|           <dd> |                 </div> | ||||||
|             <span> | 
 | ||||||
|               - |                 <div class="mb-5"> | ||||||
|               {{ |                   <p class="ds-subtitle">Fecha de publicación</p> | ||||||
|                 encuesta.fechaFinalizar === undefined |                   <P | ||||||
|                   ? 'Sin fecha de finalización' |                     >{{ | ||||||
|                   : (encuesta.fechaFinalizar | formatShortDatetime | lowercase) |                       encuesta.fechaPublicacion === undefined | ||||||
|               }}</span |                         ? 'Sin publicar' | ||||||
|             > |                         : (encuesta.fechaPublicacion | formatShortDatetime | lowercase) | ||||||
|           </dd> |                     }} | ||||||
|         </dl> |                   </P> | ||||||
|         <dl> |                 </div> | ||||||
|           <dt><span jhiTranslate="dataSurveyApp.encuesta.fechaFinalizada">Fecha Finalizada</span></dt> | 
 | ||||||
|           <dd> |                 <!--<div class="mb-5"> | ||||||
|             <span> |                 <p jhiTranslate="dataSurveyApp.encuesta.fechaFinalizar" class="ds-subtitle" > Fecha Finalizar</p> | ||||||
|               - |                 <p> </p></div> | ||||||
|               {{ |               <dl> | ||||||
|                 encuesta.fechaFinalizada === undefined ? 'Sin finalizar' : (encuesta.fechaFinalizada | formatShortDatetime | lowercase) |                 <dt><span jhiTranslate="dataSurveyApp.encuesta.fechaFinalizar">Fecha Finalizar</span></dt> | ||||||
|               }}</span |                 <dd> | ||||||
|             > |                 <span> | ||||||
|           </dd> |                   - | ||||||
|         </dl> |                   {{ | ||||||
|         <div> |                   encuesta.fechaFinalizar === undefined | ||||||
|           <dt><span jhiTranslate="dataSurveyApp.encuesta.calificacion">Calificacion</span></dt> |                     ? 'Sin fecha de finalización' | ||||||
|           <dd> |                     : (encuesta.fechaFinalizar | formatShortDatetime | lowercase) | ||||||
|             <fa-icon *ngFor="let i of [].constructor(encuesta.calificacion)" class="entity-icon--star" [icon]="faStar"></fa-icon |                   }}</span | ||||||
|             ><fa-icon *ngFor="let i of [].constructor(5 - encuesta.calificacion!)" class="entity-icon--star--off" [icon]="faStar"></fa-icon> |                 > | ||||||
|           </dd> |                 </dd> | ||||||
|  |               </dl>--> | ||||||
|  | 
 | ||||||
|  |                 <div class="mb-5"> | ||||||
|  |                   <p class="ds-subtitle">Fecha de finalización</p> | ||||||
|  |                   <P> | ||||||
|  |                     {{ | ||||||
|  |                       encuesta.fechaFinalizada === undefined | ||||||
|  |                         ? 'Sin finalizar' | ||||||
|  |                         : (encuesta.fechaFinalizada | formatShortDatetime | lowercase) | ||||||
|  |                     }} | ||||||
|  |                   </P> | ||||||
|  |                 </div> | ||||||
|  | 
 | ||||||
|  |                 <div class="mb-5"> | ||||||
|  |                   <p class="ds-subtitle">Calificación</p> | ||||||
|  |                   <div> | ||||||
|  |                     <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> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <div class="modal-footer"> | ||||||
|  |               <button id="cancelBtnVerParametros" type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal"> | ||||||
|  |                 <fa-icon icon="arrow-left"></fa-icon>  <span>Volver</span> | ||||||
|  |               </button> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|     </div> |     </div> | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ import { IEncuesta, Encuesta } from '../encuesta.model'; | ||||||
| import { EncuestaService } from '../service/encuesta.service'; | import { EncuestaService } from '../service/encuesta.service'; | ||||||
| import { ICategoria } from 'app/entities/categoria/categoria.model'; | import { ICategoria } from 'app/entities/categoria/categoria.model'; | ||||||
| import { CategoriaService } from 'app/entities/categoria/service/categoria.service'; | import { CategoriaService } from 'app/entities/categoria/service/categoria.service'; | ||||||
| import { IUsuarioExtra } from 'app/entities/usuario-extra/usuario-extra.model'; | import { IUsuarioExtra, UsuarioExtra } from 'app/entities/usuario-extra/usuario-extra.model'; | ||||||
| import { UsuarioExtraService } from 'app/entities/usuario-extra/service/usuario-extra.service'; | import { UsuarioExtraService } from 'app/entities/usuario-extra/service/usuario-extra.service'; | ||||||
| 
 | 
 | ||||||
| import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; | import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; | ||||||
|  | @ -28,8 +28,12 @@ import { EPreguntaAbiertaService } from '../../e-pregunta-abierta/service/e-preg | ||||||
| import { EPreguntaCerradaOpcionService } from '../../e-pregunta-cerrada-opcion/service/e-pregunta-cerrada-opcion.service'; | import { EPreguntaCerradaOpcionService } from '../../e-pregunta-cerrada-opcion/service/e-pregunta-cerrada-opcion.service'; | ||||||
| import { PreguntaCerradaTipo } from 'app/entities/enumerations/pregunta-cerrada-tipo.model'; | import { PreguntaCerradaTipo } from 'app/entities/enumerations/pregunta-cerrada-tipo.model'; | ||||||
| 
 | 
 | ||||||
| import { faTimes, faPlus, faStar } from '@fortawesome/free-solid-svg-icons'; | import { faTimes, faPlus, faStar, faQuestion } from '@fortawesome/free-solid-svg-icons'; | ||||||
| import { EncuestaPublishDialogComponent } from '../encuesta-publish-dialog/encuesta-publish-dialog.component'; | import { EncuestaPublishDialogComponent } from '../encuesta-publish-dialog/encuesta-publish-dialog.component'; | ||||||
|  | import { UsuarioEncuestaService } from 'app/entities/usuario-encuesta/service/usuario-encuesta.service'; | ||||||
|  | import { Account } from '../../../core/auth/account.model'; | ||||||
|  | import { AccountService } from 'app/core/auth/account.service'; | ||||||
|  | import { IUsuarioEncuesta } from '../../usuario-encuesta/usuario-encuesta.model'; | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'jhi-encuesta-detail', |   selector: 'jhi-encuesta-detail', | ||||||
|  | @ -41,11 +45,14 @@ export class EncuestaDetailComponent implements OnInit { | ||||||
|   faTimes = faTimes; |   faTimes = faTimes; | ||||||
|   faPlus = faPlus; |   faPlus = faPlus; | ||||||
|   faStar = faStar; |   faStar = faStar; | ||||||
|  |   faQuestion = faQuestion; | ||||||
|   encuesta: IEncuesta | null = null; |   encuesta: IEncuesta | null = null; | ||||||
|   isLoading = false; |   isLoading = false; | ||||||
|   successPublished = false; |   successPublished = false; | ||||||
|   ePreguntas?: any[]; |   ePreguntas?: any[]; | ||||||
|   ePreguntasOpciones?: any[]; |   ePreguntasOpciones?: any[]; | ||||||
|  |   usuarioExtra: UsuarioExtra | null = null; | ||||||
|  |   usuariosColaboradores: IUsuarioEncuesta[] = []; | ||||||
| 
 | 
 | ||||||
|   constructor( |   constructor( | ||||||
|     protected activatedRoute: ActivatedRoute, |     protected activatedRoute: ActivatedRoute, | ||||||
|  | @ -56,7 +63,9 @@ export class EncuestaDetailComponent implements OnInit { | ||||||
|     protected modalService: NgbModal, |     protected modalService: NgbModal, | ||||||
|     protected ePreguntaCerradaService: EPreguntaCerradaService, |     protected ePreguntaCerradaService: EPreguntaCerradaService, | ||||||
|     protected ePreguntaCerradaOpcionService: EPreguntaCerradaOpcionService, |     protected ePreguntaCerradaOpcionService: EPreguntaCerradaOpcionService, | ||||||
|     protected ePreguntaAbiertaService: EPreguntaAbiertaService |     protected ePreguntaAbiertaService: EPreguntaAbiertaService, | ||||||
|  |     protected accountService: AccountService, | ||||||
|  |     protected usuarioEncuestaService: UsuarioEncuestaService | ||||||
|   ) {} |   ) {} | ||||||
| 
 | 
 | ||||||
|   ngOnInit(): void { |   ngOnInit(): void { | ||||||
|  | @ -68,6 +77,15 @@ export class EncuestaDetailComponent implements OnInit { | ||||||
|         this.previousState(); |         this.previousState(); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|  | 
 | ||||||
|  |     // Get jhi_user and usuario_extra information
 | ||||||
|  |     this.accountService.getAuthenticationState().subscribe(account => { | ||||||
|  |       if (account !== null) { | ||||||
|  |         this.usuarioExtraService.find(account.id).subscribe(usuarioExtra => { | ||||||
|  |           this.usuarioExtra = usuarioExtra.body; | ||||||
|  |         }); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   ngAfterViewChecked(): void { |   ngAfterViewChecked(): void { | ||||||
|  | @ -144,6 +162,16 @@ export class EncuestaDetailComponent implements OnInit { | ||||||
|         this.isLoading = false; |         this.isLoading = false; | ||||||
|       } |       } | ||||||
|     );*/ |     );*/ | ||||||
|  | 
 | ||||||
|  |     this.usuarioEncuestaService.findCollaborators(this.encuesta?.id!).subscribe( | ||||||
|  |       (res: any) => { | ||||||
|  |         this.isLoading = false; | ||||||
|  |         this.usuariosColaboradores = res.body ?? []; | ||||||
|  |       }, | ||||||
|  |       () => { | ||||||
|  |         this.isLoading = false; | ||||||
|  |       } | ||||||
|  |     ); | ||||||
|   } |   } | ||||||
|   publishSurvey(): void { |   publishSurvey(): void { | ||||||
|     const modalRef = this.modalService.open(EncuestaPublishDialogComponent, { size: 'lg', backdrop: 'static' }); |     const modalRef = this.modalService.open(EncuestaPublishDialogComponent, { size: 'lg', backdrop: 'static' }); | ||||||
|  | @ -160,4 +188,20 @@ export class EncuestaDetailComponent implements OnInit { | ||||||
|   previousState(): void { |   previousState(): void { | ||||||
|     window.history.back(); |     window.history.back(); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   isAutor() { | ||||||
|  |     return this.usuarioExtra?.id === this.encuesta?.usuarioExtra?.id; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   isEscritor() { | ||||||
|  |     let escritor = false; | ||||||
|  |     this.usuariosColaboradores.forEach(c => { | ||||||
|  |       if (this.usuarioExtra?.id === c.usuarioExtra?.id) { | ||||||
|  |         if (c.rol === 'WRITE') { | ||||||
|  |           escritor = true; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |     return escritor; | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1 @@ | ||||||
|  | <p>encuesta-compartir-dialog works!</p> | ||||||
|  | @ -0,0 +1,24 @@ | ||||||
|  | import { ComponentFixture, TestBed } from '@angular/core/testing'; | ||||||
|  | 
 | ||||||
|  | import { EncuestaCompartirDialogComponent } from './encuesta-compartir-dialog.component'; | ||||||
|  | 
 | ||||||
|  | describe('EncuestaCompartirDialogComponent', () => { | ||||||
|  |   let component: EncuestaCompartirDialogComponent; | ||||||
|  |   let fixture: ComponentFixture<EncuestaCompartirDialogComponent>; | ||||||
|  | 
 | ||||||
|  |   beforeEach(async () => { | ||||||
|  |     await TestBed.configureTestingModule({ | ||||||
|  |       declarations: [EncuestaCompartirDialogComponent], | ||||||
|  |     }).compileComponents(); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   beforeEach(() => { | ||||||
|  |     fixture = TestBed.createComponent(EncuestaCompartirDialogComponent); | ||||||
|  |     component = fixture.componentInstance; | ||||||
|  |     fixture.detectChanges(); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   it('should create', () => { | ||||||
|  |     expect(component).toBeTruthy(); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
|  | @ -0,0 +1,12 @@ | ||||||
|  | import { Component, OnInit } from '@angular/core'; | ||||||
|  | 
 | ||||||
|  | @Component({ | ||||||
|  |   selector: 'jhi-encuesta-compartir-dialog', | ||||||
|  |   templateUrl: './encuesta-compartir-dialog.component.html', | ||||||
|  |   styleUrls: ['./encuesta-compartir-dialog.component.scss'], | ||||||
|  | }) | ||||||
|  | export class EncuestaCompartirDialogComponent implements OnInit { | ||||||
|  |   constructor() {} | ||||||
|  | 
 | ||||||
|  |   ngOnInit(): void {} | ||||||
|  | } | ||||||
|  | @ -0,0 +1,23 @@ | ||||||
|  | <form class="ds-form" *ngIf="colaborador" name="deleteForm" (ngSubmit)="confirmDelete(colaborador.id!)"> | ||||||
|  |   <div class="modal-body"> | ||||||
|  |     <p class="ds-title--small">Expulsar colaborador de encuesta</p> | ||||||
|  |     <p | ||||||
|  |       class="ds-subtitle" | ||||||
|  |       id="jhi-delete-colaborador-heading" | ||||||
|  |       jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.question" | ||||||
|  |       [translateValues]="{ id: colaborador.id }" | ||||||
|  |     > | ||||||
|  |       Are you sure you want to delete this Usuario Encuesta? | ||||||
|  |     </p> | ||||||
|  |   </div> | ||||||
|  | 
 | ||||||
|  |   <div class="modal-footer"> | ||||||
|  |     <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-usuarioEncuesta" data-cy="entityConfirmDeleteButton" type="submit" class="ds-btn ds-btn--danger"> | ||||||
|  |       <fa-icon icon="times"></fa-icon> <span jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.action">Delete</span> | ||||||
|  |     </button> | ||||||
|  |   </div> | ||||||
|  | </form> | ||||||
|  | @ -0,0 +1,26 @@ | ||||||
|  | import { Component, OnInit } from '@angular/core'; | ||||||
|  | 
 | ||||||
|  | import { IUsuarioEncuesta } from '../../usuario-encuesta/usuario-encuesta.model'; | ||||||
|  | import { UsuarioEncuestaService } from '../../usuario-encuesta/service/usuario-encuesta.service'; | ||||||
|  | import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; | ||||||
|  | 
 | ||||||
|  | @Component({ | ||||||
|  |   selector: 'jhi-encuesta-delete-colaborator-dialog', | ||||||
|  |   templateUrl: './encuesta-delete-colaborator-dialog.component.html', | ||||||
|  |   styleUrls: ['./encuesta-delete-colaborator-dialog.component.scss'], | ||||||
|  | }) | ||||||
|  | export class EncuestaDeleteColaboratorDialogComponent { | ||||||
|  |   colaborador?: IUsuarioEncuesta; | ||||||
|  | 
 | ||||||
|  |   constructor(protected usuarioEncuestaService: UsuarioEncuestaService, protected activeModal: NgbActiveModal) {} | ||||||
|  | 
 | ||||||
|  |   cancel(): void { | ||||||
|  |     this.activeModal.dismiss(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   confirmDelete(id: number): void { | ||||||
|  |     this.usuarioEncuestaService.delete(id).subscribe(() => { | ||||||
|  |       this.activeModal.close('deleted'); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,19 @@ | ||||||
|  | <form *ngIf="encuesta" name="deleteForm" (ngSubmit)="confirmFinalizar(encuesta!)"> | ||||||
|  |   <div class="modal-header"> | ||||||
|  |     <h4 class="ds-title--small" data-cy="encuestaDeleteDialogHeading">Finalizar encuesta</h4> | ||||||
|  |   </div> | ||||||
|  | 
 | ||||||
|  |   <div class="modal-body"> | ||||||
|  |     <p class="ds-subtitle" id="jhi-delete-encuesta-heading">¿Está seguro de querer finalizar la encuesta?</p> | ||||||
|  |   </div> | ||||||
|  | 
 | ||||||
|  |   <div class="modal-footer"> | ||||||
|  |     <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="ds-btn ds-btn--danger"> | ||||||
|  |        <span>Finalizar</span> | ||||||
|  |     </button> | ||||||
|  |   </div> | ||||||
|  | </form> | ||||||
|  | @ -0,0 +1,24 @@ | ||||||
|  | import { ComponentFixture, TestBed } from '@angular/core/testing'; | ||||||
|  | 
 | ||||||
|  | import { EncuestaFinalizarDialogComponent } from './encuesta-finalizar-dialog.component'; | ||||||
|  | 
 | ||||||
|  | describe('EncuestaFinalizarDialogComponent', () => { | ||||||
|  |   let component: EncuestaFinalizarDialogComponent; | ||||||
|  |   let fixture: ComponentFixture<EncuestaFinalizarDialogComponent>; | ||||||
|  | 
 | ||||||
|  |   beforeEach(async () => { | ||||||
|  |     await TestBed.configureTestingModule({ | ||||||
|  |       declarations: [EncuestaFinalizarDialogComponent], | ||||||
|  |     }).compileComponents(); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   beforeEach(() => { | ||||||
|  |     fixture = TestBed.createComponent(EncuestaFinalizarDialogComponent); | ||||||
|  |     component = fixture.componentInstance; | ||||||
|  |     fixture.detectChanges(); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   it('should create', () => { | ||||||
|  |     expect(component).toBeTruthy(); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
|  | @ -0,0 +1,36 @@ | ||||||
|  | import { Component, OnInit } from '@angular/core'; | ||||||
|  | import { IEncuesta } from '../encuesta.model'; | ||||||
|  | import { EstadoEncuesta } from '../../enumerations/estado-encuesta.model'; | ||||||
|  | import { EncuestaService } from '../service/encuesta.service'; | ||||||
|  | import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; | ||||||
|  | import * as dayjs from 'dayjs'; | ||||||
|  | import { DATE_TIME_FORMAT } from '../../../config/input.constants'; | ||||||
|  | 
 | ||||||
|  | @Component({ | ||||||
|  |   selector: 'jhi-encuesta-finalizar-dialog', | ||||||
|  |   templateUrl: './encuesta-finalizar-dialog.component.html', | ||||||
|  |   styleUrls: ['./encuesta-finalizar-dialog.component.scss'], | ||||||
|  | }) | ||||||
|  | export class EncuestaFinalizarDialogComponent implements OnInit { | ||||||
|  |   encuesta?: IEncuesta; | ||||||
|  | 
 | ||||||
|  |   constructor(protected encuestaService: EncuestaService, protected activeModal: NgbActiveModal) {} | ||||||
|  | 
 | ||||||
|  |   ngOnInit(): void {} | ||||||
|  | 
 | ||||||
|  |   confirmFinalizar(encuesta: IEncuesta): void { | ||||||
|  |     debugger; | ||||||
|  |     const now = dayjs(); | ||||||
|  | 
 | ||||||
|  |     encuesta.estado = EstadoEncuesta.FINISHED; | ||||||
|  |     encuesta.fechaFinalizada = dayjs(now, DATE_TIME_FORMAT); | ||||||
|  | 
 | ||||||
|  |     this.encuestaService.updateSurvey(encuesta).subscribe(() => { | ||||||
|  |       this.activeModal.close('finalized'); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   cancel(): void { | ||||||
|  |     this.activeModal.dismiss(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @ -9,6 +9,11 @@ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; | ||||||
| import { EncuestaPublishDialogComponent } from './encuesta-publish-dialog/encuesta-publish-dialog.component'; | import { EncuestaPublishDialogComponent } from './encuesta-publish-dialog/encuesta-publish-dialog.component'; | ||||||
| import { EncuestaDeleteQuestionDialogComponent } from './encuesta-delete-question-dialog/encuesta-delete-question-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'; | import { EncuestaDeleteOptionDialogComponent } from './encuesta-delete-option-dialog/encuesta-delete-option-dialog.component'; | ||||||
|  | import { EncuestaCompartirDialogComponent } from './encuesta-compartir-dialog/encuesta-compartir-dialog.component'; | ||||||
|  | 
 | ||||||
|  | import { EncuestaFinalizarDialogComponent } from './encuesta-finalizar-dialog/encuesta-finalizar-dialog.component'; | ||||||
|  | 
 | ||||||
|  | import { EncuestaDeleteColaboratorDialogComponent } from './encuesta-delete-colaborator-dialog/encuesta-delete-colaborator-dialog.component'; | ||||||
| 
 | 
 | ||||||
| @NgModule({ | @NgModule({ | ||||||
|   imports: [SharedModule, EncuestaRoutingModule, FontAwesomeModule], |   imports: [SharedModule, EncuestaRoutingModule, FontAwesomeModule], | ||||||
|  | @ -20,6 +25,9 @@ import { EncuestaDeleteOptionDialogComponent } from './encuesta-delete-option-di | ||||||
|     EncuestaPublishDialogComponent, |     EncuestaPublishDialogComponent, | ||||||
|     EncuestaDeleteQuestionDialogComponent, |     EncuestaDeleteQuestionDialogComponent, | ||||||
|     EncuestaDeleteOptionDialogComponent, |     EncuestaDeleteOptionDialogComponent, | ||||||
|  |     EncuestaCompartirDialogComponent, | ||||||
|  |     EncuestaFinalizarDialogComponent, | ||||||
|  |     EncuestaDeleteColaboratorDialogComponent, | ||||||
|   ], |   ], | ||||||
|   entryComponents: [EncuestaDeleteDialogComponent], |   entryComponents: [EncuestaDeleteDialogComponent], | ||||||
| }) | }) | ||||||
|  |  | ||||||
|  | @ -97,7 +97,9 @@ | ||||||
|         </div> |         </div> | ||||||
|         <div class="ds-contextmenu__divider ds-contextmenu__divider--separator-bottom" id="contextmenu-edit--separator"> |         <div class="ds-contextmenu__divider ds-contextmenu__divider--separator-bottom" id="contextmenu-edit--separator"> | ||||||
|           <li class="d-justify justify-content-start" id="contextmenu-edit"> |           <li class="d-justify justify-content-start" id="contextmenu-edit"> | ||||||
|             <button type="button" (click)="openSurvey(null)"><fa-icon class="contextmenu__icon" [icon]="faEdit"></fa-icon>Editar</button> |             <button type="button" data-toggle="modal" data-target="#editarEncuesta"> | ||||||
|  |               <fa-icon class="contextmenu__icon" [icon]="faEdit"></fa-icon>Editar | ||||||
|  |             </button> | ||||||
|           </li> |           </li> | ||||||
|           <li id="contextmenu-preview"> |           <li id="contextmenu-preview"> | ||||||
|             <button type="button" (click)="openPreview()"> |             <button type="button" (click)="openPreview()"> | ||||||
|  | @ -294,8 +296,6 @@ | ||||||
|         <div class="modal-body"> |         <div class="modal-body"> | ||||||
|           <!-- Survey Registration Modal --> |           <!-- Survey Registration Modal --> | ||||||
|           <div> |           <div> | ||||||
|             <jhi-alert-error></jhi-alert-error> |  | ||||||
| 
 |  | ||||||
|             <div class="form-group"> |             <div class="form-group"> | ||||||
|               <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.nombre" for="field_nombre">Nombre</label> |               <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.nombre" for="field_nombre">Nombre</label> | ||||||
|               <input type="text" class="form-control" name="nombre" id="field_nombre" data-cy="nombre" formControlName="nombre" /> |               <input type="text" class="form-control" name="nombre" id="field_nombre" data-cy="nombre" formControlName="nombre" /> | ||||||
|  | @ -403,3 +403,150 @@ | ||||||
|     </div> |     </div> | ||||||
|   </div> |   </div> | ||||||
| </div> | </div> | ||||||
|  | 
 | ||||||
|  | <!-- Modal --> | ||||||
|  | <div | ||||||
|  |   class="modal fade ds-modal" | ||||||
|  |   id="editarEncuesta" | ||||||
|  |   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="surveyEditForm" | ||||||
|  |         role="form" | ||||||
|  |         novalidate | ||||||
|  |         (ngSubmit)="editSurvey()" | ||||||
|  |         [formGroup]="surveyEditForm" | ||||||
|  |       > | ||||||
|  |         <div class="modal-header"> | ||||||
|  |           <h1 class="modal-title" id="exampleModalLongTitle">Modificar Encuesta</h1> | ||||||
|  |         </div> | ||||||
|  |         <div class="modal-body"> | ||||||
|  |           <!-- Survey Modify Modal --> | ||||||
|  |           <div> | ||||||
|  |             <div class="form-group"> | ||||||
|  |               <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.nombre" for="field_nombre">Nombre</label> | ||||||
|  |               <input type="text" class="form-control" name="nombre" id="field_nombre" data-cy="nombre" formControlName="nombre" /> | ||||||
|  |               <div | ||||||
|  |                 *ngIf=" | ||||||
|  |                   surveyEditForm.get('nombre')!.invalid && (surveyEditForm.get('nombre')!.dirty || surveyEditForm.get('nombre')!.touched) | ||||||
|  |                 " | ||||||
|  |               > | ||||||
|  |                 <small | ||||||
|  |                   class="form-text text-danger" | ||||||
|  |                   *ngIf="surveyEditForm.get('nombre')?.errors?.required" | ||||||
|  |                   jhiTranslate="entity.validation.required" | ||||||
|  |                 > | ||||||
|  |                   This field is required. | ||||||
|  |                 </small> | ||||||
|  |                 <small | ||||||
|  |                   class="form-text text-danger" | ||||||
|  |                   *ngIf="surveyEditForm.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="surveyEditForm.get('nombre')?.errors?.maxlength" | ||||||
|  |                   jhiTranslate="entity.validation.maxlength" | ||||||
|  |                   [translateValues]="{ max: 50 }" | ||||||
|  |                 > | ||||||
|  |                   This field cannot be longer than 50 characters. | ||||||
|  |                 </small> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <div class="form-group"> | ||||||
|  |               <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.descripcion" for="field_descripcion" | ||||||
|  |                 >Descripcion</label | ||||||
|  |               > | ||||||
|  |               <input | ||||||
|  |                 type="text" | ||||||
|  |                 class="form-control" | ||||||
|  |                 name="descripcion" | ||||||
|  |                 id="field_descripcion" | ||||||
|  |                 data-cy="descripcion" | ||||||
|  |                 formControlName="descripcion" | ||||||
|  |               /> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <div class="form-group"> | ||||||
|  |               <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.acceso" for="field_acceso">Acceso</label> | ||||||
|  |               <select class="form-control" name="acceso" formControlName="acceso" id="field_acceso" data-cy="acceso"> | ||||||
|  |                 <option [ngValue]="null">{{ 'dataSurveyApp.AccesoEncuesta.null' | translate }}</option> | ||||||
|  |                 <option value="PUBLIC">{{ 'dataSurveyApp.AccesoEncuesta.PUBLIC' | translate }}</option> | ||||||
|  |                 <option value="PRIVATE">{{ 'dataSurveyApp.AccesoEncuesta.PRIVATE' | translate }}</option> | ||||||
|  |               </select> | ||||||
|  |               <div | ||||||
|  |                 *ngIf=" | ||||||
|  |                   surveyEditForm.get('acceso')!.invalid && (surveyEditForm.get('acceso')!.dirty || surveyEditForm.get('acceso')!.touched) | ||||||
|  |                 " | ||||||
|  |               > | ||||||
|  |                 <small | ||||||
|  |                   class="form-text text-danger" | ||||||
|  |                   *ngIf="surveyEditForm.get('acceso')?.errors?.required" | ||||||
|  |                   jhiTranslate="entity.validation.required" | ||||||
|  |                 > | ||||||
|  |                   This field is required. | ||||||
|  |                 </small> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <div class="form-group"> | ||||||
|  |               <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.categoria" for="field_categoria">Categoría</label> | ||||||
|  |               <select class="form-control" id="field_categoria" data-cy="categoria" name="categoria" formControlName="categoria"> | ||||||
|  |                 <option [ngValue]="null" selected></option> | ||||||
|  |                 <option | ||||||
|  |                   [ngValue]=" | ||||||
|  |                     categoriaOption.id === surveyEditForm.get('categoria')!.value?.id | ||||||
|  |                       ? surveyEditForm.get('categoria')!.value | ||||||
|  |                       : categoriaOption | ||||||
|  |                   " | ||||||
|  |                   *ngFor="let categoriaOption of categoriasSharedCollection; trackBy: trackCategoriaById" | ||||||
|  |                 > | ||||||
|  |                   {{ categoriaOption.nombre }} | ||||||
|  |                 </option> | ||||||
|  |               </select> | ||||||
|  |               <div | ||||||
|  |                 *ngIf=" | ||||||
|  |                   surveyEditForm.get('categoria')!.invalid && | ||||||
|  |                   (surveyEditForm.get('categoria')!.dirty || surveyEditForm.get('categoria')!.touched) | ||||||
|  |                 " | ||||||
|  |               > | ||||||
|  |                 <small | ||||||
|  |                   class="form-text text-danger" | ||||||
|  |                   *ngIf="surveyEditForm.get('categoria')?.errors?.required" | ||||||
|  |                   jhiTranslate="entity.validation.required" | ||||||
|  |                 > | ||||||
|  |                   This field is required. | ||||||
|  |                 </small> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |         <div class="modal-footer"> | ||||||
|  |           <button id="cancelEditSurveyBtn" 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]="surveyEditForm.invalid || isSaving" | ||||||
|  |           > | ||||||
|  |             <span jhiTranslate="entity.action.edit">Edit</span> | ||||||
|  |           </button> | ||||||
|  |         </div> | ||||||
|  |       </form> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | @ -99,6 +99,14 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | ||||||
|     // usuarioExtra: [],
 |     // usuarioExtra: [],
 | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|  |   surveyEditForm = this.fb.group({ | ||||||
|  |     id: [], | ||||||
|  |     nombre: [null, [Validators.required, Validators.minLength(1), Validators.maxLength(50)]], | ||||||
|  |     descripcion: [], | ||||||
|  |     acceso: [null, [Validators.required]], | ||||||
|  |     categoria: [null, [Validators.required]], | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|   createAnother: Boolean = false; |   createAnother: Boolean = false; | ||||||
|   selectedSurveyId: number | null = null; |   selectedSurveyId: number | null = null; | ||||||
| 
 | 
 | ||||||
|  | @ -124,12 +132,16 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | ||||||
|   loadAll(): void { |   loadAll(): void { | ||||||
|     this.isLoading = true; |     this.isLoading = true; | ||||||
| 
 | 
 | ||||||
|     this.usuarioExtraService |     if (this.isAdmin()) { | ||||||
|       .retrieveAllPublicUsers() |       this.usuarioExtraService | ||||||
|       .pipe(finalize(() => this.loadPublicUser())) |         .retrieveAllPublicUsers() | ||||||
|       .subscribe(res => { |         .pipe(finalize(() => this.loadPublicUser())) | ||||||
|         this.userSharedCollection = res; |         .subscribe(res => { | ||||||
|       }); |           this.userSharedCollection = res; | ||||||
|  |         }); | ||||||
|  |     } else { | ||||||
|  |       this.loadEncuestas(); | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   loadPublicUser(): void { |   loadPublicUser(): void { | ||||||
|  | @ -144,30 +156,7 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | ||||||
|   loadUserExtras() { |   loadUserExtras() { | ||||||
|     this.usuarioExtraService |     this.usuarioExtraService | ||||||
|       .query() |       .query() | ||||||
|       .pipe( |       .pipe(finalize(() => this.loadEncuestas())) | ||||||
|         finalize(() => |  | ||||||
|           this.encuestaService.query().subscribe( |  | ||||||
|             (res: HttpResponse<IEncuesta[]>) => { |  | ||||||
|               this.isLoading = false; |  | ||||||
|               const tmpEncuestas = res.body ?? []; |  | ||||||
|               if (this.isAdmin()) { |  | ||||||
|                 this.encuestas = tmpEncuestas.filter(e => e.estado !== EstadoEncuesta.DELETED); |  | ||||||
| 
 |  | ||||||
|                 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( |       .subscribe( | ||||||
|         (res: HttpResponse<IUsuarioExtra[]>) => { |         (res: HttpResponse<IUsuarioExtra[]>) => { | ||||||
|           this.isLoading = false; |           this.isLoading = false; | ||||||
|  | @ -182,6 +171,29 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | ||||||
|       ); |       ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   loadEncuestas() { | ||||||
|  |     this.encuestaService.query().subscribe( | ||||||
|  |       (res: HttpResponse<IEncuesta[]>) => { | ||||||
|  |         this.isLoading = false; | ||||||
|  |         const tmpEncuestas = res.body ?? []; | ||||||
|  |         if (this.isAdmin()) { | ||||||
|  |           this.encuestas = tmpEncuestas.filter(e => e.estado !== EstadoEncuesta.DELETED); | ||||||
|  | 
 | ||||||
|  |           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; | ||||||
|  |       } | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   ngOnInit(): void { |   ngOnInit(): void { | ||||||
|     this.searchString = ''; |     this.searchString = ''; | ||||||
|     this.accesoEncuesta = ''; |     this.accesoEncuesta = ''; | ||||||
|  | @ -465,18 +477,22 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | ||||||
| 
 | 
 | ||||||
|         let res = await this.encuestaService.find(this.selectedSurveyId).toPromise(); |         let res = await this.encuestaService.find(this.selectedSurveyId).toPromise(); | ||||||
|         this.selectedSurvey = res.body; |         this.selectedSurvey = res.body; | ||||||
|  |         // Fill in the edit survey
 | ||||||
|  |         this.fillSurveyEditForm(); | ||||||
|         this.isPublished = this.selectedSurvey!.estado === 'ACTIVE' || this.selectedSurvey!.estado === 'FINISHED'; // QUE SE LE MUESTRE CUANDO ESTE EN DRAFT
 |         this.isPublished = this.selectedSurvey!.estado === 'ACTIVE' || this.selectedSurvey!.estado === 'FINISHED'; // QUE SE LE MUESTRE CUANDO ESTE EN DRAFT
 | ||||||
| 
 | 
 | ||||||
|         document.getElementById('contextmenu-create--separator')!.style.display = 'none'; |         document.getElementById('contextmenu-create--separator')!.style.display = 'none'; | ||||||
|         document.getElementById('contextmenu-edit--separator')!.style.display = 'block'; |  | ||||||
|         document.getElementById('contextmenu-delete--separator')!.style.display = 'block'; |         document.getElementById('contextmenu-delete--separator')!.style.display = 'block'; | ||||||
|         document.getElementById('contextmenu-edit')!.style.display = 'block'; |         document.getElementById('contextmenu-edit--separator')!.style.display = 'block'; | ||||||
|         document.getElementById('contextmenu-preview')!.style.display = 'block'; |         document.getElementById('contextmenu-preview')!.style.display = 'block'; | ||||||
| 
 | 
 | ||||||
|         if (!this.isPublished) { |         if (!this.isPublished) { | ||||||
|  |           document.getElementById('contextmenu-edit--separator')!.style.display = 'block'; | ||||||
|  |           document.getElementById('contextmenu-edit')!.style.display = 'block'; | ||||||
|           document.getElementById('contextmenu-publish')!.style.display = 'block'; |           document.getElementById('contextmenu-publish')!.style.display = 'block'; | ||||||
|           document.getElementById('contextmenu-duplicate')!.style.display = 'block'; |           document.getElementById('contextmenu-duplicate')!.style.display = 'block'; | ||||||
|         } else { |         } else { | ||||||
|  |           document.getElementById('contextmenu-edit')!.style.display = 'none'; | ||||||
|           document.getElementById('contextmenu-publish')!.style.display = 'none'; |           document.getElementById('contextmenu-publish')!.style.display = 'none'; | ||||||
|           document.getElementById('contextmenu-duplicate')!.style.display = 'none'; |           document.getElementById('contextmenu-duplicate')!.style.display = 'none'; | ||||||
|         } |         } | ||||||
|  | @ -508,4 +524,28 @@ export class EncuestaComponent implements OnInit, AfterViewInit { | ||||||
|     const res = await this.encuestaService.duplicate(this.selectedSurveyId!).toPromise(); |     const res = await this.encuestaService.duplicate(this.selectedSurveyId!).toPromise(); | ||||||
|     this.loadAll(); |     this.loadAll(); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   editSurvey(): void { | ||||||
|  |     const survey = { ...this.selectedSurvey }; | ||||||
|  |     survey.nombre = this.surveyEditForm.get(['nombre'])!.value; | ||||||
|  |     survey.descripcion = this.surveyEditForm.get(['descripcion'])!.value; | ||||||
|  |     survey.acceso = this.surveyEditForm.get(['acceso'])!.value; | ||||||
|  |     survey.categoria = this.surveyEditForm.get(['categoria'])!.value; | ||||||
|  |     // Prevent user update by setting to null
 | ||||||
|  |     survey.usuarioExtra!.user = null; | ||||||
|  | 
 | ||||||
|  |     this.encuestaService.updateSurvey(survey).subscribe(res => { | ||||||
|  |       this.loadAll(); | ||||||
|  |       $('#cancelEditSurveyBtn').click(); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   fillSurveyEditForm(): void { | ||||||
|  |     this.surveyEditForm.patchValue({ | ||||||
|  |       nombre: this.selectedSurvey!.nombre, | ||||||
|  |       descripcion: this.selectedSurvey!.descripcion, | ||||||
|  |       acceso: this.selectedSurvey!.acceso, | ||||||
|  |       categoria: this.selectedSurvey!.categoria, | ||||||
|  |     }); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -15,6 +15,7 @@ export type EntityArrayResponseType = HttpResponse<IEncuesta[]>; | ||||||
| @Injectable({ providedIn: 'root' }) | @Injectable({ providedIn: 'root' }) | ||||||
| export class EncuestaService { | export class EncuestaService { | ||||||
|   protected resourceUrl = this.applicationConfigService.getEndpointFor('api/encuestas'); |   protected resourceUrl = this.applicationConfigService.getEndpointFor('api/encuestas'); | ||||||
|  |   protected resourceUrlPublish = this.applicationConfigService.getEndpointFor('api/encuestas/publish'); | ||||||
| 
 | 
 | ||||||
|   constructor(protected http: HttpClient, protected applicationConfigService: ApplicationConfigService) {} |   constructor(protected http: HttpClient, protected applicationConfigService: ApplicationConfigService) {} | ||||||
| 
 | 
 | ||||||
|  | @ -25,10 +26,19 @@ export class EncuestaService { | ||||||
|       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); |       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   //update para publicar
 | ||||||
|   update(encuesta: IEncuesta): Observable<EntityResponseType> { |   update(encuesta: IEncuesta): Observable<EntityResponseType> { | ||||||
|     const copy = this.convertDateFromClient(encuesta); |     const copy = this.convertDateFromClient(encuesta); | ||||||
|     return this.http |     return this.http | ||||||
|       .put<IEncuesta>(`${this.resourceUrl}/${getEncuestaIdentifier(encuesta) as number}`, copy, { observe: 'response' }) |       .put<IEncuesta>(`${this.resourceUrlPublish}/${getEncuestaIdentifier(encuesta) as number}`, copy, { observe: 'response' }) | ||||||
|  |       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   //update normal
 | ||||||
|  |   updateSurvey(encuesta: IEncuesta): Observable<EntityResponseType> { | ||||||
|  |     const copy = this.convertDateFromClient(encuesta); | ||||||
|  |     return this.http | ||||||
|  |       .put<IEncuesta>(`${this.resourceUrl}/update/${getEncuestaIdentifier(encuesta) as number}`, copy, { observe: 'response' }) | ||||||
|       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); |       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,9 @@ | ||||||
| <div> | <div> | ||||||
|   <h2 id="page-heading" data-cy="EPreguntaCerradaHeading"> |   <h2 id="page-heading" data-cy="EPreguntaCerradaHeading"> | ||||||
|     <div class="d-flex align-items-center"> |     <div class="d-flex align-items-center"> | ||||||
|       <p class="ds-title">{{ encuesta!.nombre }}</p> |       <p class="ds-title ds-contenteditable" contenteditable="true" spellcheck="false" (blur)="updateSurveyName($event)"> | ||||||
|  |         {{ encuesta!.nombre }} | ||||||
|  |       </p> | ||||||
|         <fa-icon |         <fa-icon | ||||||
|         class="ds-info--icon" |         class="ds-info--icon" | ||||||
|         [icon]="faQuestion" |         [icon]="faQuestion" | ||||||
|  | @ -10,9 +12,39 @@ | ||||||
|         (click)="loadAplicationParameters()" |         (click)="loadAplicationParameters()" | ||||||
|       ></fa-icon> |       ></fa-icon> | ||||||
|         <fa-icon class="ds-info--icon" [icon]="faEye" (click)="openPreview()"></fa-icon> |         <fa-icon class="ds-info--icon" [icon]="faEye" (click)="openPreview()"></fa-icon> | ||||||
|  |       <div class="d-flex px-4"> | ||||||
|  |         <div class="col-12 ds-list-collabs"> | ||||||
|  |           <div class="row" style="flex-direction: row-reverse"> | ||||||
|  |             <div class="col-mb-2 iconos-colab"> | ||||||
|  |               <div class="add-collab" *ngIf="isAutor()"> | ||||||
|  |                 <fa-icon icon="sync" [icon]="faPlus"></fa-icon> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <div | ||||||
|  |               class="col-mb-2 iconos-colab" | ||||||
|  |               *ngFor="let colaborador of usuariosColaboradores" | ||||||
|  |               (click)="selectColaborator(colaborador)" | ||||||
|  |               data-toggle="modal" | ||||||
|  |               data-target="#modalUpdateColaborators" | ||||||
|  |             > | ||||||
|  |               <img | ||||||
|  |                 class="photo-collab" | ||||||
|  |                 *ngIf="colaborador.usuarioExtra" | ||||||
|  |                 src="../../../../content/profile_icons/C{{ colaborador.usuarioExtra.iconoPerfil }}.png" | ||||||
|  |                 alt="{{ colaborador.usuarioExtra.nombre }}" | ||||||
|  |                 [attr.data-id]="colaborador.id" | ||||||
|  |               /> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|     </div> |     </div> | ||||||
| 
 | 
 | ||||||
|     <p class="ds-subtitle">Creada el día {{ encuesta!.fechaCreacion | formatShortDatetime | lowercase }}</p> |     <p class="ds-subtitle">Creada el día {{ encuesta!.fechaCreacion | formatShortDatetime | lowercase }}</p> | ||||||
|  |     <button type="button" class="ds-btn ds-btn--danger" (click)="finalizar()" *ngIf="encuesta!.estado === 'ACTIVE'"> | ||||||
|  |       <fa-icon icon="sync" [icon]="faTimes"></fa-icon>  <span>Finalizar</span> | ||||||
|  |     </button> | ||||||
| 
 | 
 | ||||||
|     <div class="d-flex justify-content-end"> |     <div class="d-flex justify-content-end"> | ||||||
|       <button type="button" class="ds-btn ds-btn--secondary" (click)="previousState()"> |       <button type="button" class="ds-btn ds-btn--secondary" (click)="previousState()"> | ||||||
|  | @ -29,6 +61,7 @@ | ||||||
|         [disabled]="isLoading" |         [disabled]="isLoading" | ||||||
|         data-toggle="modal" |         data-toggle="modal" | ||||||
|         data-target="#crearPregunta" |         data-target="#crearPregunta" | ||||||
|  |         *ngIf="encuesta!.estado !== 'FINISHED' && (isAutor() || isEscritor())" | ||||||
|       > |       > | ||||||
|         <fa-icon icon="sync" [icon]="faPlus"></fa-icon>  <span>Crear pregunta</span> |         <fa-icon icon="sync" [icon]="faPlus"></fa-icon>  <span>Crear pregunta</span> | ||||||
|       </button> |       </button> | ||||||
|  | @ -66,9 +99,20 @@ | ||||||
|             class="ds-survey--question" |             class="ds-survey--question" | ||||||
|           > |           > | ||||||
|             <div class="ds-survey--titulo"> |             <div class="ds-survey--titulo"> | ||||||
|               <span class="ds-survey--titulo--name">{{ i + 1 }}. {{ ePregunta.nombre }}</span> |               <span class="ds-survey--titulo--name"> | ||||||
|  |                 <span>{{ i + 1 }}.</span>  | ||||||
|  |                 <span | ||||||
|  |                   class="ds-contenteditable" | ||||||
|  |                   [attr.data-id]="ePregunta.id" | ||||||
|  |                   [attr.data-tipo]="ePregunta.tipo" | ||||||
|  |                   contenteditable="true" | ||||||
|  |                   spellcheck="false" | ||||||
|  |                   (blur)="updateQuestionName($event)" | ||||||
|  |                   >{{ ePregunta.nombre }}</span | ||||||
|  |                 > | ||||||
|  |               </span> | ||||||
|               <fa-icon |               <fa-icon | ||||||
|                 *ngIf="encuesta!.estado === 'DRAFT'" |                 *ngIf="encuesta!.estado === 'DRAFT' && (isAutor() || isEscritor())" | ||||||
|                 class="ds-survey--titulo--icon" |                 class="ds-survey--titulo--icon" | ||||||
|                 [icon]="faTimes" |                 [icon]="faTimes" | ||||||
|                 (click)="deleteQuestion($event)" |                 (click)="deleteQuestion($event)" | ||||||
|  | @ -100,7 +144,7 @@ | ||||||
|                       <!-- <input class="ds-survey--checkbox" id="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}" type="checkbox" disabled /> --> |                       <!-- <input class="ds-survey--checkbox" id="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}" type="checkbox" disabled /> --> | ||||||
|                       <label for="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}">{{ ePreguntaOpcionFinal.nombre }}</label> |                       <label for="{{ ePregunta.id }}-{{ ePreguntaOpcionFinal.id }}">{{ ePreguntaOpcionFinal.nombre }}</label> | ||||||
|                       <fa-icon |                       <fa-icon | ||||||
|                         *ngIf="encuesta!.estado === 'DRAFT'" |                         *ngIf="encuesta!.estado === 'DRAFT' && (isAutor() || isEscritor())" | ||||||
|                         class="ds-survey--titulo--icon ds-survey--titulo--icon--small" |                         class="ds-survey--titulo--icon ds-survey--titulo--icon--small" | ||||||
|                         [icon]="faTimes" |                         [icon]="faTimes" | ||||||
|                         (click)="deleteOption($event)" |                         (click)="deleteOption($event)" | ||||||
|  | @ -116,6 +160,7 @@ | ||||||
|                 data-toggle="modal" |                 data-toggle="modal" | ||||||
|                 data-target="#crearOpcion" |                 data-target="#crearOpcion" | ||||||
|                 [attr.data-id]="ePregunta.id" |                 [attr.data-id]="ePregunta.id" | ||||||
|  |                 *ngIf="isAutor() || isEscritor()" | ||||||
|               > |               > | ||||||
|                 <fa-icon |                 <fa-icon | ||||||
|                   class="ds-survey--add-option--icon" |                   class="ds-survey--add-option--icon" | ||||||
|  | @ -224,7 +269,7 @@ | ||||||
|         [formGroup]="editFormQuestion" |         [formGroup]="editFormQuestion" | ||||||
|       > |       > | ||||||
|         <div class="modal-header"> |         <div class="modal-header"> | ||||||
|           <h1 class="modal-title" id="exampleModalLongTitle2">Crear Pregunta</h1> |           <h1 class="modal-title" id="exampleModalLongTitle1">Crear Pregunta</h1> | ||||||
|         </div> |         </div> | ||||||
|         <div class="modal-body"> |         <div class="modal-body"> | ||||||
|           <!-- Survey Create Question Modal --> |           <!-- Survey Create Question Modal --> | ||||||
|  | @ -367,7 +412,7 @@ | ||||||
|   <div class="modal-dialog modal-dialog-centered" role="document"> |   <div class="modal-dialog modal-dialog-centered" role="document"> | ||||||
|     <div class="modal-content"> |     <div class="modal-content"> | ||||||
|       <div class="modal-header"> |       <div class="modal-header"> | ||||||
|         <h1 class="modal-title" id="exampleModalLongTitle">Información de Encuesta</h1> |         <h1 class="modal-title" id="exampleModalLongTitle2">Información de Encuesta</h1> | ||||||
|       </div> |       </div> | ||||||
| 
 | 
 | ||||||
|       <!-- { |       <!-- { | ||||||
|  | @ -400,3 +445,61 @@ | ||||||
| </div> | </div> | ||||||
| 
 | 
 | ||||||
| <!-- ------------------------------------------------------------------------------------------------- --> | <!-- ------------------------------------------------------------------------------------------------- --> | ||||||
|  | 
 | ||||||
|  | <!-- ------------------------------------------------------------------------------------------------- --> | ||||||
|  | 
 | ||||||
|  | <!-- Survey Parameters Information --> | ||||||
|  | <div | ||||||
|  |   class="modal fade ds-modal" | ||||||
|  |   id="modalUpdateColaborators" | ||||||
|  |   tabindex="-1" | ||||||
|  |   role="dialog" | ||||||
|  |   aria-labelledby="verColaboradoresTitle" | ||||||
|  |   aria-hidden="true" | ||||||
|  |   *ngIf="colaborador && isAutor()" | ||||||
|  | > | ||||||
|  |   <div class="modal-dialog modal-dialog-centered" role="document"> | ||||||
|  |     <div class="modal-content"> | ||||||
|  |       <form class="ds-form" name="editFormUpdateCollab" role="form" (ngSubmit)="saveCollab()" [formGroup]="editFormUpdateCollab"> | ||||||
|  |         <div class="modal-header"> | ||||||
|  |           <h1 class="modal-title" id="modalColaboradores">Colaborador</h1> | ||||||
|  |         </div> | ||||||
|  |         <div class="modal-body"> | ||||||
|  |           <div> | ||||||
|  |             <div class="mb-5" *ngIf="colaborador.usuarioExtra"> | ||||||
|  |               <p class="ds-subtitle">Nombre</p> | ||||||
|  |               <p>{{ colaborador!.usuarioExtra.nombre }}</p> | ||||||
|  |             </div> | ||||||
|  |             <div> | ||||||
|  |               <label for="field_update_rol">Rol</label> | ||||||
|  |               <select class="form-control" name="rol" formControlName="rol" id="field_update_rol" data-cy="rol"> | ||||||
|  |                 <option value="READ" [selected]="colaborador.rol === 'READ'">Lector</option> | ||||||
|  |                 <option value="WRITE" [selected]="colaborador.rol === 'WRITE'">Escritor</option> | ||||||
|  |               </select> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |         <div class="modal-footer"> | ||||||
|  |           <button id="btnCancelUbdateColaboradores" type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal"> | ||||||
|  |             <fa-icon icon="arrow-left"></fa-icon>  <span>Cancelar</span> | ||||||
|  |           </button> | ||||||
|  |           <button type="button" (click)="deleteCollab(colaborador)" class="ds-btn ds-btn--danger btn-sm" data-cy="entityDeleteButton"> | ||||||
|  |             <fa-icon icon="times"></fa-icon> | ||||||
|  |             <span class="d-none d-md-inline" jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.action">Delete</span> | ||||||
|  |           </button> | ||||||
|  |           <button | ||||||
|  |             id="btnUpdateColaboradores" | ||||||
|  |             type="submit" | ||||||
|  |             class="ds-btn ds-btn--primary" | ||||||
|  |             data-cy="entityUpdateButton" | ||||||
|  |             [disabled]="isSavingCollab" | ||||||
|  |           > | ||||||
|  |              <span>Guardar</span> | ||||||
|  |           </button> | ||||||
|  |         </div> | ||||||
|  |       </form> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  | 
 | ||||||
|  | <!-- ------------------------------------------------------------------------------------------------- --> | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| import { IEPreguntaAbierta } from './../../e-pregunta-abierta/e-pregunta-abierta.model'; | import { EPreguntaAbierta, IEPreguntaAbierta } from './../../e-pregunta-abierta/e-pregunta-abierta.model'; | ||||||
| import { EPreguntaCerrada } from './../../e-pregunta-cerrada/e-pregunta-cerrada.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 { EPreguntaCerradaOpcion, IEPreguntaCerradaOpcion } from './../../e-pregunta-cerrada-opcion/e-pregunta-cerrada-opcion.model'; | ||||||
| import { EPreguntaAbiertaService } from './../../e-pregunta-abierta/service/e-pregunta-abierta.service'; | import { EPreguntaAbiertaService } from './../../e-pregunta-abierta/service/e-pregunta-abierta.service'; | ||||||
|  | @ -17,7 +17,7 @@ import { IEncuesta, Encuesta } from '../encuesta.model'; | ||||||
| import { EncuestaService } from '../service/encuesta.service'; | import { EncuestaService } from '../service/encuesta.service'; | ||||||
| import { ICategoria } from 'app/entities/categoria/categoria.model'; | import { ICategoria } from 'app/entities/categoria/categoria.model'; | ||||||
| import { CategoriaService } from 'app/entities/categoria/service/categoria.service'; | import { CategoriaService } from 'app/entities/categoria/service/categoria.service'; | ||||||
| import { IUsuarioExtra } from 'app/entities/usuario-extra/usuario-extra.model'; | import { IUsuarioExtra, UsuarioExtra } from 'app/entities/usuario-extra/usuario-extra.model'; | ||||||
| import { UsuarioExtraService } from 'app/entities/usuario-extra/service/usuario-extra.service'; | import { UsuarioExtraService } from 'app/entities/usuario-extra/service/usuario-extra.service'; | ||||||
| 
 | 
 | ||||||
| import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; | import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; | ||||||
|  | @ -34,6 +34,20 @@ import { ParametroAplicacionService } from './../../parametro-aplicacion/service | ||||||
| import { IParametroAplicacion } from './../../parametro-aplicacion/parametro-aplicacion.model'; | import { IParametroAplicacion } from './../../parametro-aplicacion/parametro-aplicacion.model'; | ||||||
| import { Router } from '@angular/router'; | import { Router } from '@angular/router'; | ||||||
| 
 | 
 | ||||||
|  | import { UsuarioEncuestaService } from 'app/entities/usuario-encuesta/service/usuario-encuesta.service'; | ||||||
|  | import { IUsuarioEncuesta, UsuarioEncuesta } from '../../usuario-encuesta/usuario-encuesta.model'; | ||||||
|  | import { RolColaborador } from '../../enumerations/rol-colaborador.model'; | ||||||
|  | import { Account } from '../../../core/auth/account.model'; | ||||||
|  | import { AccountService } from 'app/core/auth/account.service'; | ||||||
|  | 
 | ||||||
|  | import { EncuestaPublishDialogComponent } from '../encuesta-publish-dialog/encuesta-publish-dialog.component'; | ||||||
|  | import { EncuestaFinalizarDialogComponent } from '../encuesta-finalizar-dialog/encuesta-finalizar-dialog.component'; | ||||||
|  | 
 | ||||||
|  | import { EncuestaDeleteDialogComponent } from '../delete/encuesta-delete-dialog.component'; | ||||||
|  | import { EncuestaDeleteColaboratorDialogComponent } from '../encuesta-delete-colaborator-dialog/encuesta-delete-colaborator-dialog.component'; | ||||||
|  | 
 | ||||||
|  | import * as $ from 'jquery'; | ||||||
|  | 
 | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'jhi-encuesta-update', |   selector: 'jhi-encuesta-update', | ||||||
|   templateUrl: './encuesta-update.component.html', |   templateUrl: './encuesta-update.component.html', | ||||||
|  | @ -47,9 +61,16 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
| 
 | 
 | ||||||
|   isSaving = false; |   isSaving = false; | ||||||
|   isSavingQuestion = false; |   isSavingQuestion = false; | ||||||
| 
 |   isSavingCollab = false; | ||||||
|  |   finalizada = false; | ||||||
|  |   public rolSeleccionado: RolColaborador | undefined = undefined; | ||||||
|   categoriasSharedCollection: ICategoria[] = []; |   categoriasSharedCollection: ICategoria[] = []; | ||||||
|   usuarioExtrasSharedCollection: IUsuarioExtra[] = []; |   usuarioExtrasSharedCollection: IUsuarioExtra[] = []; | ||||||
|  |   usuariosColaboradores: IUsuarioEncuesta[] = []; | ||||||
|  |   colaborador: IUsuarioEncuesta | null = null; | ||||||
|  | 
 | ||||||
|  |   account: Account | null = null; | ||||||
|  |   usuarioExtra: UsuarioExtra | null = null; | ||||||
| 
 | 
 | ||||||
|   // editForm = this.fb.group({
 |   // editForm = this.fb.group({
 | ||||||
|   //   id: [],
 |   //   id: [],
 | ||||||
|  | @ -83,6 +104,10 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|     tipopregunta: ['CLOSED'], |     tipopregunta: ['CLOSED'], | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|  |   editFormUpdateCollab = this.fb.group({ | ||||||
|  |     rol: [null, [Validators.required]], | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|   ePreguntas?: any[]; |   ePreguntas?: any[]; | ||||||
|   ePreguntasOpciones?: any[]; |   ePreguntasOpciones?: any[]; | ||||||
|   encuesta: Encuesta | null = null; |   encuesta: Encuesta | null = null; | ||||||
|  | @ -105,7 +130,9 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|     protected ePreguntaCerradaOpcionService: EPreguntaCerradaOpcionService, |     protected ePreguntaCerradaOpcionService: EPreguntaCerradaOpcionService, | ||||||
|     protected parametroAplicacionService: ParametroAplicacionService, |     protected parametroAplicacionService: ParametroAplicacionService, | ||||||
|     protected ePreguntaAbiertaService: EPreguntaAbiertaService, |     protected ePreguntaAbiertaService: EPreguntaAbiertaService, | ||||||
|     protected router: Router |     protected usuarioEncuestaService: UsuarioEncuestaService, | ||||||
|  |     protected router: Router, | ||||||
|  |     protected accountService: AccountService | ||||||
|   ) {} |   ) {} | ||||||
| 
 | 
 | ||||||
|   loadAll(): void { |   loadAll(): void { | ||||||
|  | @ -115,7 +142,6 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|       (res: any) => { |       (res: any) => { | ||||||
|         this.isLoading = false; |         this.isLoading = false; | ||||||
|         this.ePreguntas = res.body ?? []; |         this.ePreguntas = res.body ?? []; | ||||||
|         console.log(this.ePreguntas); |  | ||||||
|       }, |       }, | ||||||
|       () => { |       () => { | ||||||
|         this.isLoading = false; |         this.isLoading = false; | ||||||
|  | @ -131,12 +157,21 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|         this.isLoading = false; |         this.isLoading = false; | ||||||
|       } |       } | ||||||
|     ); |     ); | ||||||
|  | 
 | ||||||
|  |     this.usuarioEncuestaService.findCollaborators(this.encuesta?.id!).subscribe( | ||||||
|  |       (res: any) => { | ||||||
|  |         this.isLoading = false; | ||||||
|  |         this.usuariosColaboradores = res.body ?? []; | ||||||
|  |       }, | ||||||
|  |       () => { | ||||||
|  |         this.isLoading = false; | ||||||
|  |       } | ||||||
|  |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   async loadAplicationParameters(): Promise<void> { |   async loadAplicationParameters(): Promise<void> { | ||||||
|     const params = await this.parametroAplicacionService.find(1).toPromise(); |     const params = await this.parametroAplicacionService.find(1).toPromise(); | ||||||
|     this.parametrosAplicacion = params.body; |     this.parametrosAplicacion = params.body; | ||||||
|     console.log(this.parametrosAplicacion); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   ngOnInit(): void { |   ngOnInit(): void { | ||||||
|  | @ -157,10 +192,19 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
| 
 | 
 | ||||||
|       // this.loadRelationshipsOptions();
 |       // this.loadRelationshipsOptions();
 | ||||||
|     }); |     }); | ||||||
|  | 
 | ||||||
|  |     // Get jhi_user and usuario_extra information
 | ||||||
|  |     this.accountService.getAuthenticationState().subscribe(account => { | ||||||
|  |       if (account !== null) { | ||||||
|  |         this.usuarioExtraService.find(account.id).subscribe(usuarioExtra => { | ||||||
|  |           this.usuarioExtra = usuarioExtra.body; | ||||||
|  |         }); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   ngAfterViewChecked(): void { |   ngAfterViewChecked(): void { | ||||||
|     this.initListeners(); |     // this.initListeners();
 | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   trackId(index: number, item: IEPreguntaCerrada): number { |   trackId(index: number, item: IEPreguntaCerrada): number { | ||||||
|  | @ -178,18 +222,18 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   initListeners(): void { |   // initListeners(): void {
 | ||||||
|     const checkboxes = document.getElementsByClassName('ds-survey--checkbox'); |   //   const checkboxes = document.getElementsByClassName('ds-survey--checkbox');
 | ||||||
|     for (let i = 0; i < checkboxes.length; i++) { |   //   for (let i = 0; i < checkboxes.length; i++) {
 | ||||||
|       checkboxes[i].addEventListener('click', e => { |   //     checkboxes[i].addEventListener('click', e => {
 | ||||||
|         if ((e.target as HTMLInputElement).checked) { |   //       if ((e.target as HTMLInputElement).checked) {
 | ||||||
|           (e.target as HTMLElement).offsetParent!.classList.add('ds-survey--closed-option--active'); |   //         (e.target as HTMLElement).offsetParent!.classList.add('ds-survey--closed-option--active');
 | ||||||
|         } else { |   //       } else {
 | ||||||
|           (e.target as HTMLElement).offsetParent!.classList.remove('ds-survey--closed-option--active'); |   //         (e.target as HTMLElement).offsetParent!.classList.remove('ds-survey--closed-option--active');
 | ||||||
|         } |   //       }
 | ||||||
|       }); |   //     });
 | ||||||
|     } |   //   }
 | ||||||
|   } |   // }
 | ||||||
| 
 | 
 | ||||||
|   previousState(): void { |   previousState(): void { | ||||||
|     window.history.back(); |     window.history.back(); | ||||||
|  | @ -332,7 +376,6 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
| 
 | 
 | ||||||
|   createQuestion(): void { |   createQuestion(): void { | ||||||
|     const surveyId = this.encuesta?.id; |     const surveyId = this.encuesta?.id; | ||||||
|     console.log(surveyId); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   protected createFromFormClosedQuestion(): IEPreguntaCerrada { |   protected createFromFormClosedQuestion(): IEPreguntaCerrada { | ||||||
|  | @ -416,6 +459,57 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|     this.isSavingQuestion = false; |     this.isSavingQuestion = false; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   updateSurveyName(event: any) { | ||||||
|  |     const updatedSurveyName = event.target.innerText; | ||||||
|  |     if (updatedSurveyName !== this.encuesta?.nombre) { | ||||||
|  |       const survey = { ...this.encuesta }; | ||||||
|  |       survey.nombre = updatedSurveyName; | ||||||
|  |       // Prevent user update by setting to null
 | ||||||
|  |       survey.usuarioExtra!.user = null; | ||||||
|  | 
 | ||||||
|  |       this.encuestaService.updateSurvey(survey).subscribe(res => {}); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   updateQuestionName(event: any): void { | ||||||
|  |     const questionType = event.target.dataset.tipo; | ||||||
|  |     const questionId = event.target.dataset.id; | ||||||
|  |     const questionName = event.target.innerText; | ||||||
|  |     if (questionType) { | ||||||
|  |       // Closed question
 | ||||||
|  |       this.ePreguntaCerradaService.find(questionId).subscribe(res => { | ||||||
|  |         const ePreguntaCerrada: EPreguntaCerrada | null = res.body ?? null; | ||||||
|  |         const updatedEPreguntaCerrada = { ...ePreguntaCerrada }; | ||||||
|  |         if (questionName !== ePreguntaCerrada?.nombre && ePreguntaCerrada !== null) { | ||||||
|  |           updatedEPreguntaCerrada.nombre = questionName; | ||||||
|  |           this.ePreguntaCerradaService.update(updatedEPreguntaCerrada).subscribe(updatedQuestion => { | ||||||
|  |             console.log(updatedQuestion); | ||||||
|  |           }); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     } else { | ||||||
|  |       // Open question
 | ||||||
|  |       // Closed question
 | ||||||
|  |       this.ePreguntaAbiertaService.find(questionId).subscribe(res => { | ||||||
|  |         const ePreguntaAbierta: EPreguntaAbierta | null = res.body ?? null; | ||||||
|  |         const updatedEPreguntaAbierta = { ...ePreguntaAbierta }; | ||||||
|  |         if (questionName !== ePreguntaAbierta?.nombre && ePreguntaAbierta !== null) { | ||||||
|  |           updatedEPreguntaAbierta.nombre = questionName; | ||||||
|  |           this.ePreguntaAbiertaService.update(updatedEPreguntaAbierta).subscribe(updatedQuestion => { | ||||||
|  |             console.log(updatedQuestion); | ||||||
|  |           }); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |     // const questionId = event.target.dataset.id;
 | ||||||
|  |     // const survey = { ...this.encuesta };
 | ||||||
|  |     // survey.nombre = updatedQuestionName;
 | ||||||
|  |     // // Prevent user update by setting to null
 | ||||||
|  |     // survey.usuarioExtra!.user = null;
 | ||||||
|  | 
 | ||||||
|  |     // this.encuestaService.updateSurvey(survey).subscribe(res => {});
 | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   // previousState(): void {
 |   // previousState(): void {
 | ||||||
|   //   window.history.back();
 |   //   window.history.back();
 | ||||||
|   // }
 |   // }
 | ||||||
|  | @ -532,4 +626,88 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|   //     usuarioExtra: this.editForm.get(['usuarioExtra'])!.value,
 |   //     usuarioExtra: this.editForm.get(['usuarioExtra'])!.value,
 | ||||||
|   //   };
 |   //   };
 | ||||||
|   // }
 |   // }
 | ||||||
|  | 
 | ||||||
|  |   /* methods for colaborators*/ | ||||||
|  |   selectColaborator(c: IUsuarioEncuesta) { | ||||||
|  |     this.colaborador = c; | ||||||
|  |     this.rolSeleccionado = c.rol; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   saveCollab(): void { | ||||||
|  |     this.isSavingCollab = true; | ||||||
|  |     const collab = this.colaborador; | ||||||
|  |     if (collab !== null) { | ||||||
|  |       collab.rol = this.editFormUpdateCollab.get('rol')!.value; | ||||||
|  |       collab.fechaAgregado = dayjs(this.colaborador?.fechaAgregado, DATE_TIME_FORMAT); | ||||||
|  |       /*this.usuarioEncuestaService.update(collab).subscribe( | ||||||
|  |         res => {}, | ||||||
|  |       (error) => {console.log(error)} | ||||||
|  |       );*/ | ||||||
|  | 
 | ||||||
|  |       this.subscribeToSaveResponseUpdateCollab(this.usuarioEncuestaService.update(collab)); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected subscribeToSaveResponseUpdateCollab(result: Observable<HttpResponse<IUsuarioEncuesta>>): void { | ||||||
|  |     result.pipe(finalize(() => this.onSaveFinalizeUpdateCollab())).subscribe( | ||||||
|  |       () => this.onSaveSuccessUpdateCollab(), | ||||||
|  |       () => this.onSaveErrorUpdateCollab() | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected onSaveSuccessUpdateCollab(): void { | ||||||
|  |     this.loadAll(); | ||||||
|  |     $('#btnCancelUbdateColaboradores').click(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected onSaveErrorUpdateCollab(): void { | ||||||
|  |     // Api for inheritance.
 | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected onSaveFinalizeUpdateCollab(): void { | ||||||
|  |     this.isSavingCollab = false; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   deleteCollab(collab: IUsuarioEncuesta) { | ||||||
|  |     //$('#btnCancelUbdateColaboradores').click();
 | ||||||
|  |     //setTimeout(() => {
 | ||||||
|  |     const modalRef = this.modalService.open(EncuestaDeleteColaboratorDialogComponent, { size: 'lg', backdrop: 'static' }); | ||||||
|  |     modalRef.componentInstance.colaborador = collab; | ||||||
|  |     // unsubscribe not needed because closed completes on modal close
 | ||||||
|  |     modalRef.closed.subscribe(reason => { | ||||||
|  |       if (reason === 'deleted') { | ||||||
|  |         $('#btnCancelUbdateColaboradores').click(); | ||||||
|  |         this.loadAll(); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |     //}, 500);
 | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   isAutor() { | ||||||
|  |     return this.usuarioExtra?.id === this.encuesta?.usuarioExtra?.id; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   isEscritor() { | ||||||
|  |     let escritor = false; | ||||||
|  |     this.usuariosColaboradores.forEach(c => { | ||||||
|  |       if (this.usuarioExtra?.id === c.usuarioExtra?.id) { | ||||||
|  |         if (c.rol === 'WRITE') { | ||||||
|  |           escritor = true; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |     return escritor; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   finalizar(): void { | ||||||
|  |     const modalRef = this.modalService.open(EncuestaFinalizarDialogComponent, { size: 'lg', backdrop: 'static' }); | ||||||
|  |     modalRef.componentInstance.encuesta = this.encuesta; | ||||||
|  |     // unsubscribe not needed because closed completes on modal close
 | ||||||
|  |     modalRef.closed.subscribe(reason => { | ||||||
|  |       if (reason === 'finalized') { | ||||||
|  |         this.finalizada = true; | ||||||
|  |         this.loadAll(); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -16,8 +16,8 @@ export class PPreguntaCerradaOpcionService { | ||||||
| 
 | 
 | ||||||
|   constructor(protected http: HttpClient, protected applicationConfigService: ApplicationConfigService) {} |   constructor(protected http: HttpClient, protected applicationConfigService: ApplicationConfigService) {} | ||||||
| 
 | 
 | ||||||
|   create(pPreguntaCerradaOpcion: IPPreguntaCerradaOpcion): Observable<EntityResponseType> { |   create(pPreguntaCerradaOpcion: IPPreguntaCerradaOpcion, preguntaId?: number): Observable<EntityResponseType> { | ||||||
|     return this.http.post<IPPreguntaCerradaOpcion>(this.resourceUrl, pPreguntaCerradaOpcion, { observe: 'response' }); |     return this.http.post<IPPreguntaCerradaOpcion>(`${this.resourceUrl}/${preguntaId}`, pPreguntaCerradaOpcion, { observe: 'response' }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   update(pPreguntaCerradaOpcion: IPPreguntaCerradaOpcion): Observable<EntityResponseType> { |   update(pPreguntaCerradaOpcion: IPPreguntaCerradaOpcion): Observable<EntityResponseType> { | ||||||
|  | @ -49,6 +49,10 @@ export class PPreguntaCerradaOpcionService { | ||||||
|     return this.http.delete(`${this.resourceUrl}/${id}`, { observe: 'response' }); |     return this.http.delete(`${this.resourceUrl}/${id}`, { observe: 'response' }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   deleteMany(ids: number[]): Observable<EntityResponseType> { | ||||||
|  |     return this.http.post<IPPreguntaCerradaOpcion>(`${this.resourceUrl}/deleteMany`, ids, { observe: 'response' }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   addPPreguntaCerradaOpcionToCollectionIfMissing( |   addPPreguntaCerradaOpcionToCollectionIfMissing( | ||||||
|     pPreguntaCerradaOpcionCollection: IPPreguntaCerradaOpcion[], |     pPreguntaCerradaOpcionCollection: IPPreguntaCerradaOpcion[], | ||||||
|     ...pPreguntaCerradaOpcionsToCheck: (IPPreguntaCerradaOpcion | null | undefined)[] |     ...pPreguntaCerradaOpcionsToCheck: (IPPreguntaCerradaOpcion | null | undefined)[] | ||||||
|  |  | ||||||
|  | @ -1,22 +1,28 @@ | ||||||
| <div> | <div> | ||||||
|   <h2 id="page-heading" data-cy="PlantillaHeading"> |   <h2 id="page-heading" data-cy="PlantillaHeading"> | ||||||
|     <span jhiTranslate="dataSurveyApp.plantilla.home.title">Plantillas</span> |     <div class="d-flex flex-sm-row flex-column justify-content-between align-items-center"> | ||||||
|  |       <div> | ||||||
|  |         <span class="ds-title" jhiTranslate="dataSurveyApp.plantilla.home.title">Encuestas</span> | ||||||
|  |         <p class="ds-subtitle">Administre las plantillas comprables de la tienda</p> | ||||||
|  |       </div> | ||||||
| 
 | 
 | ||||||
|     <div class="d-flex justify-content-end"> |       <div> | ||||||
|       <button class="btn btn-info mr-2" (click)="loadAll()" [disabled]="isLoading"> |         <button class="ds-btn ds-btn--secondary" (click)="loadAll()" [disabled]="isLoading"> | ||||||
|         <fa-icon icon="sync" [spin]="isLoading"></fa-icon> |           <fa-icon icon="sync" [spin]="isLoading"></fa-icon> | ||||||
|         <span jhiTranslate="dataSurveyApp.plantilla.home.refreshListLabel">Refresh List</span> |           <span jhiTranslate="dataSurveyApp.plantilla.home.refreshListLabel">Refresh List</span> | ||||||
|       </button> |         </button> | ||||||
| 
 | 
 | ||||||
|       <button |         <button | ||||||
|         id="jh-create-entity" |           *ngIf="isAdmin() && isAuthenticated()" | ||||||
|         data-cy="entityCreateButton" |           type="button" | ||||||
|         class="btn btn-primary jh-create-entity create-plantilla" |           class="ds-btn ds-btn--primary" | ||||||
|         [routerLink]="['/plantilla/new']" |           (click)="resetCreateTemplateForm()" | ||||||
|       > |           data-toggle="modal" | ||||||
|         <fa-icon icon="plus"></fa-icon> |           data-target="#crearPlantilla" | ||||||
|         <span jhiTranslate="dataSurveyApp.plantilla.home.createLabel"> Create a new Plantilla </span> |         > | ||||||
|       </button> |           Crear plantilla | ||||||
|  |         </button> | ||||||
|  |       </div> | ||||||
|     </div> |     </div> | ||||||
|   </h2> |   </h2> | ||||||
| 
 | 
 | ||||||
|  | @ -25,17 +31,16 @@ | ||||||
|   <jhi-alert></jhi-alert> |   <jhi-alert></jhi-alert> | ||||||
| 
 | 
 | ||||||
|   <div class="alert alert-warning" id="no-result" *ngIf="plantillas?.length === 0"> |   <div class="alert alert-warning" id="no-result" *ngIf="plantillas?.length === 0"> | ||||||
|     <span jhiTranslate="dataSurveyApp.plantilla.home.notFound">No plantillas found</span> |     <span jhiTranslate="dataSurveyApp.plantilla.home.notFound">No templates found</span> | ||||||
|   </div> |   </div> | ||||||
| 
 | 
 | ||||||
|   <div class="table-responsive" id="entities" *ngIf="plantillas && plantillas.length > 0"> |   <div class="table-responsive" id="entities" *ngIf="plantillas && plantillas.length > 0"> | ||||||
|     <table class="table table-striped" aria-describedby="page-heading"> |     <table class="table table-striped" aria-describedby="page-heading"> | ||||||
|       <thead> |       <thead> | ||||||
|         <tr> |         <tr> | ||||||
|           <th scope="col"><span jhiTranslate="global.field.id">ID</span></th> |  | ||||||
|           <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.nombre">Nombre</span></th> |           <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.nombre">Nombre</span></th> | ||||||
|           <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.descripcion">Descripcion</span></th> |           <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.descripcion">Descripcion</span></th> | ||||||
|           <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.fechaCreacion">Fecha Creacion</span></th> |           <!-- <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.fechaCreacion">Fecha Creacion</span></th> --> | ||||||
|           <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.fechaPublicacionTienda">Fecha Publicacion Tienda</span></th> |           <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.fechaPublicacionTienda">Fecha Publicacion Tienda</span></th> | ||||||
|           <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.estado">Estado</span></th> |           <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.estado">Estado</span></th> | ||||||
|           <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.precio">Precio</span></th> |           <th scope="col"><span jhiTranslate="dataSurveyApp.plantilla.precio">Precio</span></th> | ||||||
|  | @ -45,43 +50,36 @@ | ||||||
|       </thead> |       </thead> | ||||||
|       <tbody> |       <tbody> | ||||||
|         <tr *ngFor="let plantilla of plantillas; trackBy: trackId" data-cy="entityTable"> |         <tr *ngFor="let plantilla of plantillas; trackBy: trackId" data-cy="entityTable"> | ||||||
|           <td> |  | ||||||
|             <a [routerLink]="['/plantilla', plantilla.id, 'view']">{{ plantilla.id }}</a> |  | ||||||
|           </td> |  | ||||||
|           <td>{{ plantilla.nombre }}</td> |           <td>{{ plantilla.nombre }}</td> | ||||||
|           <td>{{ plantilla.descripcion }}</td> |           <td>{{ plantilla.descripcion }}</td> | ||||||
|           <td>{{ plantilla.fechaCreacion | formatMediumDatetime }}</td> |           <!-- <td>{{ plantilla.fechaCreacion | formatMediumDatetime }}</td> --> | ||||||
|           <td>{{ plantilla.fechaPublicacionTienda | formatMediumDatetime }}</td> |           <td *ngIf="plantilla.fechaPublicacionTienda">{{ plantilla.fechaPublicacionTienda | formatShortDatetime | titlecase }}</td> | ||||||
|  |           <td *ngIf="!plantilla.fechaPublicacionTienda">No establecida</td> | ||||||
|           <td jhiTranslate="{{ 'dataSurveyApp.EstadoPlantilla.' + plantilla.estado }}">{{ plantilla.estado }}</td> |           <td jhiTranslate="{{ 'dataSurveyApp.EstadoPlantilla.' + plantilla.estado }}">{{ plantilla.estado }}</td> | ||||||
|           <td>{{ plantilla.precio }}</td> |           <td>{{ plantilla.precio | currency: 'USD':'symbol-narrow' }}</td> | ||||||
|           <td> |           <td>{{ plantilla.categoria?.nombre }}</td> | ||||||
|             <div *ngIf="plantilla.categoria"> |  | ||||||
|               <a [routerLink]="['/categoria', plantilla.categoria?.id, 'view']">{{ plantilla.categoria?.nombre }}</a> |  | ||||||
|             </div> |  | ||||||
|           </td> |  | ||||||
|           <td class="text-right"> |           <td class="text-right"> | ||||||
|             <div class="btn-group"> |             <div class="btn-group"> | ||||||
|               <button |               <button | ||||||
|                 type="submit" |                 type="submit" | ||||||
|                 [routerLink]="['/plantilla', plantilla.id, 'view']" |                 [routerLink]="['/plantilla', plantilla.id, 'view']" | ||||||
|                 class="btn btn-info btn-sm" |                 class="ds-btn ds-btn--secondary btn-sm" | ||||||
|                 data-cy="entityDetailsButton" |                 data-cy="entityDetailsButton" | ||||||
|               > |               > | ||||||
|                 <fa-icon icon="eye"></fa-icon> |                 <fa-icon icon="eye"></fa-icon> | ||||||
|                 <span class="d-none d-md-inline" jhiTranslate="entity.action.view">View</span> |                 <span class="d-none d-md-inline">Vista previa</span> | ||||||
|               </button> |               </button> | ||||||
| 
 | 
 | ||||||
|               <button |               <button | ||||||
|                 type="submit" |                 type="submit" | ||||||
|                 [routerLink]="['/plantilla', plantilla.id, 'edit']" |                 [routerLink]="['/plantilla', plantilla.id, 'edit']" | ||||||
|                 class="btn btn-primary btn-sm" |                 class="ds-btn ds-btn--primary btn-sm" | ||||||
|                 data-cy="entityEditButton" |                 data-cy="entityEditButton" | ||||||
|               > |               > | ||||||
|                 <fa-icon icon="pencil-alt"></fa-icon> |  | ||||||
|                 <span class="d-none d-md-inline" jhiTranslate="entity.action.edit">Edit</span> |                 <span class="d-none d-md-inline" jhiTranslate="entity.action.edit">Edit</span> | ||||||
|               </button> |               </button> | ||||||
| 
 | 
 | ||||||
|               <button type="submit" (click)="delete(plantilla)" class="btn btn-danger btn-sm" data-cy="entityDeleteButton"> |               <button type="submit" (click)="delete(plantilla)" class="ds-btn ds-btn--danger btn-sm" data-cy="entityDeleteButton"> | ||||||
|                 <fa-icon icon="times"></fa-icon> |                 <fa-icon icon="times"></fa-icon> | ||||||
|                 <span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span> |                 <span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span> | ||||||
|               </button> |               </button> | ||||||
|  | @ -92,3 +90,143 @@ | ||||||
|     </table> |     </table> | ||||||
|   </div> |   </div> | ||||||
| </div> | </div> | ||||||
|  | 
 | ||||||
|  | <!-- Modal --> | ||||||
|  | <div | ||||||
|  |   class="modal fade ds-modal" | ||||||
|  |   id="crearPlantilla" | ||||||
|  |   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="templateCreateForm" | ||||||
|  |         role="form" | ||||||
|  |         novalidate | ||||||
|  |         (ngSubmit)="save()" | ||||||
|  |         [formGroup]="templateCreateForm" | ||||||
|  |       > | ||||||
|  |         <div class="modal-header"> | ||||||
|  |           <h1 class="modal-title" id="exampleModalLongTitle">Crear Plantilla</h1> | ||||||
|  |         </div> | ||||||
|  |         <div class="modal-body"> | ||||||
|  |           <!-- Template Registration Modal --> | ||||||
|  |           <div> | ||||||
|  |             <div class="form-group"> | ||||||
|  |               <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.nombre" for="field_nombre">Nombre</label> | ||||||
|  |               <input type="text" class="form-control" name="nombre" id="field_nombre" data-cy="nombre" formControlName="nombre" /> | ||||||
|  |               <div | ||||||
|  |                 *ngIf=" | ||||||
|  |                   templateCreateForm.get('nombre')!.invalid && | ||||||
|  |                   (templateCreateForm.get('nombre')!.dirty || templateCreateForm.get('nombre')!.touched) | ||||||
|  |                 " | ||||||
|  |               > | ||||||
|  |                 <small | ||||||
|  |                   class="form-text text-danger" | ||||||
|  |                   *ngIf="templateCreateForm.get('nombre')?.errors?.required" | ||||||
|  |                   jhiTranslate="entity.validation.required" | ||||||
|  |                 > | ||||||
|  |                   This field is required. | ||||||
|  |                 </small> | ||||||
|  |                 <small | ||||||
|  |                   class="form-text text-danger" | ||||||
|  |                   *ngIf="templateCreateForm.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="templateCreateForm.get('nombre')?.errors?.maxlength" | ||||||
|  |                   jhiTranslate="entity.validation.maxlength" | ||||||
|  |                   [translateValues]="{ max: 50 }" | ||||||
|  |                 > | ||||||
|  |                   This field cannot be longer than 50 characters. | ||||||
|  |                 </small> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <div class="form-group"> | ||||||
|  |               <label class="form-control-label" jhiTranslate="dataSurveyApp.encuesta.descripcion" for="field_descripcion" | ||||||
|  |                 >Descripcion</label | ||||||
|  |               > | ||||||
|  |               <input | ||||||
|  |                 type="text" | ||||||
|  |                 class="form-control" | ||||||
|  |                 name="descripcion" | ||||||
|  |                 id="field_descripcion" | ||||||
|  |                 data-cy="descripcion" | ||||||
|  |                 formControlName="descripcion" | ||||||
|  |               /> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <div class="form-group"> | ||||||
|  |               <label class="form-control-label" jhiTranslate="dataSurveyApp.plantilla.precio" for="field_precio">Precio</label> | ||||||
|  |               <input type="number" class="form-control" name="precio" id="field_precio" data-cy="precio" formControlName="precio" /> | ||||||
|  |               <div | ||||||
|  |                 *ngIf=" | ||||||
|  |                   templateCreateForm.get('precio')!.invalid && | ||||||
|  |                   (templateCreateForm.get('precio')!.dirty || templateCreateForm.get('precio')!.touched) | ||||||
|  |                 " | ||||||
|  |               > | ||||||
|  |                 <small | ||||||
|  |                   class="form-text text-danger" | ||||||
|  |                   *ngIf="templateCreateForm.get('precio')?.errors?.required" | ||||||
|  |                   jhiTranslate="entity.validation.required" | ||||||
|  |                 > | ||||||
|  |                   This field is required. | ||||||
|  |                 </small> | ||||||
|  |                 <small | ||||||
|  |                   class="form-text text-danger" | ||||||
|  |                   [hidden]="!templateCreateForm.get('precio')?.errors?.number" | ||||||
|  |                   jhiTranslate="entity.validation.number" | ||||||
|  |                 > | ||||||
|  |                   This field should be a number. | ||||||
|  |                 </small> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|  |             <div class="form-group"> | ||||||
|  |               <label class="form-control-label" jhiTranslate="dataSurveyApp.plantilla.categoria" for="field_categoria">Categoria</label> | ||||||
|  |               <select class="form-control" id="field_categoria" data-cy="categoria" name="categoria" formControlName="categoria"> | ||||||
|  |                 <option [ngValue]="null"></option> | ||||||
|  |                 <option | ||||||
|  |                   [ngValue]=" | ||||||
|  |                     categoriaOption.id === templateCreateForm.get('categoria')!.value?.id | ||||||
|  |                       ? templateCreateForm.get('categoria')!.value | ||||||
|  |                       : categoriaOption | ||||||
|  |                   " | ||||||
|  |                   *ngFor="let categoriaOption of categoriasSharedCollection; trackBy: trackCategoriaById" | ||||||
|  |                 > | ||||||
|  |                   {{ categoriaOption.nombre }} | ||||||
|  |                 </option> | ||||||
|  |               </select> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |         <div class="modal-footer"> | ||||||
|  |           <input id="createAnother" type="checkbox" (change)="createAnotherTemplateChange($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]="templateCreateForm.invalid || isSaving" | ||||||
|  |           > | ||||||
|  |             <span jhiTranslate="entity.action.create">Create</span> | ||||||
|  |           </button> | ||||||
|  |         </div> | ||||||
|  |       </form> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | @ -1,11 +1,23 @@ | ||||||
| import { Component, OnInit } from '@angular/core'; | import { Component, OnInit } from '@angular/core'; | ||||||
| import { HttpResponse } from '@angular/common/http'; | import { HttpResponse } from '@angular/common/http'; | ||||||
| import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; | import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; | ||||||
|  | import { Observable } from 'rxjs'; | ||||||
|  | import { finalize, map } from 'rxjs/operators'; | ||||||
| 
 | 
 | ||||||
| import { IPlantilla } from '../plantilla.model'; | import { IPlantilla, Plantilla } from '../plantilla.model'; | ||||||
| import { PlantillaService } from '../service/plantilla.service'; | import { PlantillaService } from '../service/plantilla.service'; | ||||||
| import { PlantillaDeleteDialogComponent } from '../delete/plantilla-delete-dialog.component'; | import { PlantillaDeleteDialogComponent } from '../delete/plantilla-delete-dialog.component'; | ||||||
| 
 | 
 | ||||||
|  | import { AccountService } from 'app/core/auth/account.service'; | ||||||
|  | import { Account } from 'app/core/auth/account.model'; | ||||||
|  | import { FormBuilder, Validators } from '@angular/forms'; | ||||||
|  | import { EstadoPlantilla } from 'app/entities/enumerations/estado-plantilla.model'; | ||||||
|  | import { ICategoria } from 'app/entities/categoria/categoria.model'; | ||||||
|  | import { CategoriaService } from 'app/entities/categoria/service/categoria.service'; | ||||||
|  | 
 | ||||||
|  | import * as dayjs from 'dayjs'; | ||||||
|  | import { DATE_TIME_FORMAT } from 'app/config/input.constants'; | ||||||
|  | 
 | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'jhi-plantilla', |   selector: 'jhi-plantilla', | ||||||
|   templateUrl: './plantilla.component.html', |   templateUrl: './plantilla.component.html', | ||||||
|  | @ -13,8 +25,27 @@ import { PlantillaDeleteDialogComponent } from '../delete/plantilla-delete-dialo | ||||||
| export class PlantillaComponent implements OnInit { | export class PlantillaComponent implements OnInit { | ||||||
|   plantillas?: IPlantilla[]; |   plantillas?: IPlantilla[]; | ||||||
|   isLoading = false; |   isLoading = false; | ||||||
|  |   isSaving = false; | ||||||
|  |   createAnotherTemplate: Boolean = false; | ||||||
| 
 | 
 | ||||||
|   constructor(protected plantillaService: PlantillaService, protected modalService: NgbModal) {} |   account: Account | null = null; | ||||||
|  |   categoriasSharedCollection: ICategoria[] = []; | ||||||
|  | 
 | ||||||
|  |   templateCreateForm = this.fb.group({ | ||||||
|  |     id: [], | ||||||
|  |     nombre: [null, [Validators.minLength(1), Validators.maxLength(50)]], | ||||||
|  |     descripcion: [], | ||||||
|  |     precio: [null, [Validators.required]], | ||||||
|  |     categoria: [], | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   constructor( | ||||||
|  |     protected plantillaService: PlantillaService, | ||||||
|  |     protected modalService: NgbModal, | ||||||
|  |     protected accountService: AccountService, | ||||||
|  |     protected fb: FormBuilder, | ||||||
|  |     protected categoriaService: CategoriaService | ||||||
|  |   ) {} | ||||||
| 
 | 
 | ||||||
|   loadAll(): void { |   loadAll(): void { | ||||||
|     this.isLoading = true; |     this.isLoading = true; | ||||||
|  | @ -32,9 +63,10 @@ export class PlantillaComponent implements OnInit { | ||||||
| 
 | 
 | ||||||
|   ngOnInit(): void { |   ngOnInit(): void { | ||||||
|     this.loadAll(); |     this.loadAll(); | ||||||
|  |     this.loadRelationshipsOptions(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   trackId(index: number, item: IPlantilla): number { |   trackId(_index: number, item: IPlantilla): number { | ||||||
|     return item.id!; |     return item.id!; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -48,4 +80,90 @@ export class PlantillaComponent implements OnInit { | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   isAdmin(): boolean { | ||||||
|  |     return this.accountService.hasAnyAuthority('ROLE_ADMIN'); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   isAuthenticated(): boolean { | ||||||
|  |     return this.accountService.isAuthenticated(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   resetCreateTemplateForm(): void { | ||||||
|  |     this.templateCreateForm.reset(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   createAnotherTemplateChange(event: any): void { | ||||||
|  |     // ID: #crearPlantilla
 | ||||||
|  |     this.createAnotherTemplate = event.target.checked; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   previousState(): void { | ||||||
|  |     window.history.back(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   save(): void { | ||||||
|  |     this.isSaving = true; | ||||||
|  |     const plantilla = this.createFromForm(); | ||||||
|  |     if (plantilla.id !== undefined) { | ||||||
|  |       this.subscribeToSaveResponse(this.plantillaService.update(plantilla)); | ||||||
|  |     } else { | ||||||
|  |       this.subscribeToSaveResponse(this.plantillaService.create(plantilla)); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   trackCategoriaById(index: number, item: ICategoria): number { | ||||||
|  |     return item.id!; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected subscribeToSaveResponse(result: Observable<HttpResponse<IPlantilla>>): void { | ||||||
|  |     result.pipe(finalize(() => this.onSaveFinalize())).subscribe( | ||||||
|  |       () => this.onSaveSuccess(), | ||||||
|  |       () => this.onSaveError() | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected onSaveSuccess(): void { | ||||||
|  |     this.templateCreateForm.reset(); | ||||||
|  |     this.plantillas = []; | ||||||
|  |     this.loadAll(); | ||||||
|  |     if (!this.createAnotherTemplate) { | ||||||
|  |       $('#cancelBtn').click(); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected onSaveError(): void { | ||||||
|  |     // Api for inheritance.
 | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected onSaveFinalize(): void { | ||||||
|  |     this.isSaving = false; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected loadRelationshipsOptions(): void { | ||||||
|  |     this.categoriaService | ||||||
|  |       .query() | ||||||
|  |       .pipe(map((res: HttpResponse<ICategoria[]>) => res.body ?? [])) | ||||||
|  |       .pipe( | ||||||
|  |         map((categorias: ICategoria[]) => | ||||||
|  |           this.categoriaService.addCategoriaToCollectionIfMissing(categorias, this.templateCreateForm.get('categoria')!.value) | ||||||
|  |         ) | ||||||
|  |       ) | ||||||
|  |       .subscribe((categorias: ICategoria[]) => (this.categoriasSharedCollection = categorias)); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected createFromForm(): IPlantilla { | ||||||
|  |     const now = dayjs(); | ||||||
|  | 
 | ||||||
|  |     return { | ||||||
|  |       ...new Plantilla(), | ||||||
|  |       id: undefined, | ||||||
|  |       nombre: this.templateCreateForm.get(['nombre'])!.value, | ||||||
|  |       descripcion: this.templateCreateForm.get(['descripcion'])!.value, | ||||||
|  |       fechaCreacion: dayjs(now, DATE_TIME_FORMAT), | ||||||
|  |       estado: EstadoPlantilla.DRAFT, | ||||||
|  |       precio: this.templateCreateForm.get(['precio'])!.value, | ||||||
|  |       categoria: this.templateCreateForm.get(['categoria'])!.value, | ||||||
|  |     }; | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1,24 @@ | ||||||
|  | <form class="ds-form" name="deleteForm" (ngSubmit)="confirmDelete()"> | ||||||
|  |   <div class="modal-header"> | ||||||
|  |     <!-- <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> | ||||||
|  | 
 | ||||||
|  |   <div class="modal-body"> | ||||||
|  |     <p class="ds-title--small">Eliminar opción</p> | ||||||
|  |     <p class="ds-subtitle" 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="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-option" 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> | ||||||
|  | </form> | ||||||
|  | @ -0,0 +1,17 @@ | ||||||
|  | import { Component } from '@angular/core'; | ||||||
|  | import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; | ||||||
|  | 
 | ||||||
|  | @Component({ | ||||||
|  |   templateUrl: './plantilla-delete-option-dialog.component.html', | ||||||
|  | }) | ||||||
|  | export class PlantillaDeleteOptionDialogComponent { | ||||||
|  |   constructor(protected activeModal: NgbActiveModal) {} | ||||||
|  | 
 | ||||||
|  |   cancel(): void { | ||||||
|  |     this.activeModal.dismiss(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   confirmDelete(): void { | ||||||
|  |     this.activeModal.close('confirm'); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,24 @@ | ||||||
|  | <form class="ds-form" name="deleteForm" (ngSubmit)="confirmDelete()"> | ||||||
|  |   <div class="modal-header"> | ||||||
|  |     <!-- <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> | ||||||
|  | 
 | ||||||
|  |   <div class="modal-body"> | ||||||
|  |     <p class="ds-title--small">Eliminar pregunta</p> | ||||||
|  |     <p class="ds-subtitle" 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="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-question" 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> | ||||||
|  | </form> | ||||||
|  | @ -0,0 +1,17 @@ | ||||||
|  | import { Component } from '@angular/core'; | ||||||
|  | import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; | ||||||
|  | 
 | ||||||
|  | @Component({ | ||||||
|  |   templateUrl: './plantilla-delete-question-dialog.component.html', | ||||||
|  | }) | ||||||
|  | export class PlantillaDeleteQuestionDialogComponent { | ||||||
|  |   constructor(protected activeModal: NgbActiveModal) {} | ||||||
|  | 
 | ||||||
|  |   cancel(): void { | ||||||
|  |     this.activeModal.dismiss(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   confirmDelete(): void { | ||||||
|  |     this.activeModal.close('confirm'); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @ -5,10 +5,20 @@ import { PlantillaDetailComponent } from './detail/plantilla-detail.component'; | ||||||
| import { PlantillaUpdateComponent } from './update/plantilla-update.component'; | import { PlantillaUpdateComponent } from './update/plantilla-update.component'; | ||||||
| import { PlantillaDeleteDialogComponent } from './delete/plantilla-delete-dialog.component'; | import { PlantillaDeleteDialogComponent } from './delete/plantilla-delete-dialog.component'; | ||||||
| import { PlantillaRoutingModule } from './route/plantilla-routing.module'; | import { PlantillaRoutingModule } from './route/plantilla-routing.module'; | ||||||
|  | import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; | ||||||
|  | import { PlantillaDeleteQuestionDialogComponent } from './plantilla-delete-question-dialog/plantilla-delete-question-dialog.component'; | ||||||
|  | import { PlantillaDeleteOptionDialogComponent } from './plantilla-delete-option-dialog/plantilla-delete-option-dialog.component'; | ||||||
| 
 | 
 | ||||||
| @NgModule({ | @NgModule({ | ||||||
|   imports: [SharedModule, PlantillaRoutingModule], |   imports: [SharedModule, PlantillaRoutingModule, FontAwesomeModule], | ||||||
|   declarations: [PlantillaComponent, PlantillaDetailComponent, PlantillaUpdateComponent, PlantillaDeleteDialogComponent], |   declarations: [ | ||||||
|  |     PlantillaComponent, | ||||||
|  |     PlantillaDetailComponent, | ||||||
|  |     PlantillaUpdateComponent, | ||||||
|  |     PlantillaDeleteDialogComponent, | ||||||
|  |     PlantillaDeleteQuestionDialogComponent, | ||||||
|  |     PlantillaDeleteOptionDialogComponent, | ||||||
|  |   ], | ||||||
|   entryComponents: [PlantillaDeleteDialogComponent], |   entryComponents: [PlantillaDeleteDialogComponent], | ||||||
| }) | }) | ||||||
| export class PlantillaModule {} | export class PlantillaModule {} | ||||||
|  |  | ||||||
|  | @ -45,6 +45,22 @@ export class PlantillaService { | ||||||
|       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); |       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   findPlantilla(id: number): Observable<IPlantilla> { | ||||||
|  |     return this.http.get<IPlantilla>(`${this.resourceUrl}/${id}`); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   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))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   query(req?: any): Observable<EntityArrayResponseType> { |   query(req?: any): Observable<EntityArrayResponseType> { | ||||||
|     const options = createRequestOption(req); |     const options = createRequestOption(req); | ||||||
|     return this.http |     return this.http | ||||||
|  |  | ||||||
|  | @ -1,165 +1,355 @@ | ||||||
| <div class="row justify-content-center"> | <div> | ||||||
|   <div class="col-8"> |   <h2 id="page-heading" data-cy="EPreguntaCerradaHeading"> | ||||||
|     <form name="editForm" role="form" novalidate (ngSubmit)="save()" [formGroup]="editForm"> |     <div class="d-flex align-items-center"> | ||||||
|       <h2 id="jhi-plantilla-heading" data-cy="PlantillaCreateUpdateHeading" jhiTranslate="dataSurveyApp.plantilla.home.createOrEditLabel"> |       <p class="ds-title ds-contenteditable" contenteditable="true" spellcheck="false" (blur)="updateTemplateName($event)"> | ||||||
|         Create or edit a Plantilla |         {{ plantilla!.nombre }} | ||||||
|       </h2> |       </p> | ||||||
|  |     </div> | ||||||
| 
 | 
 | ||||||
|       <div> |     <p class="ds-subtitle">Creada el día {{ plantilla!.fechaCreacion | formatShortDatetime | lowercase }}</p> | ||||||
|         <jhi-alert-error></jhi-alert-error> |  | ||||||
| 
 | 
 | ||||||
|         <div class="form-group" [hidden]="editForm.get('id')!.value == null"> |     <div class="d-flex justify-content-end"> | ||||||
|           <label class="form-control-label" jhiTranslate="global.field.id" for="field_id">ID</label> |       <button type="button" class="ds-btn ds-btn--secondary" (click)="previousState()"> | ||||||
|           <input type="number" class="form-control" name="id" id="field_id" data-cy="id" formControlName="id" [readonly]="true" /> |         <fa-icon icon="arrow-left"></fa-icon>  <span jhiTranslate="entity.action.back">Back</span> | ||||||
|         </div> |       </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> | ||||||
| 
 | 
 | ||||||
|         <div class="form-group"> |       <button | ||||||
|           <label class="form-control-label" jhiTranslate="dataSurveyApp.plantilla.nombre" for="field_nombre">Nombre</label> |         type="button" | ||||||
|           <input type="text" class="form-control" name="nombre" id="field_nombre" data-cy="nombre" formControlName="nombre" /> |         class="ds-btn ds-btn--primary" | ||||||
|           <div *ngIf="editForm.get('nombre')!.invalid && (editForm.get('nombre')!.dirty || editForm.get('nombre')!.touched)"> |         (click)="createQuestion()" | ||||||
|             <small |         [disabled]="isLoading" | ||||||
|               class="form-text text-danger" |         data-toggle="modal" | ||||||
|               *ngIf="editForm.get('nombre')?.errors?.minlength" |         data-target="#crearPregunta" | ||||||
|               jhiTranslate="entity.validation.minlength" |       > | ||||||
|               [translateValues]="{ min: 1 }" |         <fa-icon icon="sync" [icon]="faPlus"></fa-icon>  <span>Crear pregunta</span> | ||||||
|             > |       </button> | ||||||
|               This field is required to be at least 1 characters. |     </div> | ||||||
|             </small> |   </h2> | ||||||
|             <small |  | ||||||
|               class="form-text text-danger" |  | ||||||
|               *ngIf="editForm.get('nombre')?.errors?.maxlength" |  | ||||||
|               jhiTranslate="entity.validation.maxlength" |  | ||||||
|               [translateValues]="{ max: 50 }" |  | ||||||
|             > |  | ||||||
|               This field cannot be longer than 50 characters. |  | ||||||
|             </small> |  | ||||||
|           </div> |  | ||||||
|         </div> |  | ||||||
| 
 | 
 | ||||||
|         <div class="form-group"> |   <jhi-alert-error></jhi-alert-error> | ||||||
|           <label class="form-control-label" jhiTranslate="dataSurveyApp.plantilla.descripcion" for="field_descripcion">Descripcion</label> |  | ||||||
|           <input |  | ||||||
|             type="text" |  | ||||||
|             class="form-control" |  | ||||||
|             name="descripcion" |  | ||||||
|             id="field_descripcion" |  | ||||||
|             data-cy="descripcion" |  | ||||||
|             formControlName="descripcion" |  | ||||||
|           /> |  | ||||||
|         </div> |  | ||||||
| 
 | 
 | ||||||
|         <div class="form-group"> |   <!-- <jhi-alert></jhi-alert> --> | ||||||
|           <label class="form-control-label" jhiTranslate="dataSurveyApp.plantilla.fechaCreacion" for="field_fechaCreacion" | 
 | ||||||
|             >Fecha Creacion</label |   <!-- <div class="alert alert-warning" id="no-result" *ngIf="pPreguntas?.length === 0"> | ||||||
|           > |     <span>No se encontraron preguntas</span> | ||||||
|           <div class="d-flex"> |   </div> --> | ||||||
|             <input |   <!-- *ngIf="pPreguntas && pPreguntas.length > 0" --> | ||||||
|               id="field_fechaCreacion" |   <div class="ds-survey" id="entities"> | ||||||
|               data-cy="fechaCreacion" |     <div class="ds-survey--all-question-wrapper"> | ||||||
|               type="datetime-local" |       <ng-container *ngIf="plantilla!.estado === 'ACTIVE'"> | ||||||
|               class="form-control" |         <p class="ds-title text-center">Plantilla en tienda</p> | ||||||
|               name="fechaCreacion" |         <p class="ds-subtitle">No puede modificar la plantilla debido a que esta ya está en la tienda.</p> | ||||||
|               formControlName="fechaCreacion" |       </ng-container> | ||||||
|               placeholder="YYYY-MM-DD HH:mm" |       <ng-container *ngIf="plantilla!.estado === 'DRAFT' && pPreguntas && pPreguntas.length === 0"> | ||||||
|             /> |         <p class="ds-title text-center">Plantilla vacía</p> | ||||||
|           </div> |         <p class="ds-subtitle">Inicie creando preguntas y opciones para la plantilla.</p> | ||||||
|  |       </ng-container> | ||||||
|  |       <ng-container *ngIf="plantilla!.estado === 'DRAFT'"> | ||||||
|  |         <div class="ds-survey--question-wrapper" *ngFor="let pPregunta of pPreguntas; let i = index; trackBy: trackId"> | ||||||
|           <div |           <div | ||||||
|             *ngIf=" |             [attr.data-index]="pPregunta.id" | ||||||
|               editForm.get('fechaCreacion')!.invalid && (editForm.get('fechaCreacion')!.dirty || editForm.get('fechaCreacion')!.touched) |             [attr.data-tipo]="pPregunta.tipo" | ||||||
|             " |             [attr.data-opcional]="pPregunta.opcional" | ||||||
|  |             class="ds-survey--question" | ||||||
|           > |           > | ||||||
|             <small |             <div class="ds-survey--titulo"> | ||||||
|               class="form-text text-danger" |               <span class="ds-survey--titulo--name"> | ||||||
|               *ngIf="editForm.get('fechaCreacion')?.errors?.required" |                 <span>{{ i + 1 }}.</span>  | ||||||
|               jhiTranslate="entity.validation.required" |                 <span | ||||||
|             > |                   class="ds-contenteditable" | ||||||
|               This field is required. |                   [attr.data-id]="pPregunta.id" | ||||||
|             </small> |                   [attr.data-tipo]="pPregunta.tipo" | ||||||
|             <small |                   contenteditable="true" | ||||||
|               class="form-text text-danger" |                   spellcheck="false" | ||||||
|               [hidden]="!editForm.get('fechaCreacion')?.errors?.ZonedDateTimelocal" |                   (blur)="updateQuestionName($event)" | ||||||
|               jhiTranslate="entity.validation.ZonedDateTimelocal" |                   >{{ pPregunta.nombre }}</span | ||||||
|             > |                 > | ||||||
|               This field should be a date and time. |               </span> | ||||||
|             </small> |               <fa-icon | ||||||
|  |                 *ngIf="plantilla!.estado === 'DRAFT'" | ||||||
|  |                 class="ds-survey--titulo--icon" | ||||||
|  |                 [icon]="faTimes" | ||||||
|  |                 (click)="deleteQuestion($event)" | ||||||
|  |                 [attr.data-id]="pPregunta.id" | ||||||
|  |                 [attr.data-type]="pPregunta.tipo" | ||||||
|  |               ></fa-icon> | ||||||
|  |             </div> | ||||||
|  |             <div> | ||||||
|  |               <span *ngIf="pPregunta.tipo === 'SINGLE'" class="ds-subtitle" | ||||||
|  |                 >Pregunta de respuesta {{ 'dataSurveyApp.PreguntaCerradaTipo.SINGLE' | translate | lowercase }} | ||||||
|  |                 {{ pPregunta.opcional ? '(opcional)' : '' }}</span | ||||||
|  |               > | ||||||
|  |               <span *ngIf="pPregunta.tipo === 'MULTIPLE'" class="ds-subtitle" | ||||||
|  |                 >Pregunta de respuesta {{ 'dataSurveyApp.PreguntaCerradaTipo.MULTIPLE' | translate | lowercase }} | ||||||
|  |                 {{ pPregunta.opcional ? '(opcional)' : '' }}</span | ||||||
|  |               > | ||||||
|  |               <span *ngIf="!pPregunta.tipo" class="ds-subtitle" | ||||||
|  |                 >Pregunta de respuesta abierta {{ pPregunta.opcional ? '(opcional)' : '' }}</span | ||||||
|  |               > | ||||||
|  |             </div> | ||||||
|  |             <ng-container *ngIf="pPregunta.tipo"> | ||||||
|  |               <ng-container *ngFor="let pPreguntaOpcion of pPreguntasOpciones; let j = index; trackBy: trackId"> | ||||||
|  |                 <ng-container *ngFor="let pPreguntaOpcionFinal of pPreguntaOpcion"> | ||||||
|  |                   <ng-container *ngIf="pPregunta.id === pPreguntaOpcionFinal.ppreguntaCerrada.id"> | ||||||
|  |                     <div | ||||||
|  |                       class="ds-survey--option ds-survey--option--base ds-survey--closed-option can-delete" | ||||||
|  |                       [attr.data-id]="pPreguntaOpcionFinal.id" | ||||||
|  |                     > | ||||||
|  |                       <!-- <input class="ds-survey--checkbox" id="{{ pPregunta.id }}-{{ pPreguntaOpcionFinal.id }}" type="checkbox" disabled /> --> | ||||||
|  |                       <label for="{{ pPregunta.id }}-{{ pPreguntaOpcionFinal.id }}">{{ pPreguntaOpcionFinal.nombre }}</label> | ||||||
|  |                       <fa-icon | ||||||
|  |                         *ngIf="plantilla!.estado === 'DRAFT'" | ||||||
|  |                         class="ds-survey--titulo--icon ds-survey--titulo--icon--small" | ||||||
|  |                         [icon]="faTimes" | ||||||
|  |                         (click)="deleteOption($event)" | ||||||
|  |                         [attr.data-optionid]="pPreguntaOpcionFinal.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]="pPregunta.id" | ||||||
|  |               > | ||||||
|  |                 <fa-icon | ||||||
|  |                   class="ds-survey--add-option--icon" | ||||||
|  |                   [icon]="faPlus" | ||||||
|  |                   [attr.data-id]="pPregunta.id" | ||||||
|  |                   [attr.data-type]="pPregunta.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="!pPregunta.tipo"> | ||||||
|  |               <textarea name="" id="" cols="30" rows="10" disabled></textarea> | ||||||
|  |             </div> | ||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
| 
 |       </ng-container> | ||||||
|         <div class="form-group"> |     </div> | ||||||
|           <label class="form-control-label" jhiTranslate="dataSurveyApp.plantilla.fechaPublicacionTienda" for="field_fechaPublicacionTienda" |   </div> | ||||||
|             >Fecha Publicacion Tienda</label | </div> | ||||||
|           > | 
 | ||||||
|           <div class="d-flex"> | <!-- Create Option Modal --> | ||||||
|             <input | <div class="modal fade ds-modal" id="crearOpcion" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true"> | ||||||
|               id="field_fechaPublicacionTienda" |   <div class="modal-dialog modal-dialog-centered" role="document"> | ||||||
|               data-cy="fechaPublicacionTienda" |     <div class="modal-content"> | ||||||
|               type="datetime-local" |       <form autocomplete="off" class="ds-form" name="editForm" role="form" novalidate (ngSubmit)="save()" [formGroup]="editForm"> | ||||||
|               class="form-control" |         <div class="modal-header"> | ||||||
|               name="fechaPublicacionTienda" |           <h1 class="modal-title" id="exampleModalLongTitle">Crear Opción</h1> | ||||||
|               formControlName="fechaPublicacionTienda" |         </div> | ||||||
|               placeholder="YYYY-MM-DD HH:mm" |         <div class="modal-body"> | ||||||
|             /> |           <!-- Survey Closed Question Create Option Modal --> | ||||||
|           </div> |           <div> | ||||||
|         </div> |             <jhi-alert-error></jhi-alert-error> | ||||||
| 
 | 
 | ||||||
|         <div class="form-group"> |             <div class="form-group"> | ||||||
|           <label class="form-control-label" jhiTranslate="dataSurveyApp.plantilla.estado" for="field_estado">Estado</label> |               <label class="form-control-label" jhiTranslate="dataSurveyApp.pPreguntaCerradaOpcion.nombre" for="field_nombre">Nombre</label> | ||||||
|           <select class="form-control" name="estado" formControlName="estado" id="field_estado" data-cy="estado"> |               <input type="text" class="form-control" name="nombre" id="field_nombre" data-cy="nombre" formControlName="nombre" /> | ||||||
|             <option [ngValue]="null">{{ 'dataSurveyApp.EstadoPlantilla.null' | translate }}</option> |               <div *ngIf="editForm.get('nombre')!.invalid && (editForm.get('nombre')!.dirty || editForm.get('nombre')!.touched)"> | ||||||
|             <option value="DRAFT">{{ 'dataSurveyApp.EstadoPlantilla.DRAFT' | translate }}</option> |                 <small | ||||||
|             <option value="ACTIVE">{{ 'dataSurveyApp.EstadoPlantilla.ACTIVE' | translate }}</option> |                   class="form-text text-danger" | ||||||
|             <option value="DELETED">{{ 'dataSurveyApp.EstadoPlantilla.DELETED' | translate }}</option> |                   *ngIf="editForm.get('nombre')?.errors?.required" | ||||||
|             <option value="DISABLED">{{ 'dataSurveyApp.EstadoPlantilla.DISABLED' | translate }}</option> |                   jhiTranslate="entity.validation.required" | ||||||
|           </select> |                 > | ||||||
|           <div *ngIf="editForm.get('estado')!.invalid && (editForm.get('estado')!.dirty || editForm.get('estado')!.touched)"> |                   This field is required. | ||||||
|             <small class="form-text text-danger" *ngIf="editForm.get('estado')?.errors?.required" jhiTranslate="entity.validation.required"> |                 </small> | ||||||
|               This field is required. |                 <small | ||||||
|             </small> |                   class="form-text text-danger" | ||||||
|           </div> |                   *ngIf="editForm.get('nombre')?.errors?.minlength" | ||||||
|         </div> |                   jhiTranslate="entity.validation.minlength" | ||||||
| 
 |                   [translateValues]="{ min: 1 }" | ||||||
|         <div class="form-group"> |                 > | ||||||
|           <label class="form-control-label" jhiTranslate="dataSurveyApp.plantilla.precio" for="field_precio">Precio</label> |                   This field is required to be at least 1 characters. | ||||||
|           <input type="number" class="form-control" name="precio" id="field_precio" data-cy="precio" formControlName="precio" /> |                 </small> | ||||||
|           <div *ngIf="editForm.get('precio')!.invalid && (editForm.get('precio')!.dirty || editForm.get('precio')!.touched)"> |                 <small | ||||||
|             <small class="form-text text-danger" *ngIf="editForm.get('precio')?.errors?.required" jhiTranslate="entity.validation.required"> |                   class="form-text text-danger" | ||||||
|               This field is required. |                   *ngIf="editForm.get('nombre')?.errors?.maxlength" | ||||||
|             </small> |                   jhiTranslate="entity.validation.maxlength" | ||||||
|             <small class="form-text text-danger" [hidden]="!editForm.get('precio')?.errors?.number" jhiTranslate="entity.validation.number"> |                   [translateValues]="{ max: 500 }" | ||||||
|               This field should be a number. |                 > | ||||||
|             </small> |                   This field cannot be longer than 500 characters. | ||||||
|           </div> |                 </small> | ||||||
|         </div> |               </div> | ||||||
| 
 |             </div> | ||||||
|         <div class="form-group"> |           </div> | ||||||
|           <label class="form-control-label" jhiTranslate="dataSurveyApp.plantilla.categoria" for="field_categoria">Categoria</label> |         </div> | ||||||
|           <select class="form-control" id="field_categoria" data-cy="categoria" name="categoria" formControlName="categoria"> |         <div class="modal-footer"> | ||||||
|             <option [ngValue]="null"></option> |           <input id="createAnother" type="checkbox" (change)="createAnotherChange($event)" /> | ||||||
|             <option |           <label for="createAnother">Crear otra</label> | ||||||
|               [ngValue]="categoriaOption.id === editForm.get('categoria')!.value?.id ? editForm.get('categoria')!.value : categoriaOption" |           <button id="cancelBtn" type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal"> | ||||||
|               *ngFor="let categoriaOption of categoriasSharedCollection; trackBy: trackCategoriaById" |             <fa-icon icon="arrow-left"></fa-icon>  <span jhiTranslate="entity.action.cancel">Cancel</span> | ||||||
|             > |           </button> | ||||||
|               {{ categoriaOption.nombre }} |           <button | ||||||
|             </option> |             type="submit" | ||||||
|           </select> |             id="save-entity" | ||||||
|         </div> |             data-cy="entityCreateSaveButton" | ||||||
|       </div> |             class="ds-btn ds-btn--primary" | ||||||
| 
 |             [disabled]="editForm.invalid || isSaving" | ||||||
|       <div> |           > | ||||||
|         <button type="button" id="cancel-save" data-cy="entityCreateCancelButton" class="btn btn-secondary" (click)="previousState()"> |             <span jhiTranslate="entity.action.create">Create</span> | ||||||
|           <fa-icon icon="ban"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span> |           </button> | ||||||
|         </button> |         </div> | ||||||
| 
 |       </form> | ||||||
|         <button |     </div> | ||||||
|           type="submit" |   </div> | ||||||
|           id="save-entity" | </div> | ||||||
|           data-cy="entityCreateSaveButton" | 
 | ||||||
|           [disabled]="editForm.invalid || isSaving" | <!-- ------------------------------------------------------------------------------------------------- --> | ||||||
|           class="btn btn-primary" | 
 | ||||||
|         > | <!-- Create Question Modal --> | ||||||
|           <fa-icon icon="save"></fa-icon> <span jhiTranslate="entity.action.save">Save</span> | <div | ||||||
|         </button> |   class="modal fade ds-modal" | ||||||
|       </div> |   id="crearPregunta" | ||||||
|     </form> |   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="exampleModalLongTitle1">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_nombre2" 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_tipo2" 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> | </div> | ||||||
|  |  | ||||||
|  | @ -1,4 +1,9 @@ | ||||||
| import { Component, OnInit } from '@angular/core'; | import { PPreguntaAbierta, IPPreguntaAbierta } from './../../p-pregunta-abierta/p-pregunta-abierta.model'; | ||||||
|  | import { PPreguntaCerrada } from './../../p-pregunta-cerrada/p-pregunta-cerrada.model'; | ||||||
|  | import { PPreguntaCerradaOpcion, IPPreguntaCerradaOpcion } from './../../p-pregunta-cerrada-opcion/p-pregunta-cerrada-opcion.model'; | ||||||
|  | import { PPreguntaAbiertaService } from './../../p-pregunta-abierta/service/p-pregunta-abierta.service'; | ||||||
|  | import { PPreguntaCerradaOpcionService } from './../../p-pregunta-cerrada-opcion/service/p-pregunta-cerrada-opcion.service'; | ||||||
|  | import { AfterViewChecked, Component, OnInit } from '@angular/core'; | ||||||
| import { HttpResponse } from '@angular/common/http'; | import { HttpResponse } from '@angular/common/http'; | ||||||
| import { FormBuilder, Validators } from '@angular/forms'; | import { FormBuilder, Validators } from '@angular/forms'; | ||||||
| import { ActivatedRoute } from '@angular/router'; | import { ActivatedRoute } from '@angular/router'; | ||||||
|  | @ -12,67 +17,258 @@ import { IPlantilla, Plantilla } from '../plantilla.model'; | ||||||
| import { PlantillaService } from '../service/plantilla.service'; | import { PlantillaService } from '../service/plantilla.service'; | ||||||
| import { ICategoria } from 'app/entities/categoria/categoria.model'; | import { ICategoria } from 'app/entities/categoria/categoria.model'; | ||||||
| import { CategoriaService } from 'app/entities/categoria/service/categoria.service'; | import { CategoriaService } from 'app/entities/categoria/service/categoria.service'; | ||||||
|  | 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 { IPPreguntaCerrada } from 'app/entities/p-pregunta-cerrada/p-pregunta-cerrada.model'; | ||||||
|  | import { PPreguntaCerradaService } from 'app/entities/p-pregunta-cerrada/service/p-pregunta-cerrada.service'; | ||||||
|  | import { PPreguntaCerradaDeleteDialogComponent } from 'app/entities/p-pregunta-cerrada/delete/p-pregunta-cerrada-delete-dialog.component'; | ||||||
|  | 
 | ||||||
|  | import { faTimes, faPlus, faQuestion, faPollH, faEye } from '@fortawesome/free-solid-svg-icons'; | ||||||
|  | import { PreguntaCerradaTipo } from 'app/entities/enumerations/pregunta-cerrada-tipo.model'; | ||||||
|  | import { PlantillaDeleteQuestionDialogComponent } from '../plantilla-delete-question-dialog/plantilla-delete-question-dialog.component'; | ||||||
|  | import { PlantillaDeleteOptionDialogComponent } from '../plantilla-delete-option-dialog/plantilla-delete-option-dialog.component'; | ||||||
|  | 
 | ||||||
|  | import { ParametroAplicacionService } from './../../parametro-aplicacion/service/parametro-aplicacion.service'; | ||||||
|  | import { IParametroAplicacion } from './../../parametro-aplicacion/parametro-aplicacion.model'; | ||||||
|  | import { Router } from '@angular/router'; | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'jhi-plantilla-update', |   selector: 'jhi-plantilla-update', | ||||||
|   templateUrl: './plantilla-update.component.html', |   templateUrl: './plantilla-update.component.html', | ||||||
| }) | }) | ||||||
| export class PlantillaUpdateComponent implements OnInit { | export class PlantillaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|  |   faTimes = faTimes; | ||||||
|  |   faPlus = faPlus; | ||||||
|  |   faPollH = faPollH; | ||||||
|  |   faQuestion = faQuestion; | ||||||
|  |   faEye = faEye; | ||||||
|  | 
 | ||||||
|   isSaving = false; |   isSaving = false; | ||||||
|  |   isSavingQuestion = false; | ||||||
| 
 | 
 | ||||||
|   categoriasSharedCollection: ICategoria[] = []; |   categoriasSharedCollection: ICategoria[] = []; | ||||||
|  |   usuarioExtrasSharedCollection: IUsuarioExtra[] = []; | ||||||
| 
 | 
 | ||||||
|   editForm = this.fb.group({ |   editForm = this.fb.group({ | ||||||
|     id: [], |     id: [], | ||||||
|     nombre: [null, [Validators.minLength(1), Validators.maxLength(50)]], |     nombre: [null, [Validators.required, Validators.minLength(1), Validators.maxLength(500)]], | ||||||
|     descripcion: [], |  | ||||||
|     fechaCreacion: [null, [Validators.required]], |  | ||||||
|     fechaPublicacionTienda: [], |  | ||||||
|     estado: [null, [Validators.required]], |  | ||||||
|     precio: [null, [Validators.required]], |  | ||||||
|     categoria: [], |  | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|  |   editFormQuestion = this.fb.group({ | ||||||
|  |     id: [], | ||||||
|  |     nombre: [null, [Validators.required, Validators.minLength(1), Validators.maxLength(500)]], | ||||||
|  |     tipo: [PreguntaCerradaTipo.SINGLE], | ||||||
|  |     opcional: [false], | ||||||
|  |     tipopregunta: ['CLOSED'], | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   pPreguntas?: any[]; | ||||||
|  |   pPreguntasOpciones?: any[]; | ||||||
|  |   plantilla: Plantilla | null = null; | ||||||
|  |   parametrosAplicacion?: IParametroAplicacion | null = null; | ||||||
|  | 
 | ||||||
|  |   isLoading = false; | ||||||
|  | 
 | ||||||
|  |   createAnother: Boolean = false; | ||||||
|  |   createAnotherQuestion: Boolean = false; | ||||||
|  |   selectedQuestionToCreateOption: IPPreguntaCerrada | null = null; | ||||||
|  | 
 | ||||||
|   constructor( |   constructor( | ||||||
|     protected plantillaService: PlantillaService, |     protected plantillaService: PlantillaService, | ||||||
|     protected categoriaService: CategoriaService, |     protected categoriaService: CategoriaService, | ||||||
|  |     protected usuarioExtraService: UsuarioExtraService, | ||||||
|     protected activatedRoute: ActivatedRoute, |     protected activatedRoute: ActivatedRoute, | ||||||
|     protected fb: FormBuilder |     protected fb: FormBuilder, | ||||||
|  |     protected modalService: NgbModal, | ||||||
|  |     protected pPreguntaCerradaService: PPreguntaCerradaService, | ||||||
|  |     protected pPreguntaCerradaOpcionService: PPreguntaCerradaOpcionService, | ||||||
|  |     protected parametroAplicacionService: ParametroAplicacionService, | ||||||
|  |     protected pPreguntaAbiertaService: PPreguntaAbiertaService, | ||||||
|  |     protected router: Router | ||||||
|   ) {} |   ) {} | ||||||
| 
 | 
 | ||||||
|  |   loadAll(): void { | ||||||
|  |     this.isLoading = true; | ||||||
|  | 
 | ||||||
|  |     this.plantillaService.findQuestions(this.plantilla?.id!).subscribe( | ||||||
|  |       (res: any) => { | ||||||
|  |         this.isLoading = false; | ||||||
|  |         this.pPreguntas = res.body ?? []; | ||||||
|  |       }, | ||||||
|  |       () => { | ||||||
|  |         this.isLoading = false; | ||||||
|  |       } | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     this.plantillaService.findQuestionsOptions(this.plantilla?.id!).subscribe( | ||||||
|  |       (res: any) => { | ||||||
|  |         this.isLoading = false; | ||||||
|  |         this.pPreguntasOpciones = res.body ?? []; | ||||||
|  |       }, | ||||||
|  |       () => { | ||||||
|  |         this.isLoading = false; | ||||||
|  |       } | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   async loadAplicationParameters(): Promise<void> { | ||||||
|  |     const params = await this.parametroAplicacionService.find(1).toPromise(); | ||||||
|  |     this.parametrosAplicacion = params.body; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   ngOnInit(): void { |   ngOnInit(): void { | ||||||
|     this.activatedRoute.data.subscribe(({ plantilla }) => { |     this.activatedRoute.data.subscribe(({ plantilla }) => { | ||||||
|       if (plantilla.id === undefined) { |       if (plantilla.id === undefined) { | ||||||
|         const today = dayjs().startOf('day'); |         const today = dayjs().startOf('day'); | ||||||
|         plantilla.fechaCreacion = today; |         plantilla.fechaCreacion = today; | ||||||
|         plantilla.fechaPublicacionTienda = today; |         plantilla.fechaPublicacion = today; | ||||||
|  |         plantilla.fechaFinalizar = today; | ||||||
|  |         plantilla.fechaFinalizada = today; | ||||||
|  |       } else { | ||||||
|  |         this.plantilla = plantilla; | ||||||
|  |         this.loadAll(); | ||||||
|  |         this.loadAplicationParameters(); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       this.updateForm(plantilla); |       // this.updateForm(plantilla);
 | ||||||
| 
 | 
 | ||||||
|       this.loadRelationshipsOptions(); |       // this.loadRelationshipsOptions();
 | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   ngAfterViewChecked(): void { | ||||||
|  |     // this.initListeners();
 | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   trackId(index: number, item: IPPreguntaCerrada): number { | ||||||
|  |     return item.id!; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   delete(pPreguntaCerrada: IPPreguntaCerrada): void { | ||||||
|  |     const modalRef = this.modalService.open(PPreguntaCerradaDeleteDialogComponent, { size: 'lg', backdrop: 'static' }); | ||||||
|  |     modalRef.componentInstance.pPreguntaCerrada = pPreguntaCerrada; | ||||||
|  |     // 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 { |   previousState(): void { | ||||||
|     window.history.back(); |     window.history.back(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   save(): void { |   publishSurvey(): void {} | ||||||
|     this.isSaving = true; | 
 | ||||||
|     const plantilla = this.createFromForm(); |   finishSurvey(): void {} | ||||||
|     if (plantilla.id !== undefined) { | 
 | ||||||
|       this.subscribeToSaveResponse(this.plantillaService.update(plantilla)); |   addOption(event: any): void {} | ||||||
|     } else { | 
 | ||||||
|       this.subscribeToSaveResponse(this.plantillaService.create(plantilla)); |   openPreview() { | ||||||
|  |     const surveyId = this.plantilla?.id; | ||||||
|  |     this.router.navigate(['/plantilla', surveyId, 'preview']); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   resetForm(event: any): void { | ||||||
|  |     this.editForm.reset(); | ||||||
|  |     if (event !== null) { | ||||||
|  |       const id = event.target.dataset.id; | ||||||
|  |       this.pPreguntaCerradaService.find(id).subscribe(e => { | ||||||
|  |         this.selectedQuestionToCreateOption = e.body; | ||||||
|  |       }); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   trackCategoriaById(index: number, item: ICategoria): number { |   deleteQuestion(event: any) { | ||||||
|  |     const modalRef = this.modalService.open(PlantillaDeleteQuestionDialogComponent, { 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.pPreguntaCerradaService.delete(id).subscribe(e => { | ||||||
|  |               this.loadAll(); | ||||||
|  |             }); | ||||||
|  |           } else { | ||||||
|  |             // Delete question options
 | ||||||
|  |             this.pPreguntaCerradaOpcionService.deleteMany(optionIdsToDelete).subscribe(e => { | ||||||
|  |               // Delete question
 | ||||||
|  |               this.pPreguntaCerradaService.delete(id).subscribe(e => { | ||||||
|  |                 this.loadAll(); | ||||||
|  |               }); | ||||||
|  |             }); | ||||||
|  |           } | ||||||
|  |         } else { | ||||||
|  |           // Delete open question
 | ||||||
|  |           this.pPreguntaAbiertaService.delete(id).subscribe(e => { | ||||||
|  |             this.loadAll(); | ||||||
|  |           }); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   deleteOption(event: any): void { | ||||||
|  |     const modalRef = this.modalService.open(PlantillaDeleteOptionDialogComponent, { size: 'lg', backdrop: 'static' }); | ||||||
|  |     modalRef.closed.subscribe(reason => { | ||||||
|  |       if (reason === 'confirm') { | ||||||
|  |         const id = event.target.dataset.optionid; | ||||||
|  |         this.pPreguntaCerradaOpcionService.delete(id).subscribe(e => { | ||||||
|  |           this.pPreguntas = []; | ||||||
|  |           this.pPreguntasOpciones = []; | ||||||
|  |           this.loadAll(); | ||||||
|  |         }); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   save(): void { | ||||||
|  |     this.isSaving = true; | ||||||
|  |     const pPreguntaCerradaOpcion = this.createFromForm(); | ||||||
|  |     if (pPreguntaCerradaOpcion.id !== undefined) { | ||||||
|  |       this.subscribeToSaveResponse(this.pPreguntaCerradaOpcionService.update(pPreguntaCerradaOpcion)); | ||||||
|  |     } else { | ||||||
|  |       this.subscribeToSaveResponse( | ||||||
|  |         this.pPreguntaCerradaOpcionService.create(pPreguntaCerradaOpcion, this.selectedQuestionToCreateOption?.id!) | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   trackPPreguntaCerradaById(index: number, item: IPPreguntaCerrada): number { | ||||||
|     return item.id!; |     return item.id!; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   protected subscribeToSaveResponse(result: Observable<HttpResponse<IPlantilla>>): void { |   protected subscribeToSaveResponse(result: Observable<HttpResponse<IPPreguntaCerradaOpcion>>): void { | ||||||
|     result.pipe(finalize(() => this.onSaveFinalize())).subscribe( |     result.pipe(finalize(() => this.onSaveFinalize())).subscribe( | ||||||
|       () => this.onSaveSuccess(), |       () => this.onSaveSuccess(), | ||||||
|       () => this.onSaveError() |       () => this.onSaveError() | ||||||
|  | @ -80,7 +276,14 @@ export class PlantillaUpdateComponent implements OnInit { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   protected onSaveSuccess(): void { |   protected onSaveSuccess(): void { | ||||||
|     this.previousState(); |     // this.previousState();
 | ||||||
|  |     this.resetForm(null); | ||||||
|  |     this.pPreguntas = []; | ||||||
|  |     this.pPreguntasOpciones = []; | ||||||
|  |     this.loadAll(); | ||||||
|  |     if (!this.createAnother) { | ||||||
|  |       $('#cancelBtn').click(); | ||||||
|  |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   protected onSaveError(): void { |   protected onSaveError(): void { | ||||||
|  | @ -91,51 +294,159 @@ export class PlantillaUpdateComponent implements OnInit { | ||||||
|     this.isSaving = false; |     this.isSaving = false; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   protected updateForm(plantilla: IPlantilla): void { |   protected createFromForm(): IPPreguntaCerradaOpcion { | ||||||
|     this.editForm.patchValue({ |     return { | ||||||
|       id: plantilla.id, |       ...new PPreguntaCerradaOpcion(), | ||||||
|       nombre: plantilla.nombre, |       id: undefined, | ||||||
|       descripcion: plantilla.descripcion, |       nombre: this.editForm.get(['nombre'])!.value, | ||||||
|       fechaCreacion: plantilla.fechaCreacion ? plantilla.fechaCreacion.format(DATE_TIME_FORMAT) : null, |       orden: 10, | ||||||
|       fechaPublicacionTienda: plantilla.fechaPublicacionTienda ? plantilla.fechaPublicacionTienda.format(DATE_TIME_FORMAT) : null, |       pPreguntaCerrada: this.selectedQuestionToCreateOption, | ||||||
|       estado: plantilla.estado, |     }; | ||||||
|       precio: plantilla.precio, |   } | ||||||
|       categoria: plantilla.categoria, |  | ||||||
|     }); |  | ||||||
| 
 | 
 | ||||||
|     this.categoriasSharedCollection = this.categoriaService.addCategoriaToCollectionIfMissing( |   createAnotherChange(event: any) { | ||||||
|       this.categoriasSharedCollection, |     this.createAnother = event.target.checked; | ||||||
|       plantilla.categoria |   } | ||||||
|  | 
 | ||||||
|  |   createQuestion(): void { | ||||||
|  |     const surveyId = this.plantilla?.id; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected createFromFormClosedQuestion(): IPPreguntaCerrada { | ||||||
|  |     return { | ||||||
|  |       // ...new PPreguntaCerrada(),
 | ||||||
|  |       id: undefined, | ||||||
|  |       nombre: this.editFormQuestion.get(['nombre'])!.value, | ||||||
|  |       tipo: this.editFormQuestion.get(['tipo'])!.value, | ||||||
|  |       opcional: this.editFormQuestion.get(['opcional'])!.value, | ||||||
|  |       orden: 10, | ||||||
|  |       plantilla: this.plantilla, | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected createFromFormOpenQuestion(): IPPreguntaAbierta { | ||||||
|  |     return { | ||||||
|  |       // ...new PPreguntaAbierta(),
 | ||||||
|  |       id: undefined, | ||||||
|  |       nombre: this.editFormQuestion.get(['nombre'])!.value, | ||||||
|  |       opcional: this.editFormQuestion.get(['opcional'])!.value, | ||||||
|  |       orden: 10, | ||||||
|  |       plantilla: this.plantilla, | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   createAnotherQuestionChange(event: any) { | ||||||
|  |     this.createAnotherQuestion = event.target.checked; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   saveQuestion(): void { | ||||||
|  |     this.isSavingQuestion = true; | ||||||
|  |     const tipoPregunta = this.editFormQuestion.get(['tipopregunta'])!.value; | ||||||
|  | 
 | ||||||
|  |     if (tipoPregunta === 'CLOSED') { | ||||||
|  |       const pPreguntaCerrada = this.createFromFormClosedQuestion(); | ||||||
|  |       if (pPreguntaCerrada.id !== undefined) { | ||||||
|  |         this.subscribeToSaveResponseQuestionClosed(this.pPreguntaCerradaService.update(pPreguntaCerrada)); | ||||||
|  |       } else { | ||||||
|  |         this.subscribeToSaveResponseQuestionClosed(this.pPreguntaCerradaService.create(pPreguntaCerrada)); | ||||||
|  |       } | ||||||
|  |     } else if (tipoPregunta === 'OPEN') { | ||||||
|  |       const pPreguntaAbierta = this.createFromFormOpenQuestion(); | ||||||
|  |       if (pPreguntaAbierta.id !== undefined) { | ||||||
|  |         this.subscribeToSaveResponseQuestionOpen(this.pPreguntaAbiertaService.update(pPreguntaAbierta)); | ||||||
|  |       } else { | ||||||
|  |         this.subscribeToSaveResponseQuestionOpen(this.pPreguntaAbiertaService.create(pPreguntaAbierta)); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected subscribeToSaveResponseQuestionClosed(result: Observable<HttpResponse<IPPreguntaCerrada>>): void { | ||||||
|  |     result.pipe(finalize(() => this.onSaveFinalizeQuestion())).subscribe( | ||||||
|  |       () => this.onSaveSuccessQuestion(), | ||||||
|  |       () => this.onSaveErrorQuestion() | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   protected loadRelationshipsOptions(): void { |   protected subscribeToSaveResponseQuestionOpen(result: Observable<HttpResponse<IPPreguntaAbierta>>): void { | ||||||
|     this.categoriaService |     result.pipe(finalize(() => this.onSaveFinalizeQuestion())).subscribe( | ||||||
|       .query() |       () => this.onSaveSuccessQuestion(), | ||||||
|       .pipe(map((res: HttpResponse<ICategoria[]>) => res.body ?? [])) |       () => this.onSaveErrorQuestion() | ||||||
|       .pipe( |     ); | ||||||
|         map((categorias: ICategoria[]) => |  | ||||||
|           this.categoriaService.addCategoriaToCollectionIfMissing(categorias, this.editForm.get('categoria')!.value) |  | ||||||
|         ) |  | ||||||
|       ) |  | ||||||
|       .subscribe((categorias: ICategoria[]) => (this.categoriasSharedCollection = categorias)); |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   protected createFromForm(): IPlantilla { |   protected onSaveSuccessQuestion(): void { | ||||||
|     return { |     this.editFormQuestion.reset({ tipo: PreguntaCerradaTipo.SINGLE, tipopregunta: 'CLOSED', opcional: false }); | ||||||
|       ...new Plantilla(), |     this.editForm.reset(); | ||||||
|       id: this.editForm.get(['id'])!.value, |     this.pPreguntas = []; | ||||||
|       nombre: this.editForm.get(['nombre'])!.value, |     this.pPreguntasOpciones = []; | ||||||
|       descripcion: this.editForm.get(['descripcion'])!.value, |     this.loadAll(); | ||||||
|       fechaCreacion: this.editForm.get(['fechaCreacion'])!.value |     if (!this.createAnotherQuestion) { | ||||||
|         ? dayjs(this.editForm.get(['fechaCreacion'])!.value, DATE_TIME_FORMAT) |       $('#cancelBtnQuestion').click(); | ||||||
|         : undefined, |     } | ||||||
|       fechaPublicacionTienda: this.editForm.get(['fechaPublicacionTienda'])!.value |   } | ||||||
|         ? dayjs(this.editForm.get(['fechaPublicacionTienda'])!.value, DATE_TIME_FORMAT) | 
 | ||||||
|         : undefined, |   protected onSaveErrorQuestion(): void { | ||||||
|       estado: this.editForm.get(['estado'])!.value, |     // Api for inheritance.
 | ||||||
|       precio: this.editForm.get(['precio'])!.value, |   } | ||||||
|       categoria: this.editForm.get(['categoria'])!.value, | 
 | ||||||
|     }; |   protected onSaveFinalizeQuestion(): void { | ||||||
|  |     this.isSavingQuestion = false; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   updateTemplateName(event: any) { | ||||||
|  |     const updatedSurveyName = event.target.innerText; | ||||||
|  |     if (updatedSurveyName !== this.plantilla?.nombre) { | ||||||
|  |       const survey = { ...this.plantilla }; | ||||||
|  |       survey.nombre = updatedSurveyName; | ||||||
|  | 
 | ||||||
|  |       this.plantillaService.update(survey).subscribe(res => {}); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   updateQuestionName(event: any): void { | ||||||
|  |     const questionType = event.target.dataset.tipo; | ||||||
|  |     const questionId = event.target.dataset.id; | ||||||
|  |     const questionName = event.target.innerText; | ||||||
|  |     if (questionType) { | ||||||
|  |       // Closed question
 | ||||||
|  |       this.pPreguntaCerradaService.find(questionId).subscribe(res => { | ||||||
|  |         const pPreguntaCerrada: PPreguntaCerrada | null = res.body ?? null; | ||||||
|  |         const updatedPPreguntaCerrada = { ...pPreguntaCerrada }; | ||||||
|  |         if (questionName !== pPreguntaCerrada?.nombre && pPreguntaCerrada !== null) { | ||||||
|  |           updatedPPreguntaCerrada.nombre = questionName; | ||||||
|  |           this.pPreguntaCerradaService.update(updatedPPreguntaCerrada).subscribe(updatedQuestion => { | ||||||
|  |             console.log(updatedQuestion); | ||||||
|  |           }); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     } else { | ||||||
|  |       // Open question
 | ||||||
|  |       // Closed question
 | ||||||
|  |       this.pPreguntaAbiertaService.find(questionId).subscribe(res => { | ||||||
|  |         const pPreguntaAbierta: PPreguntaAbierta | null = res.body ?? null; | ||||||
|  |         const updatedPPreguntaAbierta = { ...pPreguntaAbierta }; | ||||||
|  |         if (questionName !== pPreguntaAbierta?.nombre && pPreguntaAbierta !== null) { | ||||||
|  |           updatedPPreguntaAbierta.nombre = questionName; | ||||||
|  |           this.pPreguntaAbiertaService.update(updatedPPreguntaAbierta).subscribe(updatedQuestion => { | ||||||
|  |             console.log(updatedQuestion); | ||||||
|  |           }); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |     // const questionId = event.target.dataset.id;
 | ||||||
|  |     // const survey = { ...this.plantilla };
 | ||||||
|  |     // survey.nombre = updatedQuestionName;
 | ||||||
|  |     // // Prevent user update by setting to null
 | ||||||
|  |     // survey.usuarioExtra!.user = null;
 | ||||||
|  | 
 | ||||||
|  |     // this.plantillaService.updateSurvey(survey).subscribe(res => {});
 | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   trackCategoriaById(index: number, item: ICategoria): number { | ||||||
|  |     return item.id!; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   trackUsuarioExtraById(index: number, item: IUsuarioExtra): number { | ||||||
|  |     return item.id!; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,16 +1,10 @@ | ||||||
| <form *ngIf="usuarioEncuesta" name="deleteForm" (ngSubmit)="confirmDelete(usuarioEncuesta.id!)"> | <form class="ds-form" *ngIf="usuarioEncuesta" name="deleteForm" (ngSubmit)="confirmDelete(usuarioEncuesta.id!)"> | ||||||
|   <div class="modal-header"> |  | ||||||
|     <h4 class="modal-title" data-cy="usuarioEncuestaDeleteDialogHeading" 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"> |   <div class="modal-body"> | ||||||
|     <jhi-alert-error></jhi-alert-error> |     <p class="ds-title--small">Salir de colaboración</p> | ||||||
| 
 |  | ||||||
|     <p |     <p | ||||||
|  |       class="ds-subtitle" | ||||||
|       id="jhi-delete-usuarioEncuesta-heading" |       id="jhi-delete-usuarioEncuesta-heading" | ||||||
|       jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.question" |       jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.questionGetOut" | ||||||
|       [translateValues]="{ id: usuarioEncuesta.id }" |       [translateValues]="{ id: usuarioEncuesta.id }" | ||||||
|     > |     > | ||||||
|       Are you sure you want to delete this Usuario Encuesta? |       Are you sure you want to delete this Usuario Encuesta? | ||||||
|  | @ -18,12 +12,12 @@ | ||||||
|   </div> |   </div> | ||||||
| 
 | 
 | ||||||
|   <div class="modal-footer"> |   <div class="modal-footer"> | ||||||
|     <button type="button" class="btn btn-secondary" data-dismiss="modal" (click)="cancel()"> |     <button type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal" (click)="cancel()"> | ||||||
|       <fa-icon icon="ban"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span> |       <fa-icon icon="arrow-left"></fa-icon> <span jhiTranslate="entity.action.cancel">Cancel</span> | ||||||
|     </button> |     </button> | ||||||
| 
 | 
 | ||||||
|     <button id="jhi-confirm-delete-usuarioEncuesta" data-cy="entityConfirmDeleteButton" type="submit" class="btn btn-danger"> |     <button id="jhi-confirm-delete-usuarioEncuesta" data-cy="entityConfirmDeleteButton" type="submit" class="btn btn-danger"> | ||||||
|       <fa-icon icon="times"></fa-icon> <span jhiTranslate="entity.action.delete">Delete</span> |       <fa-icon icon="sign-out-alt"></fa-icon> <span jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.getOut">Get Out</span> | ||||||
|     </button> |     </button> | ||||||
|   </div> |   </div> | ||||||
| </form> | </form> | ||||||
|  |  | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| <div> | <div> | ||||||
|   <h2 id="page-heading" data-cy="UsuarioEncuestaHeading"> |   <h2 id="page-heading" data-cy="UsuarioEncuestaHeading"> | ||||||
|     <span jhiTranslate="dataSurveyApp.usuarioEncuesta.home.title">Colaboraciones en Encuestas</span> |     <span class="ds-title" jhiTranslate="dataSurveyApp.usuarioEncuesta.home.title">Colaboraciones </span> | ||||||
|  |     <p class="ds-subtitle">Gestione las colaboraciones en encuestas a las que se encuentra agregado</p> | ||||||
| 
 | 
 | ||||||
|     <div class="d-flex justify-content-end"> |     <div class="d-flex justify-content-end"> | ||||||
|       <button class="ds-btn ds-btn--secondary mr-2" (click)="loadAll()" [disabled]="isLoading"> |       <button class="ds-btn ds-btn--secondary mr-2" (click)="loadAll()" [disabled]="isLoading"> | ||||||
|  | @ -54,7 +55,7 @@ | ||||||
|         > |         > | ||||||
|           <td jhiTranslate="{{ 'dataSurveyApp.RolColaborador.' + usuarioEncuesta.rol }}">{{ usuarioEncuesta.rol }}</td> |           <td jhiTranslate="{{ 'dataSurveyApp.RolColaborador.' + usuarioEncuesta.rol }}">{{ usuarioEncuesta.rol }}</td> | ||||||
|           <td jhiTranslate="{{ 'dataSurveyApp.EstadoColaborador.' + usuarioEncuesta.estado }}">{{ usuarioEncuesta.estado }}</td> |           <td jhiTranslate="{{ 'dataSurveyApp.EstadoColaborador.' + usuarioEncuesta.estado }}">{{ usuarioEncuesta.estado }}</td> | ||||||
|           <td>{{ usuarioEncuesta.fechaAgregado | formatMediumDatetime }}</td> |           <td>{{ usuarioEncuesta.fechaAgregado | formatShortDatetime | titlecase }}</td> | ||||||
|           <td> |           <td> | ||||||
|             <div *ngIf="usuarioEncuesta.encuesta"> |             <div *ngIf="usuarioEncuesta.encuesta"> | ||||||
|               <a>{{ usuarioEncuesta.encuesta?.nombre }} (#{{ usuarioEncuesta.encuesta?.id }})</a> |               <a>{{ usuarioEncuesta.encuesta?.nombre }} (#{{ usuarioEncuesta.encuesta?.id }})</a> | ||||||
|  | @ -63,25 +64,16 @@ | ||||||
|           <td class="text-right"> |           <td class="text-right"> | ||||||
|             <div class="btn-group" *ngIf="usuarioEncuesta.encuesta"> |             <div class="btn-group" *ngIf="usuarioEncuesta.encuesta"> | ||||||
|               <button |               <button | ||||||
|                 *ngIf="usuarioEncuesta.rol === 'WRITE'" |  | ||||||
|                 type="button" |                 type="button" | ||||||
|                 [routerLink]="['/encuesta', usuarioEncuesta.encuesta.id, 'edit']" |                 [routerLink]="['/encuesta', usuarioEncuesta.encuesta.id, 'edit']" | ||||||
|                 class="ds-btn ds-btn--primary" |                 class="ds-btn ds-btn--primary" | ||||||
|                 [disabled]="isLoading" |                 [disabled]="isLoading" | ||||||
|               > |               > | ||||||
|                 <fa-icon [icon]="faPencilAlt"></fa-icon>  <span>Editar encuesta</span> |                 <span>Editar encuesta</span> | ||||||
|               </button> |  | ||||||
|               <button |  | ||||||
|                 type="button" |  | ||||||
|                 [routerLink]="['/encuesta', usuarioEncuesta.encuesta.id, 'preview']" |  | ||||||
|                 class="ds-btn ds-btn--success" |  | ||||||
|                 [disabled]="isLoading" |  | ||||||
|               > |  | ||||||
|                 <fa-icon [icon]="faPollH"></fa-icon>  <span>Ver vista previa</span> |  | ||||||
|               </button> |               </button> | ||||||
|               <button type="submit" (click)="delete(usuarioEncuesta)" class="ds-btn ds-btn--danger btn-sm" data-cy="entityDeleteButton"> |               <button type="submit" (click)="delete(usuarioEncuesta)" class="ds-btn ds-btn--danger btn-sm" data-cy="entityDeleteButton"> | ||||||
|                 <fa-icon icon="times"></fa-icon> |                 <fa-icon icon="sign-out-alt"></fa-icon> | ||||||
|                 <span class="d-none d-md-inline" jhiTranslate="entity.action.delete">Delete</span> |                 <span class="d-none d-md-inline" jhiTranslate="dataSurveyApp.usuarioEncuesta.delete.getOut">Get Out</span> | ||||||
|               </button> |               </button> | ||||||
|             </div> |             </div> | ||||||
|           </td> |           </td> | ||||||
|  |  | ||||||
|  | @ -27,8 +27,9 @@ export class UsuarioEncuestaService { | ||||||
| 
 | 
 | ||||||
|   update(usuarioEncuesta: IUsuarioEncuesta): Observable<EntityResponseType> { |   update(usuarioEncuesta: IUsuarioEncuesta): Observable<EntityResponseType> { | ||||||
|     const copy = this.convertDateFromClient(usuarioEncuesta); |     const copy = this.convertDateFromClient(usuarioEncuesta); | ||||||
|  |     const url = `${this.resourceUrl}/${getUsuarioEncuestaIdentifier(usuarioEncuesta) as number}`; | ||||||
|     return this.http |     return this.http | ||||||
|       .put<IUsuarioEncuesta>(`${this.resourceUrl}/${getUsuarioEncuestaIdentifier(usuarioEncuesta) as number}`, copy, { |       .put<IUsuarioEncuesta>(url, copy, { | ||||||
|         observe: 'response', |         observe: 'response', | ||||||
|       }) |       }) | ||||||
|       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); |       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); | ||||||
|  | @ -36,8 +37,9 @@ export class UsuarioEncuestaService { | ||||||
| 
 | 
 | ||||||
|   partialUpdate(usuarioEncuesta: IUsuarioEncuesta): Observable<EntityResponseType> { |   partialUpdate(usuarioEncuesta: IUsuarioEncuesta): Observable<EntityResponseType> { | ||||||
|     const copy = this.convertDateFromClient(usuarioEncuesta); |     const copy = this.convertDateFromClient(usuarioEncuesta); | ||||||
|  |     const url = `${this.resourceUrl}/${getUsuarioEncuestaIdentifier(usuarioEncuesta) as number}`; | ||||||
|     return this.http |     return this.http | ||||||
|       .patch<IUsuarioEncuesta>(`${this.resourceUrl}/${getUsuarioEncuestaIdentifier(usuarioEncuesta) as number}`, copy, { |       .patch<IUsuarioEncuesta>(url, copy, { | ||||||
|         observe: 'response', |         observe: 'response', | ||||||
|       }) |       }) | ||||||
|       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); |       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); | ||||||
|  | @ -49,6 +51,12 @@ export class UsuarioEncuestaService { | ||||||
|       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); |       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   findCollaborators(id: number): Observable<EntityResponseType> { | ||||||
|  |     return this.http | ||||||
|  |       .get<any>(`${this.resourceUrl}/encuesta/${id}`, { observe: 'response' }) | ||||||
|  |       .pipe(map((res: EntityResponseType) => this.convertDateFromServer(res))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   query(req?: any): Observable<EntityArrayResponseType> { |   query(req?: any): Observable<EntityArrayResponseType> { | ||||||
|     const options = createRequestOption(req); |     const options = createRequestOption(req); | ||||||
|     return this.http |     return this.http | ||||||
|  |  | ||||||
|  | @ -87,14 +87,14 @@ | ||||||
|           </td>--> |           </td>--> | ||||||
|           <td class="text-right"> |           <td class="text-right"> | ||||||
|             <div class="btn-group"> |             <div class="btn-group"> | ||||||
|               <button |               <!-- <button | ||||||
|                 type="submit" |                 type="submit" | ||||||
|                 [routerLink]="['/usuario-extra', usuarioExtra.id, 'view']" |                 [routerLink]="['/usuario-extra', usuarioExtra.id, 'view']" | ||||||
|                 class="ds-btn ds-btn--primary btn-sm" |                 class="ds-btn ds-btn--primary btn-sm" | ||||||
|                 data-cy="entityDetailsButton" |                 data-cy="entityDetailsButton" | ||||||
|               > |               > | ||||||
|                 <span class="d-none d-md-inline" jhiTranslate="entity.action.view">View</span> |                 <span class="d-none d-md-inline" jhiTranslate="entity.action.view">View</span> | ||||||
|               </button> |               </button> --> | ||||||
| 
 | 
 | ||||||
|               <button type="submit" (click)="delete(usuarioExtra)" class="ds-btn ds-btn--danger" data-cy="entityDeleteButton"> |               <button type="submit" (click)="delete(usuarioExtra)" class="ds-btn ds-btn--danger" data-cy="entityDeleteButton"> | ||||||
|                 <fa-icon [icon]="faExchangeAlt"></fa-icon> |                 <fa-icon [icon]="faExchangeAlt"></fa-icon> | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
|   <div class="col"> |   <div class="col"> | ||||||
|     <div class="container-fluid navbar navbar-marketing navbar-expand-lg bg-white navbar-light"> |     <div class="container-fluid navbar navbar-marketing navbar-expand-lg bg-white navbar-light"> | ||||||
|       <div class="container px-5 py-4"> |       <div class="container px-5 py-4"> | ||||||
|         <a class="text-dark" href="index.html" |         <a class="text-dark" routerLink="login" | ||||||
|           ><img src="http://datasurvey.org/content/img_datasurvey/datasurvey-logo-text-black.svg" width="300" alt="" |           ><img src="http://datasurvey.org/content/img_datasurvey/datasurvey-logo-text-black.svg" width="300" alt="" | ||||||
|         /></a> |         /></a> | ||||||
| 
 | 
 | ||||||
|  | @ -10,11 +10,11 @@ | ||||||
|           <!--<a href="#"> |           <!--<a href="#"> | ||||||
|             <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Encuestas</button> |             <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Encuestas</button> | ||||||
|           </a>--> |           </a>--> | ||||||
|           <a href="login" [hidden]="!notAccount"> |           <a routerLink="login" [hidden]="!notAccount"> | ||||||
|             <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Iniciar Sesión</button> |             <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Iniciar Sesión</button> | ||||||
|           </a> |           </a> | ||||||
| 
 | 
 | ||||||
|           <a href="account/register" [hidden]="!notAccount"> |           <a routerLink="account/register" [hidden]="!notAccount"> | ||||||
|             <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Registrarse</button> |             <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Registrarse</button> | ||||||
|           </a> |           </a> | ||||||
|         </div> |         </div> | ||||||
|  | @ -36,7 +36,7 @@ | ||||||
|                 </h5> |                 </h5> | ||||||
|                 <div class="row" [hidden]="!notAccount"> |                 <div class="row" [hidden]="!notAccount"> | ||||||
|                   <div class="col"> |                   <div class="col"> | ||||||
|                     <a routerLink="/login"> |                     <a routerLink="pagina-principal"> | ||||||
|                       <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Comenzar</button> |                       <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Comenzar</button> | ||||||
|                     </a> |                     </a> | ||||||
|                   </div> |                   </div> | ||||||
|  | @ -98,12 +98,10 @@ | ||||||
|         <h1 class="text-center mb-4">Encuestas</h1> |         <h1 class="text-center mb-4">Encuestas</h1> | ||||||
|         <div class="row gx-5" *ngIf="encuestas && encuestas.length > 0"> |         <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="col-xl-4 col-lg-4 col-md-6 mb-5" *ngFor="let encuesta of encuestasMostradas; trackBy: trackId"> | ||||||
|             <div |             <div class="card-encuesta lift h-100" [attr.data-id]="encuesta.id"> | ||||||
|               class="card-encuesta lift h-100" |               <!--(dblclick)="openSurvey($event)" | ||||||
|               (dblclick)="openSurvey($event)" |               (click)="selectSurvey($event)"--> | ||||||
|               (click)="selectSurvey($event)" | 
 | ||||||
|               [attr.data-id]="encuesta.id" |  | ||||||
|             > |  | ||||||
|               <div class="card-body p-3"> |               <div class="card-body p-3"> | ||||||
|                 <div class="card-title mb-0">{{ encuesta.nombre }}</div> |                 <div class="card-title mb-0">{{ encuesta.nombre }}</div> | ||||||
|                 <div class="entity-body--row m-2"> |                 <div class="entity-body--row m-2"> | ||||||
|  | @ -116,14 +114,14 @@ | ||||||
|                   <div class="entity-body"> |                   <div class="entity-body"> | ||||||
|                     <div class="entity-body--row m-2"> |                     <div class="entity-body--row m-2"> | ||||||
|                       <span class="mt-2" |                       <span class="mt-2" | ||||||
|                         >Fecha Publicada  <fa-icon class="entity-icon--access" [icon]="faCalendarAlt"></fa-icon>  {{ |                         >Fecha de inicio  <fa-icon class="entity-icon--access" [icon]="faCalendarAlt"></fa-icon>  {{ | ||||||
|                           encuesta.fechaPublicacion | formatShortDatetime | titlecase |                           encuesta.fechaPublicacion | formatShortDatetime | titlecase | ||||||
|                         }}</span |                         }}</span | ||||||
|                       > |                       > | ||||||
|                     </div> |                     </div> | ||||||
|                     <div class="entity-body--row m-2"> |                     <div class="entity-body--row m-2"> | ||||||
|                       <span class="mt-2" |                       <span class="mt-2" | ||||||
|                         >Fecha de Finalización   <fa-icon class="entity-icon--access" [icon]="faCalendarAlt"></fa-icon |                         >Fecha de finalización   <fa-icon class="entity-icon--access" [icon]="faCalendarAlt"></fa-icon | ||||||
|                         >  {{ encuesta.fechaFinalizar | formatShortDatetime | titlecase }}</span |                         >  {{ encuesta.fechaFinalizar | formatShortDatetime | titlecase }}</span | ||||||
|                       > |                       > | ||||||
|                     </div> |                     </div> | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| <div #footer class="footer"> | <div #footer class="footer" [hidden]="!notAccount"> | ||||||
|   <div> |   <div> | ||||||
|     <p> |     <p> | ||||||
|       Copyright © Derechos reservados - Desarrollado por |       Copyright © Derechos reservados - Desarrollado por | ||||||
|  |  | ||||||
|  | @ -1,8 +1,32 @@ | ||||||
| import { Component } from '@angular/core'; | import { Component } from '@angular/core'; | ||||||
|  | import { Account } from '../../core/auth/account.model'; | ||||||
|  | import { takeUntil } from 'rxjs/operators'; | ||||||
|  | import { AccountService } from '../../core/auth/account.service'; | ||||||
|  | import { Subject } from 'rxjs'; | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'jhi-footer', |   selector: 'jhi-footer', | ||||||
|   templateUrl: './footer.component.html', |   templateUrl: './footer.component.html', | ||||||
|   styleUrls: ['./footer.component.scss'], |   styleUrls: ['./footer.component.scss'], | ||||||
| }) | }) | ||||||
| export class FooterComponent {} | export class FooterComponent { | ||||||
|  |   account: Account | null = null; | ||||||
|  |   notAccount: boolean = true; | ||||||
|  |   private readonly destroy$ = new Subject<void>(); | ||||||
|  | 
 | ||||||
|  |   constructor(protected accountService: AccountService) {} | ||||||
|  | 
 | ||||||
|  |   ngOnInit(): void { | ||||||
|  |     this.accountService | ||||||
|  |       .getAuthenticationState() | ||||||
|  |       .pipe(takeUntil(this.destroy$)) | ||||||
|  |       .subscribe(account => { | ||||||
|  |         if (account !== null) { | ||||||
|  |           this.account = account; | ||||||
|  |           this.notAccount = false; | ||||||
|  |         } else { | ||||||
|  |           this.notAccount = true; | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -22,18 +22,20 @@ export const ADMIN_ROUTES: RouteInfo[] = [ | ||||||
|   //   type: 'link',
 |   //   type: 'link',
 | ||||||
|   //   icontype: 'nc-icon nc-chart-bar-32',
 |   //   icontype: 'nc-icon nc-chart-bar-32',
 | ||||||
|   // },
 |   // },
 | ||||||
|  | 
 | ||||||
|  |   { path: '/pagina-principal', title: 'Inicio', type: 'link', icontype: 'nc-icon nc-world-2' }, | ||||||
|   { |   { | ||||||
|     path: '/encuesta', |     path: '/encuesta', | ||||||
|     title: 'Encuestas', |     title: 'Encuestas', | ||||||
|     type: 'link', |     type: 'link', | ||||||
|     icontype: 'nc-icon nc-paper', |     icontype: 'nc-icon nc-paper', | ||||||
|   }, |   }, | ||||||
|   // {
 |   { | ||||||
|   //   path: '/plantilla',
 |     path: '/plantilla', | ||||||
|   //   title: 'Plantillas',
 |     title: 'Plantillas', | ||||||
|   //   type: 'link',
 |     type: 'link', | ||||||
|   //   icontype: 'nc-icon nc-album-2',
 |     icontype: 'nc-icon nc-album-2', | ||||||
|   // },
 |   }, | ||||||
|   { |   { | ||||||
|     path: '/categoria', |     path: '/categoria', | ||||||
|     title: 'Categorías', |     title: 'Categorías', | ||||||
|  | @ -55,6 +57,7 @@ export const ADMIN_ROUTES: RouteInfo[] = [ | ||||||
| ]; | ]; | ||||||
| 
 | 
 | ||||||
| export const USER_ROUTES: RouteInfo[] = [ | export const USER_ROUTES: RouteInfo[] = [ | ||||||
|  |   { path: '/pagina-principal', title: 'Inicio', type: 'link', icontype: 'nc-icon nc-world-2' }, | ||||||
|   { |   { | ||||||
|     path: '/encuesta', |     path: '/encuesta', | ||||||
|     title: 'Encuestas', |     title: 'Encuestas', | ||||||
|  | @ -73,10 +76,10 @@ export const USER_ROUTES: RouteInfo[] = [ | ||||||
|   //   type: 'link',
 |   //   type: 'link',
 | ||||||
|   //   icontype: 'nc-icon nc-album-2',
 |   //   icontype: 'nc-icon nc-album-2',
 | ||||||
|   // },
 |   // },
 | ||||||
|   // {
 |   { | ||||||
|   //   path: '/colaboraciones',
 |     path: '/colaboraciones', | ||||||
|   //   title: 'Colaboraciones',
 |     title: 'Colaboraciones', | ||||||
|   //   type: 'link',
 |     type: 'link', | ||||||
|   //   icontype: 'nc-icon nc-world-2',
 |     icontype: 'nc-icon nc-world-2', | ||||||
|   // },
 |   }, | ||||||
| ]; | ]; | ||||||
|  |  | ||||||
|  | @ -55,7 +55,7 @@ export class LoginComponent implements OnInit, AfterViewInit { | ||||||
|     // if already authenticated then navigate to home page
 |     // if already authenticated then navigate to home page
 | ||||||
|     this.accountService.identity().subscribe(() => { |     this.accountService.identity().subscribe(() => { | ||||||
|       if (this.accountService.isAuthenticated()) { |       if (this.accountService.isAuthenticated()) { | ||||||
|         this.router.navigate(['']); |         this.router.navigate(['/pagina-principal']); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
|  | @ -90,11 +90,10 @@ export class LoginComponent implements OnInit, AfterViewInit { | ||||||
|         if (!this.router.getCurrentNavigation()) { |         if (!this.router.getCurrentNavigation()) { | ||||||
|           this.localStorageService.store('IsGoogle', 'true'); |           this.localStorageService.store('IsGoogle', 'true'); | ||||||
|           // There were no routing during login (eg from navigationToStoredUrl)
 |           // There were no routing during login (eg from navigationToStoredUrl)
 | ||||||
|           this.router.navigate(['']); |           this.router.navigate(['/pagina-principal']); | ||||||
|         } |         } | ||||||
|       }, |       }, | ||||||
|       response => { |       response => { | ||||||
|         debugger; |  | ||||||
|         if (response.status == 401 && response.error.detail == 'Bad credentials') { |         if (response.status == 401 && response.error.detail == 'Bad credentials') { | ||||||
|           this.activateGoogle(); |           this.activateGoogle(); | ||||||
|         } else { |         } else { | ||||||
|  | @ -109,7 +108,6 @@ export class LoginComponent implements OnInit, AfterViewInit { | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   processError(response: HttpErrorResponse): void { |   processError(response: HttpErrorResponse): void { | ||||||
|     debugger; |  | ||||||
|     if (response.status === 400 && response.error.type === LOGIN_ALREADY_USED_TYPE) { |     if (response.status === 400 && response.error.type === LOGIN_ALREADY_USED_TYPE) { | ||||||
|       this.errorUserExists = true; |       this.errorUserExists = true; | ||||||
|     } else if (response.status === 400 && response.error.type === EMAIL_ALREADY_USED_TYPE) { |     } else if (response.status === 400 && response.error.type === EMAIL_ALREADY_USED_TYPE) { | ||||||
|  | @ -153,7 +151,6 @@ export class LoginComponent implements OnInit, AfterViewInit { | ||||||
|   login(): void { |   login(): void { | ||||||
|     this.error = false; |     this.error = false; | ||||||
|     this.userSuspended = false; |     this.userSuspended = false; | ||||||
|     debugger; |  | ||||||
|     this.loginService |     this.loginService | ||||||
|       .login({ |       .login({ | ||||||
|         username: this.loginForm.get('username')!.value, |         username: this.loginForm.get('username')!.value, | ||||||
|  | @ -162,9 +159,6 @@ export class LoginComponent implements OnInit, AfterViewInit { | ||||||
|       }) |       }) | ||||||
|       .subscribe( |       .subscribe( | ||||||
|         value => { |         value => { | ||||||
|           debugger; |  | ||||||
|           console.log(value); |  | ||||||
| 
 |  | ||||||
|           /*if (value?.activated == false){ |           /*if (value?.activated == false){ | ||||||
|               this.userSuspended = true; |               this.userSuspended = true; | ||||||
| 
 | 
 | ||||||
|  | @ -173,12 +167,11 @@ export class LoginComponent implements OnInit, AfterViewInit { | ||||||
|           this.authenticationError = false; |           this.authenticationError = false; | ||||||
|           if (!this.router.getCurrentNavigation()) { |           if (!this.router.getCurrentNavigation()) { | ||||||
|             // There were no routing during login (eg from navigationToStoredUrl)
 |             // There were no routing during login (eg from navigationToStoredUrl)
 | ||||||
|             this.router.navigate(['']); |             this.router.navigate(['/pagina-principal']); | ||||||
|           } |           } | ||||||
|           // }
 |           // }
 | ||||||
|         }, |         }, | ||||||
|         response => { |         response => { | ||||||
|           debugger; |  | ||||||
|           if (response.status == 401 && response.error.detail == 'Bad credentials') { |           if (response.status == 401 && response.error.detail == 'Bad credentials') { | ||||||
|             this.error = true; |             this.error = true; | ||||||
|           } else { |           } else { | ||||||
|  |  | ||||||
|  | @ -12,7 +12,6 @@ export class LoginService { | ||||||
|   constructor(private accountService: AccountService, private authServerProvider: AuthServerProvider) {} |   constructor(private accountService: AccountService, private authServerProvider: AuthServerProvider) {} | ||||||
| 
 | 
 | ||||||
|   login(credentials: Login): Observable<Account | null> { |   login(credentials: Login): Observable<Account | null> { | ||||||
|     debugger; |  | ||||||
|     return this.authServerProvider.login(credentials).pipe(mergeMap(() => this.accountService.identity(true))); |     return this.authServerProvider.login(credentials).pipe(mergeMap(() => this.accountService.identity(true))); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | import { Route, RouterModule } from '@angular/router'; | ||||||
|  | 
 | ||||||
|  | import { PaginaPrincipalComponent } from './pagina-principal.component'; | ||||||
|  | 
 | ||||||
|  | export const PAGINA_PRINCIPAL_ROUTE: Route = { | ||||||
|  |   path: 'pagina-principal', | ||||||
|  |   component: PaginaPrincipalComponent, | ||||||
|  |   data: { | ||||||
|  |     pageTitle: 'paginaPrincipal.title', | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | @ -0,0 +1,122 @@ | ||||||
|  | <div class="row"> | ||||||
|  |   <div class="col"> | ||||||
|  |     <div class="container-fluid navbar navbar-marketing navbar-expand-lg bg-white navbar-light"> | ||||||
|  |       <div class="container px-5 py-4"> | ||||||
|  |         <h1 class="ds-title" [hidden]="notAccount">Inicio</h1> | ||||||
|  |         <a class="text-dark" href=" " [hidden]="!notAccount"> | ||||||
|  |           <img src="http://datasurvey.org/content/img_datasurvey/datasurvey-logo-text-black.svg" width="300" alt="" /> | ||||||
|  |         </a> | ||||||
|  | 
 | ||||||
|  |         <a href=" "> | ||||||
|  |           <button class="ds-btn btn-outline-secondary fw-500 ms-lg-4">Sobre DataSurvey</button> | ||||||
|  |         </a> | ||||||
|  | 
 | ||||||
|  |         <div class="col-6" style="text-align: end"> | ||||||
|  |           <!--<a routerlink="" [hidden]="!notAccount"> | ||||||
|  |             <button class="ds-btn btn-light fw-500 ms-lg-4">Sobre DataSurvey</button> | ||||||
|  |           </a>--> | ||||||
|  |           <a routerLink="/login" [hidden]="!notAccount"> | ||||||
|  |             <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Iniciar Sesión</button> | ||||||
|  |           </a> | ||||||
|  | 
 | ||||||
|  |           <a routerLink="/account/register" [hidden]="!notAccount"> | ||||||
|  |             <button class="ds-btn ds-btn--primary fw-500 ms-lg-4">Registrarse</button> | ||||||
|  |           </a> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  | 
 | ||||||
|  |     <div class="bg-light py-10 container-encuestas"> | ||||||
|  |       <div class="container px-0"> | ||||||
|  |         <!--filtrado--> | ||||||
|  | 
 | ||||||
|  |         <div class="input-group"> | ||||||
|  |           <div class="ds-filter"> | ||||||
|  |             <div class="input-group-addon"><i class="glyphicon glyphicon-search"></i></div> | ||||||
|  |             <input class="form-control" type="text" name="searchString" placeholder="Buscar por nombre..." [(ngModel)]="searchString" /> | ||||||
|  |           </div> | ||||||
|  |           <!--<div class="ds-filter"> | ||||||
|  |             <select name="searchCategoria" class="form-control" [(ngModel)]="searchCategoria" style="width: 200px"> | ||||||
|  |               <option value="" selected="selected" disabled="disabled">Filtrar por categoría</option> | ||||||
|  |               <option value="">Todas las categorías</option> | ||||||
|  |               <option  *ngFor="let categoria of categorias" [value]="categoria.nombre">{{categoria.nombre}}</option> | ||||||
|  |             </select> | ||||||
|  |           </div>--> | ||||||
|  |         </div> | ||||||
|  | 
 | ||||||
|  |         <hr /> | ||||||
|  | 
 | ||||||
|  |         <div class="container" *ngIf="encuestas && encuestas.length == 0"> | ||||||
|  |           <h1 class="ds-title">Encuestas</h1> | ||||||
|  | 
 | ||||||
|  |           <hr /> | ||||||
|  |           <div class="social-box"> | ||||||
|  |             <h1> | ||||||
|  |               <fa-icon [icon]="faFileAlt"></fa-icon> | ||||||
|  |             </h1> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  | 
 | ||||||
|  |         <!--Inicio de los cards--> | ||||||
|  | 
 | ||||||
|  |         <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 encuestas | filter: 'nombre':searchString | filter: 'categoria.nombre':searchCategoria; | ||||||
|  |               trackBy: trackId | ||||||
|  |             " | ||||||
|  |           > | ||||||
|  |             <div class="card-encuesta lift h-100" [attr.data-id]="encuesta.id"> | ||||||
|  |               <!--(dblclick)="openSurvey($event)" | ||||||
|  |              (click)="selectSurvey($event)" | ||||||
|  | 
 | ||||||
|  | --> | ||||||
|  | 
 | ||||||
|  |               <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 de inicio  <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> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | 
 | ||||||
|  |   <!--Inicio de cards--> | ||||||
|  | </div> | ||||||
|  | @ -0,0 +1,13 @@ | ||||||
|  | .social-box { | ||||||
|  |   display: inline-block; | ||||||
|  |   width: 3em; | ||||||
|  |   height: 4em; | ||||||
|  |   margin-left: 2.7em; | ||||||
|  |   text-align: center; | ||||||
|  |   font-size: 130px; | ||||||
|  |   opacity: 0.3; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .container div:last-child { | ||||||
|  |   margin-right: 0; | ||||||
|  | } | ||||||
|  | @ -0,0 +1,112 @@ | ||||||
|  | import { Component, OnInit } from '@angular/core'; | ||||||
|  | import { Account } from '../core/auth/account.model'; | ||||||
|  | import { takeUntil } from 'rxjs/operators'; | ||||||
|  | import { EncuestaService } from '../entities/encuesta/service/encuesta.service'; | ||||||
|  | import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; | ||||||
|  | import { CategoriaService } from '../entities/categoria/service/categoria.service'; | ||||||
|  | import { UsuarioExtraService } from '../entities/usuario-extra/service/usuario-extra.service'; | ||||||
|  | import { ActivatedRoute, Router } from '@angular/router'; | ||||||
|  | import { FormBuilder } from '@angular/forms'; | ||||||
|  | import { AccountService } from '../core/auth/account.service'; | ||||||
|  | import { HttpResponse } from '@angular/common/http'; | ||||||
|  | import { IEncuesta } from '../entities/encuesta/encuesta.model'; | ||||||
|  | import { UsuarioExtra } from '../entities/usuario-extra/usuario-extra.model'; | ||||||
|  | import { Subject } from 'rxjs'; | ||||||
|  | 
 | ||||||
|  | import { faPollH, faCalendarAlt, faStar, faListAlt, faFileAlt } from '@fortawesome/free-solid-svg-icons'; | ||||||
|  | import { ICategoria } from '../entities/categoria/categoria.model'; | ||||||
|  | 
 | ||||||
|  | @Component({ | ||||||
|  |   selector: 'jhi-pagina-principal', | ||||||
|  |   templateUrl: './pagina-principal.component.html', | ||||||
|  |   styleUrls: ['./pagina-principal.component.scss'], | ||||||
|  | }) | ||||||
|  | export class PaginaPrincipalComponent implements OnInit { | ||||||
|  |   public searchString: string; | ||||||
|  |   public searchCategoria: string; | ||||||
|  |   categorias?: ICategoria[]; | ||||||
|  |   account: Account | null = null; | ||||||
|  |   public searchEncuestaPublica: string; | ||||||
|  |   notAccount: boolean = true; | ||||||
|  |   usuarioExtra: UsuarioExtra | null = null; | ||||||
|  |   encuestas?: IEncuesta[]; | ||||||
|  | 
 | ||||||
|  |   isLoading = false; | ||||||
|  |   private readonly destroy$ = new Subject<void>(); | ||||||
|  | 
 | ||||||
|  |   faStar = faStar; | ||||||
|  |   faCalendarAlt = faCalendarAlt; | ||||||
|  |   faPollH = faPollH; | ||||||
|  |   faListAlt = faListAlt; | ||||||
|  |   faFileAlt = faFileAlt; | ||||||
|  | 
 | ||||||
|  |   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 = ''; | ||||||
|  |     this.searchString = ''; | ||||||
|  |     this.searchCategoria = ''; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   ngOnInit(): void { | ||||||
|  |     this.searchEncuestaPublica = ''; | ||||||
|  |     this.accountService | ||||||
|  |       .getAuthenticationState() | ||||||
|  |       .pipe(takeUntil(this.destroy$)) | ||||||
|  |       .subscribe(account => { | ||||||
|  |         if (account !== null) { | ||||||
|  |           this.account = account; | ||||||
|  |           this.notAccount = false; | ||||||
|  |         } else { | ||||||
|  |           this.notAccount = true; | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |     this.loadAll(); | ||||||
|  |     this.loadAllCategorias(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   ngOnDestroy(): void { | ||||||
|  |     this.destroy$.next(); | ||||||
|  |     this.destroy$.complete(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   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.isLoading = false; | ||||||
|  |       } | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   loadAllCategorias(): void { | ||||||
|  |     this.isLoading = true; | ||||||
|  | 
 | ||||||
|  |     this.categoriaService.query().subscribe( | ||||||
|  |       (res: HttpResponse<ICategoria[]>) => { | ||||||
|  |         this.isLoading = false; | ||||||
|  |         this.categorias = res.body ?? []; | ||||||
|  |       }, | ||||||
|  |       () => { | ||||||
|  |         this.isLoading = false; | ||||||
|  |       } | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   trackId(index: number, item: IEncuesta): number { | ||||||
|  |     return item.id!; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,13 @@ | ||||||
|  | import { NgModule } from '@angular/core'; | ||||||
|  | import { RouterModule } from '@angular/router'; | ||||||
|  | 
 | ||||||
|  | import { SharedModule } from 'app/shared/shared.module'; | ||||||
|  | 
 | ||||||
|  | import { PAGINA_PRINCIPAL_ROUTE } from './pagina-princial.route'; | ||||||
|  | import { PaginaPrincipalComponent } from './pagina-principal.component'; | ||||||
|  | 
 | ||||||
|  | @NgModule({ | ||||||
|  |   imports: [SharedModule, RouterModule.forChild([PAGINA_PRINCIPAL_ROUTE])], | ||||||
|  |   declarations: [PaginaPrincipalComponent], | ||||||
|  | }) | ||||||
|  | export class PaginaPrincipalModule {} | ||||||
|  | @ -11,6 +11,21 @@ | ||||||
|   font-size: 1.2rem; |   font-size: 1.2rem; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .ds-contenteditable { | ||||||
|  |   border: 2.25px solid transparent; | ||||||
|  |   border-radius: 3px; | ||||||
|  |   outline: 0; | ||||||
|  |   text-transform: none; | ||||||
|  | 
 | ||||||
|  |   &:hover { | ||||||
|  |     border: 2.25px solid #e5e5e5; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   &:focus { | ||||||
|  |     border: 2.25px solid #2962ff; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| .ds-title--small { | .ds-title--small { | ||||||
|   color: #313747; |   color: #313747; | ||||||
|   font-weight: 900; |   font-weight: 900; | ||||||
|  |  | ||||||
|  | @ -162,3 +162,38 @@ | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | .iconos-colab { | ||||||
|  |   margin-right: -8px; | ||||||
|  |   z-index: 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .photo-collab { | ||||||
|  |   width: 40px; | ||||||
|  |   border-radius: 50px; | ||||||
|  |   border: 2px solid #fff; | ||||||
|  | 
 | ||||||
|  |   &:hover { | ||||||
|  |     margin-top: -4px; | ||||||
|  |     cursor: pointer; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .add-collab { | ||||||
|  |   background: #c3c2c2; | ||||||
|  |   text-align: center; | ||||||
|  |   width: 40px; | ||||||
|  |   height: 40px; | ||||||
|  |   color: #fff; | ||||||
|  |   padding: 4pt 7pt; | ||||||
|  |   border-radius: 50px; | ||||||
|  |   border: 2px solid #fff; | ||||||
|  |   position: relative; | ||||||
|  |   top: 0; | ||||||
|  |   transition: all 0.1s ease-in-out; | ||||||
|  |   &:hover { | ||||||
|  |     /*margin-top: -4px;**/ | ||||||
|  |     top: -5px; | ||||||
|  |     cursor: pointer; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -4,13 +4,13 @@ | ||||||
|       "home": { |       "home": { | ||||||
|         "title": "Plantillas", |         "title": "Plantillas", | ||||||
|         "refreshListLabel": "Refrescar lista", |         "refreshListLabel": "Refrescar lista", | ||||||
|         "createLabel": "Crear nuevo Plantilla", |         "createLabel": "Crear nueva plantilla", | ||||||
|         "createOrEditLabel": "Crear o editar Plantilla", |         "createOrEditLabel": "Crear o editar plantilla", | ||||||
|         "notFound": "Ningún Plantillas encontrado" |         "notFound": "No se encontró ninguna plantilla" | ||||||
|       }, |       }, | ||||||
|       "created": "Un nuevo Plantilla ha sido creado con el identificador {{ param }}", |       "created": "Una nueva plantilla ha sido creada con el identificador {{ param }}", | ||||||
|       "updated": "Un Plantilla ha sido actualizado con el identificador {{ param }}", |       "updated": "Una plantilla ha sido actualizada con el identificador {{ param }}", | ||||||
|       "deleted": "Un Plantilla ha sido eliminado con el identificador {{ param }}", |       "deleted": "Una plantilla ha sido eliminada con el identificador {{ param }}", | ||||||
|       "delete": { |       "delete": { | ||||||
|         "question": "¿Seguro que quiere eliminar Plantilla {{ id }}?" |         "question": "¿Seguro que quiere eliminar Plantilla {{ id }}?" | ||||||
|       }, |       }, | ||||||
|  | @ -19,9 +19,9 @@ | ||||||
|       }, |       }, | ||||||
|       "id": "ID", |       "id": "ID", | ||||||
|       "nombre": "Nombre", |       "nombre": "Nombre", | ||||||
|       "descripcion": "Descripcion", |       "descripcion": "Descripción", | ||||||
|       "fechaCreacion": "Fecha Creacion", |       "fechaCreacion": "Fecha Creación", | ||||||
|       "fechaPublicacionTienda": "Fecha Publicacion Tienda", |       "fechaPublicacionTienda": "Fecha Publicación Tienda", | ||||||
|       "estado": "Estado", |       "estado": "Estado", | ||||||
|       "precio": "Precio", |       "precio": "Precio", | ||||||
|       "pPreguntaCerrada": "P Pregunta Cerrada", |       "pPreguntaCerrada": "P Pregunta Cerrada", | ||||||
|  |  | ||||||
|  | @ -2,27 +2,30 @@ | ||||||
|   "dataSurveyApp": { |   "dataSurveyApp": { | ||||||
|     "usuarioEncuesta": { |     "usuarioEncuesta": { | ||||||
|       "home": { |       "home": { | ||||||
|         "title": "Colaboraciones en Encuestas", |         "title": "Colaboraciones", | ||||||
|         "refreshListLabel": "Refrescar lista", |         "refreshListLabel": "Refrescar lista", | ||||||
|         "createLabel": "Crear nuevo Colaborador", |         "createLabel": "Crear nuevo Colaborador", | ||||||
|         "createOrEditLabel": "Crear o editar Colaboración", |         "createOrEditLabel": "Crear o editar Colaborador", | ||||||
|         "notFound": "Ninguna colaboración encontrada" |         "notFound": "Ningún Colaborador encontrado" | ||||||
|       }, |       }, | ||||||
|       "created": "Una nueva colaboración ha sido creada con el identificador {{ param }}", |       "created": "Un nuevo Usuario Encuesta ha sido creado con el identificador {{ param }}", | ||||||
|       "updated": "Una colaboración ha sido actualizada con el identificador {{ param }}", |       "updated": "Un Usuario Encuesta ha sido actualizado con el identificador {{ param }}", | ||||||
|       "deleted": "Una colaboracióna ha sido eliminada con el identificador {{ param }}", |       "deleted": "Un Colaborador ha sido expulsado de la encuesta", | ||||||
|       "delete": { |       "delete": { | ||||||
|         "question": "¿Seguro que quiere eliminar la colaboración {{ id }}?" |         "question": "¿Seguro que quiere expulsar al colaborador de la encuesta?", | ||||||
|  |         "action": "Expulsar", | ||||||
|  |         "questionGetOut": "¿Seguro que quiere salirse de la colaboracion de encuesta?", | ||||||
|  |         "getOut": "Salir" | ||||||
|       }, |       }, | ||||||
|       "detail": { |       "detail": { | ||||||
|         "title": "Colaboración en encuesta" |         "title": "Colaborador" | ||||||
|       }, |       }, | ||||||
|       "id": "ID", |       "id": "ID", | ||||||
|       "rol": "Rol", |       "rol": "Rol", | ||||||
|       "estado": "Estado", |       "estado": "Estado", | ||||||
|       "fechaAgregado": "Fecha Agregado", |       "fechaAgregado": "Fecha Agregado", | ||||||
|       "usuarioExtra": "Usuario", |       "usuarioExtra": "Usuario", | ||||||
|       "encuesta": "Id de Encuesta" |       "encuesta": "Encuesta" | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ | ||||||
|       "rol": "Rol", |       "rol": "Rol", | ||||||
|       "nombre": "Nombre", |       "nombre": "Nombre", | ||||||
|       "iconoPerfil": "Icono", |       "iconoPerfil": "Icono", | ||||||
|       "fechaNacimiento": "Fecha de Nacimiento", |       "fechaNacimiento": "Fecha de nacimiento", | ||||||
|       "estado": "Estado", |       "estado": "Estado", | ||||||
|       "user": "Usuario", |       "user": "Usuario", | ||||||
|       "correo": "Correo electrónico", |       "correo": "Correo electrónico", | ||||||
|  |  | ||||||
|  | @ -4,7 +4,8 @@ | ||||||
|     <meta charset="utf-8" /> |     <meta charset="utf-8" /> | ||||||
|     <meta http-equiv="X-UA-Compatible" content="IE=edge" /> |     <meta http-equiv="X-UA-Compatible" content="IE=edge" /> | ||||||
|     <title>DataSurvey</title> |     <title>DataSurvey</title> | ||||||
|     <meta name="description" content="Description for DataSurvey" /> |     <meta http-equiv="Content-Security-Policy" content="script-src-elem * 'self' 'unsafe-inline' 'unsafe-eval' *" /> | ||||||
|  |     <meta name="description" content="Cree y complete encuestas a nivel mundial" /> | ||||||
|     <meta name="google" content="notranslate" /> |     <meta name="google" content="notranslate" /> | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> |     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> | ||||||
|     <meta name="theme-color" content="#000000" /> |     <meta name="theme-color" content="#000000" /> | ||||||
|  |  | ||||||
|  | @ -27,5 +27,6 @@ | ||||||
|   "background_color": "#e0e0e0", |   "background_color": "#e0e0e0", | ||||||
|   "start_url": ".", |   "start_url": ".", | ||||||
|   "display": "standalone", |   "display": "standalone", | ||||||
|   "orientation": "portrait" |   "orientation": "portrait", | ||||||
|  |   "content_security_policy": "default-src * data: blob: filesystem: about: ws: wss: 'unsafe-inline' 'unsafe-eval'; script-src * data: blob: 'unsafe-inline' 'unsafe-eval'; connect-src * data: blob: 'unsafe-inline';  img-src * data: blob: 'unsafe-inline';  frame-src * data: blob: ;  style-src * data: blob: 'unsafe-inline'; font-src * data: blob: 'unsafe-inline';" | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue