@forestadmin/plugin-export-advanced 1.1.49 → 1.1.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/dist/renderers/xlsx.d.ts +3 -2
- package/dist/renderers/xlsx.js +30 -45
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -62,10 +62,10 @@ async function addExportAdvanced(dataSource, collection, options) {
|
|
|
62
62
|
const filename = context.formValues.Filename || options.filename;
|
|
63
63
|
const renderer = renderers_1.default[format];
|
|
64
64
|
const records = await context.collection.list(context.filter, fields);
|
|
65
|
-
const output = renderer.handler(records, fields);
|
|
65
|
+
const output = await renderer.handler(records, fields);
|
|
66
66
|
return resultBuilder.file(output, `${filename}${format}`, renderer.mimeType);
|
|
67
67
|
},
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUF3RUEsOENBeUJDO0FBekZELDREQUFvQztBQUVwQyxTQUFTLFNBQVMsQ0FDaEIsVUFBZ0MsRUFDaEMsVUFBZ0MsRUFDaEMsY0FBc0I7SUFFdEIsSUFBSSxjQUFjLElBQUksQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRW5DLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUVsQixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDckUsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRS9DLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM1RCxNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDNUUsTUFBTSxDQUFDLElBQUksQ0FDVCxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQ3pGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FDZCxVQUFnQyxFQUNoQyxVQUFnQyxFQUNoQyxPQUFpQjtJQUVqQixNQUFNLElBQUksR0FBeUIsRUFBRSxDQUFDO0lBQ3RDLE1BQU0sVUFBVSxHQUFH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
|
package/dist/renderers/xlsx.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export
|
|
1
|
+
import type { Cell } from 'write-excel-file/node';
|
|
2
|
+
export declare function toCell(value: unknown): Cell;
|
|
3
|
+
export default function render(records: Record<string, unknown>[], projection: string[]): Promise<Buffer>;
|
|
3
4
|
//# sourceMappingURL=xlsx.d.ts.map
|
package/dist/renderers/xlsx.js
CHANGED
|
@@ -3,59 +3,44 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.toCell = toCell;
|
|
6
7
|
exports.default = render;
|
|
7
|
-
const
|
|
8
|
+
const node_1 = __importDefault(require("write-excel-file/node"));
|
|
8
9
|
const get_field_value_1 = __importDefault(require("../utils/get-field-value"));
|
|
9
|
-
|
|
10
|
+
// Matches excel4node's default date format so exports stay identical after the migration.
|
|
11
|
+
const XLSX_DATE_FORMAT = 'm/d/yy';
|
|
12
|
+
function toCell(value) {
|
|
10
13
|
if (value === null || value === undefined)
|
|
11
14
|
return null;
|
|
12
15
|
if (typeof value === 'boolean')
|
|
13
|
-
return
|
|
14
|
-
if (typeof value === 'number')
|
|
15
|
-
return
|
|
16
|
+
return { type: Boolean, value };
|
|
17
|
+
if (typeof value === 'number') {
|
|
18
|
+
return Number.isFinite(value)
|
|
19
|
+
? { type: Number, value }
|
|
20
|
+
: { type: String, value: String(value) };
|
|
21
|
+
}
|
|
22
|
+
if (value instanceof Date) {
|
|
23
|
+
return Number.isFinite(value.getTime())
|
|
24
|
+
? { type: Date, value, format: XLSX_DATE_FORMAT }
|
|
25
|
+
: null;
|
|
26
|
+
}
|
|
16
27
|
if (typeof value === 'string') {
|
|
17
28
|
if (value === 'true' || value === 'false')
|
|
18
|
-
return '
|
|
19
|
-
if (
|
|
20
|
-
return
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return
|
|
27
|
-
return 'string';
|
|
28
|
-
}
|
|
29
|
-
function castValue(value) {
|
|
30
|
-
switch (getExcel4NodeTypeFromValue(value)) {
|
|
31
|
-
case 'bool':
|
|
32
|
-
return Boolean(value);
|
|
33
|
-
case 'number':
|
|
34
|
-
return Number(value);
|
|
35
|
-
case 'string':
|
|
36
|
-
return String(value);
|
|
37
|
-
case 'date':
|
|
38
|
-
return new Date(value);
|
|
39
|
-
default:
|
|
40
|
-
return String(value);
|
|
29
|
+
return { type: Boolean, value: value === 'true' };
|
|
30
|
+
if (value.trim() !== '' && Number.isFinite(Number(value))) {
|
|
31
|
+
return { type: Number, value: Number(value) };
|
|
32
|
+
}
|
|
33
|
+
const timestamp = Date.parse(value);
|
|
34
|
+
if (!Number.isNaN(timestamp)) {
|
|
35
|
+
return { type: Date, value: new Date(timestamp), format: XLSX_DATE_FORMAT };
|
|
36
|
+
}
|
|
37
|
+
return { type: String, value };
|
|
41
38
|
}
|
|
39
|
+
return { type: String, value: String(value) };
|
|
42
40
|
}
|
|
43
41
|
function render(records, projection) {
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
ws.cell(1, index + 1).string(name);
|
|
48
|
-
}
|
|
49
|
-
for (const [row, record] of records.entries()) {
|
|
50
|
-
for (const [col, name] of projection.entries()) {
|
|
51
|
-
const value = (0, get_field_value_1.default)(record, name);
|
|
52
|
-
const castedValue = castValue(value);
|
|
53
|
-
const excel4NodeCellFunction = getExcel4NodeTypeFromValue(castedValue);
|
|
54
|
-
if (value !== null && value !== undefined) {
|
|
55
|
-
ws.cell(2 + row, 1 + col)[excel4NodeCellFunction](castedValue);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return wb.writeToBuffer();
|
|
42
|
+
const header = projection.map(name => ({ type: String, value: name }));
|
|
43
|
+
const rows = records.map(record => projection.map(name => toCell((0, get_field_value_1.default)(record, name))));
|
|
44
|
+
return (0, node_1.default)([header, ...rows], { sheet: 'Export' }).toBuffer();
|
|
60
45
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieGxzeC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yZW5kZXJlcnMveGxzeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVNBLHdCQWlDQztBQUVELHlCQVFDO0FBbERELGlFQUFrRDtBQUVsRCwrRUFBcUQ7QUFFckQsMEZBQTBGO0FBQzFGLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO0FBRWxDLFNBQWdCLE1BQU0sQ0FBQyxLQUFjO0lBQ25DLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3ZELElBQUksT0FBTyxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBRWhFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUMzQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUN6QixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDMUIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUU7WUFDakQsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUM7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssT0FBTztZQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEtBQUssTUFBTSxFQUFFLENBQUM7UUFFN0YsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEQsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDOUUsQ0FBQztRQUVELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDaEQsQ0FBQztBQUVELFNBQXdCLE1BQU0sQ0FDNUIsT0FBa0MsRUFDbEMsVUFBb0I7SUFFcEIsTUFBTSxNQUFNLEdBQVcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0UsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBQSx5QkFBYSxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoRyxPQUFPLElBQUEsY0FBYSxFQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUMxRSxDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/plugin-export-advanced",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.51",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
"directory": "packages/plugin-export-advanced"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"
|
|
15
|
+
"write-excel-file": "^4.1.1"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@forestadmin/datasource-customizer": "1.
|
|
18
|
+
"@forestadmin/datasource-customizer": "1.72.0",
|
|
19
19
|
"@forestadmin/datasource-toolkit": "1.55.1"
|
|
20
20
|
},
|
|
21
21
|
"files": [
|