UNPKG

virool-pivot

Version:

A web-based exploratory visualization UI for Druid.io

44 lines (37 loc) 1.32 kB
import * as filesaver from 'browser-filesaver'; import { Dataset } from 'plywood'; export type FileFormat = "csv" | "tsv" | "json" | "txt"; export function getMIMEType(fileType: string) { switch (fileType) { case 'csv': return 'text/csv'; case 'tsv': return 'text/tsv'; default: return 'application/json'; } } export function download(dataset: Dataset, fileName?: string, fileFormat?: FileFormat): void { const type = `${getMIMEType(fileFormat)};charset=utf-8`; const blob = new Blob([datasetToFileString(dataset, fileFormat)], {type}); if (!fileName) fileName = `${new Date()}-data`; fileName += `.${fileFormat}`; filesaver.saveAs(blob, fileName, true); // true == disable auto BOM } export function datasetToFileString(dataset: Dataset, fileFormat?: FileFormat): string { if (fileFormat === 'csv') { return dataset.toCSV(); } else if (fileFormat === 'tsv') { return dataset.toTSV(); } else { return JSON.stringify(dataset.toJS(), null, 2); } } export function makeFileName(...args: Array<string>): string { var nameComponents: string[] = []; args.forEach((arg) => { if (arg) nameComponents.push(arg.toLowerCase()); }); var nameString = nameComponents.join("_"); return nameString.length < 200 ? nameString : nameString.substr(0, 200); }