@syncfusion/ej2-schedule
Version:
Flexible scheduling library with more built-in features and enhanced customization options similar to outlook and google calendar, allowing the users to plan and manage their appointments with efficient data-binding support.
83 lines (82 loc) • 3.96 kB
JavaScript
/* eslint-disable @typescript-eslint/no-explicit-any */
import { Workbook } from '@syncfusion/ej2-excel-export';
import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';
import * as events from '../base/constant';
/**
* Excel Export Module
*/
var ExcelExport = /** @class */ (function () {
function ExcelExport(parent) {
this.parent = parent;
}
ExcelExport.prototype.initializeExcelExport = function (excelExportOptions) {
if (excelExportOptions === void 0) { excelExportOptions = {}; }
var exportColumns = this.getExportColumns(excelExportOptions);
var exportName = excelExportOptions.fileName || 'Schedule';
var exportType = excelExportOptions.exportType || 'xlsx';
var isIncludeOccurrences = excelExportOptions.includeOccurrences || false;
var separator;
if (!isNullOrUndefined(excelExportOptions.separator) && excelExportOptions.separator !== ',') {
separator = excelExportOptions.separator;
}
var eventCollection;
if (excelExportOptions.customData) {
eventCollection = !isIncludeOccurrences ? excelExportOptions.customData :
this.parent.eventBase.getProcessedEvents(excelExportOptions.customData);
}
else {
eventCollection = !isIncludeOccurrences ? this.parent.eventsData : this.parent.eventsProcessed;
}
this.processWorkbook(exportColumns, exportName, exportType, eventCollection, separator);
};
ExcelExport.prototype.processWorkbook = function (fields, name, type, eventCollection, separator) {
var _this = this;
var columns = [];
var rows = [];
var columnHeader = [];
fields.forEach(function (field, i) { columns.push({ index: i + 1, width: (field.name === 'Id' ? 50 : 150) }); });
var style = { fontSize: 12, borders: { color: '#E0E0E0' }, bold: true };
fields.forEach(function (field, i) { columnHeader.push({ index: i + 1, value: field.text, style: style }); });
rows.push({ index: 1, cells: columnHeader });
eventCollection.forEach(function (event, i) {
var columnData = [];
fields.forEach(function (field, n) {
var columnRule = { index: n + 1, value: event[field.name] || '' };
if (field.name === _this.parent.eventFields.startTime || field.name === _this.parent.eventFields.endTime) {
var styleRule = { fontSize: 12, numberFormat: 'm/d/yyyy h:mm a' };
columnRule = extend({}, columnRule, { style: styleRule }, true);
}
columnData.push(columnRule);
});
rows.push({ index: i + 2, cells: columnData });
});
var workSheet = [{ columns: columns, rows: rows }];
var args = { cancel: false, worksheets: workSheet };
this.parent.trigger(events.excelExport, args, function (args) {
if (args.cancel) {
return;
}
var book = new Workbook({ worksheets: args.worksheets }, type, _this.parent.locale, undefined, separator);
book.save(name + '.' + type);
});
};
ExcelExport.prototype.getExportColumns = function (exportOptions) {
var _this = this;
var exportColumns = exportOptions.fieldsInfo || [];
if (exportColumns.length === 0) {
var fields = exportOptions.fields || Object.keys(this.parent.eventFields).map(function (field) {
return _this.parent.eventFields["" + field];
});
fields.forEach(function (field) { exportColumns.push({ name: field, text: field }); });
}
return exportColumns;
};
ExcelExport.prototype.getModuleName = function () {
return 'excelExport';
};
ExcelExport.prototype.destroy = function () {
this.parent = null;
};
return ExcelExport;
}());
export { ExcelExport };