From e6e307f575e3025114459e19183d9c641beae348 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 17 Sep 2019 00:09:44 +0200 Subject: [PATCH] Use locale format to export CSV from print button issue8635 review252101002 --- src/tab.js | 3 +++ src/window.js | 50 ++++++++++++++++++++++++++++---------------------- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/tab.js b/src/tab.js index a6bba3da71..81599e587d 100644 --- a/src/tab.js +++ b/src/tab.js @@ -1299,6 +1299,9 @@ 'fields': fields, 'data': data, }; + unparse_obj.data = data.map(function(row) { + return Sao.Window.Export.format_row(row); + }); var delimiter = ','; var encoding = 'utf-8'; if (navigator.platform && diff --git a/src/window.js b/src/window.js index 419ed198b4..5a98af73b8 100644 --- a/src/window.js +++ b/src/window.js @@ -1776,27 +1776,8 @@ var encoding = this.el_csv_encoding.val(); var locale_format = this.el_csv_locale.prop('checked'); var unparse_obj = {}; - unparse_obj.data = []; - data.forEach(function(line) { - var row = []; - line.forEach(function(val) { - if (locale_format) { - if (val.isDateTime) { - val = val.format( - Sao.common.date_format() + ' ' + - Sao.common.moment_format('%X')); - } else if (val.isDate) { - val = val.format(Sao.common.date_format()); - } else if (!isNaN(Number(val))) { - val = val.toLocaleString( - Sao.i18n.BC47(Sao.i18n.getlang())); - } - } else if (typeof(val) == 'boolean') { - val += 0; - } - row.push(val); - }); - unparse_obj.data.push(row); + unparse_obj.data = data.map(function(row) { + return Sao.Window.Export.format_row(row, locale_format); }); if (this.el_add_field_names.is(':checked')) { unparse_obj.fields = fields; @@ -1810,7 +1791,32 @@ return Sao.common.message.run( Sao.i18n.ngettext('%1 record saved', '%1 records saved', data.length)); - } + }, }); + Sao.Window.Export.format_row = function(line, locale_format) { + if (locale_format === undefined) { + locale_format = true; + } + var row = []; + line.forEach(function(val) { + if (locale_format) { + if (val.isDateTime) { + val = val.format( + Sao.common.date_format() + ' ' + + Sao.common.moment_format('%X')); + } else if (val.isDate) { + val = val.format(Sao.common.date_format()); + } else if (!isNaN(Number(val))) { + val = val.toLocaleString( + Sao.i18n.BC47(Sao.i18n.getlang())); + } + } else if (typeof(val) == 'boolean') { + val += 0; + } + row.push(val); + }); + return row; + }; + }());