Add create question to survey list of questions
This commit is contained in:
		
							parent
							
								
									0af94cd9f2
								
							
						
					
					
						commit
						78e58ab69a
					
				|  | @ -10,6 +10,16 @@ | ||||||
|       <button type="button" class="ds-btn ds-btn--secondary" (click)="loadAll()" [disabled]="isLoading"> |       <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> |         <fa-icon icon="sync" [spin]="isLoading"></fa-icon>  <span>Refrescar preguntas</span> | ||||||
|       </button> |       </button> | ||||||
|  |       <button | ||||||
|  |         type="button" | ||||||
|  |         class="ds-btn ds-btn--secondary" | ||||||
|  |         (click)="createQuestion()" | ||||||
|  |         [disabled]="isLoading" | ||||||
|  |         data-toggle="modal" | ||||||
|  |         data-target="#crearPregunta" | ||||||
|  |       > | ||||||
|  |         <fa-icon icon="sync" [icon]="faPlus"></fa-icon>  <span>Crear pregunta</span> | ||||||
|  |       </button> | ||||||
|       <ng-container *ngIf="encuesta!.estado === 'DRAFT'"> |       <ng-container *ngIf="encuesta!.estado === 'DRAFT'"> | ||||||
|         <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> | ||||||
|  | @ -64,7 +74,7 @@ | ||||||
|                     class="ds-survey--option ds-survey--option--base ds-survey--closed-option can-delete" |                     class="ds-survey--option ds-survey--option--base ds-survey--closed-option can-delete" | ||||||
|                     [attr.data-id]="ePreguntaOpcionFinal.id" |                     [attr.data-id]="ePreguntaOpcionFinal.id" | ||||||
|                   > |                   > | ||||||
|                     <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'" | ||||||
|  | @ -229,6 +239,93 @@ | ||||||
| 
 | 
 | ||||||
| <!-- ------------------------------------------------------------------------------------------------- --> | <!-- ------------------------------------------------------------------------------------------------- --> | ||||||
| 
 | 
 | ||||||
|  | <!-- Modal --> | ||||||
|  | <div | ||||||
|  |   class="modal fade ds-modal" | ||||||
|  |   id="crearPregunta" | ||||||
|  |   tabindex="-1" | ||||||
|  |   role="dialog" | ||||||
|  |   aria-labelledby="exampleModalCenterTitle" | ||||||
|  |   aria-hidden="true" | ||||||
|  | > | ||||||
|  |   <div class="modal-dialog modal-dialog-centered" role="document"> | ||||||
|  |     <div class="modal-content"> | ||||||
|  |       <form | ||||||
|  |         autocomplete="off" | ||||||
|  |         class="ds-form" | ||||||
|  |         name="editFormQuestion" | ||||||
|  |         role="form" | ||||||
|  |         novalidate | ||||||
|  |         (ngSubmit)="saveQuestion()" | ||||||
|  |         [formGroup]="editFormQuestion" | ||||||
|  |       > | ||||||
|  |         <div class="modal-header"> | ||||||
|  |           <h1 class="modal-title" id="exampleModalLongTitle">Crear Pregunta</h1> | ||||||
|  |         </div> | ||||||
|  |         <div class="modal-body"> | ||||||
|  |           <!-- Survey Create Question Modal --> | ||||||
|  |           <div> | ||||||
|  |             <jhi-alert-error></jhi-alert-error> | ||||||
|  | 
 | ||||||
