UNPKG

@hv-kit/hexpress

Version:

facilitates typescript backend development with express

236 lines 9.9 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExportToJSON = exports.ExportToExcel_1 = exports.ExportToPDF_1 = exports.ExportToCSV = void 0; const json2csv_1 = require("json2csv"); const exceljs_1 = __importDefault(require("exceljs")); const hexpress_config_json_1 = __importDefault(require("../../../../hexpress.config.json")); const hexpress_translations_json_1 = __importDefault(require("../../../../hexpress.translations.json")); const config_1 = require("./config"); const date_1 = require("./date"); const string_1 = require("./string"); const PDFDocument = require('pdfkit-table'); function createFilenameExport(filename, typeType) { let typeTypeFinal = 'csv'; if (typeType === 'csv') { typeTypeFinal = 'csv'; } else if (typeType === 'excel') { typeTypeFinal = 'xlsx'; } else if (typeType === 'pdf') { typeTypeFinal = 'pdf'; } else if (typeType === 'json') { typeTypeFinal = 'json'; } const filename_final = (0, string_1.getAlphanumString)(filename, '_'); if (hexpress_config_json_1.default.debug) { console.log('----> export_functs - createFilenameExport > filename_final:: ', filename_final); } return (0, string_1.RandomF)(10, 'alphanumeric_s', true, (data) => `${(0, string_1.getAlphanumString)(filename_final, '')}-${(0, string_1.getAlphanumString)(String((0, date_1.GetCurrentDate)(true, config_1.dateFormat1)), '')}-${data}.${typeTypeFinal}`); } function ExportToCSV(res, datas, lang) { return __awaiter(this, void 0, void 0, function* () { const finalColumns = datas.columns.map((column) => ({ label: column.label, value: column.target })); const json2csv = new json2csv_1.Parser({ fields: finalColumns }); const csv = json2csv.parse(datas.rows); const finalFilename = createFilenameExport(datas.filename, 'csv'); res.header('Content-type', 'text/csv'); res.attachment(finalFilename); res.send(csv); }); } exports.ExportToCSV = ExportToCSV; function ExportToPDF_1(res, datas, lang) { return __awaiter(this, void 0, void 0, function* () { const finalFilename = createFilenameExport(datas.filename, 'pdf'); const ese = datas.ese; datas.rows = datas.rows.map((value, index) => { value.index = index + 1; return value; }); const finalColumns = datas.columns.map((column) => ({ label: column.label, property: column.target, width: 450 / datas.columns.length, valign: 'center', headerColor: '#222222', headerOpacity: 1 // , renderer: (value: any, indexColumn: any, indexRow: any, row: any) => value })); const doc = new PDFDocument({ bufferPages: true, size: 'A4', layout: 'portrait' }); const table = { // title: UcFirst(datas.titlename), // subtitle: "Subtitle", headers: finalColumns, datas: datas.rows, rows: datas.rows.map((row) => Object.values(row)), }; if (hexpress_config_json_1.default.debug) { console.log('----> ExportToPDF_1 > table:: ', table); } doc.pipe(res); doc.fillColor('#222222'); doc.font('Times-Roman'); doc.fontSize(18); doc.text((0, string_1.UcFirst)(`${hexpress_translations_json_1.default.the[lang]} ${(0, date_1.GetCustomTime2)(String((0, date_1.GetCurrentDate)(true)), lang)}`), { // width: 700, align: 'right' }); doc.moveDown(); // const contents = FileToBase64('images/logo.main.png'); // doc.image(await FetchImage(contents), 320, 280, { // scale: 0.25, // align: 'right', // }); doc.font('Times-Bold'); doc.fontSize(18); doc.text((0, string_1.Upper)(ese.name), { // width: 700, align: 'left' }); doc.fontSize(13); doc.text((0, string_1.Lower)(ese.email), { // width: 700, align: 'left' }); doc.text((0, string_1.Lower)(ese.tels.join(' / ')), { // width: 700, align: 'left' }); doc.text((0, string_1.Capitalize)(ese.address[lang]), { // width: 700, align: 'left' }); doc.moveDown(); doc.font('Times-Bold'); doc.fontSize(15); doc.text((0, string_1.Upper)(datas.titlename), { // width: 410, align: 'center' }); doc.moveDown(); doc.font('Times-Roman'); doc.fontSize(13); doc.moveDown(); doc.table(table, { // A4 595.28 x 841.89 (portrait) (about width sizes) width: 300, //columnsSize: [ 200, 100, 100 ], prepareHeader: () => doc.font('Times-Bold').fontSize(14).fillColor('white'), prepareRow: (row, indexColumn, indexRow, rectRow) => { doc.font('Times-Bold').fontSize(13); doc.fillColor('#222222'); if (indexRow % 2 === 0) { doc.addBackground(rectRow, 'white', 0.001); } else { doc.addBackground(rectRow, '#BEBEBE', 0.001); } }, }); // doc.text(contents); // pagination let pageNumber = 1; doc.page.margins.bottom = 0; doc.text(`${(0, string_1.UcFirst)('page ')} ${pageNumber}`, 0.5 * (doc.page.width - 100), doc.page.height - 50, { align: 'center', lineBreak: false, }); doc.on('pageAdded', () => { pageNumber++; let bottom = doc.page.margins.bottom; doc.page.margins.bottom = 0; doc.text(`${(0, string_1.UcFirst)('page ')} ${pageNumber}`, 0.5 * (doc.page.width - 100), doc.page.height - 50, { align: 'center', lineBreak: false, }); doc.page.margins.bottom = bottom; }); doc.end(); res.header('Content-type', 'application/pdf'); res.attachment(finalFilename); res.send(doc); }); } exports.ExportToPDF_1 = ExportToPDF_1; function ExportToExcel_1(res, datas, lang) { return __awaiter(this, void 0, void 0, function* () { const finalFilename = createFilenameExport(datas.filename, 'excel'); const ese = datas.ese; datas.rows = datas.rows.map((value, index) => { value.index = index + 1; return value; }); const finalColumns = datas.columns.map((column) => ({ header: (0, string_1.Upper)(column.label), key: column.target, width: column.label.length * 2 })); const workbook = new exceljs_1.default.Workbook(); const worksheet = workbook.addWorksheet((0, string_1.Upper)(datas.titlename)); workbook.creator = ese.author.name; workbook.lastModifiedBy = ese.author.name; workbook.created = (0, date_1.GetCurrentDate)(false); workbook.modified = (0, date_1.GetCurrentDate)(false); // worksheet.getCell('A1').value=Upper(datas.titlename); // worksheet.mergeCells(`A1:A${datas.rows.length}`); // worksheet.getCell(`A1:A${datas.rows.length}`).value = Upper(datas.titlename); // worksheet.getCell(`A1:A${datas.rows.length}`).alignment = { horizontal:'center'} ; worksheet.columns = finalColumns; let counter = 1; datas.rows.forEach((row, index) => { worksheet.addRow(row); worksheet.getRow(counter).eachCell((cell) => { cell.alignment = { wrapText: true, vertical: 'middle', }; }); counter++; }); worksheet.getRow(1).eachCell((cell) => { cell.font = { bold: true }; }); res.header('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); res.attachment(finalFilename); yield workbook.xlsx.write(res); res.end(); }); } exports.ExportToExcel_1 = ExportToExcel_1; function ExportToJSON(res, datas, lang) { return __awaiter(this, void 0, void 0, function* () { const rows = datas.rows; const finalFilename = createFilenameExport(datas.filename, 'json'); res.header('Content-type', 'application/json'); res.attachment(finalFilename); res.send(rows); }); } exports.ExportToJSON = ExportToJSON; exports.default = { createFilenameExport, ExportToCSV, ExportToPDF_1, ExportToExcel_1, ExportToJSON, }; //# sourceMappingURL=export_functs.js.map