Skip to content

Commit ab7e7dd

Browse files
author
edencoder
committed
amend issues
1 parent 2e1ae9f commit ab7e7dd

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

bundles/grid/helpers/grid.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
// Require local class dependencies
22
import xl from 'excel4node';
3+
import fs from 'fs';
34
import uuid from 'uuid';
45
import Helper from 'helper';
56
import moment from 'moment';
67
import toText from 'html-to-text';
78
import dotProp from 'dot-prop';
89
import json2csv from 'json2csv';
910

10-
1111
// require models
1212
const Grid = model('grid');
1313

@@ -686,7 +686,7 @@ export default class GridHelper extends Helper {
686686
const json2csvParser = new Json2csvParser({
687687
fields,
688688
});
689-
const csv = json2csvParser.parse(rows);
689+
const csv = json2csvParser.parse(rows.map((row) => row.get ? row.get() : row));
690690

691691
// get model
692692
const FormModel = this.get('model');
@@ -714,7 +714,7 @@ export default class GridHelper extends Helper {
714714
// create workbook
715715
const wb = new xl.Workbook();
716716
const ws = wb.addWorksheet(`${this.get('id') || (new FormModel()).constructor.name}-${moment().format('DD-MM-YYYY')}.csv`);
717-
const fields = Object.keys(rows[0]);
717+
const fields = Object.keys(rows[0] && rows[0].get ? rows[0].get() : rows[0]);
718718

719719
// add titles
720720
fields.forEach((title, i) => {
@@ -725,10 +725,10 @@ export default class GridHelper extends Helper {
725725
// loop rows
726726
rows.forEach((row, i) => {
727727
// values
728-
Object.values(row).forEach((col, x) => {
728+
Object.values(row.get ? row.get() : row).forEach((col, x) => {
729729
// create worksheet cell
730730
ws.cell((i + 2), (x + 1))
731-
.string(col);
731+
.string(`${col}`);
732732
});
733733
});
734734

@@ -749,7 +749,15 @@ export default class GridHelper extends Helper {
749749

750750
// download XLSX
751751
res.set('Content-Disposition', `attachment; filename=${this.get('id') || (new FormModel()).constructor.name}-${moment().format('DD-MM-YYYY')}.xlsx`);
752-
res.download(`/tmp/${UUID}.xlsx`);
752+
753+
// create stream
754+
const stream = fs.createReadStream(`/tmp/${UUID}.xlsx`);
755+
756+
// pipe to response
757+
stream.pipe(res).on('end', () => {
758+
// remove
759+
fs.remove(`/tmp/${UUID}.xlsx`);
760+
});
753761
}
754762

755763
// ////////////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)