From a1e3237e367a5d29b000c4b71219cf71f34e6382 Mon Sep 17 00:00:00 2001 From: hms243 Date: Fri, 2 Dec 2022 13:42:17 -0500 Subject: [PATCH 1/4] [BI-1615] - Add termType to Trait DB Table --- src/breeding-insight/model/Trait.ts | 1 + src/breeding-insight/model/TraitSelector.ts | 9 +++++---- src/breeding-insight/utils/TraitStringFormatters.ts | 6 ++++++ src/components/ontology/OntologyTable.vue | 9 +++++---- src/components/trait/TraitDetailPanel.vue | 5 +++-- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/breeding-insight/model/Trait.ts b/src/breeding-insight/model/Trait.ts index df7458791..28f8abbe0 100644 --- a/src/breeding-insight/model/Trait.ts +++ b/src/breeding-insight/model/Trait.ts @@ -88,6 +88,7 @@ export class Trait { } this.fullName = fullName; this.isDup = isDup; + this.termType = termType; } static assign(trait: Trait): Trait { diff --git a/src/breeding-insight/model/TraitSelector.ts b/src/breeding-insight/model/TraitSelector.ts index b7101ff50..098f6e29a 100644 --- a/src/breeding-insight/model/TraitSelector.ts +++ b/src/breeding-insight/model/TraitSelector.ts @@ -18,13 +18,14 @@ export enum TraitField { CREATED_BY_USER_ID = 'createdByUserId', CREATED_BY_USER_NAME = 'createdByUserName', UPDATED_BY_USER_ID = 'updatedByUserId', - UPDATED_BY_USER_NAME = 'updatedByUserName' + UPDATED_BY_USER_NAME = 'updatedByUserName', + TERM_TYPE = 'termType' } export enum TermType { - PHENOTYPE = 'Phenotype', - GERM_ATTRIBUTE = 'Germplasm Attribute', - GERM_PASSPORT = 'Germplasm Passport' + PHENOTYPE = 'PHENOTYPE', + GERM_ATTRIBUTE = 'GERM_ATTRIBUTE', + GERM_PASSPORT = 'GERM_PASSPORT' } export class TraitFilter { diff --git a/src/breeding-insight/utils/TraitStringFormatters.ts b/src/breeding-insight/utils/TraitStringFormatters.ts index 48a61c111..c221150d9 100644 --- a/src/breeding-insight/utils/TraitStringFormatters.ts +++ b/src/breeding-insight/utils/TraitStringFormatters.ts @@ -17,6 +17,7 @@ import {Scale, DataType} from "@/breeding-insight/model/Scale"; import {StringFormatters} from "@/breeding-insight/utils/StringFormatters"; +import {TermType} from "@/breeding-insight/model/TraitSelector"; export class TraitStringFormatters { @@ -32,4 +33,9 @@ export class TraitStringFormatters { return undefined; } + static getTermTypeString(termType: TermType): string | undefined { + return StringFormatters.toStartCase(termType); + //todo see if can be used to convert to more readable form + } + } \ No newline at end of file diff --git a/src/components/ontology/OntologyTable.vue b/src/components/ontology/OntologyTable.vue index 1fdb28552..20bc4c777 100644 --- a/src/components/ontology/OntologyTable.vue +++ b/src/components/ontology/OntologyTable.vue @@ -132,7 +132,7 @@ v-on:newSortColumn="$emit('newSortColumn', $event)" v-on:toggleSortOrder="$emit('toggleSortOrder')" > - {{ data.termType }} + {{ TraitStringFormatters.getTermTypeString(data.termType) }} { diff --git a/src/components/trait/TraitDetailPanel.vue b/src/components/trait/TraitDetailPanel.vue index 45699d565..6a16fc9db 100644 --- a/src/components/trait/TraitDetailPanel.vue +++ b/src/components/trait/TraitDetailPanel.vue @@ -37,7 +37,7 @@ Term Type
- {{data.termType}} + {{TraitStringFormatters.getTermTypeString(data.termType)}}
@@ -262,6 +262,7 @@ import { DataFormEventBusHandler } from '@/components/forms/DataFormEventBusHandler'; import { HelpCircleIcon } from 'vue-feather-icons' import ProgressBar from '@/components/forms/ProgressBar.vue' + import {TraitStringFormatters} from '@/breeding-insight/utils/TraitStringFormatters'; @Component({ components: {EditDataForm, SidePanel, BaseTraitForm, HelpCircleIcon, ProgressBar}, @@ -270,7 +271,7 @@ 'isSubscribed' ]) }, - data: () => ({DataType, MethodClass, Scale, Method, StringFormatters}), + data: () => ({DataType, MethodClass, Scale, Method, StringFormatters, TraitStringFormatters}), filters: { capitalize: function(value: string | undefined) : string | undefined { if (value === undefined) value = ''; From 3b9a58a9bd33400f86f8b288601b2103c80092e2 Mon Sep 17 00:00:00 2001 From: hms243 Date: Mon, 5 Dec 2022 15:36:54 -0500 Subject: [PATCH 2/4] [BI-1615] - Enable conversion to user readable format --- src/breeding-insight/model/Trait.ts | 6 ++-- src/breeding-insight/model/TraitSelector.ts | 6 ++-- src/breeding-insight/utils/EnumUtils.ts | 28 +++++++++++++++++++ .../utils/TraitStringFormatters.ts | 4 +-- src/components/ontology/OntologyTable.vue | 4 ++- src/components/trait/forms/BaseTraitForm.vue | 6 ++-- 6 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 src/breeding-insight/utils/EnumUtils.ts diff --git a/src/breeding-insight/model/Trait.ts b/src/breeding-insight/model/Trait.ts index 28f8abbe0..9b1ad4da1 100644 --- a/src/breeding-insight/model/Trait.ts +++ b/src/breeding-insight/model/Trait.ts @@ -36,7 +36,7 @@ export class Trait { tags?: string[] = []; fullName?: string; isDup?: boolean; - termType?: TermType; + termType: TermType = TermType.PHENOTYPE; //Phenotype is default constructor(id?: string, traitName?: string, @@ -88,7 +88,9 @@ export class Trait { } this.fullName = fullName; this.isDup = isDup; - this.termType = termType; + if (termType) { + this.termType = termType; + } } static assign(trait: Trait): Trait { diff --git a/src/breeding-insight/model/TraitSelector.ts b/src/breeding-insight/model/TraitSelector.ts index 098f6e29a..55e4db337 100644 --- a/src/breeding-insight/model/TraitSelector.ts +++ b/src/breeding-insight/model/TraitSelector.ts @@ -23,9 +23,9 @@ export enum TraitField { } export enum TermType { - PHENOTYPE = 'PHENOTYPE', - GERM_ATTRIBUTE = 'GERM_ATTRIBUTE', - GERM_PASSPORT = 'GERM_PASSPORT' + PHENOTYPE = 'Phenotype', + GERM_ATTRIBUTE = 'Germplasm Attribute', + GERM_PASSPORT = 'Germplasm Passport' } export class TraitFilter { diff --git a/src/breeding-insight/utils/EnumUtils.ts b/src/breeding-insight/utils/EnumUtils.ts new file mode 100644 index 000000000..58cb6082e --- /dev/null +++ b/src/breeding-insight/utils/EnumUtils.ts @@ -0,0 +1,28 @@ +/* + * See the NOTICE file distributed with this work for additional information + * regarding copyright ownership. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class EnumUtils { + static enumKeyToValue(enumKey: string, enumType: Object){ + let index = Object.keys(enumType).indexOf(enumKey); + return Object.values(enumType)[index]; + } + + static enumValueToKey(enumVal: string, enumType: Object){ + let index = Object.values(enumType).indexOf(enumVal); + return Object.keys(enumType)[index]; + } +} \ No newline at end of file diff --git a/src/breeding-insight/utils/TraitStringFormatters.ts b/src/breeding-insight/utils/TraitStringFormatters.ts index c221150d9..1ae08827a 100644 --- a/src/breeding-insight/utils/TraitStringFormatters.ts +++ b/src/breeding-insight/utils/TraitStringFormatters.ts @@ -18,6 +18,7 @@ import {Scale, DataType} from "@/breeding-insight/model/Scale"; import {StringFormatters} from "@/breeding-insight/utils/StringFormatters"; import {TermType} from "@/breeding-insight/model/TraitSelector"; +import {EnumUtils} from "@/breeding-insight/utils/EnumUtils"; export class TraitStringFormatters { @@ -34,8 +35,7 @@ export class TraitStringFormatters { } static getTermTypeString(termType: TermType): string | undefined { - return StringFormatters.toStartCase(termType); - //todo see if can be used to convert to more readable form + return EnumUtils.enumKeyToValue(termType,TermType); } } \ No newline at end of file diff --git a/src/components/ontology/OntologyTable.vue b/src/components/ontology/OntologyTable.vue index 20bc4c777..0ae2c148e 100644 --- a/src/components/ontology/OntologyTable.vue +++ b/src/components/ontology/OntologyTable.vue @@ -275,6 +275,7 @@ import {TermType, TraitField, TraitFilter} from "@/breeding-insight/model/TraitS import {OntologySort, OntologySortField} from "@/breeding-insight/model/Sort"; import {BackendPaginationController} from "@/breeding-insight/model/view_models/BackendPaginationController"; import {Category} from "@/breeding-insight/model/Category"; +import {EnumUtils} from "@/breeding-insight/utils/EnumUtils"; @Component({ mixins: [validationMixin], @@ -623,7 +624,6 @@ export default class OntologyTable extends Vue { } prepareScaleCategoriesForSave(inputTrait: Trait){ - //todo investigate means to convert term type let traitToSave = JSON.parse(JSON.stringify(inputTrait)); if ((traitToSave) && (traitToSave.scale) && (traitToSave.scale.dataType) && (Scale.dataTypeEquals(traitToSave.scale.dataType, DataType.Nominal)) && (traitToSave.scale.categories)) { traitToSave.scale.categories.forEach((category: Category) => { @@ -631,6 +631,8 @@ export default class OntologyTable extends Vue { category.label = undefined; }); } + //Translate TermType from user readable to backend storage format + traitToSave.termType = EnumUtils.enumValueToKey(inputTrait.termType, TermType); return traitToSave; } diff --git a/src/components/trait/forms/BaseTraitForm.vue b/src/components/trait/forms/BaseTraitForm.vue index d3b03d858..0e53729af 100644 --- a/src/components/trait/forms/BaseTraitForm.vue +++ b/src/components/trait/forms/BaseTraitForm.vue @@ -296,6 +296,7 @@ import {Category} from "@/breeding-insight/model/Category"; import TagField from "@/components/forms/TagField.vue"; import BaseFieldWrapper from "@/components/forms/BaseFieldWrapper.vue"; import {TermType} from "@/breeding-insight/model/TraitSelector"; +import {EnumUtils} from "@/breeding-insight/utils/EnumUtils"; @Component({ components: { @@ -379,8 +380,9 @@ export default class BaseTraitForm extends Vue { if ((this.trait.scale) && (this.trait.scale.categories)) { this.categories = this.trait.scale.categories; } - if (!this.trait.termType) { - this.trait.termType = TermType.PHENOTYPE; + //If termType pulled from backend (rather than the default for new terms), set to display friendly version + if (this.trait.termType != TermType.PHENOTYPE) { + this.trait.termType = EnumUtils.enumKeyToValue(this.trait.termType, TermType); } } From e711d9e9ab3cb9cac0d39f1e39ccbfc062aafbd6 Mon Sep 17 00:00:00 2001 From: hms243 Date: Wed, 7 Dec 2022 14:41:31 -0500 Subject: [PATCH 3/4] [BI-1613] - Add Term Type to Ontology Term Import --- src/components/trait/TraitsImportTable.vue | 14 ++++++++++++++ src/views/trait/TraitsImport.vue | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/components/trait/TraitsImportTable.vue b/src/components/trait/TraitsImportTable.vue index 3e99701cc..8ecf1b70e 100644 --- a/src/components/trait/TraitsImportTable.vue +++ b/src/components/trait/TraitsImportTable.vue @@ -54,6 +54,19 @@ {{ data.observationVariableName }}
+ + {{ TraitStringFormatters.getTermTypeString(data.termType) }} + Date: Fri, 9 Dec 2022 15:14:55 -0500 Subject: [PATCH 4/4] [BI-1613] - Adding ids for taf selectors --- src/components/trait/forms/BaseTraitForm.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/trait/forms/BaseTraitForm.vue b/src/components/trait/forms/BaseTraitForm.vue index 0e53729af..ab0c20738 100644 --- a/src/components/trait/forms/BaseTraitForm.vue +++ b/src/components/trait/forms/BaseTraitForm.vue @@ -20,6 +20,7 @@