UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

173 lines (172 loc) 7.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCountOfPage = exports.createHtml = void 0; var tslib_1 = require("tslib"); var lodash_1 = require("lodash"); var commonTableFunction_1 = require("../../../../../store/utils/commonTableFunction"); var utils_1 = require("../../../../../utils/utils"); var createHtml = function (options, tableColumns, tableHeadRows, tableData, range, isLastTask) { var _a; var start = range[0], end = range[1]; var showColumns = tableColumns.filter(function (column) { return column.printType != 'none' && column.width != 0 && column.width != undefined; }); var width = 0; var idx = showColumns.length; for (var i = 0; i < showColumns.length; i++) { var column = showColumns[i]; width += column.width; if (width > options.tableWidth) { idx = i; break; } } var columns = showColumns.slice(0, idx); var table = document.createElement('table'); table.style.margin = '0 auto'; table.style.borderCollapse = 'collapse'; table.style.tableLayout = 'fixed'; table.style.border = "".concat(Math.max(2, (_a = options.borderWidth) !== null && _a !== void 0 ? _a : 2), "px solid #333333"); table.style.wordBreak = 'break-all'; table.style.fontSize = "".concat(options.contentFontSize, "px"); table.style.fontFamily = options.contentFontFamily; table.style.width = "".concat(width, "px"); table.setAttribute('border', options.lineWidth.toString()); // table.setAttribute('style', `font-size: 13px; width: ${width}px; border-collapse:collapse; margin: 0 auto; border: ${options.borderWidth}px solid; table-layout: fixed;`) var colgroup = document.createElement('colgroup'); columns.forEach(function (column) { var col = document.createElement('col'); if (column.width) { col.style.setProperty('width', "".concat(column.width * 3.78, "px")); } colgroup.appendChild(col); }); table.appendChild(colgroup); var thead = document.createElement('thead'); thead.style.display = 'table-header-group'; var _loop_1 = function (i) { var headRow = tableHeadRows[i]; var tr = document.createElement('tr'); headRow.slice(0, idx).forEach(function (item) { var temp = item.rowspan == tableHeadRows.length - i; var th = document.createElement('th'); th.textContent = temp ? item.column.label : item.label; th.colSpan = item.colspan; th.rowSpan = item.rowspan; th.style.padding = "".concat(options.rowPadding, "px ").concat(options.colPadding, "px"); tr.appendChild(th); }); thead.appendChild(tr); }; for (var i = 0; i < tableHeadRows.length; i++) { _loop_1(i); } table.appendChild(thead); var sortColumnNames = (0, lodash_1.flatMap)(columns !== null && columns !== void 0 ? columns : [], function (column) { return column.sort != 'none' ? { name: column.name, func: column.sort } : []; }); var tbody = document.createElement('tbody'); var data = sortArray(tableData.slice(start, end), sortColumnNames).map(function (item) { return (tslib_1.__assign(tslib_1.__assign({}, item), { rowSpans: {} })); }); (0, commonTableFunction_1.combineCell)(data, columns.filter(function (item) { return item.combined; })); for (var i = 0; i < data.length; i++) { var row = data[i]; var tr = document.createElement('tr'); for (var j = 0; j < columns.length; j++) { var column = columns[j]; var rowspan = row.rowSpans[column.name]; if (rowspan === 0) continue; var td = document.createElement('td'); var value = (0, commonTableFunction_1.getCellValue)(row[column.name], column); td.textContent = value; td.rowSpan = rowspan || 1; td.style.textAlign = column.align; td.style.padding = "".concat(options.rowPadding, "px ").concat(options.colPadding, "px"); tr.appendChild(td); } tbody.appendChild(tr); } var hasStatistic = columns.some(function (column) { return column.statistic != 'none'; }); var dataTypeArr = ['number', 'static-number', 'input-number', 'progress', 'static-progress']; if (isLastTask && !options.countAllPage && hasStatistic) { var tr = document.createElement('tr'); var _loop_2 = function (j) { var td = document.createElement('td'); if (j == 0) { td.textContent = '合计:'; } var column = columns[j]; if (column.statistic == 'Sum') { if (dataTypeArr.includes(column.type) || column.pristine.isNumerical) { var value = (0, utils_1.calcFn)('sum', column.name, tableData); td.textContent = (0, commonTableFunction_1.getCellValue)(value, column); } else { var value = data.filter(function (item) { return item[column.name]; }).length; td.textContent = value.toString(); } td.style.textAlign = column.align; } tr.appendChild(td); }; for (var j = 0; j < columns.length; j++) { _loop_2(j); } tbody.appendChild(tr); } table.appendChild(tbody); if (options.countAllPage && hasStatistic) { var tfoot = document.createElement('tfoot'); var tr_1 = document.createElement('tr'); columns.forEach(function (column, index) { var td = document.createElement('td'); if (index == 0) { td.textContent = '合计:'; } if (column.statistic == 'Sum') { if (dataTypeArr.includes(column.type) || column.pristine.isNumerical) { var value = (0, utils_1.calcFn)('sum', column.name, tableData); td.textContent = (0, commonTableFunction_1.getCellValue)(value, column); } else { var value = data.filter(function (item) { return item[column.name]; }).length; td.textContent = value.toString(); } td.style.textAlign = column.align; } tr_1.appendChild(td); }); tfoot.appendChild(tr_1); table.append(tfoot); } return table.outerHTML; }; exports.createHtml = createHtml; var sortArray = function (datas, columns) { if (columns.length > 0) { var column = columns.pop(); if (column) { var name_1 = column.name; var func_1 = column.func; datas = datas.sort(function (a, b) { var valueA = a[name_1]; var valueB = b[name_1]; return (0, utils_1.sortFn)(valueA, valueB, func_1); }); sortArray(datas, columns); } } return datas; }; // fontsize lineheight // 13px 14.8317 // 14px 15.97 // 15px 17.11 // 16px 18.25 // 17px 19.39 // 1px = (25.4 / 96)mm // avg 1.1406994586296058 var getCountOfPage = function (tableHeight, fontSize, padding) { var unit = 25.4 / 96; var lineHeight = (((1 + fontSize) * 1.1406994586296058) + (padding * 2)) * unit; var countOfPage = Math.floor(tableHeight / lineHeight); return countOfPage; }; exports.getCountOfPage = getCountOfPage; //# sourceMappingURL=./renderers/Lion/LabelPrint/components/report/utils.js.map