From 0918e55ac919dc8438b43f62e6f3714d647c831f Mon Sep 17 00:00:00 2001 From: Aldo Mihasi Date: Thu, 20 Jul 2023 13:07:05 +0300 Subject: [PATCH] fix bug in dataset template editor when a field is an admin-input api and couldn't fetch results --- .../controllers/DatasetProfileController.java | 8 ++++ .../common/AutoCompleteOptionsLookupItem.java | 19 ++++++++ .../daatset-external-autocomplete-criteria.ts | 5 +- .../dataset-external-autocomplete.service.ts | 14 ++---- ...file-editor-composite-field.component.html | 2 +- ...rofile-editor-composite-field.component.ts | 2 + ...ile-editor-section-fieldset.component.html | 3 +- ...ofile-editor-section-fieldset.component.ts | 2 + .../dataset-profile-editor.component.html | 1 + .../form-field/form-field.component.ts | 48 +++++++++++-------- 10 files changed, 70 insertions(+), 34 deletions(-) create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/data/helpers/common/AutoCompleteOptionsLookupItem.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 5f16cb390..d18c3f903 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 @@ -70,4 +70,12 @@ public class DatasetProfileController extends BaseController { return ResponseEntity.status(HttpStatus.OK).body(items); } + @RequestMapping(method = RequestMethod.POST, value = {"/search/autocompleteOptions"}, consumes = "application/json", produces = "application/json") + public ResponseEntity getDataForAutocompleteOptions(@RequestBody RequestItem lookupItem) { + AutoCompleteData data = new AutoCompleteData(); + data.setAutoCompleteSingleDataList(lookupItem.getCriteria().getAutoCompleteSingleDataList()); + 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/models/data/helpers/common/AutoCompleteOptionsLookupItem.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/helpers/common/AutoCompleteOptionsLookupItem.java new file mode 100644 index 000000000..6e3abcc30 --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/helpers/common/AutoCompleteOptionsLookupItem.java @@ -0,0 +1,19 @@ +package eu.eudat.models.data.helpers.common; + +import eu.eudat.data.dao.criteria.Criteria; +import eu.eudat.models.data.components.commons.datafield.AutoCompleteData; + +import java.util.List; + +public class AutoCompleteOptionsLookupItem extends Criteria { + + private List autoCompleteSingleDataList; + + public List getAutoCompleteSingleDataList() { + return autoCompleteSingleDataList; + } + public void setAutoCompleteSingleDataList(List autoCompleteSingleDataList) { + this.autoCompleteSingleDataList = autoCompleteSingleDataList; + } + +} diff --git a/dmp-frontend/src/app/core/query/dataset/daatset-external-autocomplete-criteria.ts b/dmp-frontend/src/app/core/query/dataset/daatset-external-autocomplete-criteria.ts index d511e9432..f32a40cd6 100644 --- a/dmp-frontend/src/app/core/query/dataset/daatset-external-autocomplete-criteria.ts +++ b/dmp-frontend/src/app/core/query/dataset/daatset-external-autocomplete-criteria.ts @@ -4,5 +4,8 @@ import { BaseCriteria } from "../base-criteria"; export class DatasetExternalAutocompleteCriteria extends BaseCriteria { public profileID: String; public fieldID: String; - public autocompleteOptions: AutoCompleteSingleData; +} + +export class DatasetExternalAutocompleteOptionsCriteria extends BaseCriteria { + public autoCompleteSingleDataList: AutoCompleteSingleData[]; } \ No newline at end of file diff --git a/dmp-frontend/src/app/core/services/dataset/dataset-external-autocomplete.service.ts b/dmp-frontend/src/app/core/services/dataset/dataset-external-autocomplete.service.ts index bcbfd2630..48e7348cf 100644 --- a/dmp-frontend/src/app/core/services/dataset/dataset-external-autocomplete.service.ts +++ b/dmp-frontend/src/app/core/services/dataset/dataset-external-autocomplete.service.ts @@ -2,7 +2,7 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable, of } from 'rxjs'; import { environment } from '../../../../environments/environment'; -import { DatasetExternalAutocompleteCriteria } from '../../query/dataset/daatset-external-autocomplete-criteria'; +import { DatasetExternalAutocompleteCriteria, DatasetExternalAutocompleteOptionsCriteria } from '../../query/dataset/daatset-external-autocomplete-criteria'; import { RequestItem } from '../../query/request-item'; import { DatasetProfileService } from '../dataset-profile/dataset-profile.service'; import { ConfigurationService } from '../configuration/configuration.service'; @@ -17,7 +17,7 @@ export class DatasetExternalAutocompleteService { private httpClient: HttpClient, private datasetProfileService: DatasetProfileService, private configurationService: ConfigurationService) { - this.actionUrl = configurationService.server + 'datasets/'; + this.actionUrl = configurationService.server + '/'; } getDatasetProfileById(datasetProfileID) { @@ -28,14 +28,8 @@ export class DatasetExternalAutocompleteService { return this.httpClient.post(this.configurationService.server + 'search/autocomplete', lookUpItem); } - queryApi(requestItem: RequestItem):Observable{ //TODO - - return of([ - { - label:'Preview not supported yet', - source:'' - } - ]); + queryApi(lookUpItem: RequestItem): Observable{ + return this.httpClient.post(this.configurationService.server + 'search/autocompleteOptions', lookUpItem); } } \ No newline at end of file diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.html index 72d631d4f..9e415287f 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.html @@ -204,7 +204,7 @@
- +
diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.ts index 4f5e7b641..12c3754f6 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/composite-field/dataset-profile-editor-composite-field.component.ts @@ -69,6 +69,8 @@ export class DatasetProfileEditorCompositeFieldComponent extends BaseComponent i @Input() indexPath: string; @Input() viewOnly: boolean; + @Input() datasetProfileId?: string; + @Input() numbering: string; @Input() hasFocus: boolean = false; @ViewChild("inputs") inputs: TransitionGroupComponent; diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section-fieldset/dataset-profile-editor-section-fieldset.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section-fieldset/dataset-profile-editor-section-fieldset.component.html index 38426a3d6..d57310531 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section-fieldset/dataset-profile-editor-section-fieldset.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section-fieldset/dataset-profile-editor-section-fieldset.component.html @@ -74,7 +74,8 @@ + [hasFocus]="fieldset.get('id').value === selectedFieldSetId" + [datasetProfileId]="datasetProfileId"> diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section-fieldset/dataset-profile-editor-section-fieldset.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section-fieldset/dataset-profile-editor-section-fieldset.component.ts index 0e71dcc8c..82c46659a 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section-fieldset/dataset-profile-editor-section-fieldset.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/section-fieldset/dataset-profile-editor-section-fieldset.component.ts @@ -26,6 +26,8 @@ export class DatasetProfileEditorSectionFieldSetComponent implements OnInit, OnC // @Input() numbering: string; @Input() tocentry: ToCEntry; + @Input() datasetProfileId?: string; + @Output() selectedEntryId = new EventEmitter(); @Output() dataNeedsRefresh = new EventEmitter (); @Output() removeFieldSet = new EventEmitter(); diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.html b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.html index c0288f59d..03750188c 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.html +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/dataset-profile-editor.component.html @@ -290,6 +290,7 @@ { try { return item['source'] ? this.language.instant('DATASET-WIZARD.EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE-SUBTITLE') + item['source'] : this.language.instant('DATASET-WIZARD.EDITOR.FIELDS.EXTERNAL-AUTOCOMPLETE-NO-SOURCE') } catch { return '' } } } } + if(isNullOrUndefined(this.datasetProfileId)){ + this.autocompleteOptions = this.form.get('data').value.autoCompleteSingleDataList; + } } switch (this.form.get('viewStyle').value.renderStyle) { @@ -385,29 +388,32 @@ export class FormFieldComponent extends BaseComponent implements OnInit { // } searchFromAutocomplete(query: string) { - const autocompleteRequestItem: RequestItem = new RequestItem(); - autocompleteRequestItem.criteria = new DatasetExternalAutocompleteCriteria(); - let parseIdArray: string[] = this.form.get('id').value.split('_'); - if(parseIdArray.length > 1) { - autocompleteRequestItem.criteria.fieldID = parseIdArray[parseIdArray.length - 1]; - } else { - autocompleteRequestItem.criteria.fieldID = this.form.get('id').value; - } - if (typeof this.datasetProfileId === 'string') { - autocompleteRequestItem.criteria.profileID = this.datasetProfileId; - } else if (this.datasetProfileId != null) { - autocompleteRequestItem.criteria.profileID = this.datasetProfileId.id; - } else if (this.autocompleteOptions != null) { - autocompleteRequestItem.criteria.autocompleteOptions = this.autocompleteOptions; - } else { - throw "Could not load autocomplete options."; - } - autocompleteRequestItem.criteria.like = query; if (this.autocompleteOptions) { + const autocompleteRequestItem: RequestItem = new RequestItem(); + autocompleteRequestItem.criteria = new DatasetExternalAutocompleteOptionsCriteria(); + autocompleteRequestItem.criteria.autoCompleteSingleDataList = this.autocompleteOptions; + autocompleteRequestItem.criteria.like = query; return this.datasetExternalAutocompleteService.queryApi(autocompleteRequestItem); } - return this.datasetExternalAutocompleteService.queryAutocomplete(autocompleteRequestItem); + else{ + const autocompleteRequestItem: RequestItem = new RequestItem(); + autocompleteRequestItem.criteria = new DatasetExternalAutocompleteCriteria(); + let parseIdArray: string[] = this.form.get('id').value.split('_'); + if(parseIdArray.length > 1) { + autocompleteRequestItem.criteria.fieldID = parseIdArray[parseIdArray.length - 1]; + } else { + autocompleteRequestItem.criteria.fieldID = this.form.get('id').value; + } + if (typeof this.datasetProfileId === 'string') { + autocompleteRequestItem.criteria.profileID = this.datasetProfileId; + } + else if (this.datasetProfileId != null) { + autocompleteRequestItem.criteria.profileID = this.datasetProfileId.id; + } + autocompleteRequestItem.criteria.like = query; + return this.datasetExternalAutocompleteService.queryAutocomplete(autocompleteRequestItem); + } } searchResearchers(query: string) {