diff --git a/src/breeding-insight/model/Observation.ts b/src/breeding-insight/model/Observation.ts index 06fbbf972..3611b5963 100644 --- a/src/breeding-insight/model/Observation.ts +++ b/src/breeding-insight/model/Observation.ts @@ -30,6 +30,7 @@ export class Observation { season?: Season; level?: string; value?: any; + observationTimeStamp?: string; constructor(id?: string, studyId?: string, diff --git a/src/breeding-insight/model/import/ImportPreview.ts b/src/breeding-insight/model/import/ImportPreview.ts index 6c8de2787..519fb8a2e 100644 --- a/src/breeding-insight/model/import/ImportPreview.ts +++ b/src/breeding-insight/model/import/ImportPreview.ts @@ -20,9 +20,12 @@ import {ImportPreviewStatistics} from "@/breeding-insight/model/import/ImportPre export class ImportPreview { statistics?: {[key: string]: ImportPreviewStatistics}; rows?: any[]; + dynamicColumnNames?: string[]; - constructor({statistics, rows}: ImportPreview) { + constructor({statistics, rows, dynamicColumnNames}: ImportPreview) { this.statistics = statistics; this.rows = rows; + this.dynamicColumnNames = dynamicColumnNames; + } } \ No newline at end of file diff --git a/src/views/import/ImportExperiment.vue b/src/views/import/ImportExperiment.vue index 5b3fb57f7..d1fef65e2 100644 --- a/src/views/import/ImportExperiment.vue +++ b/src/views/import/ImportExperiment.vue @@ -78,6 +78,7 @@ v-bind:loading="false" v-bind:pagination="previewData.pagination" v-on:show-error-notification="$emit('show-error-notification', $event)" + scrollable > {{ getTreatment(props.row.data.observationUnit) }} - + - {{ props.row.data.observations.filter(observation => observation.brAPIObject.observationVariableName === variable)[0].brAPIObject.value }} + {{ retrieveDynamicColVal(props.row.data.observations, variable) }} @@ -231,21 +232,22 @@ export default class ImportExperiment extends ProgramsBase { importFinished(){} - previewDataLoaded(data: any[]) { - if (data.length > 0) { - const firstRow = data[0]; - if (firstRow.observations && firstRow.observations.length > 0) { - this.phenotypeColumns = firstRow.observations.map((observation: any) => - { - return observation.brAPIObject.observationVariableName; - }); - } - } + previewDataLoaded(dynamicColumns: String[]) { + this.phenotypeColumns = dynamicColumns; } isExisting(rows: any[]) { return rows.length && rows[0].trial.state === ImportObjectState.EXISTING; } + retrieveDynamicColVal(importReturnObject: any, column: string){ + if (column.startsWith('TS:')) { + //Is timestamp + return importReturnObject.filter((observation: { brAPIObject: { observationVariableName: string; }; }) => observation.brAPIObject.observationVariableName === column.replace(/TS:\s*/,""))[0].brAPIObject.observationTimeStamp; + } else { + //Is phenotype observation + return importReturnObject.filter((observation: { brAPIObject: { observationVariableName: string; }; }) => observation.brAPIObject.observationVariableName === column)[0].brAPIObject.value + } + } } \ No newline at end of file diff --git a/src/views/import/ImportTemplate.vue b/src/views/import/ImportTemplate.vue index 8b90e753b..bf1749154 100644 --- a/src/views/import/ImportTemplate.vue +++ b/src/views/import/ImportTemplate.vue @@ -192,6 +192,7 @@ export default class ImportTemplate extends ProgramsBase { private previewData: any[] = []; private previewTotalRows: number = 0; private newObjectCounts: any = []; + private dynamicColumns: string[] | undefined = []; private file : File | null = null; private import_errors: ValidationError | String | null = null; @@ -493,7 +494,8 @@ export default class ImportTemplate extends ProgramsBase { this.previewTotalRows = previewResponse.preview.rows.length; this.previewData = previewResponse.preview.rows as any[]; this.newObjectCounts = previewResponse.preview.statistics; - this.$emit('preview-data-loaded', this.previewData); + this.dynamicColumns = previewResponse.preview.dynamicColumnNames; + this.$emit('preview-data-loaded', this.dynamicColumns); this.importService.send(ImportEvent.IMPORT_SUCCESS); // TODO: Temp pagination this.pagination.totalCount = previewResponse.preview.rows.length;
{{ retrieveDynamicColVal(props.row.data.observations, variable) }}