Skip to content

Commit 4330879

Browse files
authored
Merge pull request #1089 from david-roper/improve-error-desc
Improve error desc and add help button to upload page
2 parents d207b24 + f839ed5 commit 4330879

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

apps/web/src/features/upload/pages/UploadPage.tsx

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { Button, FileDropzone, Heading, Spinner } from '@douglasneuroinformatics
44
import { useDownload, useTranslation } from '@douglasneuroinformatics/libui/hooks';
55
import { useNotificationsStore } from '@douglasneuroinformatics/libui/hooks';
66
import type { AnyUnilingualFormInstrument } from '@opendatacapture/runtime-core';
7-
import { DownloadIcon } from 'lucide-react';
7+
import { BadgeHelpIcon, DownloadIcon } from 'lucide-react';
88
import { useParams } from 'react-router-dom';
99

1010
import { PageHeader } from '@/components/PageHeader';
@@ -121,13 +121,29 @@ export const UploadPage = () => {
121121
<Button disabled={!(file && instrument)} variant={'primary'} onClick={handleInstrumentCSV}>
122122
{t('core.submit')}
123123
</Button>
124-
<Button className="gap-1.5" disabled={!instrument} variant={'primary'} onClick={handleTemplateDownload}>
125-
<DownloadIcon />
126-
{t({
127-
en: 'Download Template',
128-
fr: 'Télécharger le modèle'
129-
})}
130-
</Button>
124+
<div className="flex justify-between space-x-1">
125+
<Button className="gap-1" disabled={!instrument} variant={'primary'} onClick={handleTemplateDownload}>
126+
<DownloadIcon />
127+
{t({
128+
en: 'Download Template',
129+
fr: 'Télécharger le modèle'
130+
})}
131+
</Button>
132+
<Button
133+
className="gap-1"
134+
disabled={!instrument}
135+
variant={'primary'}
136+
onClick={() => {
137+
window.open('https://opendatacapture.org/en/docs/guides/how-to-upload-data/');
138+
}}
139+
>
140+
<BadgeHelpIcon />
141+
{t({
142+
en: 'Help',
143+
fr: 'Aide'
144+
})}
145+
</Button>
146+
</div>
131147
</div>
132148
</div>
133149
) : (

apps/web/src/features/upload/utils.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ export async function processInstrumentCSV(
534534
if (!headers?.length) {
535535
return resolve({ message: 'headers is undefined or empty array', success: false });
536536
}
537-
537+
let rowNumber = 1;
538538
for (const elements of dataLines) {
539539
const jsonLine: { [key: string]: unknown } = {};
540540
for (let j = 0; j < headers.length; j++) {
@@ -577,7 +577,10 @@ export async function processInstrumentCSV(
577577
interpreterResult = interpretZodValue(rawValue, typeNameResult.typeName, typeNameResult.isOptional);
578578
}
579579
if (!interpreterResult.success) {
580-
return resolve({ message: `${interpreterResult.message} at column name: '${key}'`, success: false });
580+
return resolve({
581+
message: `${interpreterResult.message} at column name: '${key}' and row number ${rowNumber}`,
582+
success: false
583+
});
581584
}
582585
jsonLine[headers[j]!] = interpreterResult.value;
583586
}
@@ -591,6 +594,7 @@ export async function processInstrumentCSV(
591594
return resolve({ message: zodIssues.join(), success: false });
592595
}
593596
result.push(zodCheck.data);
597+
rowNumber++;
594598
}
595599
resolve({ success: true, value: result });
596600
};

0 commit comments

Comments
 (0)