@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
JavaScript
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==