UNPKG

@spartacus/storefront

Version:

Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.

48 lines 6.46 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "../file-download.service"; export class ExportCsvFileService { constructor(fileDownloadService) { this.fileDownloadService = fileDownloadService; } /** * Converts array of objects into CSV data structure. * * @param objectsArray Array of objects which should be converted to CSV. * @param separator Separator for CSV data. * @returns Processed string ready to be saved into file. */ convert(objectsArray, separator) { return objectsArray.reduce((csvString, row) => { const line = row.reduce((currentLine, column) => { currentLine += currentLine !== '' ? separator : ''; const cell = column.includes(separator) ? `"${column}"` : column; return `${currentLine}${cell}`; }, ''); return `${csvString}${line}\r\n`; }, ''); } /** * Creates and download CSV file. * * @param objectsArray Array of objects which should be converted to CSV. * @param separator Separator for CSV data. * @param fileOptions Exported file options. */ download(objectsArray, separator, fileOptions) { const { fileName, type, extension } = fileOptions; const fileContent = this.convert(objectsArray, separator); const blob = new Blob([fileContent], { type }); const url = URL.createObjectURL(blob); this.fileDownloadService.download(url, `${fileName}.${extension}`); } } ExportCsvFileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ExportCsvFileService, deps: [{ token: i1.FileDownloadService }], target: i0.ɵɵFactoryTarget.Injectable }); ExportCsvFileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ExportCsvFileService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ExportCsvFileService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.FileDownloadService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWNzdi1maWxlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL3NoYXJlZC9zZXJ2aWNlcy9maWxlL2Nzdi9leHBvcnQtY3N2LWZpbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPM0MsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUFzQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtJQUFHLENBQUM7SUFDbEU7Ozs7OztPQU1HO0lBQ08sT0FBTyxDQUFDLFlBQXdCLEVBQUUsU0FBaUI7UUFDM0QsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBaUIsRUFBRSxHQUFhLEVBQUUsRUFBRTtZQUM5RCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUM5QyxXQUFXLElBQUksV0FBVyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztnQkFDakUsT0FBTyxHQUFHLFdBQVcsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUNqQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDUCxPQUFPLEdBQUcsU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDO1FBQ25DLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxRQUFRLENBQ04sWUFBd0IsRUFDeEIsU0FBaUIsRUFDakIsV0FBOEI7UUFFOUIsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsV0FBVyxDQUFDO1FBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxRQUFRLElBQUksU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDOztpSEF0Q1Usb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXhwb3J0RmlsZU9wdGlvbnMgfSBmcm9tICcuLi9leHBvcnQtZmlsZS1vcHRpb25zJztcbmltcG9ydCB7IEZpbGVEb3dubG9hZFNlcnZpY2UgfSBmcm9tICcuLi9maWxlLWRvd25sb2FkLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRXhwb3J0Q3N2RmlsZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZmlsZURvd25sb2FkU2VydmljZTogRmlsZURvd25sb2FkU2VydmljZSkge31cbiAgLyoqXG4gICAqIENvbnZlcnRzIGFycmF5IG9mIG9iamVjdHMgaW50byBDU1YgZGF0YSBzdHJ1Y3R1cmUuXG4gICAqXG4gICAqIEBwYXJhbSBvYmplY3RzQXJyYXkgQXJyYXkgb2Ygb2JqZWN0cyB3aGljaCBzaG91bGQgYmUgY29udmVydGVkIHRvIENTVi5cbiAgICogQHBhcmFtIHNlcGFyYXRvciBTZXBhcmF0b3IgZm9yIENTViBkYXRhLlxuICAgKiBAcmV0dXJucyBQcm9jZXNzZWQgc3RyaW5nIHJlYWR5IHRvIGJlIHNhdmVkIGludG8gZmlsZS5cbiAgICovXG4gIHByb3RlY3RlZCBjb252ZXJ0KG9iamVjdHNBcnJheTogc3RyaW5nW11bXSwgc2VwYXJhdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBvYmplY3RzQXJyYXkucmVkdWNlKChjc3ZTdHJpbmc6IHN0cmluZywgcm93OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IHJvdy5yZWR1Y2UoKGN1cnJlbnRMaW5lLCBjb2x1bW4pID0+IHtcbiAgICAgICAgY3VycmVudExpbmUgKz0gY3VycmVudExpbmUgIT09ICcnID8gc2VwYXJhdG9yIDogJyc7XG4gICAgICAgIGNvbnN0IGNlbGwgPSBjb2x1bW4uaW5jbHVkZXMoc2VwYXJhdG9yKSA/IGBcIiR7Y29sdW1ufVwiYCA6IGNvbHVtbjtcbiAgICAgICAgcmV0dXJuIGAke2N1cnJlbnRMaW5lfSR7Y2VsbH1gO1xuICAgICAgfSwgJycpO1xuICAgICAgcmV0dXJuIGAke2NzdlN0cmluZ30ke2xpbmV9XFxyXFxuYDtcbiAgICB9LCAnJyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbmQgZG93bmxvYWQgQ1NWIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBvYmplY3RzQXJyYXkgQXJyYXkgb2Ygb2JqZWN0cyB3aGljaCBzaG91bGQgYmUgY29udmVydGVkIHRvIENTVi5cbiAgICogQHBhcmFtIHNlcGFyYXRvciBTZXBhcmF0b3IgZm9yIENTViBkYXRhLlxuICAgKiBAcGFyYW0gZmlsZU9wdGlvbnMgRXhwb3J0ZWQgZmlsZSBvcHRpb25zLlxuICAgKi9cbiAgZG93bmxvYWQoXG4gICAgb2JqZWN0c0FycmF5OiBzdHJpbmdbXVtdLFxuICAgIHNlcGFyYXRvcjogc3RyaW5nLFxuICAgIGZpbGVPcHRpb25zOiBFeHBvcnRGaWxlT3B0aW9uc1xuICApOiB2b2lkIHtcbiAgICBjb25zdCB7IGZpbGVOYW1lLCB0eXBlLCBleHRlbnNpb24gfSA9IGZpbGVPcHRpb25zO1xuICAgIGNvbnN0IGZpbGVDb250ZW50ID0gdGhpcy5jb252ZXJ0KG9iamVjdHNBcnJheSwgc2VwYXJhdG9yKTtcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbGVDb250ZW50XSwgeyB0eXBlIH0pO1xuICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICB0aGlzLmZpbGVEb3dubG9hZFNlcnZpY2UuZG93bmxvYWQodXJsLCBgJHtmaWxlTmFtZX0uJHtleHRlbnNpb259YCk7XG4gIH1cbn1cbiJdfQ==