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