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..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.getProgramDatasetNames(); } 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,24 +337,24 @@ export default class ExperimentDetails extends ProgramsBase { // return this.experiment.additionalInfo.environmentsCount; // } - //Get experiment-scoped suggested names for sub-entity modal autocomplete - @Watch('$route') - async getProgramDatasetNames() { + // 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); - 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