@syncfusion/ej2-treegrid
Version:
Essential JS 2 TreeGrid Component
168 lines (167 loc) • 6.67 kB
JavaScript
import { getObject, PdfExport as GridPdf, Grid } from '@syncfusion/ej2-grids';
import { isRemoteData, isOffline } from '../utils';
import { isNullOrUndefined, setValue, extend, getValue } from '@syncfusion/ej2-base';
import { DataManager, Query } from '@syncfusion/ej2-data';
import * as event from '../base/constant';
/**
* TreeGrid PDF Export module
*
* @hidden
*/
var PdfExport = /** @class */ (function () {
/**
* Constructor for PDF export module
*
* @param {TreeGrid} parent - Tree Grid instance
*/
function PdfExport(parent) {
Grid.Inject(GridPdf);
this.parent = parent;
this.dataResults = {};
this.addEventListener();
}
/**
* For internal use only - Get the module name.
*
* @private
* @returns {string} PdfExport module name
*/
PdfExport.prototype.getModuleName = function () {
return 'PdfExport';
};
/**
* @hidden
* @returns {void}
*/
PdfExport.prototype.addEventListener = function () {
this.parent.on('pdfCellInfo', this.pdfQueryCellInfo, this);
this.parent.on('updateResults', this.updatePdfResultModel, this);
};
/**
* @hidden
* @returns {void}
*/
PdfExport.prototype.removeEventListener = function () {
if (this.parent.isDestroyed) {
return;
}
this.parent.off('pdfCellInfo', this.pdfQueryCellInfo);
this.parent.off('updateResults', this.updatePdfResultModel);
};
/**
* To destroy the PDF Export
*
* @returns {void}
* @hidden
*/
PdfExport.prototype.destroy = function () {
this.removeEventListener();
};
PdfExport.prototype.updatePdfResultModel = function (returnResult) {
this.dataResults = returnResult;
};
PdfExport.prototype.Map = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {
var _this = this;
var dtSrc = this.parent.dataSource;
var prop = Object();
var isLocal = !isRemoteData(this.parent) && isOffline(this.parent);
setValue('cancel', false, prop);
return new Promise(function (resolve) {
var dm = isLocal && !(dtSrc instanceof DataManager) ? new DataManager(dtSrc)
: _this.parent.dataSource;
var query = new Query();
if (!isLocal) {
query = _this.generateQuery(query);
setValue('query', query, prop);
}
_this.parent.trigger(event.beforePdfExport, extend(prop, pdfExportProperties));
if (getObject('cancel', prop)) {
return null;
}
dm.executeQuery(query).then(function (e) {
var customsData = null;
if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)) {
customsData = pdfExportProperties.dataSource;
}
pdfExportProperties = _this.manipulatePdfProperties(pdfExportProperties, dtSrc, e);
return _this.parent.grid.pdfExportModule.Map(_this.parent.grid, pdfExportProperties, isMultipleExport, pdfDoc, isBlob).then(function (document) {
if (customsData != null) {
pdfExportProperties.dataSource = customsData;
}
else {
delete pdfExportProperties.dataSource;
}
resolve(document);
});
});
});
};
PdfExport.prototype.generateQuery = function (query, prop) {
if (!isNullOrUndefined(prop) && prop.exportType === 'CurrentPage'
&& this.parent.allowPaging) {
prop.exportType = 'AllPages';
query.addParams('ExportType', 'CurrentPage');
query.where(this.parent.parentIdMapping, 'equal', null);
query = getObject('grid.renderModule.data.pageQuery', this.parent)(query);
}
return query;
};
PdfExport.prototype.manipulatePdfProperties = function (prop, dtSrc, queryResult) {
var args = {};
//count not required for this query
var isLocal = !isRemoteData(this.parent) && isOffline(this.parent);
setValue('query', this.parent.grid.getDataModule().generateQuery(true), args);
setValue('isExport', true, args);
setValue('isPdfExport', true, args);
if (!isNullOrUndefined(prop) && !isNullOrUndefined(prop.isCollapsedStatePersist)) {
setValue('isCollapsedStatePersist', prop.isCollapsedStatePersist, args);
}
if (!isNullOrUndefined(prop) && !isNullOrUndefined(prop.exportType)) {
setValue('exportType', prop.exportType, args);
}
if (!isLocal) {
this.parent.parentData = [];
this.parent.dataModule.convertToFlatData(getValue('result', queryResult));
setValue('expresults', this.parent.flatData, args);
}
this.parent.notify('dataProcessor', args);
//args = this.parent.dataModule.dataProcessor(args);
args = this.dataResults;
dtSrc = isNullOrUndefined(args.result) ? this.parent.flatData.slice(0) : args.result;
if (!isLocal) {
this.parent.flatData = [];
}
if (prop && prop.dataSource && isLocal) {
var flatDatas = this.parent.flatData;
var dataSrc = prop.dataSource instanceof DataManager ? prop.dataSource.dataSource.json : prop.dataSource;
this.parent.dataModule.convertToFlatData(dataSrc);
dtSrc = this.parent.flatData;
this.parent.flatData = flatDatas;
}
prop = isNullOrUndefined(prop) ? {} : prop;
prop.dataSource = new DataManager({ json: dtSrc });
prop.query = args['query'];
return prop;
};
/**
* TreeGrid PDF Export cell modifier
*
* @param {PdfQueryCellInfoEventArgs} args - Current cell details
* @hidden
* @returns {void}
*/
PdfExport.prototype.pdfQueryCellInfo = function (args) {
if (this.parent.grid.getColumnIndexByUid(args.column.uid) === this.parent.treeColumnIndex) {
var style = {};
var data = getObject('data', args);
var ispadfilter = isNullOrUndefined(data.filterLevel);
var pad = ispadfilter ? data.level : data.filterLevel;
style.paragraphIndent = pad * 3;
args.style = style;
}
this.parent.notify('updateResults', args);
this.parent.trigger('pdfQueryCellInfo', args);
};
return PdfExport;
}());
export { PdfExport };