|  |             <div class="form-group"> | ||||||
|  |               <label class="form-control-label" for="field_nombre">Pregunta</label> | ||||||
|  |               <input type="text" class="form-control" name="nombre" id="field_nombre" data-cy="nombre" formControlName="nombre" /> | ||||||
|  |               <div | ||||||
|  |                 *ngIf=" | ||||||
|  |                   editFormQuestion.get('nombre')!.invalid && | ||||||
|  |                   (editFormQuestion.get('nombre')!.dirty || editFormQuestion.get('nombre')!.touched) | ||||||
|  |                 " | ||||||
|  |               > | ||||||
|  |                 <small | ||||||
|  |                   class="form-text text-danger" | ||||||
|  |                   *ngIf="editFormQuestion.get('nombre')?.errors?.required" | ||||||
|  |                   jhiTranslate="entity.validation.required" | ||||||
|  |                 > | ||||||
|  |                   This field is required. | ||||||
|  |                 </small> | ||||||
|  |                 <small | ||||||
|  |                   class="form-text text-danger" | ||||||
|  |                   *ngIf="editFormQuestion.get('nombre')?.errors?.minlength" | ||||||
|  |                   jhiTranslate="entity.validation.minlength" | ||||||
|  |                   [translateValues]="{ min: 1 }" | ||||||
|  |                 > | ||||||
|  |                   This field is required to be at least 1 characters. | ||||||
|  |                 </small> | ||||||
|  |                 <small | ||||||
|  |                   class="form-text text-danger" | ||||||
|  |                   *ngIf="editFormQuestion.get('nombre')?.errors?.maxlength" | ||||||
|  |                   jhiTranslate="entity.validation.maxlength" | ||||||
|  |                   [translateValues]="{ max: 500 }" | ||||||
|  |                 > | ||||||
|  |                   This field cannot be longer than 500 characters. | ||||||
|  |                 </small> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |         <div class="modal-footer"> | ||||||
|  |           <input id="createAnotherQuestion" type="checkbox" (change)="createAnotherQuestionChange($event)" /> | ||||||
|  |           <label for="createAnotherQuestion">Crear otra</label> | ||||||
|  |           <button id="cancelBtnQuestion" type="button" class="ds-btn ds-btn--secondary" data-dismiss="modal"> | ||||||
|  |             <fa-icon icon="arrow-left"></fa-icon>  <span jhiTranslate="entity.action.cancel">Cancel</span> | ||||||
|  |           </button> | ||||||
|  |           <button | ||||||
|  |             type="submit" | ||||||
|  |             id="save-question" | ||||||
|  |             data-cy="entityCreateSaveButton" | ||||||
|  |             class="ds-btn ds-btn--primary" | ||||||
|  |             [disabled]="editFormQuestion.invalid || isSaving" | ||||||
|  |           > | ||||||
|  |             <span jhiTranslate="entity.action.create">Create</span> | ||||||
|  |           </button> | ||||||
|  |         </div> | ||||||
|  |       </form> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </div> | ||||||
|  | 
 | ||||||
|  | <!-- ------------------------------------------------------------------------------------------------- --> | ||||||
|  | 
 | ||||||
| <!-- <div class="row justify-content-center"> | <!-- <div class="row justify-content-center"> | ||||||
|   <div class="col-8"> |   <div class="col-8"> | ||||||
|     <form name="editForm" role="form" novalidate (ngSubmit)="save()" [formGroup]="editForm"> |     <form name="editForm" role="form" novalidate (ngSubmit)="save()" [formGroup]="editForm"> | ||||||
|  |  | ||||||
|  | @ -25,6 +25,7 @@ import { EPreguntaCerradaService } from 'app/entities/e-pregunta-cerrada/service | ||||||
| import { EPreguntaCerradaDeleteDialogComponent } from 'app/entities/e-pregunta-cerrada/delete/e-pregunta-cerrada-delete-dialog.component'; | import { EPreguntaCerradaDeleteDialogComponent } from 'app/entities/e-pregunta-cerrada/delete/e-pregunta-cerrada-delete-dialog.component'; | ||||||
| 
 | 
 | ||||||
| import { faTimes, faPlus } from '@fortawesome/free-solid-svg-icons'; | import { faTimes, faPlus } from '@fortawesome/free-solid-svg-icons'; | ||||||
|  | import { PreguntaCerradaTipo } from 'app/entities/enumerations/pregunta-cerrada-tipo.model'; | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'jhi-encuesta-update', |   selector: 'jhi-encuesta-update', | ||||||
|  | @ -35,6 +36,7 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|   faPlus = faPlus; |   faPlus = faPlus; | ||||||
| 
 | 
 | ||||||
|   isSaving = false; |   isSaving = false; | ||||||
|  |   isSavingQuestion = false; | ||||||
| 
 | 
 | ||||||
