jsm-core
Version:
Core library for JSM project
152 lines (151 loc) • 6.04 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
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());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const excelJS = __importStar(require("exceljs"));
const base_service_1 = require("../../common/classes/base.service");
const jsm_utilities_1 = require("jsm-utilities");
class Exporter extends base_service_1.BaseService {
constructor() {
super();
this._sheets = {};
this._last_sheet = "";
this._data = [];
this.creator = "";
this.lastModifiedBy = "";
this._createdAt = new Date();
this._workbook = new excelJS.Workbook();
this._workbook.creator = "Jsm";
this._workbook.lastModifiedBy = "Jsm";
this._workbook.created = this._createdAt;
this._workbook.modified = this._createdAt;
this._workbook.lastPrinted = this._createdAt;
}
setWorksheet(name, options) {
if (!this._sheets[name])
this._sheets[name] = this._workbook.addWorksheet(name, options);
this._last_sheet = name;
return this;
}
addData(columns, data, mapper) {
this._mapper = mapper;
this._data = data.map((el) => mapper(el));
this._sheets[this._last_sheet].columns = Object.values(typeof columns === "function" ? columns() : columns);
this._sheets[this._last_sheet].addRows(this._data);
this._sheets[this._last_sheet].eachRow(function (row, rowNumber) {
// console.log(colors.green('rowNumber'), rowNumber);
if (rowNumber === 1) {
row.eachCell(function (cell, colNumber) {
row.getCell(colNumber).font = {
bold: true,
color: { argb: "00FFFFFF" },
};
row.getCell(colNumber).fill = {
type: "pattern",
pattern: "solid",
fgColor: { argb: "00de4e61" },
bgColor: { argb: "00de4e61" },
};
});
}
});
}
setLabels(sheetName, labels) {
this.logger.debug("setting labels");
this.setWorksheet(sheetName);
this._sheets[sheetName].columns = [
{
key: "label",
header: "Label",
width: 40,
style: {
font: { size: 12 },
},
},
{
key: "value",
header: "Value",
width: 200,
style: {
font: { size: 12 },
},
},
];
Object.values(labels).forEach(({ label, value }) => {
this.logger.value("label", {
label: label,
value: (0, jsm_utilities_1.transformObjectToString)(value),
});
this._sheets[sheetName].addRow({
label: label,
value: (0, jsm_utilities_1.transformObjectToString)(value),
});
});
this._sheets[sheetName].eachRow(function (row, rowNumber) {
// console.log(colors.green('rowNumber'), rowNumber);
if (rowNumber === 1) {
row.eachCell(function (cell, colNumber) {
row.getCell(colNumber).font = {
bold: true,
color: { argb: "00FFFFFF" },
};
row.getCell(colNumber).fill = {
type: "pattern",
pattern: "solid",
fgColor: { argb: "00de4e61" },
bgColor: { argb: "00de4e61" },
};
});
}
});
}
saveToFile(filename) {
return __awaiter(this, void 0, void 0, function* () {
yield this._workbook.xlsx.writeFile(filename, {
useStyles: true,
});
});
}
}
exports.default = Exporter;
const ex = new Exporter();