From ff8ab5ad3edaa690f57f095ba422e025e00d2c68 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Tue, 30 Jul 2019 13:35:06 +0300 Subject: [PATCH] Adds new field on Dataset Template that link back to Open DMP entities (Dataset Descriptions) (Issue #129). --- .../utilities/builders/ModelBuilder.java | 9 +-- .../datafield/DatasetsAutoCompleteData.java | 59 +++++++++++++++++++ ...aset-profile-internal-dmp-entities-type.ts | 2 +- .../field-data/field-data.ts | 5 ++ .../services/utilities/enum-utils.service.ts | 1 + ...ets-autocomplete-field-data-editor-mode.ts | 27 +++++++++ ...s-auto-complete-field-data-editor-model.ts | 2 +- .../admin/field-editor-model.ts | 2 + .../dataset-profile/dataset-profile.module.ts | 4 +- ...rofile-editor-default-value.component.html | 3 + ...datasets-autocomplete-field.component.html | 12 ++++ ...datasets-autocomplete-field.component.scss | 0 ...r-datasets-autocomplete-field.component.ts | 19 ++++++ ...internal-dmp-entities-field.component.html | 2 + ...r-internal-dmp-entities-field.component.ts | 4 ++ ...ataset-profile-editor-field.component.html | 1 - .../form-field/form-field.component.html | 15 +++++ .../form-field/form-field.component.ts | 59 +++++++++++++------ dmp-frontend/src/assets/i18n/en.json | 1 + 19 files changed, 200 insertions(+), 27 deletions(-) create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/DatasetsAutoCompleteData.java create mode 100644 dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/datasets-autocomplete-field-data-editor-mode.ts create mode 100644 dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component.html create mode 100644 dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component.scss create mode 100644 dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component.ts diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java index de28f0c1c..0130f072c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java @@ -70,8 +70,8 @@ public class ModelBuilder { if (dataElement.getAttribute("type").equals("researchers")) { return (FieldData) new ResearchersAutoCompleteData().fromData(data); } -// } else if (dataElement.getAttribute("type").equals("wordlist")) -// return (FieldData) new WordListData().fromData(data); + else if (dataElement.getAttribute("type").equals("datasets")) + return (FieldData) new DatasetsAutoCompleteData().fromData(data); } } if (type.equals("booleanDecision")) return (FieldData) new BooleanDecisionData().fromData(data); @@ -96,6 +96,9 @@ public class ModelBuilder { if (internalDmpEntitiesType.equals("researchers")) { return (FieldData) new ResearchersAutoCompleteData().fromData(data); } + else if (internalDmpEntitiesType.equals("datasets")) { + return (FieldData) new DatasetsAutoCompleteData().fromData(data); + } } if (type.equals("booleanDecision")) return (FieldData) new BooleanDecisionData().fromData(data); if (type.equals("radiobox")) return (FieldData) new RadioBoxData().fromData(data); @@ -105,6 +108,4 @@ public class ModelBuilder { if (type.equals("datePicker")) return (FieldData) new DatePickerData().fromData(data); return null; } - - } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/DatasetsAutoCompleteData.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/DatasetsAutoCompleteData.java new file mode 100644 index 000000000..1ec630d42 --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/DatasetsAutoCompleteData.java @@ -0,0 +1,59 @@ +package eu.eudat.models.data.components.commons.datafield; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import java.util.HashMap; +import java.util.Map; + +public class DatasetsAutoCompleteData extends InternalDmpEntitiesData { + private Boolean multiAutoComplete; + + public Boolean getMultiAutoComplete() { + return multiAutoComplete; + } + public void setMultiAutoComplete(Boolean multiAutoComplete) { + this.multiAutoComplete = multiAutoComplete; + } + + @Override + public Element toXml(Document doc) { + Element root = super.toXml(doc); + root.setAttribute("multiAutoComplete", this.multiAutoComplete.toString()); + + return root; + } + + @Override + public DatasetsAutoCompleteData fromXml(Element item) { + super.fromXml(item); + this.multiAutoComplete = Boolean.parseBoolean(item.getAttribute("multiAutoComplete")); + + return this; + } + + @Override + public DatasetsAutoCompleteData fromData(Object data) { + super.fromData(data); + if (data != null) { + this.multiAutoComplete = (Boolean) ((Map) data).get("multiAutoComplete"); + } + + return this; + } + + @Override + public Object toData() { + // TODO Auto-generated method stub + return null; + } + + @Override + public Map toMap(Element item) { + HashMap dataMap = new HashMap(); + dataMap.put("label", item != null ? item.getAttribute("label") : ""); + dataMap.put("type", item != null ? item.getAttribute("type") : "researchers"); + + return dataMap; + } +} diff --git a/dmp-frontend/src/app/core/common/enum/dataset-profile-internal-dmp-entities-type.ts b/dmp-frontend/src/app/core/common/enum/dataset-profile-internal-dmp-entities-type.ts index 39669e6ea..22fa64ca5 100644 --- a/dmp-frontend/src/app/core/common/enum/dataset-profile-internal-dmp-entities-type.ts +++ b/dmp-frontend/src/app/core/common/enum/dataset-profile-internal-dmp-entities-type.ts @@ -1,5 +1,5 @@ export enum DatasetProfileInternalDmpEntitiesType { Researchers = "researchers", Dmps = "dmps", - Dataset = "dataset" + Datasets = "datasets" } diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts index 0bc59e210..b6fb70cd3 100644 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts +++ b/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts @@ -51,3 +51,8 @@ export interface ResearchersAutoCompleteFieldData extends FieldData { type: DatasetProfileInternalDmpEntitiesType; multiAutoComplete: boolean; } + +export interface DatasetsAutoCompleteFieldData extends FieldData { + type: DatasetProfileInternalDmpEntitiesType; + multiAutoComplete: boolean; +} 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 7490a1331..8ba964038 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 @@ -88,6 +88,7 @@ export class EnumUtils { toDatasetProfileInternalDmpEntitiesTypeString(status: DatasetProfileInternalDmpEntitiesType): string { switch (status) { case DatasetProfileInternalDmpEntitiesType.Researchers: return this.language.instant('TYPES.DATASET-PROFILE-INTERNAL-DMP-ENTITIES-TYPE.RESEARCHERS'); + case DatasetProfileInternalDmpEntitiesType.Datasets: return this.language.instant('TYPES.DATASET-PROFILE-INTERNAL-DMP-ENTITIES-TYPE.DATASETS'); } } } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/datasets-autocomplete-field-data-editor-mode.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/datasets-autocomplete-field-data-editor-mode.ts new file mode 100644 index 000000000..607a7f851 --- /dev/null +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/datasets-autocomplete-field-data-editor-mode.ts @@ -0,0 +1,27 @@ +import { FieldDataEditorModel } from "./field-data-editor-model"; +import { DatasetProfileInternalDmpEntitiesType } from "../../../../../core/common/enum/dataset-profile-internal-dmp-entities-type"; +import { FieldDataOptionEditorModel } from "./field-data-option-editor-model"; +import { DatasetsAutoCompleteFieldData } from "../../../../../core/model/dataset-profile-definition/field-data/field-data"; +import { FormGroup } from "@angular/forms"; + +export class DatasetsAutoCompleteFieldDataEditorModel extends FieldDataEditorModel { + public type: DatasetProfileInternalDmpEntitiesType = DatasetProfileInternalDmpEntitiesType.Datasets; + public multiAutoComplete: boolean = false; + public autoCompleteOptions: FieldDataOptionEditorModel = new FieldDataOptionEditorModel(); + + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { + const formGroup = this.formBuilder.group({ + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('DatasetsAutoCompleteFieldDataEditorModel.label')) }], + type: [{ value: this.type, disabled: (disabled && !skipDisable.includes('DatasetsAutoCompleteFieldDataEditorModel.type')) }], + multiAutoComplete: [{ value: this.multiAutoComplete, disabled: (disabled && !skipDisable.includes('DatasetsAutoCompleteFieldDataEditorModel.multiAutoComplete')) }] + }) + return formGroup; + } + + fromModel(item: DatasetsAutoCompleteFieldData): DatasetsAutoCompleteFieldDataEditorModel { + this.label = item.label; + this.type = item.type; + this.multiAutoComplete = item.multiAutoComplete; + return this; + } +} diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/researchers-auto-complete-field-data-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/researchers-auto-complete-field-data-editor-model.ts index 87c7c8c75..2ceeb4b41 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/researchers-auto-complete-field-data-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/researchers-auto-complete-field-data-editor-model.ts @@ -7,7 +7,7 @@ import { ResearchersAutoCompleteFieldData } from "../../../../../core/model/data export class ResearchersAutoCompleteFieldDataEditorModel extends FieldDataEditorModel { public type: DatasetProfileInternalDmpEntitiesType = DatasetProfileInternalDmpEntitiesType.Researchers; - public multiAutoComplete: boolean; + public multiAutoComplete: boolean = false; public autoCompleteOptions: FieldDataOptionEditorModel = new FieldDataOptionEditorModel(); buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts index d394166c9..1db611320 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-editor-model.ts @@ -16,6 +16,7 @@ import { VisibilityEditorModel } from './visibility-editor-model'; import { DatasetProfileEditorDatePickerFieldComponent } from '../editor/components/field-type/datepicker/dataset-profile-editor-date-picker-field.component'; import { DatePickerDataEditorModel } from './field-data/date-picker-data-editor-models'; import { ResearchersAutoCompleteFieldDataEditorModel } from './field-data/researchers-auto-complete-field-data-editor-model'; +import { DatasetsAutoCompleteFieldDataEditorModel } from './field-data/datasets-autocomplete-field-data-editor-mode'; export class FieldEditorModel extends BaseFormModel { @@ -44,6 +45,7 @@ export class FieldEditorModel extends BaseFormModel { if (item.data.type === 'wordlist') { this.data = new WordListFieldDataEditorModel().fromModel(item.data); } } else if (this.viewStyle.renderStyle === 'internalDmpEntities') { if (item.data.type === 'researchers') { this.data = new ResearchersAutoCompleteFieldDataEditorModel().fromModel(item.data); } + if (item.data.type === 'datasets') { this.data = new DatasetsAutoCompleteFieldDataEditorModel().fromModel(item.data); } } else { if (this.viewStyle.renderStyle === 'radiobox') { this.data = new RadioBoxFieldDataEditorModel().fromModel(item.data); } if (this.viewStyle.renderStyle === 'checkBox') { this.data = new CheckBoxFieldDataEditorModel().fromModel(item.data); } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.module.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.module.ts index 32a50abe7..51df03db0 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.module.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/dataset-profile.module.ts @@ -25,6 +25,7 @@ import { DatasetProfileEditorDatePickerFieldComponent } from './editor/component import { DialodConfirmationUploadDatasetProfiles } from './listing/criteria/dialog-confirmation-upload-profile/dialog-confirmation-upload-profiles.component'; import { DatasetProfileEditorInternalDmpEntitiesFieldComponent } from './editor/components/field-type/internal-dmp-entities/dataset-profile-editor-internal-dmp-entities-field.component'; import { DatasetProfileEditorResearchersAutoCompleteFieldComponent } from './editor/components/field-type/researchers-auto-complete/dataset-profile-editor-researchers-auto-complete-field.component'; +import { DatasetProfileEditorDatasetsAutoCompleteFieldComponent } from './editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component'; @NgModule({ imports: [ @@ -55,7 +56,8 @@ import { DatasetProfileEditorResearchersAutoCompleteFieldComponent } from './edi DatasetProfileEditorDefaultValueComponent, DialodConfirmationUploadDatasetProfiles, DatasetProfileEditorInternalDmpEntitiesFieldComponent, - DatasetProfileEditorResearchersAutoCompleteFieldComponent + DatasetProfileEditorResearchersAutoCompleteFieldComponent, + DatasetProfileEditorDatasetsAutoCompleteFieldComponent ], entryComponents: [ DialodConfirmationUploadDatasetProfiles diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-profile-editor-default-value/component-profile-editor-default-value.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-profile-editor-default-value/component-profile-editor-default-value.component.html index 323dd5813..71dc82241 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-profile-editor-default-value/component-profile-editor-default-value.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-profile-editor-default-value/component-profile-editor-default-value.component.html @@ -41,6 +41,9 @@ + + + diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component.html new file mode 100644 index 000000000..85de8192e --- /dev/null +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component.html @@ -0,0 +1,12 @@ +
+ +
{{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-AUTOCOMPLETE-TITLE' | translate}}
+ + {{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.FIELD-MULTIPLE-AUTOCOMPLETE' | translate}} + + + + + +
diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component.scss b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component.ts new file mode 100644 index 000000000..cf55e55c2 --- /dev/null +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/datasets-auto-complete/dataset-profile-editor-datasets-autocomplete-field.component.ts @@ -0,0 +1,19 @@ +import { OnInit, Input, Component } from "@angular/core"; +import { FormGroup } from "@angular/forms"; +import { DatasetProfileInternalDmpEntitiesType } from "../../../../../../../core/common/enum/dataset-profile-internal-dmp-entities-type"; +import { DatasetsAutoCompleteFieldDataEditorModel } from "../../../../admin/field-data/datasets-autocomplete-field-data-editor-mode"; + +@Component({ + selector: 'app-dataset-profile-editor-datasets-autocomplete-field-component', + styleUrls: ['./dataset-profile-editor-datasets-autocomplete-field.component.scss'], + templateUrl: './dataset-profile-editor-datasets-autocomplete-field.component.html' +}) +export class DatasetProfileEditorDatasetsAutoCompleteFieldComponent implements OnInit { + + @Input() form: FormGroup; + private data: DatasetsAutoCompleteFieldDataEditorModel = new DatasetsAutoCompleteFieldDataEditorModel(); + + ngOnInit() { + this.data.type = DatasetProfileInternalDmpEntitiesType.Datasets; + } +} diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/internal-dmp-entities/dataset-profile-editor-internal-dmp-entities-field.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/internal-dmp-entities/dataset-profile-editor-internal-dmp-entities-field.component.html index 186ccf1b1..dee1a601f 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/internal-dmp-entities/dataset-profile-editor-internal-dmp-entities-field.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/internal-dmp-entities/dataset-profile-editor-internal-dmp-entities-field.component.html @@ -2,7 +2,9 @@ {{enumUtils.toDatasetProfileInternalDmpEntitiesTypeString(options.Researchers)}} + {{enumUtils.toDatasetProfileInternalDmpEntitiesTypeString(options.Datasets)}} + diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/internal-dmp-entities/dataset-profile-editor-internal-dmp-entities-field.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/internal-dmp-entities/dataset-profile-editor-internal-dmp-entities-field.component.ts index 4f6cbc96d..326f23c66 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/internal-dmp-entities/dataset-profile-editor-internal-dmp-entities-field.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field-type/internal-dmp-entities/dataset-profile-editor-internal-dmp-entities-field.component.ts @@ -5,6 +5,8 @@ import { FormGroup } from "@angular/forms"; import { BaseComponent } from "../../../../../../../core/common/base/base.component"; import { takeUntil } from "rxjs/operators"; import { ResearchersAutoCompleteFieldDataEditorModel } from "../../../../admin/field-data/researchers-auto-complete-field-data-editor-model"; +import { DatasetsAutoCompleteFieldDataEditorModel } from "../../../../admin/field-data/datasets-autocomplete-field-data-editor-mode"; + @Component({ selector: 'app-dataset-profile-internal-dmp-entities-field-component', @@ -30,6 +32,8 @@ export class DatasetProfileEditorInternalDmpEntitiesFieldComponent extends BaseC if (this.form.get('data')) { this.form.removeControl('data'); } if (x === DatasetProfileInternalDmpEntitiesType.Researchers) { this.form.addControl('data', new ResearchersAutoCompleteFieldDataEditorModel().buildForm()); + } else if (x === DatasetProfileInternalDmpEntitiesType.Datasets) { + this.form.addControl('data', new DatasetsAutoCompleteFieldDataEditorModel().buildForm()); } this.setupListeners(); }) diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.html index 19fb777fd..0e0547147 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.html @@ -30,7 +30,6 @@ placeHolder="{{'DATASET-PROFILE-EDITOR.STEPS.FORM.FIELD.FIELDS.DEFAULT-VALUE' | translate}}" [required]="defaulValueRequired(form.get('viewStyle').get('renderStyle').value)"> - diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html index 2143eaf6b..1e5cb2f22 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.html @@ -59,6 +59,21 @@ {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} + +
+ + +
+
+ + + {{'GENERAL.VALIDATION.REQUIRED' | translate}} + +
+ {{ "TYPES.DATASET-PROFILE-COMBO-BOX-TYPE.EXTERNAL-SOURCE-HINT" | translate }} +
diff --git a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts index 27947faf5..c371b8b4b 100644 --- a/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts +++ b/dmp-frontend/src/app/ui/misc/dataset-description-form/components/form-field/form-field.component.ts @@ -14,6 +14,9 @@ import { DatasetProfileInternalDmpEntitiesType } from '../../../../../core/commo import { ResearcherCriteria } from '../../../../../core/query/researcher/researcher-criteria'; import { ExternalSourcesService } from '../../../../../core/services/external-sources/external-sources.service'; import { TranslateService } from '@ngx-translate/core'; +import { DatasetCriteria } from '../../../../../core/query/dataset/dataset-criteria'; +import { DatasetService } from '../../../../../core/services/dataset/dataset.service'; +import { DataTableRequest } from '../../../../../core/model/data-table/data-table-request'; @Component({ selector: 'app-form-field', @@ -40,7 +43,8 @@ export class FormFieldComponent extends BaseComponent implements OnInit { public visibilityRulesService: VisibilityRulesService, private datasetExternalAutocompleteService: DatasetExternalAutocompleteService, private externalSourcesService: ExternalSourcesService, - public language: TranslateService, + private language: TranslateService, + private datasetService: DatasetService ) { super(); } ngOnInit() { @@ -74,24 +78,10 @@ export class FormFieldComponent extends BaseComponent implements OnInit { if (this.form.get('viewStyle').value.renderStyle === DatasetProfileFieldViewStyle.InternalDmpEntities) { if (this.form.get('data').value.type === DatasetProfileInternalDmpEntitiesType.Researchers) { - if (!(this.form.controls['data'].value.multiAutoComplete)) { - this.singleAutoCompleteConfiguration = { - filterFn: this.searchResearchers.bind(this), - initialItems: (extraData) => this.searchResearchers(''), - displayFn: (item) => (item != null && item.length > 1) ? JSON.parse(item).name : item['name'], - titleFn: (item) => item['name'], - valueAssign: (item) => JSON.stringify(item) - }; - } - else { - this.multipleAutoCompleteConfiguration = { - filterFn: this.searchResearchers.bind(this), - initialItems: (extraData) => this.searchResearchers(''), - displayFn: (item) => item['name'], - titleFn: (item) => item['name'], - valueAssign: this._transformValue - } - } + this.makeAutocompleteConfiguration(this.searchResearchers.bind(this), "name", "tag"); + } + else if (this.form.get('data').value.type === DatasetProfileInternalDmpEntitiesType.Datasets) { + this.makeAutocompleteConfiguration(this.searchDatasets.bind(this), "label"); } } @@ -135,4 +125,35 @@ export class FormFieldComponent extends BaseComponent implements OnInit { reasearcherAutocompleteRequestItem.criteria.name = query; return this.externalSourcesService.searchDMPResearchers(reasearcherAutocompleteRequestItem); } + + searchDatasets(query: string) { + let fields: Array = new Array(); + const datasetsAutocompleteRequestItem: DataTableRequest = new DataTableRequest(0, 25, { fields: fields }); + datasetsAutocompleteRequestItem.criteria = new DatasetCriteria(); + datasetsAutocompleteRequestItem.criteria.like = query; + return this.datasetService.getPaged(datasetsAutocompleteRequestItem).map(item => item.data); + } + + makeAutocompleteConfiguration(myfunc: Function, title: string, subtitle?: string): void { + if (!(this.form.controls['data'].value.multiAutoComplete)) { + this.singleAutoCompleteConfiguration = { + filterFn: myfunc.bind(this), + initialItems: (extraData) => myfunc(''), + displayFn: (item) => (item != null && item.length > 1) ? JSON.parse(item)[title] : item[title], + titleFn: (item) => item[title], + valueAssign: (item) => JSON.stringify(item), + subtitleFn: (item) => item[subtitle] + }; + } + else { + this.multipleAutoCompleteConfiguration = { + filterFn: myfunc.bind(this), + initialItems: (extraData) => myfunc(''), + displayFn: (item) => item[title], + titleFn: (item) => item[title], + valueAssign: this._transformValue, + subtitleFn: (item) => item[subtitle] + } + } + } } diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index 74c336acf..6a64841c1 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -207,6 +207,7 @@ "FIELD-INTERNAL-DMP-ENTITIES-TYPE": "Type of Internal DMP Entity", "FIELD-RESEARCHERS-TITLE": "Researchers Autocomplete", "FIELD-RESEARCHERS-PLACEHOLDER": "Input Placeholder", + "FIELD-DATASETS-PLACEHOLDER": "Input Placeholder", "FIELD-RADIO-BOX-TITLE": "Radio Box Data", "FIELD-RADIO-BOX-PLACEHOLDER": "Input Placeholder", "FIELD-RADIO-BOX-LABEL": "Label",