Fix CSV export in forms

pull/1/head
yflory 3 years ago
parent 87d04ed68a
commit c7ac75d137

@ -5,7 +5,7 @@ define([
var Export = {}; var Export = {};
var escapeCSV = function (v) { var escapeCSV = function (v) {
if (!/("|,|\n)/.test(v)) { if (!/("|,|\n|;)/.test(v)) {
return v || ''; return v || '';
} }
var value = ''; var value = '';
@ -40,7 +40,11 @@ define([
csv += escapeCSV(time); csv += escapeCSV(time);
csv += ',' + escapeCSV(user.name || Messages.anonymous); csv += ',' + escapeCSV(user.name || Messages.anonymous);
Object.keys(form).forEach(function (key) { Object.keys(form).forEach(function (key) {
if (msg[key] && typeof(msg[key]) !== "string") { console.warn(key, msg[key]); } var type = form[key].type;
if (TYPES[type] && TYPES[type].exportCSV) {
csv += ',' + escapeCSV(TYPES[type].exportCSV(msg[key]));
return;
}
csv += ',' + escapeCSV(String(msg[key] || '')); csv += ',' + escapeCSV(String(msg[key] || ''));
}); });
}); });

@ -1646,6 +1646,15 @@ define([
return h('div.cp-form-type-poll', lines); return h('div.cp-form-type-poll', lines);
}, },
exportCSV: function (answer) {
if (!answer || !answer.values) { return ''; }
var str = '';
Object.keys(answer.values).sort().forEach(function (k, i) {
if (i !== 0) { str += ';'; }
str += k.replace(';', '').replace(':', '') + ':' + answer.values[k];
});
return str;
},
icon: h('i.cptools.cptools-form-poll') icon: h('i.cptools.cptools-form-poll')
}, },
}; };

Loading…
Cancel
Save