diff --git a/package-lock.json b/package-lock.json index 8294f38..eb76f57 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3039,6 +3039,14 @@ "@types/jquery": "*" } }, + "@types/chart.js": { + "version": "2.9.34", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.34.tgz", + "integrity": "sha512-CtZVk+kh1IN67dv+fB0CWmCLCRrDJgqOj15qPic2B1VCMovNO6B7Vhf/TgPpNscjhAL1j+qUntDMWb9A4ZmPTg==", + "requires": { + "moment": "^2.10.2" + } + }, "@types/chartist": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/@types/chartist/-/chartist-0.11.1.tgz", @@ -12486,6 +12494,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -13151,6 +13164,11 @@ "mkdirp": "^1.0.3" } }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -13280,6 +13298,16 @@ "tslib": "^2.1.0" } }, + "ng2-charts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-2.4.2.tgz", + "integrity": "sha512-mY3C2uKCaApHCQizS2YxEOqQ7sSZZLxdV6N1uM9u/VvUgVtYvlPtdcXbKpN52ak93ZE22I73DiLWVDnDNG4/AQ==", + "requires": { + "@types/chart.js": "^2.9.24", + "lodash-es": "^4.17.15", + "tslib": "^2.0.0" + } + }, "ngx-infinite-scroll": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/ngx-infinite-scroll/-/ngx-infinite-scroll-10.0.1.tgz", diff --git a/package.json b/package.json index 9890af0..8dcb5f7 100644 --- a/package.json +++ b/package.json @@ -94,6 +94,7 @@ "jspdf": "^2.3.1", "jw-angular-social-buttons": "^1.0.0", "ng-chartist": "^5.0.0", + "ng2-charts": "^2.4.2", "ngx-infinite-scroll": "10.0.1", "ngx-paypal": "^8.0.0", "ngx-sharebuttons": "^8.0.5", diff --git a/src/main/webapp/app/entities/dashboard/dashboard-user/dashboard-user.component.html b/src/main/webapp/app/entities/dashboard/dashboard-user/dashboard-user.component.html index 4e901ae..efd5518 100644 --- a/src/main/webapp/app/entities/dashboard/dashboard-user/dashboard-user.component.html +++ b/src/main/webapp/app/entities/dashboard/dashboard-user/dashboard-user.component.html @@ -1,8 +1,236 @@
+
+ + + +
+
-
+

Reportes generales

En esta sección encontrará los reportes generales de todas sus encuestas

+ +
+

Reportes por encuesta

+

En esta sección encontrará los reportes de cada una de sus encuestas

+
+
+ + +
+
+
+
+
+
+
+
+
+ +
+
+
+
+

Cantidad de encuestas creadas

+ {{ cantEncuestas }} +
+
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+

Cantidad de usuario que han completado las encuestas

+ {{ cantPersonas }} +
+
+
+
+ +
+
+
+ +
+
+
+
+

Cantidad de encuestas por estado

+ +
+
+
+
+ +
+
+
+

Cantidad de encuestas por acceso

+ +
+
+
+
+
+
+
+ + + +
+
+
+
+
+
{{ encuesta.nombre }}
+
+ {{ encuesta.categoria?.nombre | lowercase }} +
+
+ {{ encuesta.descripcion | titlecase }} +
+
+
+
+ Duración:     {{ + duracion + }} + Duración:     Un día o + menos + + Duración:     No ha + finalizado +
+ +
+

Calificación:

+ + +
+
+ +
+
+
+
+
+
+
+
+ + + +
+
+
+ No se encontraron preguntas +
+ +
+
+
+
+
+ {{ i + 1 }}. {{ ePregunta.nombre }} +
+
+ Pregunta de respuesta {{ 'dataSurveyApp.PreguntaCerradaTipo.SINGLE' | translate | lowercase }} + {{ ePregunta.opcional ? '(opcional)' : '' }} + Pregunta de respuesta {{ 'dataSurveyApp.PreguntaCerradaTipo.MULTIPLE' | translate | lowercase }} + {{ ePregunta.opcional ? '(opcional)' : '' }} + Pregunta de respuesta abierta {{ ePregunta.opcional ? '(opcional)' : '' }} +
+ + + + +
+
+ + +
+
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
diff --git a/src/main/webapp/app/entities/dashboard/dashboard-user/dashboard-user.component.ts b/src/main/webapp/app/entities/dashboard/dashboard-user/dashboard-user.component.ts index 9647422..5bb315b 100644 --- a/src/main/webapp/app/entities/dashboard/dashboard-user/dashboard-user.component.ts +++ b/src/main/webapp/app/entities/dashboard/dashboard-user/dashboard-user.component.ts @@ -7,6 +7,8 @@ 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'; +import { faListAlt, faUser, faEye, faStar, faCalendarAlt } from '@fortawesome/free-solid-svg-icons'; +import * as Chartist from 'chartist'; @Component({ selector: 'jhi-dashboard-user', @@ -21,6 +23,14 @@ export class DashboardUserComponent implements OnInit { cantDraft: number = 0; cantPublicas: number = 0; cantPrivadas: number = 0; + faListAlt = faListAlt; + faUser = faUser; + faEye = faEye; + faStar = faStar; + faCalendarAlt = faCalendarAlt; + reportsGeneral = false; + reportForEncuestas = true; + duracion?: number = 0; isLoading = false; encuestas?: IEncuesta[]; @@ -37,6 +47,16 @@ export class DashboardUserComponent implements OnInit { this.loadUser(); } + cambiarVista() { + if (this.reportsGeneral) { + this.reportsGeneral = false; + this.reportForEncuestas = true; + } else if (this.reportForEncuestas) { + this.reportsGeneral = true; + this.reportForEncuestas = false; + } + } + loadEncuestas() { this.encuestaService.query().subscribe( (res: HttpResponse) => { @@ -45,12 +65,30 @@ export class DashboardUserComponent implements OnInit { this.encuestas = tmpEncuestas.filter(e => e.usuarioExtra?.id === this.usuarioExtra?.id); this.cantEncuestas = this.encuestas.length; - this.cantActivas = tmpEncuestas.filter(e => e.estado === 'ACTIVE').length; - this.cantDraft = tmpEncuestas.filter(e => e.estado === 'DRAFT').length; - this.cantFinalizadas = tmpEncuestas.filter(e => e.estado === 'FINISHED').length; - this.cantPublicas = tmpEncuestas.filter(e => e.acceso === 'PUBLIC').length; - this.cantPrivadas = tmpEncuestas.filter(e => e.acceso === 'PRIVATE').length; + 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]); + + debugger; + + 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; //cantidad de personas que han completado la encuesta + + this.loadFirstChart(); + this.loadSecondChart(); }, () => { this.isLoading = false; @@ -69,4 +107,24 @@ export class DashboardUserComponent implements OnInit { this.loadEncuestas(); } + + 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); + } + + detallesPreguntas(): void {} }