From d4f9c7fbafbbb83f3316ec525db3c9effeca7dcb Mon Sep 17 00:00:00 2001 From: "Neuber, Eugen" <eugen.neuber@tugraz.at> Date: Fri, 29 Nov 2019 10:28:00 +0100 Subject: [PATCH] Merge branch 'datatable-export-buttons' into 'master' Datatable export buttons See merge request VPU/WebComponents/datatableview!1 --- packages/data-table-view/README.md | 4 +++ packages/data-table-view/package.json | 5 ++- packages/data-table-view/rollup.config.js | 3 +- .../src/vpu-data-table-view-demo.js | 4 +-- .../src/vpu-data-table-view.js | 33 +++++++++++++++++++ packages/data-table-view/vendor/common | 2 +- 6 files changed, 46 insertions(+), 5 deletions(-) diff --git a/packages/data-table-view/README.md b/packages/data-table-view/README.md index 027a98f4..6a3844ae 100644 --- a/packages/data-table-view/README.md +++ b/packages/data-table-view/README.md @@ -17,6 +17,10 @@ - example `<vpu-data-table-view searching></vpu-data-table-view>` - `columns.count` (optional, default: 1): add placeholder columns before first table setup - example `<vpu-data-table-view column-count="7"></vpu-data-table-view>` +- `exportable` (optional): set to display export buttons + - example `<vpu-data-table-view exportable></pu-data-table-view>` +- `export-name` (optional, default: 'Data Export'): add name for download file (without extension) + - example `<vpu-data-table-view exportable export-name="All Items"></pu-data-table-view>` # Local development ```bash diff --git a/packages/data-table-view/package.json b/packages/data-table-view/package.json index 7f3bd00c..0bd053b9 100644 --- a/packages/data-table-view/package.json +++ b/packages/data-table-view/package.json @@ -28,11 +28,14 @@ }, "dependencies": { "@webcomponents/webcomponentsjs": "^2.2.10", - "datatables.net-dt": "^1.10.19", + "datatables.net-buttons": "^1.6.1", + "datatables.net-buttons-dt": "^1.6.1", + "datatables.net-dt": "^1.10.20", "datatables.net-responsive": "^2.2.3", "datatables.net-responsive-dt": "^2.2.3", "i18next": "^17.0.3", "jquery": "^3.4.1", + "jszip": "^3.2.2", "lit-element": "^2.2.1", "lit-html": "^1.1.1" }, diff --git a/packages/data-table-view/rollup.config.js b/packages/data-table-view/rollup.config.js index 4c24e562..1aaa50af 100644 --- a/packages/data-table-view/rollup.config.js +++ b/packages/data-table-view/rollup.config.js @@ -33,7 +33,7 @@ export default { if (warning.code === 'CIRCULAR_DEPENDENCY') { return; } - throw new Error(warning); + //throw new Error(warning); }, watch: { chokidar: true, @@ -76,6 +76,7 @@ export default { {src: 'node_modules/datatables.net-dt/css', dest: 'dist/local/vpu-data-table-view'}, {src: 'node_modules/datatables.net-dt/images', dest: 'dist/local/vpu-data-table-view'}, {src: 'node_modules/datatables.net-responsive-dt/css', dest: 'dist/local/vpu-data-table-view'}, + {src: 'node_modules/datatables.net-buttons-dt/css', dest: 'dist/local/vpu-data-table-view'}, ], }), diff --git a/packages/data-table-view/src/vpu-data-table-view-demo.js b/packages/data-table-view/src/vpu-data-table-view-demo.js index 588ced41..3d8a8644 100644 --- a/packages/data-table-view/src/vpu-data-table-view-demo.js +++ b/packages/data-table-view/src/vpu-data-table-view-demo.js @@ -160,9 +160,9 @@ class DataTableViewDemo extends LitElement { </div> ${this.getAuthComponentHtml()} <div class="content"> - <h4>DataTable: with data, paging and searching</h4> + <h4>DataTable: with data, paging and searching AND exportable</h4> <div class="box"> - <vpu-data-table-view lang="${this.lang}" paging searching id="vdtv1"></vpu-data-table-view> + <vpu-data-table-view lang="${this.lang}" paging searching exportable export-name="Demo Export" id="vdtv1"></vpu-data-table-view> </div> <h4>DataTable: no data, no paging, no searching</h4> <div class="box"> diff --git a/packages/data-table-view/src/vpu-data-table-view.js b/packages/data-table-view/src/vpu-data-table-view.js index fdb69d55..2d9aaf07 100644 --- a/packages/data-table-view/src/vpu-data-table-view.js +++ b/packages/data-table-view/src/vpu-data-table-view.js @@ -2,6 +2,11 @@ import $ from 'jquery'; import dt from 'datatables.net'; import resp from 'datatables.net-responsive'; import resp2 from 'datatables.net-responsive-dt'; +import jszip from 'jszip/dist/jszip.js'; +import bttn from 'datatables.net-buttons-dt'; +import bttn2 from 'datatables.net-buttons'; +import bttnHtml5 from 'datatables.net-buttons/js/buttons.html5.js'; +import bttnPrint from 'datatables.net-buttons/js/buttons.print.js'; import {i18n} from './i18n'; import {css, html, LitElement} from 'lit-element'; import de from '../assets/datatables/i18n/German'; @@ -13,6 +18,10 @@ import * as commonStyles from 'vpu-common/styles'; dt(window, $); resp(window, $); resp2(window, $); +bttn(window, $); +bttn2(window, $); +bttnHtml5(window, $, jszip); +bttnPrint(window, $); class DataTableView extends LitElement { constructor() { @@ -28,6 +37,8 @@ class DataTableView extends LitElement { this.data = []; this.cc = 1; this.cssStyle = ''; + this.exportable = false; + this.exportName = 'Data Export'; } setCSSStyle(style) { @@ -45,6 +56,8 @@ class DataTableView extends LitElement { data: { type: Array, attribute: false }, cc: {type: Number, attribute: 'columns-count'}, cssStyle: { type: String, attribute: false }, + exportable: { type: Boolean }, + exportName: { type: String, attribute: 'export-name' } }; } @@ -83,6 +96,24 @@ class DataTableView extends LitElement { searching: this.searching, columns: this.columns, columnDefs: this.columnDefs, + dom: (this.exportable ? 'B' : '') + 'frtip', + buttons: [ + { + extend: 'csvHtml5', + text: 'CSV', + title: this.exportName, + }, + { + extend: 'excelHtml5', + text: 'XSLX', + title: this.exportName, + }, + { + extend: 'print', + text: 'Drucken', + title: this.exportName, + }, + ] }); try { @@ -127,10 +158,12 @@ class DataTableView extends LitElement { commonUtils.initAssetBaseURL('vpu-data-table-view-src'); let dt_css = commonUtils.getAssetURL('local/vpu-data-table-view/css/jquery.dataTables.min.css'); let rs_css = commonUtils.getAssetURL('local/vpu-data-table-view/css/responsive.dataTables.css'); + let bt_css = commonUtils.getAssetURL('local/vpu-data-table-view/css/button.dataTables.css'); return html` <link rel="stylesheet" href="${dt_css}"> <link rel="stylesheet" href="${rs_css}"> + <link rel="stylesheet" href="${bt_css}"> <style> ${this.cssStyle} </style> diff --git a/packages/data-table-view/vendor/common b/packages/data-table-view/vendor/common index 833dd224..4de91ae3 160000 --- a/packages/data-table-view/vendor/common +++ b/packages/data-table-view/vendor/common @@ -1 +1 @@ -Subproject commit 833dd224c7ecab1caf509d83f58211c2346e8b19 +Subproject commit 4de91ae325206fc756ad66df87c0b2490672e552 -- GitLab