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