diff --git a/web/src/views/SubmissionPortal/HarmonizerView.vue b/web/src/views/SubmissionPortal/HarmonizerView.vue index 35ff7849..2aa4ddd0 100644 --- a/web/src/views/SubmissionPortal/HarmonizerView.vue +++ b/web/src/views/SubmissionPortal/HarmonizerView.vue @@ -128,9 +128,10 @@ export default defineComponent({ const submitDialog = ref(false); - const snackbar = ref(false); + const validationSuccessSnackbar = ref(false); const importErrorSnackbar = ref(false); const notImportedWorksheetNames = ref([] as string[]); + const emptySheetSnackbar = ref(false); watch(activeTemplate, () => { // WARNING: It's important to do the column settings update /before/ data. Otherwise, @@ -386,7 +387,25 @@ export default defineComponent({ } async function validate() { - const data = harmonizerApi.exportJson(); + const data = harmonizerApi.exportJson(); // Gets data from harmonizer API + + // Check if the spreadsheet is empty + const isEmpty = Object.keys(data).length === 0; + // Update invalid cells if empty + if (isEmpty) { + invalidCells.value = { + ...invalidCells.value, + [activeTemplateKey.value]: data, + }; + tabsValidated.value = { + ...tabsValidated.value, + [activeTemplateKey.value]: false, + }; + emptySheetSnackbar.value = true; + + return; + } + mergeSampleData(activeTemplate.value.sampleDataSlot, data); const result = await harmonizerApi.validate(); const valid = Object.keys(result).length === 0; @@ -407,7 +426,7 @@ export default defineComponent({ [activeTemplateKey.value]: valid, }; - snackbar.value = Object.values(tabsValidated.value).every((value) => value); + validationSuccessSnackbar.value = Object.values(tabsValidated.value).every((value) => value); } const canSubmit = computed(() => { @@ -633,10 +652,11 @@ export default defineComponent({ submissionStatus, status, submitDialog, - snackbar, + validationSuccessSnackbar, schemaLoading, importErrorSnackbar, notImportedWorksheetNames, + emptySheetSnackbar, isTestSubmission, /* methods */ doSubmit, @@ -677,7 +697,7 @@ export default defineComponent({ @@ -690,6 +710,13 @@ export default defineComponent({ > The following worksheet names were not recognized: {{ notImportedWorksheetNames.join(', ') }} + + The spreadsheet is empty. Please add data. +