diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/entities/xmlmodels/dmpprofiledefinition/Field.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/entities/xmlmodels/dmpprofiledefinition/Field.java index c2f0f2dcd..0790e014e 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/entities/xmlmodels/dmpprofiledefinition/Field.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/entities/xmlmodels/dmpprofiledefinition/Field.java @@ -14,22 +14,17 @@ import java.util.UUID; public class Field implements XmlSerializable { private UUID id; - private DMPProfileType type; - private DMPProfileFieldDataType dataType; - private Boolean required; - private String label; - private Object value; + private DmpProfileExternalAutoComplete externalAutocomplete; public UUID getId() { if (this.id == null) this.id = UUID.randomUUID(); return id; } - public void setId(UUID id) { this.id = id; } @@ -37,7 +32,6 @@ public class Field implements XmlSerializable { public Integer getType() { return type.getValue(); } - public void setType(DMPProfileType type) { this.type = type; } @@ -45,7 +39,6 @@ public class Field implements XmlSerializable { public Integer getDataType() { return dataType.getValue(); } - public void setDataType(DMPProfileFieldDataType dataType) { this.dataType = dataType; } @@ -53,7 +46,6 @@ public class Field implements XmlSerializable { public Boolean getRequired() { return required; } - public void setRequired(Boolean required) { this.required = required; } @@ -61,7 +53,6 @@ public class Field implements XmlSerializable { public String getLabel() { return label; } - public void setLabel(String label) { this.label = label; } @@ -69,12 +60,18 @@ public class Field implements XmlSerializable { public Object getValue() { return value; } - public void setValue(Object value) { this.value = value; } - @Override + public DmpProfileExternalAutoComplete getExternalAutocomplete() { + return externalAutocomplete; + } + public void setExternalAutocomplete(DmpProfileExternalAutoComplete externalAutocomplete) { + this.externalAutocomplete = externalAutocomplete; + } + + @Override public Element toXml(Document doc) { Element rootElement = doc.createElement("field"); rootElement.setAttribute("id", this.getId().toString()); @@ -82,6 +79,9 @@ public class Field implements XmlSerializable { rootElement.setAttribute("datatype", "" + this.dataType.getValue().toString()); rootElement.setAttribute("required", this.required.toString()); rootElement.setAttribute("label", this.label); + if (this.externalAutocomplete != null) + rootElement.appendChild(this.externalAutocomplete.toXml(doc)); + return rootElement; } @@ -92,6 +92,10 @@ public class Field implements XmlSerializable { this.dataType = DMPProfileFieldDataType.fromInteger(Integer.parseInt(item.getAttribute("datatype"))); this.required = Boolean.valueOf(item.getAttribute("required")); this.type = DMPProfileType.fromInteger(Integer.parseInt(item.getAttribute("type"))); + Element optionElement = (Element) item.getElementsByTagName("externalAutocomplete").item(0); + if (optionElement != null) { + this.externalAutocomplete = new DmpProfileExternalAutoComplete().fromXml(optionElement); + } return this; } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/entities/xmlmodels/dmpprofiledefinition/types/DMPProfileFieldDataType.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/entities/xmlmodels/dmpprofiledefinition/types/DMPProfileFieldDataType.java index 3e1f8bf2a..bf692f4ce 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/entities/xmlmodels/dmpprofiledefinition/types/DMPProfileFieldDataType.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/entities/xmlmodels/dmpprofiledefinition/types/DMPProfileFieldDataType.java @@ -4,7 +4,7 @@ package eu.eudat.models.data.entities.xmlmodels.dmpprofiledefinition.types; * Created by ikalyvas on 3/21/2018. */ public enum DMPProfileFieldDataType { - DATE(0), NUMBER(1), TEXT(2); + DATE(0), NUMBER(1), TEXT(2), EXTERNAL_AUTOCOMPLETE(3); private Integer value; @@ -24,6 +24,8 @@ public enum DMPProfileFieldDataType { return NUMBER; case 2: return TEXT; + case 3: + return EXTERNAL_AUTOCOMPLETE; default: throw new RuntimeException("Unsupported DMPProfileFieldData Type"); } diff --git a/dmp-frontend/src/app/core/common/enum/dmp-profile-field-type.ts b/dmp-frontend/src/app/core/common/enum/dmp-profile-field-type.ts index e8c4a27d2..c3c780501 100644 --- a/dmp-frontend/src/app/core/common/enum/dmp-profile-field-type.ts +++ b/dmp-frontend/src/app/core/common/enum/dmp-profile-field-type.ts @@ -1,5 +1,6 @@ export enum DmpProfileFieldDataType { Date = 0, Number = 1, - Text = 2 -} \ No newline at end of file + Text = 2, + ExternalAutocomplete = 3 +} diff --git a/dmp-frontend/src/app/core/model/dmp-profile/dmp-profile-external-autocomplete.ts b/dmp-frontend/src/app/core/model/dmp-profile/dmp-profile-external-autocomplete.ts new file mode 100644 index 000000000..cd7ff2964 --- /dev/null +++ b/dmp-frontend/src/app/core/model/dmp-profile/dmp-profile-external-autocomplete.ts @@ -0,0 +1,8 @@ +export interface DmpProfileExternalAutoCompleteField { + placeholder: string; + url: string; + optionsRoot: string; + multiAutoComplete: boolean; + label: string; + value: string; +} diff --git a/dmp-frontend/src/app/core/model/dmp-profile/dmp-profile-field.ts b/dmp-frontend/src/app/core/model/dmp-profile/dmp-profile-field.ts index dd9e84eb0..1e9a70317 100644 --- a/dmp-frontend/src/app/core/model/dmp-profile/dmp-profile-field.ts +++ b/dmp-frontend/src/app/core/model/dmp-profile/dmp-profile-field.ts @@ -1,5 +1,6 @@ import { DmpProfileFieldDataType } from '../../common/enum/dmp-profile-field-type'; import { DmpProfileType } from '../../common/enum/dmp-profile-type'; +import { DmpProfileExternalAutoCompleteFieldDataEditorModel } from '../../../ui/admin/dmp-profile/editor/external-autocomplete/dmp-profile-external-autocomplete-field-editor.model'; export interface DmpProfileField { id: string; @@ -8,4 +9,5 @@ export interface DmpProfileField { required: boolean; label: string; value: any; + externalAutocomplete?: DmpProfileExternalAutoCompleteFieldDataEditorModel; } diff --git a/dmp-frontend/src/app/core/query/dmp/dmp-profile-external-autocomplete-criteria.ts b/dmp-frontend/src/app/core/query/dmp/dmp-profile-external-autocomplete-criteria.ts new file mode 100644 index 000000000..16a4ba5b8 --- /dev/null +++ b/dmp-frontend/src/app/core/query/dmp/dmp-profile-external-autocomplete-criteria.ts @@ -0,0 +1,6 @@ +import { BaseCriteria } from "../base-criteria"; + +export class DmpProfileExternalAutocompleteCriteria extends BaseCriteria { + public profileID: String; + public fieldID: String; +} diff --git a/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts b/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts index 970af10d4..7490a1331 100644 --- a/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts +++ b/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts @@ -34,6 +34,7 @@ export class EnumUtils { case DmpProfileFieldDataType.Date: return this.language.instant('TYPES.DMP-PROFILE-FIELD.DATA-TYPE.DATE'); case DmpProfileFieldDataType.Number: return this.language.instant('TYPES.DMP-PROFILE-FIELD.DATA-TYPE.NUMBER'); case DmpProfileFieldDataType.Text: return this.language.instant('TYPES.DMP-PROFILE-FIELD.DATA-TYPE.TEXT'); + case DmpProfileFieldDataType.ExternalAutocomplete: return this.language.instant('TYPES.DMP-PROFILE-FIELD.DATA-TYPE.EXTERNAL-AUTOCOMPLETE'); } } diff --git a/dmp-frontend/src/app/ui/admin/dmp-profile/dmp-profile.module.ts b/dmp-frontend/src/app/ui/admin/dmp-profile/dmp-profile.module.ts index bed68324e..373432037 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-profile/dmp-profile.module.ts +++ b/dmp-frontend/src/app/ui/admin/dmp-profile/dmp-profile.module.ts @@ -8,6 +8,7 @@ import { DmpProfileEditorComponent } from "./editor/dmp-profile-editor.component import { DmpProfileCriteriaComponent } from "./listing/criteria/dmp-profile-criteria.component"; import { DmpProfileListingComponent } from "./listing/dmp-profile-listing.component"; import { DialodConfirmationUploadDmpProfiles } from "./listing/criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component"; +import { DmpProfileExternalAutocompleteFieldEditorComponent } from "./editor/external-autocomplete/dmp-profile-external-autocomplete-field-editor.component"; @NgModule({ imports: [ @@ -21,10 +22,11 @@ import { DialodConfirmationUploadDmpProfiles } from "./listing/criteria/dialog-c DmpProfileEditorComponent, DmpProfileListingComponent, DmpProfileCriteriaComponent, - DialodConfirmationUploadDmpProfiles + DialodConfirmationUploadDmpProfiles, + DmpProfileExternalAutocompleteFieldEditorComponent ], entryComponents: [ DialodConfirmationUploadDmpProfiles ] }) -export class DmpProfileModule { } \ No newline at end of file +export class DmpProfileModule { } diff --git a/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.html b/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.html index 11e4dd144..1ff4715bd 100644 --- a/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.html +++ b/dmp-frontend/src/app/ui/admin/dmp-profile/editor/dmp-profile-editor.component.html @@ -15,8 +15,8 @@
- + {{formGroup.get('label').getError('backendError').message}} @@ -25,15 +25,12 @@

{{'DMP-PROFILE-EDITOR.FIELDS.TITLE' | translate}}

-
+
- + {{'GENERAL.VALIDATION.REQUIRED' | translate}} @@ -41,11 +38,10 @@ - - {{ - getDMPProfileFieldTypeWithLanguage(fieldType) | translate}} + + + {{ getDMPProfileFieldTypeWithLanguage(fieldType) | translate}} + {{'GENERAL.VALIDATION.REQUIRED' | translate}} @@ -54,13 +50,11 @@ - - {{ - getDMPProfileFieldDataTypeWithLanguage(fieldDataType) | translate}} + + + {{ getDMPProfileFieldDataTypeWithLanguage(fieldDataType) | translate}} + {{'GENERAL.VALIDATION.REQUIRED' | translate}} @@ -70,7 +64,12 @@
- {{'DMP-PROFILE-EDITOR.FIELDS.REQUIRED' | translate}} + {{'DMP-PROFILE-EDITOR.FIELDS.REQUIRED' | translate}} + +
+
+ +
@@ -78,28 +77,22 @@
-
-
-
-
-
-
@@ -109,18 +102,17 @@
-
-
-
+
+
- - +
+
+ +
+ +