From 4f23dc53c353cc030a10325f29295ebafb640806 Mon Sep 17 00:00:00 2001 From: yflory Date: Thu, 27 Oct 2022 15:14:49 +0200 Subject: [PATCH] Fix form JSON export with multiple responses per user --- www/form/export.js | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/www/form/export.js b/www/form/export.js index d09e97969..928cd9c8c 100644 --- a/www/form/export.js +++ b/www/form/export.js @@ -46,28 +46,31 @@ define([ }); Object.keys(answers || {}).forEach(function (key) { - var obj = answers[key]; - var time = new Date(obj.time).toISOString(); - var msg = obj.msg || {}; - var user = msg._userdata || {}; - var data = { - '_time': time, - '_name': user.name || Messages.anonymous - }; + var userObj = answers[key]; + Object.keys(userObj).forEach(function (k) { + var obj = userObj[k]; + var time = new Date(obj.time).toISOString(); + var msg = obj.msg || {}; + var user = msg._userdata || {}; + var data = { + '_time': time, + '_name': user.name || Messages.anonymous + }; - var i = 1; - order.forEach(function (key) { - if (!form[key]) { return; } - var type = form[key].type; - if (!TYPES[type]) { return; } // Ignore static types - var id = `q${i++}`; - if (TYPES[type].exportCSV) { - data[id] = TYPES[type].exportCSV(msg[key], form[key]); - return; - } - data[id] = msg[key]; + var i = 1; + order.forEach(function (key) { + if (!form[key]) { return; } + var type = form[key].type; + if (!TYPES[type]) { return; } // Ignore static types + var id = `q${i++}`; + if (TYPES[type].exportCSV) { + data[id] = TYPES[type].exportCSV(msg[key], form[key]); + return; + } + data[id] = msg[key]; + }); + r.push(data); }); - r.push(data); }); return JSON.stringify(res, 0, 2);