Export admin dashboard reports as PDF

This commit is contained in:
Pablo Bonilla 2021-08-13 16:47:18 -06:00
parent 562fe935f4
commit e7efcd5f2e
2 changed files with 115 additions and 9 deletions

View File

@ -3,7 +3,7 @@ import * as XLSX from 'xlsx';
import * as FileSaver from 'file-saver'; import * as FileSaver from 'file-saver';
import { jsPDF } from 'jspdf'; import { jsPDF } from 'jspdf';
import { exportAsExcelFile, exportAsExcelTable } from '../export/export_excel'; import { exportAsExcelFile, exportAsExcelTable } from '../export/export_excel';
import { generatePDFTableData, createPDFTableHeaders, generatePDFTable } from '../export/export_pdf'; import { generatePDFTableData, createPDFTableHeaders, generatePDFTable, saveGeneratedPDF } from '../export/export_pdf';
import { FacturaService } from '../../factura/service/factura.service'; import { FacturaService } from '../../factura/service/factura.service';
import { UsuarioExtraService } from '../../usuario-extra/service/usuario-extra.service'; import { UsuarioExtraService } from '../../usuario-extra/service/usuario-extra.service';
@ -422,15 +422,115 @@ export class DashboardAdminComponent implements OnInit {
*/ */
const doc = new jsPDF(); const doc = new jsPDF();
const _fileName = 'reportes_datasurvey';
let _docData, _headers, _docHeaders, _docTitle;
const _reporteUsuarios = [{ usuarios_activos: '100', usuarios_bloqueados: '50' }]; // Usuarios Generales
const _docData = generatePDFTableData(_reporteUsuarios); const _reporteUsuarios = [
{
ganancias_plantillas: this.gananciasTotales!.toString(),
usuarios_activos: this.cantUsuarioActivos!.toString(),
usuarios_bloqueados: this.cantUsuarioBloqueados!.toString(),
},
];
_docData = generatePDFTableData(_reporteUsuarios);
_headers = ['ganancias_plantillas', 'usuarios_activos', 'usuarios_bloqueados'];
_docHeaders = createPDFTableHeaders(_headers);
_docTitle = 'Reporte Usuarios Generales';
const _headers = ['usuarios_activos', 'usuarios_bloqueados']; generatePDFTable(doc, _docData, _docHeaders, _docTitle);
const _docHeaders = createPDFTableHeaders(_headers); doc.addPage('p');
const _fileName = 'reporte_general';
const _docTitle = 'Reportes Generales de la Aplicación';
generatePDFTable(doc, _docData, _docHeaders, _fileName, _docTitle); // Encuestas Publicadas
const _reporteEncuestasPublicadas: any[] = [];
this.listaMesesAnnos.forEach((date: any, index) => {
let _report: any = {};
_report['fecha'] = date;
_report['cantidad'] = this.encuestasPublicadasMesAnno[index].toString();
_reporteEncuestasPublicadas.push(_report);
});
_docData = generatePDFTableData(_reporteEncuestasPublicadas);
_headers = ['fecha', 'cantidad'];
_docHeaders = createPDFTableHeaders(_headers);
_docTitle = 'Reporte Encuestas Publicadas';
generatePDFTable(doc, _docData, _docHeaders, _docTitle);
doc.addPage('p');
// Encuestas Publicadas
const _reporteCantidadEncuestasPublicadasCategoria: any[] = [];
this.categorias!.forEach((categoria: any, index) => {
let _report: any = {};
_report['categoria'] = categoria.nombre;
_report['cantidad'] = this.encuestasPublicadasCategoria[index].toString();
_reporteCantidadEncuestasPublicadasCategoria.push(_report);
});
_docData = generatePDFTableData(_reporteCantidadEncuestasPublicadasCategoria);
_headers = ['categoria', 'cantidad'];
_docHeaders = createPDFTableHeaders(_headers);
_docTitle = 'Reporte Encuestas Publicadas por Categoría';
generatePDFTable(doc, _docData, _docHeaders, _docTitle);
doc.addPage('p');
// Encuestas Publicadas
const _reporteCantidadEncuestasFinalizadasCategoria: any[] = [];
this.categorias!.forEach((categoria: any, index) => {
let _report: any = {};
_report['categoria'] = categoria.nombre;
_report['cantidad'] = this.encuestasFinalzadasCategoria[index].toString();
_reporteCantidadEncuestasFinalizadasCategoria.push(_report);
});
_docData = generatePDFTableData(_reporteCantidadEncuestasFinalizadasCategoria);
_headers = ['categoria', 'cantidad'];
_docHeaders = createPDFTableHeaders(_headers);
_docTitle = 'Reporte Encuestas Finalizadas por Categoría';
generatePDFTable(doc, _docData, _docHeaders, _docTitle);
doc.addPage('', 'l');
// Encuestas Generales
const _reporteEncuestasReportesGenerales = [
{
encuestas_borrador: this.encuestasBorrador.toString(),
encuestas_publicadas: this.encuestasPublicadas.toString(),
encuestas_finalizadas: this.encuestasFinalizadas.toString(),
encuestas_completadas: this.encuestasCompletadas.toString(),
},
];
_docData = generatePDFTableData(_reporteEncuestasReportesGenerales);
_headers = ['encuestas_borrador', 'encuestas_publicadas', 'encuestas_finalizadas', 'encuestas_completadas'];
_docHeaders = createPDFTableHeaders(_headers);
_docTitle = 'Reporte Encuestas Generales';
generatePDFTable(doc, _docData, _docHeaders, _docTitle);
doc.addPage('', 'l');
// Usuarios
const _reporteEncuestasUsuarios: any[] = [];
this.usuarios!.forEach((user, index) => {
let _report: any = {};
_report['usuario_nombre'] = user.nombre;
_report['usuario_encuestas'] = this.encuestasUsuario[index].toString();
_report['encuestas_borrador'] = this.encuestasUsuarioBorrador[index].toString();
_report['encuestas_publicadas'] = this.encuestasUsuarioPublicadas[index].toString();
_report['encuestas_finalizadas'] = this.encuestasUsuarioFinalizadas[index].toString();
_report['encuestas_completadas_usuarios'] = this.encuestasUsuarioCompletadas[index].toString();
_reporteEncuestasUsuarios.push(_report);
});
_docData = generatePDFTableData(_reporteEncuestasUsuarios);
_headers = [
'usuario_nombre',
'usuario_encuestas',
'encuestas_borrador',
'encuestas_publicadas',
'encuestas_finalizadas',
'encuestas_completadas_usuarios',
];
_docHeaders = createPDFTableHeaders(_headers);
_docTitle = 'Reporte de Usuarios';
generatePDFTable(doc, _docData, _docHeaders, _docTitle);
saveGeneratedPDF(doc, _fileName);
} }
} }

View File

@ -28,11 +28,17 @@ export const createPDFTableHeaders = (keys: any): any[] => {
return result; return result;
}; };
export const generatePDFTable = (doc: jsPDF, _docData: any, _docHeaders: string[], _fileName: string, _docTitle: string): void => { export const generatePDFTable = (doc: jsPDF, _docData: any, _docHeaders: string[], _docTitle: string): void => {
doc.setFontSize(20); doc.setFontSize(20);
doc.setFont('helvetica', 'bold'); doc.setFont('helvetica', 'bold');
doc.text(_docTitle, 20, 20); doc.text(_docTitle, 20, 20);
doc.setFont('helvetica');
doc.setFontSize(12);
doc.table(20, 30, _docData, _docHeaders, { autoSize: true }); doc.table(20, 30, _docData, _docHeaders, { autoSize: true });
};
export const saveGeneratedPDF = (doc: jsPDF, _fileName: string) => {
const generatedFileName = generateFileName(_fileName, PDF_EXTENSION); const generatedFileName = generateFileName(_fileName, PDF_EXTENSION);
doc.save(generatedFileName); doc.save(generatedFileName);
}; };