aboutsummaryrefslogtreecommitdiffstats
path: root/csv-dump.mjs
diff options
context:
space:
mode:
authorBrian Cully <bjc@spork.org>2025-07-16 19:18:50 -0400
committerBrian Cully <bjc@spork.org>2025-07-16 19:18:50 -0400
commit9e14963bad67ab2c640e98bb2148635b551727ae (patch)
tree70b24908063e21cf6f1ff133d713a338005109d3 /csv-dump.mjs
parente1a9e10902de4d927f4c2c87b6c27e6303fa1ead (diff)
downloadpnit-9e14963bad67ab2c640e98bb2148635b551727ae.tar.gz
pnit-9e14963bad67ab2c640e98bb2148635b551727ae.zip
add csv download
Diffstat (limited to 'csv-dump.mjs')
-rw-r--r--csv-dump.mjs22
1 files changed, 22 insertions, 0 deletions
diff --git a/csv-dump.mjs b/csv-dump.mjs
new file mode 100644
index 0000000..76e1e08
--- /dev/null
+++ b/csv-dump.mjs
@@ -0,0 +1,22 @@
+export default class {
+ constructor(rows) {
+ this.rows = rows;
+ }
+
+ download() {
+ // XXX: should escape various things, but the quick-n-dirty
+ // calls.
+ const data = this.rows.map(row => row.join(',')).join('\r\n');
+ const file = new Blob([data], { type: 'text/csv' })
+ let a = document.createElement('a');
+ const url = URL.createObjectURL(file);
+ a.href = url;
+ a.download = 'filename.csv';
+ document.body.appendChild(a);
+ a.click();
+ setTimeout(_ => {
+ document.body.removeChild(a);
+ URL.revokeObjectURL(url);
+ }, 0);
+ }
+}