diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/ExtraFieldEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/ExtraFieldEntity.java index 2a578254d..0417f550b 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/ExtraFieldEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/ExtraFieldEntity.java @@ -1,6 +1,7 @@ package eu.eudat.commons.types.dmpblueprint; import eu.eudat.commons.enums.DmpBlueprintExtraFieldDataType; +import eu.eudat.commons.enums.DmpBlueprintFieldCategory; import org.w3c.dom.Element; public class ExtraFieldEntity extends FieldEntity { @@ -23,6 +24,7 @@ public class ExtraFieldEntity extends FieldEntity { @Override public ExtraFieldEntity fromXmlChild(Element item) { this.type = DmpBlueprintExtraFieldDataType.of(Short.parseShort(item.getAttribute("type"))); + this.setCategory(DmpBlueprintFieldCategory.Extra); return this; } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/FieldEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/FieldEntity.java index 8cc0750cc..1f83590dc 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/FieldEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/FieldEntity.java @@ -1,5 +1,6 @@ package eu.eudat.commons.types.dmpblueprint; +import eu.eudat.commons.enums.DmpBlueprintExtraFieldDataType; import eu.eudat.commons.enums.DmpBlueprintFieldCategory; import eu.eudat.commons.types.xml.XmlSerializable; import org.w3c.dom.Document; diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/SystemFieldEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/SystemFieldEntity.java index 083c704c9..4bc8dac61 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/SystemFieldEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/dmpblueprint/SystemFieldEntity.java @@ -1,5 +1,6 @@ package eu.eudat.commons.types.dmpblueprint; +import eu.eudat.commons.enums.DmpBlueprintFieldCategory; import eu.eudat.commons.enums.DmpBlueprintSystemFieldType; import eu.eudat.commons.types.xml.XmlSerializable; import org.w3c.dom.Document; @@ -27,6 +28,7 @@ public class SystemFieldEntity extends FieldEntity { @Override public SystemFieldEntity fromXmlChild(Element item) { this.type = DmpBlueprintSystemFieldType.of(Short.parseShort(item.getAttribute("type"))); + this.setCategory(DmpBlueprintFieldCategory.System); return this; } } diff --git a/dmp-frontend/src/app/core/services/dmp/dmp-blueprint.service.ts b/dmp-frontend/src/app/core/services/dmp/dmp-blueprint.service.ts index ae656d3af..8c44c8de8 100644 --- a/dmp-frontend/src/app/core/services/dmp/dmp-blueprint.service.ts +++ b/dmp-frontend/src/app/core/services/dmp/dmp-blueprint.service.ts @@ -10,12 +10,17 @@ import { BaseHttpParams } from '@common/http/base-http-params'; import { InterceptorType } from '@common/http/interceptors/interceptor-type'; import { QueryResult } from '@common/model/query-result'; import { Guid } from '@common/types/guid'; -import { Observable, throwError } from 'rxjs'; -import { catchError } from 'rxjs/operators'; +import { catchError, map } from 'rxjs/operators'; import { ConfigurationService } from '../configuration/configuration.service'; import { BaseHttpV2Service } from '../http/base-http-v2.service'; import { DmpBlueprintCriteria } from '@app/core/query/dmp/dmp-blueprint-criteria'; import { DataTableRequest } from '@app/core/model/data-table/data-table-request'; +import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; +import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/multiple/multiple-auto-complete-configuration'; +import { IsActive } from '@app/core/common/enum/is-active.enum'; +import { nameof } from 'ts-simple-nameof'; +import { FilterService } from '@common/modules/text-filter/filter-service'; +import { Observable, throwError } from 'rxjs'; @Injectable() export class DmpBlueprintService { @@ -23,7 +28,7 @@ export class DmpBlueprintService { private actionUrl: string; private headers = new HttpHeaders(); - constructor(private http: BaseHttpV2Service, private httpClient: HttpClient, private configurationService: ConfigurationService) { + constructor(private http: BaseHttpV2Service, private httpClient: HttpClient, private configurationService: ConfigurationService, private filterService: FilterService) { this.actionUrl = configurationService.server + 'dmpprofile/'; } @@ -65,10 +70,6 @@ export class DmpBlueprintService { return this.http.post>(this.actionUrl + 'getPaged', dataTableRequest, { headers: this.headers }); } - getPagedBlueprint(dataTableRequest: DataTableRequest): Observable> { - return this.http.post>(this.actionUrl + 'getPagedBlueprint', dataTableRequest, { headers: this.headers }); - } - getSingleBlueprint(id: String): Observable { return this.http.get(this.actionUrl + 'getSingleBlueprint/' + id, { headers: this.headers }); } @@ -103,4 +104,44 @@ export class DmpBlueprintService { externalAutocomplete(lookUpItem: RequestItem): Observable { return this.httpClient.post(this.actionUrl + 'search/autocomplete', lookUpItem); } + + // + // Autocomplete Commons + // + // tslint:disable-next-line: member-ordering + singleAutocompleteConfiguration: SingleAutoCompleteConfiguration = { + initialItems: (data?: any) => this.query(this.buildAutocompleteLookup()).pipe(map(x => x.items)), + filterFn: (searchQuery: string, data?: any) => this.query(this.buildAutocompleteLookup(searchQuery)).pipe(map(x => x.items)), + getSelectedItem: (selectedItem: any) => this.query(this.buildAutocompleteLookup(null, null, [selectedItem])).pipe(map(x => x.items[0])), + displayFn: (item: DmpBlueprint) => item.label, + titleFn: (item: DmpBlueprint) => item.label, + valueAssign: (item: DmpBlueprint) => item.id, + }; + + // tslint:disable-next-line: member-ordering + multipleAutocompleteConfiguration: MultipleAutoCompleteConfiguration = { + initialItems: (excludedItems: any[], data?: any) => this.query(this.buildAutocompleteLookup(null, excludedItems ? excludedItems : null)).pipe(map(x => x.items)), + filterFn: (searchQuery: string, excludedItems: any[]) => this.query(this.buildAutocompleteLookup(searchQuery, excludedItems)).pipe(map(x => x.items)), + getSelectedItems: (selectedItems: any[]) => this.query(this.buildAutocompleteLookup(null, null, selectedItems)).pipe(map(x => x.items)), + displayFn: (item: DmpBlueprint) => item.label, + titleFn: (item: DmpBlueprint) => item.label, + valueAssign: (item: DmpBlueprint) => item.id, + }; + + private buildAutocompleteLookup(like?: string, excludedIds?: Guid[], ids?: Guid[]): DmpBlueprintLookup { + const lookup: DmpBlueprintLookup = new DmpBlueprintLookup(); + lookup.page = { size: 100, offset: 0 }; + if (excludedIds && excludedIds.length > 0) { lookup.excludedIds = excludedIds; } + if (ids && ids.length > 0) { lookup.ids = ids; } + lookup.isActive = [IsActive.Active]; + lookup.project = { + fields: [ + nameof(x => x.id), + nameof(x => x.label) + ] + }; + lookup.order = { items: [nameof(x => x.label)] }; + if (like) { lookup.like = this.filterService.transformLike(like); } + return lookup; + } } diff --git a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.html b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.html index bcbad4cfe..bd2a4de2b 100644 --- a/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.html +++ b/dmp-frontend/src/app/ui/dmp/dmp-editor-blueprint/dmp-editor-blueprint.component.html @@ -59,7 +59,7 @@ - +
@@ -104,7 +104,7 @@
0.3 Blueprint of DMP *
Select blueprint - +
@@ -329,7 +329,7 @@
- +