diff options
| author | Brian Cully <bjc@spork.org> | 2025-07-16 19:18:50 -0400 |
|---|---|---|
| committer | Brian Cully <bjc@spork.org> | 2025-07-16 19:18:50 -0400 |
| commit | 9e14963bad67ab2c640e98bb2148635b551727ae (patch) | |
| tree | 70b24908063e21cf6f1ff133d713a338005109d3 /csv-dump.mjs | |
| parent | e1a9e10902de4d927f4c2c87b6c27e6303fa1ead (diff) | |
| download | pnit-9e14963bad67ab2c640e98bb2148635b551727ae.tar.gz pnit-9e14963bad67ab2c640e98bb2148635b551727ae.zip | |
add csv download
Diffstat (limited to 'csv-dump.mjs')
| -rw-r--r-- | csv-dump.mjs | 22 |
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); + } +} |
