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.
+