UNPKG

@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
/* 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 };