@covalent/core
Version:
Core Teradata UI Platform for layouts, icons, custom components and themes. This should be added as a dependency for any project that wants to use layouts, icons and themes for Angular Material.
75 lines • 10.3 kB
JavaScript
import { convertObjectsToCSV, formatJSON } from './convert';
/**
* Download CSV content to the specified file with .csv extension
* appended to the provided base file name.
*
* @param fileBaseName base name of destination file
* @param csv CSV contents
*/
export function downloadCSV(fileBaseName, csv) {
downloadFile(`${fileBaseName}.csv`, csv, 'text/csv');
}
/**
* Download JSON content to the specified file with .json extension
* appended to the provided base file name.
*
* @param fileBaseName base name of destination file
* @param json JSON contents
* @param format indicates if JSON should be prettied
* @param indent optional parameter indicating space indentation for pretty output. Default is 2
*/
export function downloadJSON(fileBaseName, json, format = false, indent = 2) {
downloadFile(`${fileBaseName}.json`, format ? formatJSON(JSON.parse(json), indent) : json, 'application/json');
}
/**
* Convert objects to CSV format and download to file with .csv
* extension appended to the provided base file name. Custom key
* separator and line separator can be specified.
*
* @param fileBaseName base name of destination file
* @param objects object array to be converted to CSV format
* prior to writing to download destination
* @param keySeparator optional parameter to specify custom value separator
* @param lineSeparator optional parameter to specify custom end of line separator
*/
export function downloadObjectsToCSV(fileBaseName, objects, keySeparator = ',', lineSeparator = '\r\n') {
downloadFile(`${fileBaseName}.csv`, convertObjectsToCSV(objects, keySeparator, lineSeparator), 'text/csv');
}
/**
* Convert objects to JSON format and download to file with .json
* extension appended to the provided base file name.
*
* @param fileBaseName base name of destination file
* @param objects object array to be converted to JSON format
* prior to writing to download destination
* @param indent optional parameter indicating space indentation for pretty output. Default is 2
*/
export function downloadObjectsToJSON(fileBaseName, objects, indent = 2) {
downloadFile(`${fileBaseName}.json`, formatJSON(objects, indent), 'application/json');
}
/**
* Download string content to the specified file with desired mime type.
*
* @param fileName full filename (including appropriate extension) of destination file
* @param contents string contents to be written to download destination
* @param mimeType mime type appropriate to file content to support consumption of destination file
*/
export function downloadFile(fileName, contents, mimeType = 'text/plain') {
if (!fileName || !contents) {
return;
}
// Create blob object and assign URL
const blob = new Blob([contents], { type: mimeType });
const url = window.URL.createObjectURL(blob);
// Construct anchor for URL, append to DOM, click and cleanup.
const a = document.createElement('a');
a.setAttribute('style', 'display: none');
a.setAttribute('download', fileName);
a.href = url;
document.body.appendChild(a);
a.click();
window.URL.revokeObjectURL(url);
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tbW9uL3NyYy9mdW5jdGlvbnMvZG93bmxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUU1RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLFlBQW9CLEVBQUUsR0FBVztJQUMzRCxZQUFZLENBQUMsR0FBRyxZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsWUFBb0IsRUFDcEIsSUFBWSxFQUNaLE1BQU0sR0FBRyxLQUFLLEVBQ2QsTUFBTSxHQUFHLENBQUM7SUFFVixZQUFZLENBQ1YsR0FBRyxZQUFZLE9BQU8sRUFDdEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNwRCxrQkFBa0IsQ0FDbkIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxZQUFvQixFQUNwQixPQUFjLEVBQ2QsWUFBWSxHQUFHLEdBQUcsRUFDbEIsYUFBYSxHQUFHLE1BQU07SUFFdEIsWUFBWSxDQUNWLEdBQUcsWUFBWSxNQUFNLEVBQ3JCLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLEVBQ3pELFVBQVUsQ0FDWCxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxZQUFvQixFQUNwQixPQUFjLEVBQ2QsTUFBTSxHQUFHLENBQUM7SUFFVixZQUFZLENBQ1YsR0FBRyxZQUFZLE9BQU8sRUFDdEIsVUFBVSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsRUFDM0Isa0JBQWtCLENBQ25CLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsUUFBZ0IsRUFDaEIsUUFBZ0IsRUFDaEIsUUFBUSxHQUFHLFlBQVk7SUFFdkIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE9BQU87SUFDVCxDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLE1BQU0sSUFBSSxHQUFTLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1RCxNQUFNLEdBQUcsR0FBVyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVyRCw4REFBOEQ7SUFDOUQsTUFBTSxDQUFDLEdBQXNCLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekQsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7SUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDVixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29udmVydE9iamVjdHNUb0NTViwgZm9ybWF0SlNPTiB9IGZyb20gJy4vY29udmVydCc7XG5cbi8qKlxuICogRG93bmxvYWQgQ1NWIGNvbnRlbnQgdG8gdGhlIHNwZWNpZmllZCBmaWxlIHdpdGggLmNzdiBleHRlbnNpb25cbiAqIGFwcGVuZGVkIHRvIHRoZSBwcm92aWRlZCBiYXNlIGZpbGUgbmFtZS5cbiAqXG4gKiBAcGFyYW0gZmlsZUJhc2VOYW1lIGJhc2UgbmFtZSBvZiBkZXN0aW5hdGlvbiBmaWxlXG4gKiBAcGFyYW0gY3N2IENTViBjb250ZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZG93bmxvYWRDU1YoZmlsZUJhc2VOYW1lOiBzdHJpbmcsIGNzdjogc3RyaW5nKTogdm9pZCB7XG4gIGRvd25sb2FkRmlsZShgJHtmaWxlQmFzZU5hbWV9LmNzdmAsIGNzdiwgJ3RleHQvY3N2Jyk7XG59XG5cbi8qKlxuICogRG93bmxvYWQgSlNPTiBjb250ZW50IHRvIHRoZSBzcGVjaWZpZWQgZmlsZSB3aXRoIC5qc29uIGV4dGVuc2lvblxuICogYXBwZW5kZWQgdG8gdGhlIHByb3ZpZGVkIGJhc2UgZmlsZSBuYW1lLlxuICpcbiAqIEBwYXJhbSBmaWxlQmFzZU5hbWUgYmFzZSBuYW1lIG9mIGRlc3RpbmF0aW9uIGZpbGVcbiAqIEBwYXJhbSBqc29uIEpTT04gY29udGVudHNcbiAqIEBwYXJhbSBmb3JtYXQgaW5kaWNhdGVzIGlmIEpTT04gc2hvdWxkIGJlIHByZXR0aWVkXG4gKiBAcGFyYW0gaW5kZW50IG9wdGlvbmFsIHBhcmFtZXRlciBpbmRpY2F0aW5nIHNwYWNlIGluZGVudGF0aW9uIGZvciBwcmV0dHkgb3V0cHV0LiBEZWZhdWx0IGlzIDJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkSlNPTihcbiAgZmlsZUJhc2VOYW1lOiBzdHJpbmcsXG4gIGpzb246IHN0cmluZyxcbiAgZm9ybWF0ID0gZmFsc2UsXG4gIGluZGVudCA9IDJcbik6IHZvaWQge1xuICBkb3dubG9hZEZpbGUoXG4gICAgYCR7ZmlsZUJhc2VOYW1lfS5qc29uYCxcbiAgICBmb3JtYXQgPyBmb3JtYXRKU09OKEpTT04ucGFyc2UoanNvbiksIGluZGVudCkgOiBqc29uLFxuICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICApO1xufVxuXG4vKipcbiAqIENvbnZlcnQgb2JqZWN0cyB0byBDU1YgZm9ybWF0IGFuZCBkb3dubG9hZCB0byBmaWxlIHdpdGggLmNzdlxuICogZXh0ZW5zaW9uIGFwcGVuZGVkIHRvIHRoZSBwcm92aWRlZCBiYXNlIGZpbGUgbmFtZS4gQ3VzdG9tIGtleVxuICogc2VwYXJhdG9yIGFuZCBsaW5lIHNlcGFyYXRvciBjYW4gYmUgc3BlY2lmaWVkLlxuICpcbiAqIEBwYXJhbSBmaWxlQmFzZU5hbWUgYmFzZSBuYW1lIG9mIGRlc3RpbmF0aW9uIGZpbGVcbiAqIEBwYXJhbSBvYmplY3RzIG9iamVjdCBhcnJheSB0byBiZSBjb252ZXJ0ZWQgdG8gQ1NWIGZvcm1hdFxuICogICBwcmlvciB0byB3cml0aW5nIHRvIGRvd25sb2FkIGRlc3RpbmF0aW9uXG4gKiBAcGFyYW0ga2V5U2VwYXJhdG9yIG9wdGlvbmFsIHBhcmFtZXRlciB0byBzcGVjaWZ5IGN1c3RvbSB2YWx1ZSBzZXBhcmF0b3JcbiAqIEBwYXJhbSBsaW5lU2VwYXJhdG9yIG9wdGlvbmFsIHBhcmFtZXRlciB0byBzcGVjaWZ5IGN1c3RvbSBlbmQgb2YgbGluZSBzZXBhcmF0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkT2JqZWN0c1RvQ1NWKFxuICBmaWxlQmFzZU5hbWU6IHN0cmluZyxcbiAgb2JqZWN0czogYW55W10sXG4gIGtleVNlcGFyYXRvciA9ICcsJyxcbiAgbGluZVNlcGFyYXRvciA9ICdcXHJcXG4nXG4pOiB2b2lkIHtcbiAgZG93bmxvYWRGaWxlKFxuICAgIGAke2ZpbGVCYXNlTmFtZX0uY3N2YCxcbiAgICBjb252ZXJ0T2JqZWN0c1RvQ1NWKG9iamVjdHMsIGtleVNlcGFyYXRvciwgbGluZVNlcGFyYXRvciksXG4gICAgJ3RleHQvY3N2J1xuICApO1xufVxuXG4vKipcbiAqIENvbnZlcnQgb2JqZWN0cyB0byBKU09OIGZvcm1hdCBhbmQgZG93bmxvYWQgdG8gZmlsZSB3aXRoIC5qc29uXG4gKiBleHRlbnNpb24gYXBwZW5kZWQgdG8gdGhlIHByb3ZpZGVkIGJhc2UgZmlsZSBuYW1lLlxuICpcbiAqIEBwYXJhbSBmaWxlQmFzZU5hbWUgYmFzZSBuYW1lIG9mIGRlc3RpbmF0aW9uIGZpbGVcbiAqIEBwYXJhbSBvYmplY3RzIG9iamVjdCBhcnJheSB0byBiZSBjb252ZXJ0ZWQgdG8gSlNPTiBmb3JtYXRcbiAqICAgcHJpb3IgdG8gd3JpdGluZyB0byBkb3dubG9hZCBkZXN0aW5hdGlvblxuICogQHBhcmFtIGluZGVudCBvcHRpb25hbCBwYXJhbWV0ZXIgaW5kaWNhdGluZyBzcGFjZSBpbmRlbnRhdGlvbiBmb3IgcHJldHR5IG91dHB1dC4gRGVmYXVsdCBpcyAyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb3dubG9hZE9iamVjdHNUb0pTT04oXG4gIGZpbGVCYXNlTmFtZTogc3RyaW5nLFxuICBvYmplY3RzOiBhbnlbXSxcbiAgaW5kZW50ID0gMlxuKTogdm9pZCB7XG4gIGRvd25sb2FkRmlsZShcbiAgICBgJHtmaWxlQmFzZU5hbWV9Lmpzb25gLFxuICAgIGZvcm1hdEpTT04ob2JqZWN0cywgaW5kZW50KSxcbiAgICAnYXBwbGljYXRpb24vanNvbidcbiAgKTtcbn1cblxuLyoqXG4gKiBEb3dubG9hZCBzdHJpbmcgY29udGVudCB0byB0aGUgc3BlY2lmaWVkIGZpbGUgd2l0aCBkZXNpcmVkIG1pbWUgdHlwZS5cbiAqXG4gKiBAcGFyYW0gZmlsZU5hbWUgZnVsbCBmaWxlbmFtZSAoaW5jbHVkaW5nIGFwcHJvcHJpYXRlIGV4dGVuc2lvbikgb2YgZGVzdGluYXRpb24gZmlsZVxuICogQHBhcmFtIGNvbnRlbnRzIHN0cmluZyBjb250ZW50cyB0byBiZSB3cml0dGVuIHRvIGRvd25sb2FkIGRlc3RpbmF0aW9uXG4gKiBAcGFyYW0gbWltZVR5cGUgbWltZSB0eXBlIGFwcHJvcHJpYXRlIHRvIGZpbGUgY29udGVudCB0byBzdXBwb3J0IGNvbnN1bXB0aW9uIG9mIGRlc3RpbmF0aW9uIGZpbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkRmlsZShcbiAgZmlsZU5hbWU6IHN0cmluZyxcbiAgY29udGVudHM6IHN0cmluZyxcbiAgbWltZVR5cGUgPSAndGV4dC9wbGFpbidcbik6IHZvaWQge1xuICBpZiAoIWZpbGVOYW1lIHx8ICFjb250ZW50cykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIENyZWF0ZSBibG9iIG9iamVjdCBhbmQgYXNzaWduIFVSTFxuICBjb25zdCBibG9iOiBCbG9iID0gbmV3IEJsb2IoW2NvbnRlbnRzXSwgeyB0eXBlOiBtaW1lVHlwZSB9KTtcbiAgY29uc3QgdXJsOiBzdHJpbmcgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICAvLyBDb25zdHJ1Y3QgYW5jaG9yIGZvciBVUkwsIGFwcGVuZCB0byBET00sIGNsaWNrIGFuZCBjbGVhbnVwLlxuICBjb25zdCBhOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgYS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2Rpc3BsYXk6IG5vbmUnKTtcbiAgYS5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZU5hbWUpO1xuICBhLmhyZWYgPSB1cmw7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XG4gIGEuY2xpY2soKTtcbiAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcbiAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbn1cbiJdfQ==