|   categoriasSharedCollection: ICategoria[] = []; |   categoriasSharedCollection: ICategoria[] = []; | ||||||
|   usuarioExtrasSharedCollection: IUsuarioExtra[] = []; |   usuarioExtrasSharedCollection: IUsuarioExtra[] = []; | ||||||
|  | @ -63,6 +65,11 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|     // ePreguntaCerrada: [],
 |     // ePreguntaCerrada: [],
 | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|  |   editFormQuestion = this.fb.group({ | ||||||
|  |     id: [], | ||||||
|  |     nombre: [null, [Validators.required, Validators.minLength(1), Validators.maxLength(500)]], | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|   ePreguntas?: any[]; |   ePreguntas?: any[]; | ||||||
|   ePreguntasOpciones?: any[]; |   ePreguntasOpciones?: any[]; | ||||||
|   encuesta: Encuesta | null = null; |   encuesta: Encuesta | null = null; | ||||||
|  | @ -70,6 +77,7 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|   isLoading = false; |   isLoading = false; | ||||||
| 
 | 
 | ||||||
|   createAnother: Boolean = false; |   createAnother: Boolean = false; | ||||||
|  |   createAnotherQuestion: Boolean = false; | ||||||
|   selectedQuestionToCreateOption: IEPreguntaCerrada | null = null; |   selectedQuestionToCreateOption: IEPreguntaCerrada | null = null; | ||||||
| 
 | 
 | ||||||
|   constructor( |   constructor( | ||||||
|  | @ -283,6 +291,62 @@ export class EncuestaUpdateComponent implements OnInit, AfterViewChecked { | ||||||
|     this.createAnother = event.target.checked; |     this.createAnother = event.target.checked; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   createQuestion(): void { | ||||||
|  |     const surveyId = this.encuesta?.id; | ||||||
|  |     console.log(surveyId); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected createFromFormQuestion(): IEPreguntaCerrada { | ||||||
|  |     return { | ||||||
|  |       // ...new EPreguntaCerrada(),
 | ||||||
|  |       id: undefined, | ||||||
|  |       nombre: this.editFormQuestion.get(['nombre'])!.value, | ||||||
|  |       tipo: PreguntaCerradaTipo.SINGLE, | ||||||
|  |       opcional: false, | ||||||
|  |       orden: 10, | ||||||
|  |       encuesta: this.encuesta, | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   createAnotherQuestionChange(event: any) { | ||||||
|  |     this.createAnotherQuestion = event.target.checked; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   saveQuestion(): void { | ||||||
|  |     this.isSavingQuestion = true; | ||||||
|  |     const ePreguntaCerrada = this.createFromFormQuestion(); | ||||||
|  |     if (ePreguntaCerrada.id !== undefined) { | ||||||
|  |       this.subscribeToSaveResponseQuestion(this.ePreguntaCerradaService.update(ePreguntaCerrada)); | ||||||
|  |     } else { | ||||||
|  |       this.subscribeToSaveResponseQuestion(this.ePreguntaCerradaService.create(ePreguntaCerrada)); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected subscribeToSaveResponseQuestion(result: Observable<HttpResponse<IEPreguntaCerrada>>): void { | ||||||
|  |     result.pipe(finalize(() => this.onSaveFinalizeQuestion())).subscribe( | ||||||
|  |       () => this.onSaveSuccessQuestion(), | ||||||
|  |       () => this.onSaveErrorQuestion() | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected onSaveSuccessQuestion(): void { | ||||||
|  |     this.editFormQuestion.reset(); | ||||||
|  |     this.ePreguntas = []; | ||||||
|  |     this.ePreguntasOpciones = []; | ||||||
|  |     this.loadAll(); | ||||||
|  |     if (!this.createAnotherQuestion) { | ||||||
|  |       $('#cancelBtnQuestion').click(); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected onSaveErrorQuestion(): void { | ||||||
|  |     // Api for inheritance.
 | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   protected onSaveFinalizeQuestion(): void { | ||||||
|  |     this.isSavingQuestion = false; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   // previousState(): void {
 |   // previousState(): void {
 | ||||||
|   //   window.history.back();
 |   //   window.history.back();
 | ||||||
|   // }
 |   // }
 | ||||||
|  |  | ||||||
|  | @ -37,7 +37,7 @@ | ||||||
| 
 | 
 | ||||||
|       &--small { |       &--small { | ||||||
|         font-size: 0.8rem; |         font-size: 0.8rem; | ||||||
|         padding: 0.6rem; |         padding: 0.3rem; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | @ -105,14 +105,14 @@ | ||||||
|     align-items: center; |     align-items: center; | ||||||
|     font-size: 0.9rem; |     font-size: 0.9rem; | ||||||
|     color: #15131d; |     color: #15131d; | ||||||
|     padding: 1rem 3rem 1rem 0.5rem; |     padding: 1rem; | ||||||
|     transition: all 0.1s ease-in-out; |     transition: all 0.1s ease-in-out; | ||||||
|     cursor: pointer; |     cursor: pointer; | ||||||
|     position: relative; |     position: relative; | ||||||
| 
 | 
 | ||||||
|     label { |     label { | ||||||
|       width: 100%; |       width: 100%; | ||||||
|       margin: 0 1rem; |       margin: 0; | ||||||
|       color: #1f3779; |       color: #1f3779; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue