Skip to content

Commit 3bdf4ec

Browse files
SoyElHomerMaloSoyElHomerMalo
authored andcommitted
Update to use or not separator header based on a new grid option
Updated unit test adding the new config option Updated unit test adding the new config option Fixes unit test all options to non-default
1 parent 592be63 commit 3bdf4ec

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

src/features/exporter/js/exporter.js

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,15 @@
235235
* <br/>Defaults to false
236236
*/
237237
gridOptions.exporterOlderExcelCompatibility = gridOptions.exporterOlderExcelCompatibility === true;
238+
/**
239+
* @ngdoc object
240+
* @name exporterIsExcelCompatible
241+
* @propertyOf ui.grid.exporter.api:GridOptions
242+
* @description Separator header, used to set a custom column separator in a csv file, only works on MS Excel.
243+
* Used it on other programs will make csv content display unproperly. Setting this option to false won't add this header.
244+
* <br/>Defaults to false
245+
*/
246+
gridOptions.exporterIsExcelCompatible = gridOptions.exporterIsExcelCompatible === true;
238247
/**
239248
* @ngdoc object
240249
* @name exporterPdfDefaultStyle
@@ -626,7 +635,7 @@
626635
var exportData = self.getData(grid, rowTypes, colTypes);
627636
var csvContent = self.formatAsCsv(exportColumnHeaders, exportData, grid.options.exporterCsvColumnSeparator);
628637

629-
self.downloadFile (grid.options.exporterCsvFilename, csvContent, grid.options.exporterCsvColumnSeparator, grid.options.exporterOlderExcelCompatibility);
638+
self.downloadFile (grid.options.exporterCsvFilename, csvContent, grid.options.exporterCsvColumnSeparator, grid.options.exporterOlderExcelCompatibility, grid.options.exporterIsExcelCompatible);
630639
});
631640
},
632641

@@ -909,14 +918,19 @@
909918
* @param {string} csvContent the csv content that we'd like to
910919
* download as a file
911920
* @param {boolean} exporterOlderExcelCompatibility whether or not we put a utf-16 BOM on the from (\uFEFF)
921+
* @param {boolean} exporterIsExcelCompatible whether or not we add separator header ('sep=X')
912922
*/
913-
downloadFile: function (fileName, csvContent, columnSeparator, exporterOlderExcelCompatibility) {
923+
downloadFile: function (fileName, csvContent, columnSeparator, exporterOlderExcelCompatibility, exporterIsExcelCompatible) {
914924
var D = document;
915925
var a = D.createElement('a');
916926
var strMimeType = 'application/octet-stream;charset=utf-8';
917927
var rawFile;
918928
var ieVersion = this.isIE();
919-
929+
930+
if (exporterIsExcelCompatible) {
931+
csvContent = 'sep=' + columnSeparator + '\r\n' + csvContent;
932+
}
933+
920934
// IE10+
921935
if (navigator.msSaveBlob) {
922936
return navigator.msSaveOrOpenBlob(
@@ -926,21 +940,21 @@
926940
fileName
927941
);
928942
}
929-
930-
if (ieVersion) {
943+
944+
if (ieVersion){
931945
var frame = D.createElement('iframe');
932946
document.body.appendChild(frame);
933947

934948
frame.contentWindow.document.open('text/html', 'replace');
935-
frame.contentWindow.document.write('sep=' + columnSeparator + '\r\n' + csvContent);
949+
frame.contentWindow.document.write(csvContent);
936950
frame.contentWindow.document.close();
937951
frame.contentWindow.focus();
938952
frame.contentWindow.document.execCommand('SaveAs', true, fileName);
939953

940954
document.body.removeChild(frame);
941955
return true;
942956
}
943-
957+
944958
//html5 A[download]
945959
if ('download' in a) {
946960
var blob = new Blob(

src/features/exporter/test/exporter.spec.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ describe('ui.grid.exporter uiGridExporterService', function () {
7575
exporterCsvFilename: 'download.csv',
7676
exporterPdfFilename: 'download.pdf',
7777
exporterOlderExcelCompatibility: false,
78+
exporterIsExcelCompatible: false,
7879
exporterPdfDefaultStyle : { fontSize : 11 },
7980
exporterPdfTableStyle : { margin : [ 0, 5, 0, 15 ] },
8081
exporterPdfTableHeaderStyle : { bold : true, fontSize : 12, color : 'black' },
@@ -105,6 +106,7 @@ describe('ui.grid.exporter uiGridExporterService', function () {
105106
exporterCsvFilename: 'myfile.csv',
106107
exporterPdfFilename: 'myfile.pdf',
107108
exporterOlderExcelCompatibility: true,
109+
exporterIsExcelCompatible: true,
108110
exporterPdfDefaultStyle : { fontSize : 12 },
109111
exporterPdfTableStyle : { margin : [ 15, 5, 15, 15 ] },
110112
exporterPdfTableHeaderStyle : { bold : false, fontSize : 12, color : 'green' },
@@ -132,6 +134,7 @@ describe('ui.grid.exporter uiGridExporterService', function () {
132134
exporterCsvFilename: 'myfile.csv',
133135
exporterPdfFilename: 'myfile.pdf',
134136
exporterOlderExcelCompatibility: true,
137+
exporterIsExcelCompatible: true,
135138
exporterPdfDefaultStyle : { fontSize : 12 },
136139
exporterPdfTableStyle : { margin : [ 15, 5, 15, 15 ] },
137140
exporterPdfTableHeaderStyle : { bold : false, fontSize : 12, color : 'green' },

0 commit comments

Comments
 (0)