@seasketch/geoprocessing
Version:
Geoprocessing and reporting framework for SeaSketch 2.0
40 lines (39 loc) • 1.71 kB
TypeScript
import React from "react";
import { DropdownProps } from "./Dropdown.js";
declare const SUPPORTED_FORMATS: readonly ["json", "csv"];
export type SUPPORTED_FORMAT = (typeof SUPPORTED_FORMATS)[number];
export type StringOrNumber = string | number;
export interface DataFormatters {
[key: string]: () => string;
}
export interface DownloadOption {
/** File extension for format, also used to uniquely identify each format */
extension: SUPPORTED_FORMAT;
/** Label to display for download option */
label: string;
/** MIME type of associated with data format */
contentType: string;
/** Object blob URL aka DOMString, stores transformed data in format */
url: string;
}
type DataDownloadDropdownProps = Omit<DropdownProps, "children">;
export interface DataDownloadProps extends DataDownloadDropdownProps {
/** Name minus extension */
filename?: string;
/** Raw data to format and allow to download, nested objects and arrays will get flattened */
data: object[];
/** Formats to offer, defaults to csv only */
formats?: SUPPORTED_FORMAT[];
/** Add sketch name to filename, default to true */
addSketchName?: boolean;
/** Add timestamp to filename, defaults to true */
addTimestamp?: boolean;
titleElement?: JSX.Element;
}
/**
* Dropdown menu for transforming data to CSV/JSON format and initiating a browser download
* Defaults to CSV and JSON, and filename will include sketch name from ReportContext (if available)
* and current timestamp
*/
export declare const DataDownload: ({ filename, data, formats, addSketchName, addTimestamp, ...dropdownProps }: DataDownloadProps) => React.JSX.Element;
export default DataDownload;