UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

201 lines (197 loc) 6.1 kB
const require_chunk = require('./chunk-BE-pF4vm.js'); let _progress_kendo_csv = require("@progress/kendo-csv"); //#region ../src/csv/csv-data-provider.js (function($, kendo) { const extend = $.extend; const CSVDataProvider = kendo.Class.extend({ init: function(options) { this.options = options; const dataSource = options.dataSource; if (dataSource instanceof kendo.data.DataSource) { if (!dataSource.filter()) { dataSource.options.filter = undefined; } this.dataSource = new dataSource.constructor(extend({}, dataSource.options, { page: options.allPages ? 0 : dataSource.page(), filter: dataSource.filter(), pageSize: options.allPages ? dataSource.total() : dataSource.pageSize() || dataSource.total(), sort: dataSource.sort(), group: dataSource.group(), aggregate: dataSource.aggregate() })); const data = dataSource.data(); if (data.length > 0) { this.dataSource._data = data; const transport = this.dataSource.transport; if (dataSource._isServerGrouped && dataSource._isServerGrouped() && transport.options && transport.options.data) { transport.options.data = null; } } } else { this.dataSource = kendo.data.DataSource.create(dataSource); } }, export: function() { return $.Deferred((function(d) { this.dataSource.fetch().then((function() { const data = this.dataSource.view(); let csvData = data; if (csvData.length && csvData[0] && csvData[0].field !== undefined && csvData[0].items !== undefined) { csvData = { data: csvData, total: csvData.length }; } d.resolve(csvData); }).bind(this)); }).bind(this)).promise(); } }); kendo.CSVDataProvider = CSVDataProvider; })(kendo.jQuery, kendo); //#endregion //#region ../src/csv/mixins.js (function($, kendo) { function flattenColumns(columns) { let result = []; for (let i = 0; i < columns.length; i++) { if (columns[i].columns?.length) { result = result.concat(flattenColumns(columns[i].columns)); } else { result.push(columns[i]); } } return result; } kendo.CSVMixin = { extend: function(proto) { proto.events.push("csvExport"); proto.options.csv = $.extend(proto.options.csv, this.options); proto.saveAsCSV = this.saveAsCSV; proto.toCSVString = this.toCSVString; proto._renderCSVData = this._renderCSVData; proto._saveCSVData = this._saveCSVData; proto._saveCSVToFile = this._saveCSVToFile; proto._getCSVColumnsInfo = this._getCSVColumnsInfo; }, options: { proxyURL: "", allPages: false, filterable: false, fileName: "Export.csv", delimiter: ",", lineSeparator: "\r\n", preventFormulaInjection: true, maxCellLength: 32767, maxRows: 1e6, maxColumns: 1e3, includeUTF8BOM: false }, _getCSVColumnsInfo: function() { const csv = this.options.csv || {}; const columns = flattenColumns(this.columns || []); const visibleCols = columns.filter(function(c) { return !c.hidden && !(c.exportable === false || c.exportable?.csv === false); }); return { keys: csv.keys || visibleCols.map(function(c) { return c.field || ""; }), names: csv.names || visibleCols.map(function(c) { return c.title || c.field || ""; }) }; }, _saveCSVToFile: function(csvString, names) { const csv = this.options.csv || {}; const blob = new Blob([csvString], { type: kendo.csv.getCSVMimeType({ names }) }); const reader = new FileReader(); reader.onload = function() { kendo.saveAs({ dataURI: reader.result, fileName: csv.fileName, proxyURL: csv.proxyURL, forceProxy: csv.forceProxy }); }; reader.readAsDataURL(blob); }, _renderCSVData: function(data, includeHeaders) { const csv = this.options.csv || {}; const csvColumns = this._getCSVColumnsInfo(); const names = includeHeaders === false ? undefined : csvColumns.names; const csvData = typeof csv.data === "function" ? csv.data(data) : data; return { csvString: kendo.csv.toCSV({ data: csvData, keys: csvColumns.keys, names, delimiter: csv.delimiter, lineSeparator: csv.lineSeparator, preventFormulaInjection: csv.preventFormulaInjection, maxCellLength: csv.maxCellLength, maxRows: csv.maxRows, maxColumns: csv.maxColumns, includeUTF8BOM: csv.includeUTF8BOM, groupHeaderFormatter: csv.groupHeaderFormatter, groupValueFormatter: csv.groupValueFormatter }), names: names || [] }; }, _saveCSVData: function(data, includeHeaders) { const exportData = this._renderCSVData(data, includeHeaders); this._saveCSVToFile(exportData.csvString, exportData.names); return exportData.csvString; }, saveAsCSV: function() { const that = this; const csv = this.options.csv || {}; const provider = new kendo.CSVDataProvider({ dataSource: this.dataSource, allPages: csv.allPages, filterable: csv.filterable }); return provider.export().then(function(csvData) { return that._saveCSVData(csvData); }); }, toCSVString: function() { const csv = this.options.csv || {}; const deferred = $.Deferred(); const that = this; const provider = new kendo.CSVDataProvider({ dataSource: this.dataSource, allPages: csv.allPages, filterable: csv.filterable }); provider.export().then(function(csvData) { deferred.resolve(that._renderCSVData(csvData).csvString); }); return deferred.promise(); } }; })(kendo.jQuery, kendo); //#endregion //#region ../src/kendo.csv.js const __meta__ = { id: "csv", name: "CSV generation", category: "framework", advanced: true, mixin: true, depends: ["core"] }; (function($) { window.kendo.csv = window.kendo.csv || {}; window.kendo.csv.toCSV = _progress_kendo_csv.toCSV; window.kendo.csv.toCSVBlob = _progress_kendo_csv.toCSVBlob; window.kendo.csv.getCSVMimeType = _progress_kendo_csv.getCSVMimeType; })(window.kendo.jQuery); //#endregion Object.defineProperty(exports, '__meta__', { enumerable: true, get: function () { return __meta__; } });