@syncfusion/ej2-grids
Version:
Feature-rich JavaScript datagrid (datatable) control with built-in support for editing, filtering, grouping, paging, sorting, and exporting to Excel.
916 lines • 83.9 kB
JavaScript
import * as events from '../base/constant';
import { PdfDocument, PdfGrid, PdfBorders, PdfPen, PdfPaddings, PdfGridLayoutFormat, PdfLayoutType, PdfLayoutBreakType } from '@syncfusion/ej2-pdf-export';
import { PdfStandardFont, PdfFontFamily, PdfFontStyle, PdfBitmap } from '@syncfusion/ej2-pdf-export';
import { PdfStringFormat, PdfTextAlignment, PdfColor, PdfSolidBrush, PdfTextWebLink } from '@syncfusion/ej2-pdf-export';
import { PdfVerticalAlignment, RectangleF, PdfPageTemplateElement } from '@syncfusion/ej2-pdf-export';
import { PointF, PdfPageNumberField, PdfCompositeField } from '@syncfusion/ej2-pdf-export';
import { PdfPageCountField, SizeF, PdfPageSettings, PdfPageOrientation } from '@syncfusion/ej2-pdf-export';
import { PdfTrueTypeFont } from '@syncfusion/ej2-pdf-export';
import { ExportHelper, ExportValueFormatter } from './export-helper';
import { Data } from '../actions/data';
import { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';
import { compile, getEnumValue, isNullOrUndefined, detach, extend } from '@syncfusion/ej2-base';
import { CellType } from '../base/enum';
import { DataManager, Query } from '@syncfusion/ej2-data';
import { getValue } from '@syncfusion/ej2-base';
import { getUid, getPrintGridModel, measureColumnDepth, isExportColumns, updateColumnTypeForExportColumns, prepareColumns } from '../base/util';
/**
* `PDF Export` module is used to handle the exportToPDF action.
*
* @hidden
*/
var PdfExport = /** @class */ (function () {
/**
* Constructor for the Grid PDF Export module
*
* @param {IGrid} parent - specifies the IGrid
* @hidden
*/
function PdfExport(parent) {
this.hideColumnInclude = false;
this.currentViewData = false;
this.customDataSource = false;
this.isGrouping = false;
this.headerOnPages = [];
this.drawPosition = { xPosition: 0, yPosition: 0 };
this.parent = parent;
this.helper = new ExportHelper(parent);
this.gridPool = {};
}
/**
* For internal use only - Get the module name.
*
* @returns {string} returns the module name
*/
PdfExport.prototype.getModuleName = function () {
return 'PdfExport';
};
PdfExport.prototype.init = function (parent) {
this.exportValueFormatter = new ExportValueFormatter(parent.locale);
this.pdfDocument = undefined;
this.hideColumnInclude = false;
this.currentViewData = false;
this.parent = parent;
this.isGrouping = false;
this.isExporting = true;
parent.id = getUid('main-grid');
this.gridPool[parent.id] = false;
this.pdfPageSettings = new PdfPageSettings();
};
PdfExport.prototype.exportWithData = function (parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject) {
var _this = this;
this.init(parent);
if (!isNullOrUndefined(pdfDoc)) {
this.pdfDocument = pdfDoc;
}
else {
this.pdfDocument = new PdfDocument();
}
this.processExport(parent, returnType, pdfExportProperties, isMultipleExport).then(function () {
_this.isExporting = false;
parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise } : { gridInstance: _this.parent });
_this.parent.log('exporting_complete', _this.getModuleName());
resolve(_this.pdfDocument);
}).catch(function (e) {
reject(_this.pdfDocument);
_this.parent.trigger(events.actionFailure, e);
});
};
/**
* Used to map the input data
*
* @param {IGrid} parent - specifies the IGrid
* @param {PdfExportProperties} pdfExportProperties - specifies the PdfExportProperties
* @param {boolean} isMultipleExport - specifies the isMultipleExport
* @param {Object} pdfDoc - specifies the pdfDoc
* @param {boolean} isBlob - speciies whether it is Blob or not
* @returns {void}
*/
PdfExport.prototype.Map = function (parent, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {
var _this = this;
this.data = new Data(this.parent);
this.isBlob = isBlob;
this.gridPool = {};
var query = pdfExportProperties && pdfExportProperties.query ? pdfExportProperties.query : new Query();
if ((parent.childGrid || parent.detailTemplate) && !(!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.hierarchyExportMode === 'None')) {
parent.expandedRows = getPrintGridModel(parent).expandedRows;
}
var args = {
requestType: 'beforePdfExport', cancel: false,
headerPageNumbers: [], gridDrawPosition: { xPosition: 0, yPosition: 0 }, generateQuery: false
};
var gridObject = 'gridObject';
args["" + gridObject] = parent;
var can = 'cancel';
var generateQuery = 'generateQuery';
var header = 'headerPageNumbers';
var drawPos = 'gridDrawPosition';
parent.trigger(events.beforePdfExport, args);
if (args["" + can] === true) {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
return new Promise(function (resolve, reject) {
return resolve();
});
}
if (isExportColumns(pdfExportProperties)) {
updateColumnTypeForExportColumns(pdfExportProperties, parent);
}
if (args["" + generateQuery]) {
query = ExportHelper.getQuery(parent, this.data);
}
this.headerOnPages = args["" + header];
this.drawPosition = args["" + drawPos];
this.parent.log('exporting_begin', this.getModuleName());
if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)) {
pdfExportProperties.dataSource = pdfExportProperties.dataSource instanceof DataManager ?
pdfExportProperties.dataSource : new DataManager(pdfExportProperties.dataSource);
if (isNullOrUndefined(query.isCountRequired) || parent.aggregates) {
query.isCountRequired = true;
}
return new Promise(function (resolve, reject) {
pdfExportProperties.dataSource.executeQuery(query).then(function (returnType) {
_this.exportWithData(parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject);
});
});
}
else if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType === 'CurrentPage' &&
!(this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length
&& !this.parent.getDataModule().isRemote())) {
return new Promise(function (resolve, reject) {
_this.exportWithData(parent, pdfDoc, resolve, _this.parent.getCurrentViewRecords(), pdfExportProperties, isMultipleExport, reject);
});
}
else {
var allPromise_1 = [];
var query_1 = ExportHelper.getQuery(parent, this.data);
if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length
&& !this.parent.getDataModule().isRemote()) {
if (isNullOrUndefined(pdfExportProperties)) {
pdfExportProperties = { hierarchyExportMode: 'All' };
}
pdfExportProperties.hierarchyExportMode = pdfExportProperties.hierarchyExportMode === 'None' ? 'None' : 'All';
if (pdfExportProperties.hierarchyExportMode === 'All') {
query_1.lazyLoad = [];
}
}
allPromise_1.push(this.data.getData({}, query_1));
allPromise_1.push(this.helper.getColumnData(parent));
return new Promise(function (resolve, reject) {
Promise.all(allPromise_1).then(function (e) {
_this.init(parent);
if (!isNullOrUndefined(pdfDoc)) {
_this.pdfDocument = pdfDoc['document'];
}
else {
_this.pdfDocument = new PdfDocument();
}
_this.processExport(parent, e[0], pdfExportProperties, isMultipleExport, pdfDoc).then(function (results) {
_this.isExporting = false;
parent.trigger(events.pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise }
: { gridInstance: _this.parent });
_this.parent.log('exporting_complete', _this.getModuleName());
if (pdfExportProperties && pdfExportProperties.multipleExport && pdfExportProperties.multipleExport.type === 'AppendToPage') {
resolve(results);
}
else {
resolve(_this.pdfDocument);
}
}).catch(function (e) {
reject(_this.pdfDocument);
_this.parent.trigger(events.actionFailure, e);
});
});
});
}
};
PdfExport.prototype.processExport = function (gObj, returnType, pdfExportProperties, isMultipleExport, pdfDoc) {
var _this = this;
var section = !(pdfDoc && pdfExportProperties && pdfExportProperties.multipleExport &&
pdfExportProperties.multipleExport.type === 'AppendToPage') ? this.pdfDocument.sections.add() : null;
var pdfGrid;
this.processSectionExportProperties(section, pdfExportProperties);
var pdfPage = pdfDoc && pdfExportProperties && pdfExportProperties.multipleExport &&
pdfExportProperties.multipleExport.type === 'AppendToPage' ? pdfDoc['result'].page : section.pages.add();
// eslint-disable-next-line @typescript-eslint/no-unused-vars
return new Promise(function (resolve, reject) {
pdfGrid = _this.processGridExport(gObj, returnType, pdfExportProperties);
_this.globalResolve = resolve;
_this.gridPool[gObj.id] = true;
_this.helper.checkAndExport(_this.gridPool, _this.globalResolve);
}).then(function () {
// draw the grid
var xPosition = _this.drawPosition['xPosition'];
var yPosition;
if (pdfDoc && pdfExportProperties && pdfExportProperties.multipleExport && pdfExportProperties.multipleExport.type === 'AppendToPage') {
yPosition = pdfDoc['result'].bounds.y + pdfDoc['result'].bounds.height;
if (pdfExportProperties.multipleExport.blankSpace) {
yPosition = pdfDoc['result'].bounds.y + pdfDoc['result'].bounds.height + pdfExportProperties.multipleExport.blankSpace;
}
}
else {
yPosition = _this.drawPosition['yPosition'];
}
var result;
if (isMultipleExport) {
var layoutFormat = new PdfGridLayoutFormat();
layoutFormat.layout = PdfLayoutType.Paginate;
layoutFormat.break = PdfLayoutBreakType.FitPage;
//Set pagination bounds of PDF grid
layoutFormat.paginateBounds = new RectangleF(0, 0, pdfPage.getClientSize().width, pdfPage.getClientSize().height);
result = pdfGrid.draw(pdfPage, xPosition, yPosition, layoutFormat);
}
else {
result = pdfGrid.draw(pdfPage, xPosition, yPosition);
}
_this.drawHeader(pdfExportProperties);
if (!isMultipleExport) {
// save the PDF
if (!_this.isBlob) {
if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.fileName) {
_this.pdfDocument.save(pdfExportProperties.fileName);
}
else {
_this.pdfDocument.save('Export.pdf');
}
}
else {
_this.blobPromise = _this.pdfDocument.save();
}
_this.pdfDocument.destroy();
delete gObj.expandedRows;
}
if (pdfExportProperties && pdfExportProperties.multipleExport && pdfExportProperties.multipleExport.type === 'AppendToPage') {
return { document: _this.pdfDocument, result: result };
}
else {
return _this.pdfDocument;
}
});
};
PdfExport.prototype.processSectionExportProperties = function (section, pdfExportProperties) {
if (!isNullOrUndefined(section) && !isNullOrUndefined(pdfExportProperties)
&& (!isNullOrUndefined(pdfExportProperties.pageOrientation) || !isNullOrUndefined(pdfExportProperties.pageSize))) {
this.pdfPageSettings.orientation = (pdfExportProperties.pageOrientation === 'Landscape') ?
PdfPageOrientation.Landscape : PdfPageOrientation.Portrait;
this.pdfPageSettings.size = this.getPageSize(pdfExportProperties.pageSize);
section.setPageSettings(this.pdfPageSettings);
}
return section;
};
PdfExport.prototype.processGridExport = function (gObj, returnType, pdfExportProperties) {
var allowHorizontalOverflow = true;
if (!isNullOrUndefined(pdfExportProperties)) {
this.gridTheme = pdfExportProperties.theme;
allowHorizontalOverflow = isNullOrUndefined(pdfExportProperties.allowHorizontalOverflow) ?
true : pdfExportProperties.allowHorizontalOverflow;
}
var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());
var dataSource = this.processExportProperties(pdfExportProperties, returnType.result);
var columns = isExportColumns(pdfExportProperties) ?
prepareColumns(pdfExportProperties.columns, gObj.enableColumnVirtualization) :
helper.getGridExportColumns(gObj.columns);
columns = columns.filter(function (columns) { return isNullOrUndefined(columns.commands); });
var isGrouping = false;
if (gObj.groupSettings.columns.length) {
isGrouping = true;
}
if ((gObj.childGrid || gObj.detailTemplate) && !isNullOrUndefined(pdfExportProperties)) {
gObj.hierarchyPrintMode = pdfExportProperties.hierarchyExportMode || 'Expanded';
}
// create a grid
var pdfGrid = new PdfGrid();
// get header theme style
var headerThemeStyle = this.getHeaderThemeStyle();
var border = headerThemeStyle.border;
var headerFont = headerThemeStyle.font;
var headerBrush = headerThemeStyle.brush;
var returnValue = helper.getHeaders(columns, this.hideColumnInclude);
// Column collection with respect to the records in the grid
var gridColumns = returnValue.columns;
// process grid header content
pdfGrid = this.processGridHeaders(gObj.groupSettings.columns.length, pdfGrid, returnValue.rows, gridColumns, border, headerFont, headerBrush, gObj, allowHorizontalOverflow, columns);
// set alignment, width and type of the values of the column
this.setColumnProperties(gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow);
var captionThemeStyle = this.getSummaryCaptionThemeStyle();
if (!isNullOrUndefined(dataSource) && dataSource.length) {
if (isGrouping) {
if (!isNullOrUndefined(captionThemeStyle.border)) {
border = captionThemeStyle.border;
}
this.processGroupedRecords(pdfGrid, dataSource, gridColumns, gObj, border, 0, captionThemeStyle.font, captionThemeStyle.
brush, captionThemeStyle.backgroundBrush, returnType, pdfExportProperties, helper, 0);
}
else {
this.processRecord(border, gridColumns, gObj, dataSource, pdfGrid, 0, pdfExportProperties, helper, 0);
}
if (!isNullOrUndefined(returnType.aggregates)) {
var summaryModel = new SummaryModelGenerator(gObj);
var sRows = void 0;
var column = summaryModel.getColumns();
column = column.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });
if (gObj.aggregates.length && this.parent !== gObj) {
gObj.aggregateModule.prepareSummaryInfo();
}
if (this.customDataSource) {
sRows = summaryModel.generateRows(dataSource, returnType.aggregates, null, null, column);
}
else if (this.currentViewData) {
sRows = summaryModel.generateRows(this.parent.getCurrentViewRecords(), returnType.aggregates);
}
else if (isGrouping) {
sRows = summaryModel.generateRows(dataSource.records, returnType.aggregates);
}
else {
sRows = summaryModel.generateRows(returnType.result, returnType.aggregates, null, null, column);
}
this.processAggregates(sRows, pdfGrid, border, captionThemeStyle.font, captionThemeStyle.brush, captionThemeStyle.backgroundBrush, false, null, null, null, isGrouping ? false : true);
}
}
else {
var row = pdfGrid.rows.addRow();
row.style.setBorder(border);
}
return pdfGrid;
};
PdfExport.prototype.getSummaryCaptionThemeStyle = function () {
if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.caption)) {
var fontSize = !isNullOrUndefined(this.gridTheme.caption.fontSize) ? this.gridTheme.caption.fontSize : 9.75;
var fontFamily = !isNullOrUndefined(this.gridTheme.caption.fontName) ?
this.getFontFamily(this.gridTheme.caption.fontName) : PdfFontFamily.Helvetica;
var fontStyle = this.getFontStyle(this.gridTheme.caption);
var pdfColor = new PdfColor(0, 0, 0);
if (!isNullOrUndefined(this.gridTheme.caption.fontColor)) {
var penBrushColor = this.hexToRgb(this.gridTheme.caption.fontColor);
pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);
}
var borderCaption = this.gridTheme.caption.border ? this.getBorderStyle(this.gridTheme.caption.border) : null;
var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);
if (!isNullOrUndefined(this.gridTheme.caption.font)) {
font = this.gridTheme.caption.font;
}
return { font: font, brush: new PdfSolidBrush(pdfColor), backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)),
border: borderCaption };
}
else {
//Material theme
return { font: new PdfStandardFont(PdfFontFamily.Helvetica, 9.75), brush: new PdfSolidBrush(new PdfColor(0, 0, 0)),
backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)) };
}
};
PdfExport.prototype.getGridPdfFont = function (args) {
var fontFamily = 'fontFamily';
var fontSize = 'fontSize';
var fontStyle = 'fontStyle';
var isTrueType = 'isTrueType';
var style = 0;
if (args.header && args.header.font) {
var headerFont = args.header.font["" + fontFamily];
var headerSize = args.header.font["" + fontSize];
var headerStyle = args.header.font["" + fontStyle];
style = (isNullOrUndefined(PdfFontStyle["" + headerStyle]) ? 0 : PdfFontStyle["" + headerStyle]);
if (args.header.font["" + isTrueType]) {
args.header.font = new PdfTrueTypeFont(headerFont, headerSize, style);
}
else {
var fontFamily_1 = !isNullOrUndefined(headerFont) ?
this.getFontFamily(headerFont) : PdfFontFamily.Helvetica;
args.header.font = new PdfStandardFont(fontFamily_1, headerSize, style);
}
}
if (args.caption && args.caption.font) {
var captionFont = args.caption.font["" + fontFamily];
var captionSize = args.caption.font["" + fontSize];
var captionStyle = args.caption.font["" + fontStyle];
style = (isNullOrUndefined(PdfFontStyle["" + captionStyle]) ? 0 : PdfFontStyle["" + captionStyle]);
if (args.caption.font["" + isTrueType]) {
args.caption.font = new PdfTrueTypeFont(captionFont, captionSize, style);
}
else {
var fontFamily_2 = !isNullOrUndefined(captionFont) ?
this.getFontFamily(captionFont) : PdfFontFamily.Helvetica;
args.caption.font = new PdfStandardFont(fontFamily_2, captionSize, style);
}
}
if (args.record && args.record.font) {
var recordFont = args.record.font["" + fontFamily];
var recordSize = args.record.font["" + fontSize];
var recordStyle = args.record.font["" + fontStyle];
style = (isNullOrUndefined(PdfFontStyle["" + recordStyle]) ? 0 : PdfFontStyle["" + recordStyle]);
if (args.record.font["" + isTrueType]) {
args.record.font = new PdfTrueTypeFont(recordFont, recordSize, style);
}
else {
var fontFamily_3 = !isNullOrUndefined(recordFont) ?
this.getFontFamily(recordFont) : PdfFontFamily.Helvetica;
args.record.font = new PdfStandardFont(fontFamily_3, recordSize, style);
}
}
};
PdfExport.prototype.getHeaderThemeStyle = function () {
var border = new PdfBorders();
if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.header)) {
var fontFamily = !isNullOrUndefined(this.gridTheme.header.fontName) ?
this.getFontFamily(this.gridTheme.header.fontName) : PdfFontFamily.Helvetica;
var fontStyle = this.getFontStyle(this.gridTheme.header);
var fontSize = !isNullOrUndefined(this.gridTheme.header.fontSize) ? this.gridTheme.header.fontSize : 10.5;
var pdfColor = new PdfColor();
if (!isNullOrUndefined(this.gridTheme.header.fontColor)) {
var penBrushColor = this.hexToRgb(this.gridTheme.header.fontColor);
pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);
}
var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);
if (!isNullOrUndefined(this.gridTheme.header.font)) {
font = this.gridTheme.header.font;
}
return { border: this.getBorderStyle(this.gridTheme.header.border), font: font, brush: new PdfSolidBrush(pdfColor) };
}
else {
//Material theme
border.all = new PdfPen(new PdfColor(234, 234, 234));
return { border: border, font: new PdfStandardFont(PdfFontFamily.Helvetica, 10.5),
brush: new PdfSolidBrush(new PdfColor(102, 102, 102)) };
}
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
PdfExport.prototype.processGroupedRecords = function (pdfGrid, dataSource, gridColumns, gObj, border, level, font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index) {
var _this = this;
var groupIndex = level;
var _loop_1 = function (dataSourceItems) {
var row = pdfGrid.rows.addRow();
var col = gObj.getColumnByField(dataSourceItems.field);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
var args = {
value: dataSourceItems.key,
column: col,
style: undefined,
isForeignKey: col.isForeignColumn()
};
var value = gObj.getColumnByField(dataSourceItems.field).headerText + ': ' + (!col.enableGroupByFormat ? this_1.exportValueFormatter.formatCellValue(args) : dataSourceItems.key) + ' - ' + dataSourceItems.count + (dataSource.count > 1 ? ' items' : ' item');
var cArgs = { captionText: value, type: 'PDF', data: dataSourceItems, style: undefined };
this_1.parent.trigger(events.exportGroupCaption, cArgs, function (cArgs) {
row.cells.getCell(groupIndex).value = cArgs.captionText;
row.cells.getCell(groupIndex).style.stringFormat = new PdfStringFormat(PdfTextAlignment.Left);
row.style.setBorder(border);
row.style.setFont(font);
row.style.setTextBrush(brush);
row.style.setBackgroundBrush(backgroundBrush);
if (!isNullOrUndefined(cArgs.style)) {
_this.processCellStyle(row.cells.getCell(groupIndex), cArgs);
}
var sRows;
var captionSummaryModel = new CaptionSummaryModelGenerator(gObj);
if (!isNullOrUndefined(dataSourceItems.items.records)) {
sRows = captionSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);
}
else {
sRows = captionSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);
}
if (!isNullOrUndefined(sRows) && sRows.length === 0) {
row.cells.getCell(groupIndex + 1).columnSpan = pdfGrid.columns.count - (groupIndex + 1);
}
if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {
_this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex, null, null, gObj);
_this.processGroupedRecords(pdfGrid, dataSourceItems.items, gridColumns, gObj, border, (groupIndex + 1), font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index);
index = _this.rowIndex;
var groupSummaryModel = new GroupSummaryModelGenerator(gObj);
sRows = groupSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);
_this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false);
}
else {
_this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex, null, null, gObj);
index = _this.processRecord(border, gridColumns, gObj, dataSourceItems.items, pdfGrid, (groupIndex + 1), pdfExportProperties, helper, index);
var groupSummaryModel = new GroupSummaryModelGenerator(gObj);
sRows = groupSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);
var isGroupedFooter = true;
_this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false, null, null, isGroupedFooter, null, gObj);
}
});
};
var this_1 = this;
for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {
var dataSourceItems = dataSource_1[_i];
_loop_1(dataSourceItems);
}
};
PdfExport.prototype.processGridHeaders = function (childLevels, pdfGrid, rows, gridColumn, border, headerFont, headerBrush, grid, allowHorizontalOverflow, eCols) {
var _this = this;
var columnCount = gridColumn.length + childLevels;
var depth = measureColumnDepth(eCols);
var cols = eCols;
var index = 0;
var rowNumber = [];
for (var i = 0; i < rows.length; i++) {
rowNumber[parseInt(i.toString(), 10)] = 0;
}
if (grid.groupSettings.columns.length) {
index = grid.groupSettings.columns.length - 1;
columnCount = columnCount - 1;
}
pdfGrid.columns.add(columnCount);
pdfGrid.style.cellPadding = new PdfPaddings(5.76, 5.76, 0.5, 0.5);
pdfGrid.headers.add(rows.length);
var applyTextAndSpan = function (rowIdx, colIdx, col, rowSpan, colSpan) {
var gridHeader = pdfGrid.headers.getHeader(rowIdx);
var pdfCell = gridHeader.cells.getCell(colIdx);
var cell = rows[parseInt(rowIdx.toString(), 10)].cells[grid.groupSettings.columns.length ?
colIdx : rowNumber[parseInt(rowIdx.toString(), 10)]];
rowNumber[parseInt(rowIdx.toString(), 10)] = rowNumber[parseInt(rowIdx.toString(), 10)] + 1;
if (!isNullOrUndefined(col.headerTextAlign)) {
pdfCell.style.stringFormat = _this.getHorizontalAlignment(col.headerTextAlign);
}
if (rowSpan > 0) {
pdfCell.rowSpan = rowSpan;
pdfCell.style.stringFormat = _this.getVerticalAlignment('Bottom', pdfCell.style.stringFormat, col.textAlign);
}
if (colSpan > 0) {
pdfCell.columnSpan = colSpan;
}
gridHeader.style.setBorder(border);
gridHeader.style.setFont(headerFont);
gridHeader.style.setTextBrush(headerBrush);
pdfCell.value = col.headerText;
if (!isNullOrUndefined(cell) && (cell.cellType === CellType.HeaderIndent || cell.cellType === CellType.DetailHeader)) {
pdfCell.value = '';
pdfCell.width = 20;
}
var args = {
cell: pdfCell,
gridCell: cell,
style: pdfCell.style
};
_this.parent.trigger(events.pdfHeaderQueryCellInfo, args);
var evtArgs = args;
var setCellBorder = args.style.borders;
var setCellFont = args.style.font;
var setHeaderBrush = args.style.textBrush;
if (!isNullOrUndefined(setCellBorder)) {
gridHeader.style.setBorder(setCellBorder);
}
if (!isNullOrUndefined(setCellFont)) {
gridHeader.style.setFont(setCellFont);
}
if (!isNullOrUndefined(setHeaderBrush)) {
gridHeader.style.setTextBrush(setHeaderBrush);
}
if (!isNullOrUndefined(evtArgs.style.verticalAlignment)) {
pdfCell.style.stringFormat = _this.getVerticalAlignment(evtArgs.style.verticalAlignment, pdfCell.style.stringFormat);
}
if (!isNullOrUndefined(evtArgs.image)) {
pdfCell.value = new PdfBitmap(evtArgs.image.base64);
}
if (!isNullOrUndefined(evtArgs.hyperLink)) {
pdfCell.value = _this.setHyperLink(evtArgs);
}
};
var recuHeader = function (cols, depth, spanCnt, colIndex, rowIndex, isRoot) {
var cidx = 0;
for (var i = 0; i < cols.length; i++) {
if (isRoot) {
cidx = cidx + spanCnt + (i === 0 ? 0 : -1);
colIndex = cidx;
spanCnt = 0;
}
if (!isRoot && !cols[parseInt(i.toString(), 10)].visible) {
colIndex = colIndex - 1;
}
if (cols[parseInt(i.toString(), 10)].columns && cols[parseInt(i.toString(), 10)].columns.length) {
var newSpanCnt = recuHeader(cols[parseInt(i.toString(), 10)]
.columns, depth - 1, 0, i + colIndex, rowIndex + 1, false);
applyTextAndSpan(rowIndex, i + colIndex + index, cols[parseInt(i.toString(), 10)], 0, newSpanCnt);
spanCnt = spanCnt + newSpanCnt;
colIndex = colIndex + newSpanCnt - 1;
}
else if (cols[parseInt(i.toString(), 10)].visible || _this.hideColumnInclude) {
spanCnt++;
applyTextAndSpan(rowIndex, i + colIndex + index, cols[parseInt(i.toString(), 10)], depth, 0);
}
}
return spanCnt;
};
recuHeader(cols, depth, 0, 0, 0, true);
if (pdfGrid.columns.count >= 6 && allowHorizontalOverflow) {
pdfGrid.style.allowHorizontalOverflow = true;
}
return pdfGrid;
};
PdfExport.prototype.processExportProperties = function (pdfExportProperties, dataSource) {
if (!isNullOrUndefined(pdfExportProperties)) {
if (!isNullOrUndefined(pdfExportProperties.theme)) {
this.gridTheme = pdfExportProperties.theme;
}
var clientSize = this.pdfPageSettings.size;
this.drawHeader(pdfExportProperties);
if (!isNullOrUndefined(pdfExportProperties.footer)) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
var footer = pdfExportProperties.footer;
var position = new PointF(0, ((clientSize.width - 80) - (footer.fromBottom * 0.75)));
var size = new SizeF((clientSize.width - 80), (footer.height * 0.75));
var bounds = new RectangleF(position, size);
this.pdfDocument.template.bottom = this.drawPageTemplate(new PdfPageTemplateElement(bounds), footer);
}
if (!isNullOrUndefined(pdfExportProperties.includeHiddenColumn) && !this.isGrouping) {
this.hideColumnInclude = pdfExportProperties.includeHiddenColumn;
}
if (!isNullOrUndefined(pdfExportProperties.dataSource)) {
this.customDataSource = true;
this.currentViewData = false;
}
else if (!isNullOrUndefined(pdfExportProperties.exportType)) {
if (pdfExportProperties.exportType === 'CurrentPage') {
dataSource = this.parent.groupSettings && this.parent.groupSettings.enableLazyLoading
&& this.parent.groupSettings.columns.length && !this.parent.getDataModule().isRemote() ? dataSource
: this.parent.currentViewData;
this.currentViewData = true;
this.customDataSource = false;
}
else {
this.currentViewData = false;
this.customDataSource = false;
}
}
else {
this.currentViewData = false;
this.customDataSource = false;
}
}
else {
this.currentViewData = false;
this.customDataSource = false;
}
return dataSource;
};
PdfExport.prototype.drawHeader = function (pdfExportProperties) {
var _this = this;
var clientSize = this.pdfPageSettings.size;
if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.header)) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
var header = pdfExportProperties.header;
var position = new PointF(0, header.fromTop);
var size = new SizeF((clientSize.width - 80), (header.height * 0.75));
var bounds = new RectangleF(position, size);
if (!this.headerOnPages.length) {
this.pdfDocument.template.top = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);
}
else {
var headerTemplate_1 = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);
this.headerOnPages.filter(function (index) {
if (index - 1 >= 0 && index - 1 <= _this.pdfDocument.pages.count - 1) {
_this.pdfDocument.pages.getPageByIndex(index - 1).graphics
.drawPdfTemplate(headerTemplate_1.template, new PointF(0, 0));
}
});
}
}
};
PdfExport.prototype.drawPageTemplate = function (template, element) {
for (var _i = 0, _a = element.contents; _i < _a.length; _i++) {
var content = _a[_i];
this.processContentValidation(content);
switch (content.type) {
case 'Text':
if (content.value === '' || content.value === undefined || content.value === null || typeof content.value !== 'string') {
throw new Error('please enter the valid input value in text content...');
}
this.drawText(template, content);
break;
case 'PageNumber':
this.drawPageNumber(template, content);
break;
case 'Image':
if (content.src === undefined || content.src === null || content.src === '') {
throw new Error('please enter the valid base64 string in image content...');
}
this.drawImage(template, content);
break;
case 'Line':
this.drawLine(template, content);
break;
default:
throw new Error('Please set valid content type...');
}
}
return template;
};
PdfExport.prototype.processContentValidation = function (content) {
if (content.type === undefined || content.type === null) {
throw new Error('please set valid content type...');
}
else {
if (content.type === 'Line') {
if (content.points === undefined || content.points === null) {
throw new Error('please enter valid points in ' + content.type + ' content...');
}
else {
if (content.points.x1 === undefined || content.points.x1 === null || typeof content.points.x1 !== 'number') {
throw new Error('please enter valid x1 co-ordinate in ' + content.type + ' points...');
}
if (content.points.y1 === undefined || content.points.y1 === null || typeof content.points.y1 !== 'number') {
throw new Error('please enter valid y1 co-ordinate in ' + content.type + ' points...');
}
if (content.points.x2 === undefined || content.points.x2 === null || typeof content.points.x2 !== 'number') {
throw new Error('please enter valid x2 co-ordinate in ' + content.type + ' points...');
}
if (content.points.y2 === undefined || content.points.y2 === null || typeof content.points.y2 !== 'number') {
throw new Error('please enter valid y2 co-ordinate in ' + content.type + ' points...');
}
}
}
else {
if (content.position === undefined || content.position === null) {
throw new Error('please enter valid position in ' + content.type + ' content...');
}
else {
if (content.position.x === undefined || content.position.x === null || typeof content.position.x !== 'number') {
throw new Error('please enter valid x co-ordinate in ' + content.type + ' position...');
}
if (content.position.y === undefined || content.position.y === null || typeof content.position.y !== 'number') {
throw new Error('please enter valid y co-ordinate in ' + content.type + ' position...');
}
}
}
}
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
PdfExport.prototype.drawText = function (pageTemplate, content) {
var font = this.getFont(content);
var brush = this.getBrushFromContent(content);
var pen = null;
if (!isNullOrUndefined(content.style.textPenColor)) {
var penColor = this.hexToRgb(content.style.textPenColor);
pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));
}
if (brush == null && pen == null) {
brush = new PdfSolidBrush(new PdfColor(0, 0, 0));
}
var value = content.value.toString();
var x = content.position.x * 0.75;
var y = content.position.y * 0.75;
var format = new PdfStringFormat();
if (!isNullOrUndefined(content.style.stringFormat)) {
format.alignment = content.style.stringFormat.alignment;
}
var result = this.setContentFormat(content, format);
if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {
pageTemplate.graphics.drawString(value, font, pen, brush, x, y, result.size.width, result.size.height, result.format);
}
else {
pageTemplate.graphics.drawString(value, font, pen, brush, x, y, format);
}
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
PdfExport.prototype.drawPageNumber = function (documentHeader, content) {
var font = this.getFont(content);
var brush = null;
if (!isNullOrUndefined(content.style.textBrushColor)) {
var brushColor = this.hexToRgb(content.style.textBrushColor);
brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));
}
else {
brush = new PdfSolidBrush(new PdfColor(0, 0, 0));
}
var pageNumber = new PdfPageNumberField(font, brush);
pageNumber.numberStyle = this.getPageNumberStyle(content.pageNumberType);
var compositeField;
var format;
if (!isNullOrUndefined(content.format)) {
var total = '$total';
var current = '$current';
if (content.format.indexOf(total) !== -1 && content.format.indexOf(current) !== -1) {
var pageCount = new PdfPageCountField(font);
pageCount.numberStyle = this.getPageNumberStyle(content.pageNumberType);
if (content.format.indexOf(total) > content.format.indexOf(current)) {
format = content.format.replace(current, '0');
format = format.replace(total, '1');
}
else {
format = content.format.replace(current, '1');
format = format.replace(total, '0');
}
compositeField = new PdfCompositeField(font, brush, format, pageNumber, pageCount);
}
else if (content.format.indexOf(current) !== -1 && content.format.indexOf(total) === -1) {
format = content.format.replace(current, '0');
compositeField = new PdfCompositeField(font, brush, format, pageNumber);
}
else {
var pageCount = new PdfPageCountField(font);
format = content.format.replace(total, '0');
compositeField = new PdfCompositeField(font, brush, format, pageCount);
}
}
else {
format = '{0}';
compositeField = new PdfCompositeField(font, brush, format, pageNumber);
}
var x = content.position.x * 0.75;
var y = content.position.y * 0.75;
var result = this.setContentFormat(content, compositeField.stringFormat);
if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {
compositeField.stringFormat = result.format;
compositeField.bounds = new RectangleF(x, y, result.size.width, result.size.height);
}
compositeField.draw(documentHeader.graphics, x, y);
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
PdfExport.prototype.drawImage = function (documentHeader, content) {
var x = content.position.x * 0.75;
var y = content.position.y * 0.75;
var width = (!isNullOrUndefined(content.size)) ? (content.size.width * 0.75) : undefined;
var height = (!isNullOrUndefined(content.size)) ? (content.size.height * 0.75) : undefined;
var image = new PdfBitmap(content.src);
if (!isNullOrUndefined(width)) {
documentHeader.graphics.drawImage(image, x, y, width, height);
}
else {
documentHeader.graphics.drawImage(image, x, y);
}
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
PdfExport.prototype.drawLine = function (documentHeader, content) {
var x1 = content.points.x1 * 0.75;
var y1 = content.points.y1 * 0.75;
var x2 = content.points.x2 * 0.75;
var y2 = content.points.y2 * 0.75;
var pen = this.getPenFromContent(content);
if (!isNullOrUndefined(content.style) && content.style !== null) {
if (!isNullOrUndefined(content.style.penSize) && content.style.penSize !== null && typeof content.style.penSize === 'number') {
pen.width = content.style.penSize * 0.75;
}
pen.dashStyle = this.getDashStyle(content.style.dashStyle);
}
documentHeader.graphics.drawLine(pen, x1, y1, x2, y2);
};
PdfExport.prototype.processAggregates = function (sRows, pdfGrid, border, font, brush, backgroundBrush, isCaption, captionRow, groupIndex, isGroupedFooter, isAggregate, gObj) {
for (var _i = 0, sRows_1 = sRows; _i < sRows_1.length; _i++) {
var row = sRows_1[_i];
var leastCaptionSummaryIndex = -1;
var index = 0;
var isEmpty = true;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
var value = [];
var aggIdx = isAggregate ? 0 : 1;
var gridRow = void 0;
if (isNullOrUndefined(captionRow)) {
gridRow = pdfGrid.rows.addRow();
gridRow.style.setBorder(border);
gridRow.style.setFont(font);
gridRow.style.setTextBrush(brush);
gridRow.style.setBackgroundBrush(backgroundBrush);
}
for (var i = 0; i < pdfGrid.columns.count + aggIdx; i++) {
var cell = row.cells[parseInt(index.toString(), 10)];
if (cell.cellType === CellType.DetailFooterIntent) {
i--;
index++;
continue;
}
if (!this.hideColumnInclude) {
while (cell.visible === undefined) {
if (cell.cellType === CellType.DetailFooterIntent) {
continue;
}
if (!isNullOrUndefined(captionRow)) {
if (!isNullOrUndefined(captionRow.cells.getCell(i).value)) {
value.push(captionRow.cells.getCell(i).value);
isEmpty = false;
if (!isCaption) {
i += 1;
}
}
else {
value.push('');
}
}
else {
value.push('');
}
i += 1;
index = index + 1;
cell = row.cells[parseInt(index.toString(), 10)];
}
while (!isNullOrUndefined(cell.visible) && !cell.visible) {
index = index + 1;
cell = row.cells[parseInt(index.toString(), 10)];
}
}
if (cell.isDataCell) {
var templateFn = {};
var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);
var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);
var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);
if (footerTemplate || groupCaptionTemplate || groupFooterTemplate) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
var result = this.getTemplateFunction(templateFn, i, leastCaptionSummaryIndex, cell);
templateFn = result.templateFunction;
leastCaptionSummaryIndex = result.leastCaptionSummaryIndex;
var txt = void 0;
var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];
if ((this.parent.isReact || this.parent.isVue || this.parent.isVue3 || this.parent.isAngular) &&
!(typeof cell.column.footerTemplate === 'string' || typeof cell.column.groupFooterTemplate === 'string' || typeof cell.column.groupCaptionTemplate === 'string')) {
txt = data[(cell.column.type)];
txt = !isNullOrUndefined(txt) ? txt : '';
}
else {
txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));
txt = this.parent.isVue3 && !isNullOrUndefined(txt[1]) ? txt[1].textContent
: !isNullOrUndefined(txt[0]) ? txt[0].textContent :