datasurvey/src/main/webapp/app/entities/dashboard/dashboard-user/dashboard-user.component.ts

212 lines
6.7 KiB
TypeScript
Raw Normal View History

2021-08-10 01:07:19 +00:00
import { Component, OnInit } from '@angular/core';
2021-08-13 00:03:48 +00:00
import { HttpResponse } from '@angular/common/http';
import { IEncuesta } from '../../encuesta/encuesta.model';
import { EstadoEncuesta } from '../../enumerations/estado-encuesta.model';
import { EncuestaService } from '../../encuesta/service/encuesta.service';
import { UsuarioExtra } from '../../usuario-extra/usuario-extra.model';
import { Account } from '../../../core/auth/account.model';
import { AccountService } from '../../../core/auth/account.service';
import { UsuarioExtraService } from '../../usuario-extra/service/usuario-extra.service';
2021-08-14 04:04:50 +00:00
import { faListAlt, faUser, faEye, faStar, faCalendarAlt } from '@fortawesome/free-solid-svg-icons';
import * as Chartist from 'chartist';
2021-08-14 06:02:40 +00:00
import { finalize } from 'rxjs/operators';
2021-08-15 00:36:11 +00:00
import { EPreguntaAbiertaRespuestaService } from '../../e-pregunta-abierta-respuesta/service/e-pregunta-abierta-respuesta.service';
import { each } from 'chart.js/helpers';
2021-08-10 01:07:19 +00:00
@Component({
selector: 'jhi-dashboard-user',
templateUrl: './dashboard-user.component.html',
styleUrls: ['./dashboard-user.component.scss'],
})
export class DashboardUserComponent implements OnInit {
2021-08-13 00:03:48 +00:00
cantEncuestas: number = 0;
cantPersonas: number = 0;
cantActivas: number = 0;
cantFinalizadas: number = 0;
cantDraft: number = 0;
cantPublicas: number = 0;
cantPrivadas: number = 0;
2021-08-14 04:04:50 +00:00
faListAlt = faListAlt;
faUser = faUser;
faEye = faEye;
faStar = faStar;
faCalendarAlt = faCalendarAlt;
reportsGeneral = false;
reportForEncuestas = true;
2021-08-14 06:02:40 +00:00
reportPreguntas = true;
2021-08-14 04:04:50 +00:00
duracion?: number = 0;
2021-08-14 06:02:40 +00:00
ePreguntas?: any[];
ePreguntasOpciones?: any[];
2021-08-15 00:36:11 +00:00
eRespuestaAbierta?: any[];
2021-08-13 00:03:48 +00:00
isLoading = false;
encuestas?: IEncuesta[];
usuarioExtra: UsuarioExtra | null = null;
account: Account | null = null;
2021-08-14 06:02:40 +00:00
encuesta: IEncuesta | null = null;
2021-08-13 00:03:48 +00:00
constructor(
protected encuestaService: EncuestaService,
protected accountService: AccountService,
2021-08-15 00:36:11 +00:00
protected usuarioExtraService: UsuarioExtraService,
protected resAbierta: EPreguntaAbiertaRespuestaService
2021-08-13 00:03:48 +00:00
) {}
ngOnInit(): void {
this.loadUser();
}
2021-08-14 04:04:50 +00:00
cambiarVista() {
if (this.reportsGeneral) {
this.reportsGeneral = false;
this.reportForEncuestas = true;
2021-08-14 06:02:40 +00:00
this.reportPreguntas = true;
2021-08-14 04:04:50 +00:00
} else if (this.reportForEncuestas) {
this.reportsGeneral = true;
this.reportForEncuestas = false;
2021-08-14 06:02:40 +00:00
this.reportPreguntas = true;
} else if (this.reportPreguntas) {
this.reportForEncuestas = false;
this.reportPreguntas = true;
this.reportsGeneral = true;
2021-08-14 04:04:50 +00:00
}
}
2021-08-13 00:03:48 +00:00
loadEncuestas() {
this.encuestaService.query().subscribe(
(res: HttpResponse<IEncuesta[]>) => {
this.isLoading = false;
const tmpEncuestas = res.body ?? [];
this.encuestas = tmpEncuestas.filter(e => e.usuarioExtra?.id === this.usuarioExtra?.id);
this.cantEncuestas = this.encuestas.length;
2021-08-14 04:04:50 +00:00
this.cantActivas = tmpEncuestas.filter(e => e.estado === 'ACTIVE' && e.usuarioExtra?.id === this.usuarioExtra?.id).length;
this.cantDraft = tmpEncuestas.filter(e => e.estado === 'DRAFT' && e.usuarioExtra?.id === this.usuarioExtra?.id).length;
this.cantFinalizadas = tmpEncuestas.filter(e => e.estado === 'FINISHED' && e.usuarioExtra?.id === this.usuarioExtra?.id).length;
this.cantPublicas = tmpEncuestas.filter(e => e.acceso === 'PUBLIC' && e.usuarioExtra?.id === this.usuarioExtra?.id).length;
this.cantPrivadas = tmpEncuestas.filter(e => e.acceso === 'PRIVATE' && e.usuarioExtra?.id === this.usuarioExtra?.id).length;
tmpEncuestas.forEach(encuesta => {
const _calificacion = encuesta.calificacion;
encuesta.calificacion = Number(_calificacion?.toString().split('.')[0]);
if (encuesta.fechaFinalizada == null) {
this.duracion = -1;
} else {
this.duracion = encuesta.fechaPublicacion?.diff(encuesta.fechaFinalizada!, 'days');
}
});
this.cantPersonas = tmpEncuestas.filter(e => e.calificacion && e.usuarioExtra?.id === this.usuarioExtra?.id).length;
2021-08-13 00:03:48 +00:00
//cantidad de personas que han completado la encuesta
2021-08-14 04:04:50 +00:00
this.loadFirstChart();
this.loadSecondChart();
2021-08-13 00:03:48 +00:00
},
() => {
this.isLoading = false;
}
);
}
loadUser(): void {
this.accountService.getAuthenticationState().subscribe(account => {
if (account !== null) {
this.usuarioExtraService.find(account.id).subscribe(usuarioExtra => {
this.usuarioExtra = usuarioExtra.body;
});
}
});
this.loadEncuestas();
}
2021-08-14 04:04:50 +00:00
loadFirstChart(): void {
var dataEstado = {
labels: ['ACTIVOS', 'BORRADOR', 'FINALIZADOS'],
series: [this.cantActivas, this.cantDraft, this.cantFinalizadas],
};
new Chartist.Pie('#chartEstado', dataEstado);
}
loadSecondChart(): void {
var dataAcceso = {
labels: ['PÚBLICA', 'PRIVADA'],
series: [this.cantPublicas, this.cantPrivadas],
};
new Chartist.Pie('#chartAcceso', dataAcceso);
}
2021-08-14 06:02:40 +00:00
detallesPreguntas(encuesta: IEncuesta): void {
if (!this.reportForEncuestas) {
this.reportPreguntas = false;
this.reportForEncuestas = true;
this.reportsGeneral = true;
}
this.encuesta = encuesta;
2021-08-15 00:36:11 +00:00
debugger;
2021-08-14 06:02:40 +00:00
this.isLoading = true;
this.encuestaService
.findQuestions(encuesta?.id!)
.pipe(
finalize(() =>
this.encuestaService.findQuestionsOptions(encuesta?.id!).subscribe(
(res: any) => {
this.isLoading = false;
this.ePreguntasOpciones = res.body ?? [];
2021-08-15 00:36:11 +00:00
debugger;
this.ePreguntas!.forEach(pregunta => {
debugger;
if (!pregunta.tipo) {
this.resAbierta.find(pregunta.id).subscribe(res => {
const respuesta = res.body ?? [];
this.eRespuestaAbierta?.push(respuesta);
});
}
});
//this.getOpenQuestionAnswers()
2021-08-14 06:02:40 +00:00
},
() => {
this.isLoading = false;
}
)
)
)
.subscribe(
(res: any) => {
this.isLoading = false;
this.ePreguntas = res.body ?? [];
},
() => {
this.isLoading = false;
}
);
if (this.ePreguntas!.length == 0) {
this.previousState();
}
}
previousState(): void {
window.history.back();
}
2021-08-15 00:36:11 +00:00
getOpenQuestionAnswers() {
debugger;
this.ePreguntas!.forEach(pregunta => {
debugger;
if (!pregunta.tipo) {
this.resAbierta.find(pregunta.id).subscribe(res => {
const respuesta = res.body ?? [];
this.eRespuestaAbierta?.push(respuesta);
});
}
});
}
2021-08-10 01:07:19 +00:00
}