Skip to content
This repository was archived by the owner on Nov 25, 2020. It is now read-only.

Commit 704ec6e

Browse files
Merge pull request #1 from jeremyvergnas/csv-export
feat(project): Implement datatable-export as a plugin
2 parents 8c84506 + 48cfc93 commit 704ec6e

File tree

4 files changed

+55
-140
lines changed

4 files changed

+55
-140
lines changed

package.json

+16-21
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,43 @@
11
{
2-
"name": "aurelia-pager",
3-
"version": "0.0.10",
4-
"description": "Aurelia-only pagination",
2+
"name": "aurelia-datatable-export",
3+
"version": "0.0.1",
4+
"description": "Aurelia-datatable only export",
55
"bugs": {
6-
"url": "https://github.com/SpoonX/aurelia-pager/issues"
6+
"url": "https://github.com/SpoonX/aurelia-datatable-export/issues"
77
},
88
"keywords": [
99
"aurelia",
10-
"pagination",
11-
"pager",
10+
"datatable",
11+
"export",
1212
"spoonx"
1313
],
14-
"homepage": "https://github.com/SpoonX/aurelia-pager#readme",
14+
"homepage": "https://github.com/SpoonX/aurelia-datatable-export#readme",
1515
"license": "MIT",
16-
"author": "VMBindraban <vijay@spoonx.nl> (http://spoonx.nl)",
16+
"author": "jeremyvergnas <jeremy@spoonx.nl> (http://spoonx.nl)",
1717
"contributors": [
1818
"RWOverdijk <wesley@spoonx.nl> (http://spoonx.nl/)"
1919
],
20-
"main": "dist/commonjs/aurelia-pager.js",
21-
"typings": "dist/aurelia-pager.d.ts",
20+
"main": "dist/commonjs/aurelia-datatable-export.js",
21+
"typings": "dist/aurelia-datatable-export.d.ts",
2222
"repository": {
2323
"type": "git",
24-
"url": "git+ssh://git@github.com/SpoonX/aurelia-pager.git"
24+
"url": "git+ssh://git@github.com/SpoonX/aurelia-datatable-export.git"
2525
},
2626
"scripts": {
2727
"test": "./node_modules/.bin/gulp test"
2828
},
2929
"jspm": {
3030
"registry": "npm",
31-
"jspmPackage": true,
32-
"main": "aurelia-pager",
31+
"main": "aurelia-datatable-export",
3332
"format": "amd",
3433
"directories": {
3534
"dist": "dist/amd"
3635
},
3736
"dependencies": {
3837
"aurelia-binding": "^1.0.0-rc.1.0.0",
3938
"aurelia-templating": "^1.0.0-rc.1.0.0",
40-
"aurelia-view-manager": "^0.0.7"
41-
},
42-
"peerDependencies": {
43-
"aurelia-binding": "^1.0.0-rc.1.0.0",
44-
"aurelia-templating": "^1.0.0-rc.1.0.0",
45-
"aurelia-view-manager": "^0.0.7"
39+
"aurelia-view-manager": "^0.0.7",
40+
"json2csv": "^3.7.0"
4641
},
4742
"devDependencies": {
4843
"aurelia-bootstrapper": "^1.0.0",
@@ -112,8 +107,8 @@
112107
"aurelia": {
113108
"build": {
114109
"resources": [
115-
"aurelia-pager/pager",
116-
"aurelia-pager/bootstrap/pager.html"
110+
"aurelia-datatable-export/datatable-export",
111+
"aurelia-datatable-export/bootstrap/datatable-export.html"
117112
]
118113
}
119114
}

src/bootstrap/datatable-export.html

+6
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
11
<template>
2+
<button
3+
click.trigger="doExport()"
4+
class="btn btn-white">
5+
<i class="fa fa-table"></i>
6+
<span t="Export"></span>
7+
</button>
28
</template>

src/datatable-export.js

+33-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,39 @@
1-
import {bindingMode} from 'aurelia-binding';
2-
import {bindable} from 'aurelia-templating';
1+
import {bindable, customElement} from 'aurelia-templating';
32
import {resolvedView} from 'aurelia-view-manager';
3+
import json2csv from 'json2csv';
44

5+
@customElement('datatable-export')
56
@resolvedView('aurelia-datatable-export', 'datatable-export')
67
export class DatatableExport {
8+
@bindable columns = [];
9+
@bindable datatable = null
10+
@bindable criteria = {};
711

12+
doExport() {
13+
if (!this.datatable) {
14+
return;
15+
}
16+
17+
return this.datatable.gatherData(this.criteria).then(result => {
18+
try {
19+
let csv = json2csv({data: result, fields: this.columns});
20+
let blob = new Blob([csv]);
21+
22+
if (window.navigator.msSaveOrOpenBlob) {
23+
window.navigator.msSaveBlob(blob, "export.csv");
24+
}
25+
else {
26+
let a = window.document.createElement("a");
27+
28+
a.href = window.URL.createObjectURL(blob, {type: "text/plain"});
29+
a.download = "export.csv";
30+
document.body.appendChild(a);
31+
a.click();
32+
document.body.removeChild(a);
33+
}
34+
} catch (err) {
35+
this.datatable.triggerEvent('exception', {on: 'export', error: err});
36+
}
37+
});
38+
}
839
}

test/unit/pager.spec.js

-117
This file was deleted.

0 commit comments

Comments
 (0)