From 1a43e8a6f26935a31c5a463e2152ebc090d0394d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tu=C4=9F=C3=A7e=20K=C3=BC=C3=A7=C3=BCko=C4=9Flu?= Date: Wed, 10 Aug 2022 16:22:48 +0300 Subject: [PATCH] Fixed #2395 - New `exportFooter` property for Exportable DataTable --- api-generator/components/column.js | 6 ++++++ src/components/column/Column.d.ts | 4 ++++ src/components/column/Column.vue | 4 ++++ src/components/datatable/DataTable.vue | 18 ++++++++++++++++++ src/views/datatable/DataTableDoc.vue | 6 ++++++ 5 files changed, 38 insertions(+) diff --git a/api-generator/components/column.js b/api-generator/components/column.js index 9f538a3fe..16c25848c 100644 --- a/api-generator/components/column.js +++ b/api-generator/components/column.js @@ -239,6 +239,12 @@ const ColumnProps = [ default: "null", description: "Custom export header of the column to be exported as CSV." }, + { + name: "exportFooter", + type: "string", + default: "null", + description: "Custom export footer of the column to be exported as CSV." + }, { name: "hidden", type: "boolean", diff --git a/src/components/column/Column.d.ts b/src/components/column/Column.d.ts index 0fb47bc0a..371a4d0f2 100755 --- a/src/components/column/Column.d.ts +++ b/src/components/column/Column.d.ts @@ -233,6 +233,10 @@ export interface ColumnProps { * Custom export header of the column to be exported as CSV. */ exportHeader?: string | undefined; + /** + * Custom export footer of the column to be exported as CSV. + */ + exportFooter?: string | undefined; /** * Defines the filtering algorithm to use when searching the options. */ diff --git a/src/components/column/Column.vue b/src/components/column/Column.vue index 0c2ed52ff..c2be3e2ae 100755 --- a/src/components/column/Column.vue +++ b/src/components/column/Column.vue @@ -166,6 +166,10 @@ export default { type: String, default: null }, + exportFooter: { + type: String, + default: null + }, filterMatchMode: { type: String, default: null diff --git a/src/components/datatable/DataTable.vue b/src/components/datatable/DataTable.vue index da87769d0..80f0323a2 100755 --- a/src/components/datatable/DataTable.vue +++ b/src/components/datatable/DataTable.vue @@ -1072,6 +1072,24 @@ export default { }); } + + //footers + let footerInitiated = false; + for (let i = 0; i < this.columns.length; i++) { + let column = this.columns[i]; + + if (i === 0) csv += '\n'; + + if (this.columnProp(column, 'exportable') !== false && this.columnProp(column, 'field')) { + if (footerInitiated) + csv += this.csvSeparator; + else + footerInitiated = true; + + csv += '"' + (this.columnProp(column, 'exportFooter') || this.columnProp(column, 'footer') || this.columnProp(column, 'field')) + '"'; + } + } + DomHandler.exportCSV(csv, this.exportFilename); }, resetPage() { diff --git a/src/views/datatable/DataTableDoc.vue b/src/views/datatable/DataTableDoc.vue index ef7e9a4e0..24a766e2a 100755 --- a/src/views/datatable/DataTableDoc.vue +++ b/src/views/datatable/DataTableDoc.vue @@ -381,6 +381,12 @@ export default { null Custom export header of the column to be exported as CSV. + + exportFooter + string + null + Custom export footer of the column to be exported as CSV. + filterMatchMode string