From 7ad93a044c72b87b19782ac5601ffa0ab683cac9 Mon Sep 17 00:00:00 2001 From: Cristina Stone Pedraza Date: Wed, 19 Mar 2025 11:29:37 -0700 Subject: [PATCH 1/3] Add empty sheet check to existing validation function --- .../views/SubmissionPortal/HarmonizerView.vue | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/web/src/views/SubmissionPortal/HarmonizerView.vue b/web/src/views/SubmissionPortal/HarmonizerView.vue index 1df1b6d56..1b7c5df3e 100644 --- a/web/src/views/SubmissionPortal/HarmonizerView.vue +++ b/web/src/views/SubmissionPortal/HarmonizerView.vue @@ -258,7 +258,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, + }; + snackbar.value = Object.values(tabsValidated.value).every((value) => value); + // maybe return message here? + return; + } + mergeSampleData(activeTemplate.value.sampleDataSlot, data); const result = await harmonizerApi.validate(); const valid = Object.keys(result).length === 0; From 300070f06a62b70ada3d2611e430d6cd805d573a Mon Sep 17 00:00:00 2001 From: Cristina Stone Pedraza Date: Tue, 1 Apr 2025 11:53:36 -0700 Subject: [PATCH 2/3] Add snackbar values/references --- web/src/views/SubmissionPortal/HarmonizerView.vue | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/web/src/views/SubmissionPortal/HarmonizerView.vue b/web/src/views/SubmissionPortal/HarmonizerView.vue index 1b7c5df3e..5621811dc 100644 --- a/web/src/views/SubmissionPortal/HarmonizerView.vue +++ b/web/src/views/SubmissionPortal/HarmonizerView.vue @@ -136,6 +136,7 @@ export default defineComponent({ const snackbar = 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, @@ -259,7 +260,7 @@ export default defineComponent({ async function validate() { 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 @@ -273,7 +274,8 @@ export default defineComponent({ [activeTemplateKey.value]: false, }; snackbar.value = Object.values(tabsValidated.value).every((value) => value); - // maybe return message here? + emptySheetSnackbar.value = true; + return; } @@ -578,6 +580,7 @@ export default defineComponent({ schemaLoading, importErrorSnackbar, notImportedWorksheetNames, + emptySheetSnackbar, isTestSubmission, /* methods */ doSubmit, @@ -631,6 +634,13 @@ export default defineComponent({ > The following worksheet names were not recognized: {{ notImportedWorksheetNames.join(', ') }} + + The spreadsheet is empty. Please add data. + Date: Fri, 15 Aug 2025 12:34:59 -0700 Subject: [PATCH 3/3] Remove extra snackbar.value computation and change name from 'snackbar' to 'validationSuccessSnackbar' --- web/src/views/SubmissionPortal/HarmonizerView.vue | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/web/src/views/SubmissionPortal/HarmonizerView.vue b/web/src/views/SubmissionPortal/HarmonizerView.vue index 2cde215d3..2aa4ddd01 100644 --- a/web/src/views/SubmissionPortal/HarmonizerView.vue +++ b/web/src/views/SubmissionPortal/HarmonizerView.vue @@ -128,7 +128,7 @@ 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); @@ -401,7 +401,6 @@ export default defineComponent({ ...tabsValidated.value, [activeTemplateKey.value]: false, }; - snackbar.value = Object.values(tabsValidated.value).every((value) => value); emptySheetSnackbar.value = true; return; @@ -427,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(() => { @@ -653,7 +652,7 @@ export default defineComponent({ submissionStatus, status, submitDialog, - snackbar, + validationSuccessSnackbar, schemaLoading, importErrorSnackbar, notImportedWorksheetNames, @@ -698,7 +697,7 @@ export default defineComponent({