From 30ff2c96bca20c1641d9cbb96c34cce934e1afea Mon Sep 17 00:00:00 2001 From: Michael Schramm Date: Sun, 13 Mar 2022 23:30:46 +0100 Subject: [PATCH] fix field sort in excel submission export --- CHANGELOG.md | 2 ++ components/form/admin/export.submission.action.tsx | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ef38fc6..0b3a71c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,8 @@ Template for next version ### Fixed +- field sort in excel submission export (https://github.com/ohmyform/ohmyform/issues/163) + ### Security ## [1.0.1] - 2022-03-01 diff --git a/components/form/admin/export.submission.action.tsx b/components/form/admin/export.submission.action.tsx index 1c3b7478..4c867f43 100644 --- a/components/form/admin/export.submission.action.tsx +++ b/components/form/admin/export.submission.action.tsx @@ -36,6 +36,9 @@ export const ExportSubmissionAction: React.FC = (props) => { workbook.created = new Date() workbook.modified = new Date() + const orderedFields = form.data.form.fields + .sort((a, b) => (a.idx ?? 0) - (b.idx ?? 0)) + const sheet = workbook.addWorksheet('Submissions') sheet.getRow(1).values = [ 'Submission ID', @@ -45,7 +48,7 @@ export const ExportSubmissionAction: React.FC = (props) => { 'City', 'User Agent', 'Device', - ...form.data.form.fields.map((field) => `${field.title} (${field.type})`), + ...orderedFields.map((field) => `${field.title} (${field.type})`), ] const firstPage = await getSubmissions({ @@ -65,7 +68,9 @@ export const ExportSubmissionAction: React.FC = (props) => { data.device.name, ] - data.fields.forEach((field) => { + orderedFields.forEach((formField) => { + const field = data.fields.find(field => field.id === formField.id) + try { fieldTypes[field.type]?.stringifyValue(field.value)