@@ -252,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},
@@ -260,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 = '';
diff --git a/src/components/trait/forms/BaseTraitForm.vue b/src/components/trait/forms/BaseTraitForm.vue
index 6da6d84ec..0e53729af 100644
--- a/src/components/trait/forms/BaseTraitForm.vue
+++ b/src/components/trait/forms/BaseTraitForm.vue
@@ -14,6 +14,21 @@
+
+
+ Term Type
+
+
+
+
+
Name
@@ -265,22 +280,23 @@ import BasicInputField from "@/components/forms/BasicInputField.vue";
import BasicSelectField from "@/components/forms/BasicSelectField.vue";
import {Trait} from "@/breeding-insight/model/Trait";
import {Method, MethodClass} from "@/breeding-insight/model/Method";
-import { Scale, DataType } from '@/breeding-insight/model/Scale';
-import { ProgramObservationLevel } from '@/breeding-insight/model/ProgramObservationLevel';
+import {DataType, Scale} from '@/breeding-insight/model/Scale';
+import {ProgramObservationLevel} from '@/breeding-insight/model/ProgramObservationLevel';
import OrdinalTraitForm from "@/components/trait/forms/CategoryTraitForm.vue";
+import CategoryTraitForm from "@/components/trait/forms/CategoryTraitForm.vue";
import TextTraitForm from "@/components/trait/forms/TextTraitForm.vue";
import DateTraitForm from "@/components/trait/forms/DateTraitForm.vue";
import DurationTraitForm from "@/components/trait/forms/DurationTraitForm.vue";
import NumericalTraitForm from "@/components/trait/forms/NumericalTraitForm.vue";
-import CategoryTraitForm from "@/components/trait/forms/CategoryTraitForm.vue";
import {TraitError} from "@/breeding-insight/model/errors/TraitError";
import {ValidationError} from "@/breeding-insight/model/errors/ValidationError";
import AutoCompleteField from "@/components/forms/AutoCompleteField.vue";
-import { StringFormatters } from '@/breeding-insight/utils/StringFormatters';
+import {StringFormatters} from '@/breeding-insight/utils/StringFormatters';
import {Category} from "@/breeding-insight/model/Category";
-import {integer} from "vuelidate/lib/validators";
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: {
@@ -323,6 +339,8 @@ export default class BaseTraitForm extends Vue {
@Prop()
tags?: string[];
+ private termTypes: TermType[] = Object.values(TermType);
+
private methodHistory: {[key: string]: Method} = {};
private scaleHistory: {[key: string]: Scale} = {};
private lastCategoryType: string = '';
@@ -362,6 +380,10 @@ export default class BaseTraitForm extends Vue {
if ((this.trait.scale) && (this.trait.scale.categories)) {
this.categories = this.trait.scale.categories;
}
+ //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);
+ }
}
@Watch('trait', {deep: true})
@@ -529,6 +551,10 @@ export default class BaseTraitForm extends Vue {
}
}
+ setTermType(value: TermType) {
+ this.trait.termType = value;
+ }
+
setFullName(value: string) {
this.trait.fullName = value;
this.trait.synonyms = this.trait.synonyms || [];