From bce2b8ee157e3696394915a20aa2608a85cee72d Mon Sep 17 00:00:00 2001 From: nickpalladino Date: Wed, 22 Apr 2026 13:36:20 -0400 Subject: [PATCH 1/2] Changed for proper bi-api response format and simplified error handling --- src/breeding-insight/dao/ExperimentDAO.ts | 4 ++-- .../ExperimentDetails.vue | 20 +++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/breeding-insight/dao/ExperimentDAO.ts b/src/breeding-insight/dao/ExperimentDAO.ts index 6eb40e44..3c9120d3 100644 --- a/src/breeding-insight/dao/ExperimentDAO.ts +++ b/src/breeding-insight/dao/ExperimentDAO.ts @@ -154,8 +154,8 @@ export class ExperimentDAO { config.experimentId = experimentId; try { const res = await api.call(config) as Response; - const { result } = res.data; - return ResultGenerator.success(result); + const biResponse = new BiResponse(res.data); + return ResultGenerator.success(biResponse.result.data); } catch (error) { return ResultGenerator.err(error); } diff --git a/src/views/experiments-and-observations/ExperimentDetails.vue b/src/views/experiments-and-observations/ExperimentDetails.vue index fdbbbd88..3633a2fa 100644 --- a/src/views/experiments-and-observations/ExperimentDetails.vue +++ b/src/views/experiments-and-observations/ExperimentDetails.vue @@ -232,7 +232,7 @@ export default class ExperimentDetails extends ProgramsBase { mounted() { this.getExperiment(); this.getDatasetMetadata(); - this.getProgramDatasetNames(); + this.getRecommendedSubEntityDatasetNames(); } private importFile() { @@ -331,22 +331,22 @@ export default class ExperimentDetails extends ProgramsBase { //Get experiment-scoped suggested names for sub-entity modal autocomplete @Watch('$route') - async getProgramDatasetNames() { + async getRecommendedSubEntityDatasetNames(): Promise { try { const response: Result = await ExperimentService.getRecommendedSubEntityDatasetNames(this.activeProgram!.id!, this.experimentUUID); - if(response.isErr()) { - this.$emit('show-error-notification', 'Unable to retrieve program dataset names'); - } - - if (response.isSuccess()) { - this.programDatasetNames = response.value.map(value => StringFormatters.toStartCase(value)); + if (response.isErr()) { + this.showProgramDatasetNamesError(); return; } + + this.programDatasetNames = response.value.map(value => StringFormatters.toStartCase(value)); } catch (error) { - this.$emit('show-error-notification', 'Unable to retrieve program dataset names'); + this.showProgramDatasetNamesError(); } + } + + private showProgramDatasetNamesError(): void { this.$emit('show-error-notification', 'Unable to retrieve program dataset names'); - return; } //Retrieves entity names in experiment From 453a8fc8f27c1b2d34bd2006f643cd4fff7254d1 Mon Sep 17 00:00:00 2001 From: nickpalladino Date: Wed, 22 Apr 2026 15:04:12 -0400 Subject: [PATCH 2/2] Fix stale subentity modal data issues --- .../ExperimentDetails.vue | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/views/experiments-and-observations/ExperimentDetails.vue b/src/views/experiments-and-observations/ExperimentDetails.vue index 3633a2fa..b65a8f37 100644 --- a/src/views/experiments-and-observations/ExperimentDetails.vue +++ b/src/views/experiments-and-observations/ExperimentDetails.vue @@ -232,7 +232,6 @@ export default class ExperimentDetails extends ProgramsBase { mounted() { this.getExperiment(); this.getDatasetMetadata(); - this.getRecommendedSubEntityDatasetNames(); } private importFile() { @@ -277,10 +276,19 @@ export default class ExperimentDetails extends ProgramsBase { return true; } - private openSubEntityModal() { + private async openSubEntityModal(): Promise { + await this.refreshSubEntityModalData(); this.subEntityModalActive = true; } + // get datasets and recommended names so we have latest data for validation and sub entity autocomplete + private async refreshSubEntityModalData(): Promise { + await Promise.allSettled([ + this.getDatasetMetadata(), + this.getRecommendedSubEntityDatasetNames() + ]); + } + get experimentUUID(): string { return this.$route.params.experimentId; } @@ -329,8 +337,8 @@ export default class ExperimentDetails extends ProgramsBase { // return this.experiment.additionalInfo.environmentsCount; // } - //Get experiment-scoped suggested names for sub-entity modal autocomplete - @Watch('$route') + // Get experiment-scoped suggested names for sub-entity modal autocomplete. + // This is only needed when the modal is opened. async getRecommendedSubEntityDatasetNames(): Promise { try { const response: Result = await ExperimentService.getRecommendedSubEntityDatasetNames(this.activeProgram!.id!, this.experimentUUID);