From 65ba88f5440639e97aa8bdebc540835bf277b72e Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Mon, 29 Jul 2019 12:26:08 +0300 Subject: [PATCH] Adds subtitle to external dropdown on Dataset Description editor. (Issue #139) --- .../controllers/DatasetProfileController.java | 3 +- .../logic/managers/DatasetProfileManager.java | 8 +++-- .../ExternalAutocompleteFieldModel.java | 34 +++++++++++++++++++ .../form-field/form-field.component.ts | 10 ++++-- dmp-frontend/src/assets/i18n/en.json | 3 +- 5 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/data/externaldataset/ExternalAutocompleteFieldModel.java diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java index 3cd7af875..74dd3fee9 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DatasetProfileController.java @@ -7,6 +7,7 @@ import eu.eudat.logic.managers.DatasetProfileManager; import eu.eudat.logic.security.claims.ClaimedAuthorities; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.components.commons.datafield.AutoCompleteData; +import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel; import eu.eudat.models.data.helpermodels.Tuple; import eu.eudat.models.data.helpers.common.AutoCompleteLookupItem; import eu.eudat.models.data.helpers.responses.ResponseItem; @@ -68,7 +69,7 @@ public class DatasetProfileController extends BaseController { eu.eudat.data.entities.DatasetProfile datasetProfile = this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao().find(UUID.fromString(lookupItem.getCriteria().getProfileID())); eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field modelfield = this.datasetProfileManager.queryForField(datasetProfile.getDefinition(), lookupItem.getCriteria().getFieldID()); AutoCompleteData data = (AutoCompleteData) modelfield.getData(); - List> items = this.datasetProfileManager.getAutocomplete(data, lookupItem.getCriteria().getLike()); + List items = this.datasetProfileManager.getAutocomplete(data, lookupItem.getCriteria().getLike()); return ResponseEntity.status(HttpStatus.OK).body(items); } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java index 01dcde54d..0e2279b91 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetProfileManager.java @@ -18,6 +18,7 @@ import eu.eudat.models.data.components.commons.datafield.AutoCompleteData; import eu.eudat.models.data.datasetprofile.DatasetProfileAutocompleteItem; import eu.eudat.models.data.datasetprofile.DatasetProfileListingModel; import eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Field; +import eu.eudat.models.data.externaldataset.ExternalAutocompleteFieldModel; import eu.eudat.models.data.helpermodels.Tuple; import eu.eudat.models.data.helpers.common.DataTableData; import eu.eudat.models.data.security.Principal; @@ -98,8 +99,8 @@ public class DatasetProfileManager { return field; } - public List> getAutocomplete(AutoCompleteData data, String like) { - List> result = new LinkedList<>(); + public List getAutocomplete(AutoCompleteData data, String like) { + List result = new LinkedList<>(); RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setAccept(Collections.singletonList(MediaType.valueOf("application/vnd.api+json; charset=utf-8"))); @@ -110,7 +111,8 @@ public class DatasetProfileManager { DocumentContext jsonContext = JsonPath.parse(response.getBody()); List> jsonItems = jsonContext.read(data.getOptionsRoot() + "['" + data.getAutoCompleteOptions().getLabel() + "','" + data.getAutoCompleteOptions().getValue() + "']"); - jsonItems.forEach(item -> result.add(new Tuple<>(item.get(data.getAutoCompleteOptions().getValue()), item.get(data.getAutoCompleteOptions().getLabel())))); + jsonItems.forEach(item -> result.add(new ExternalAutocompleteFieldModel(item.get(data.getAutoCompleteOptions().getValue()), item.get(data.getAutoCompleteOptions().getLabel()), data.getUrl()))); + return result; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/externaldataset/ExternalAutocompleteFieldModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/externaldataset/ExternalAutocompleteFieldModel.java new file mode 100644 index 000000000..d57605a72 --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/externaldataset/ExternalAutocompleteFieldModel.java @@ -0,0 +1,34 @@ +package eu.eudat.models.data.externaldataset; + +public class ExternalAutocompleteFieldModel { + private String id; + private String label; + private String source; + + public ExternalAutocompleteFieldModel(String id, String label, String source) { + this.id = id; + this.label = label; + this.source = source; + } + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + + public String getLabel() { + return label; + } + public void setLabel(String label) { + this.label = label; + } + + public String getSource() { + return source; + } + public void setSource(String source) { + this.source = source; + } +} 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 6d79f7f1f..27947faf5 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 @@ -13,6 +13,7 @@ import { MultipleAutoCompleteConfiguration } from '../../../../../library/auto-c import { DatasetProfileInternalDmpEntitiesType } from '../../../../../core/common/enum/dataset-profile-internal-dmp-entities-type'; import { ResearcherCriteria } from '../../../../../core/query/researcher/researcher-criteria'; import { ExternalSourcesService } from '../../../../../core/services/external-sources/external-sources.service'; +import { TranslateService } from '@ngx-translate/core'; @Component({ selector: 'app-form-field', @@ -38,7 +39,8 @@ export class FormFieldComponent extends BaseComponent implements OnInit { constructor( public visibilityRulesService: VisibilityRulesService, private datasetExternalAutocompleteService: DatasetExternalAutocompleteService, - private externalSourcesService: ExternalSourcesService + private externalSourcesService: ExternalSourcesService, + public language: TranslateService, ) { super(); } ngOnInit() { @@ -54,7 +56,8 @@ export class FormFieldComponent extends BaseComponent implements OnInit { initialItems: (extraData) => this.searchFromAutocomplete(''), displayFn: (item) => (item != null && item.length > 1) ? JSON.parse(item).label : item['label'], titleFn: (item) => item['label'], - valueAssign: (item) => JSON.stringify(item) + valueAssign: (item) => JSON.stringify(item), + subtitleFn: (item) => this.language.instant('DATASET-WIZARD.EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE-SUBTITLE') + item['source'] }; } else { @@ -63,7 +66,8 @@ export class FormFieldComponent extends BaseComponent implements OnInit { initialItems: (extraData) => this.searchFromAutocomplete(''), displayFn: (item) => item['label'], titleFn: (item) => item['label'], - valueAssign: this._transformValue + valueAssign: this._transformValue, + subtitleFn: (item) => this.language.instant('DATASET-WIZARD.EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE-SUBTITLE') + item['source'] } } } diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index 1f57ea5cb..8e1e89e18 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -337,7 +337,8 @@ }, "EDITOR": { "FIELDS": { - "EXTERNAL-DATASET-TYPE": "Type" + "EXTERNAL-DATASET-TYPE": "Type", + "EXTERNAL-AUTOCOMPLETE-SUBTITLE": "External url: " } }, "FIRST-STEP": {