diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/TagController.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/TagController.java index d7c9435ba..eb53c5cb3 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/TagController.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/TagController.java @@ -49,7 +49,7 @@ public class TagController extends BaseController { if (this.getApiContext().getOperationsContext().getElasticRepository().getDatasetRepository().exists()) { DatasetCriteria criteria = new DatasetCriteria(); criteria.setHasTags(true); - List tags = this.getApiContext().getOperationsContext().getElasticRepository().getDatasetRepository().query(criteria).stream().map(Dataset::getTags).flatMap(Collection::stream).filter(StreamDistinctBy.distinctByKey(Tag::getId)).filter(tag -> tag.getName().startsWith(query)).collect(Collectors.toList()); + List tags = this.getApiContext().getOperationsContext().getElasticRepository().getDatasetRepository().query(criteria).stream().map(Dataset::getTags).flatMap(Collection::stream).filter(StreamDistinctBy.distinctByKey(Tag::getId)).filter(tag -> tag.getName().toLowerCase().startsWith(query.toLowerCase())).collect(Collectors.toList()); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().payload(tags).status(ApiMessageCode.NO_MESSAGE)); } else { diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LicenseManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LicenseManager.java index da06aedd3..39da2a9bf 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LicenseManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LicenseManager.java @@ -42,7 +42,7 @@ public class LicenseManager { ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); licenseModels.addAll(remoteRepos.stream().map(item -> mapper.convertValue(item, LicenseModel.class)).collect(Collectors.toList())); - licenseModels = licenseModels.stream().filter(licenseModel -> licenseModel.getName().contains(query)).collect(Collectors.toList()); + licenseModels = licenseModels.stream().filter(licenseModel -> licenseModel.getName().toLowerCase().contains(query.toLowerCase())).collect(Collectors.toList()); return licenseModels; } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LocalFetchManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LocalFetchManager.java index fa135debe..b60a73108 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LocalFetchManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/LocalFetchManager.java @@ -22,7 +22,7 @@ public class LocalFetchManager { public List getCurrency(String query) throws Exception { List> data = localFetcher.retrieveCurrency(); List result = data.stream().map(entry -> new LocalFetchModel(entry.get("name"), entry.get("value"))).collect(Collectors.toList()); - result = result.stream().filter(localFetchModel -> localFetchModel.getValue() != null).filter(StreamDistinctBy.distinctByKey(LocalFetchModel::getValue)).filter(localFetchModel -> localFetchModel.getName().contains(query)).collect(Collectors.toList()); + result = result.stream().filter(localFetchModel -> localFetchModel.getValue() != null).filter(StreamDistinctBy.distinctByKey(LocalFetchModel::getValue)).filter(localFetchModel -> localFetchModel.getName().toLowerCase().contains(query.toLowerCase())).collect(Collectors.toList()); return result; } } diff --git a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.html b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.html index 56742ff79..c09a78590 100644 --- a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.html +++ b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.html @@ -1,7 +1,5 @@
- - - + @@ -11,22 +9,23 @@ - + + + + arrow_drop_down +
- - - - - - - - - - - - - arrow_drop_down + @@ -36,12 +35,17 @@ item: item }">
-
- - {{_titleFn(item)}} -
- {{_subtitleFn(item)}} - +
+
+
+ {{_titleFn(item)}} +
+
+
+
+ +
+
{{popupItemActionIcon}}
@@ -49,29 +53,34 @@ -
- + +
-
-
- {{_titleFn(item)}} -
- +
+
+
+ {{_titleFn(item)}} +
+
+
+
+ +
{{popupItemActionIcon}}
- + No results found! - -
+ + loading... diff --git a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.scss b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.scss index 49f0a9cd6..611710a88 100644 --- a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.scss +++ b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.scss @@ -19,16 +19,34 @@ } +.title-subtitle-fn { + height: auto; + width: calc(100% - 46px); +} + .title-fn-inner { + width: inherit; + overflow: unset; + white-space: normal; +} + +.title-fn { + width: 100%; + overflow: hidden; + text-overflow: unset !important; + white-space: normal; +} + + +.subtitle-fn-inner { width: inherit; height: inherit; overflow: hidden; text-overflow: ellipsis; } -.title-fn { - height: inherit; - width: calc(100% - 16px); +.subtitle-fn { + width: 100%; overflow: hidden; white-space: nowrap; display: -webkit-box; @@ -36,10 +54,10 @@ -moz-box-orient: vertical; -ms-box-orient: vertical; box-orient: vertical; - -webkit-line-clamp: 2; - -moz-line-clamp: 2; - -ms-line-clamp: 2; - line-clamp: 2; + -webkit-line-clamp: 1; + -moz-line-clamp: 1; + -ms-line-clamp: 1; + line-clamp: 1; } .option-icon { diff --git a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts index e640cae42..5f38cad45 100644 --- a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts +++ b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts @@ -11,7 +11,7 @@ import { MultipleAutoCompleteConfiguration } from '@app/library/auto-complete/mu import { BaseComponent } from '@common/base/base.component'; import { isNullOrUndefined } from '@swimlane/ngx-datatable'; import { BehaviorSubject, combineLatest, Observable, of as observableOf, Subject, Subscription } from 'rxjs'; -import { debounceTime, distinctUntilChanged, map, mergeMap, startWith, takeUntil, switchMap } from 'rxjs/operators'; +import {debounceTime, distinctUntilChanged, map, mergeMap, startWith, takeUntil, switchMap, tap} from 'rxjs/operators'; export class CustomComponentBase extends BaseComponent { constructor( @@ -57,6 +57,8 @@ export class MultipleAutoCompleteComponent extends _CustomComponentMixinBase imp onSelectAutoCompleteValue = new BehaviorSubject(null); valueAssignSubscription: Subscription; + queryValue: string = ""; + focused = false; controlType = 'multiple-autocomplete'; describedBy = ''; @@ -73,6 +75,7 @@ export class MultipleAutoCompleteComponent extends _CustomComponentMixinBase imp get shouldLabelFloat() { return this.focused || !this.empty; } + @Input() showNoResultsLabel: boolean = true; @Input() hidePlaceholder: boolean = false; @Input() get placeholder() { return this._placeholder; } @@ -264,6 +267,7 @@ export class MultipleAutoCompleteComponent extends _CustomComponentMixinBase imp debounceTime(this.requestDelay), distinctUntilChanged(), distinctUntilChanged(), + tap(query => this.queryValue = query), switchMap(query => this.filter(query))); if (this.configuration.groupingFn) { this._groupedItems = this._items.pipe(map(items => this.configuration.groupingFn(items))); } @@ -348,7 +352,7 @@ export class MultipleAutoCompleteComponent extends _CustomComponentMixinBase imp } get requestDelay(): number { - return this.configuration.requestDelay != null ? this.configuration.requestDelay : 400; + return this.configuration.requestDelay != null ? this.configuration.requestDelay : 600; } get minFilteringChars(): number { diff --git a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html index 65ac69493..4d74c6c63 100644 --- a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html +++ b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.html @@ -35,7 +35,7 @@ - No results found! + No results found!
diff --git a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts index 4c40f4748..c63215f13 100644 --- a/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts +++ b/dmp-frontend/src/app/library/auto-complete/single/single-auto-complete.component.ts @@ -9,7 +9,7 @@ import { AutoCompleteGroup } from '@app/library/auto-complete/auto-complete-grou import { SingleAutoCompleteConfiguration } from '@app/library/auto-complete/single/single-auto-complete-configuration'; import { BaseComponent } from '@common/base/base.component'; import { Observable, of as observableOf, Subject } from 'rxjs'; -import { debounceTime, distinctUntilChanged, map, mergeMap, startWith, takeUntil, switchMap } from 'rxjs/operators'; +import {debounceTime, distinctUntilChanged, map, mergeMap, startWith, takeUntil, switchMap, tap} from 'rxjs/operators'; export class CustomComponentBase extends BaseComponent { @@ -62,6 +62,7 @@ export class SingleAutoCompleteComponent extends _CustomComponentMixinBase imple _groupedItems: Observable; _selectedItems: Map = new Map(); + queryValue: string = ""; get empty() { return (this.value == null) && (!this.inputValue || this.inputValue.length === 0); } @@ -224,6 +225,7 @@ export class SingleAutoCompleteComponent extends _CustomComponentMixinBase imple startWith(null), debounceTime(this.requestDelay), distinctUntilChanged(), + tap(query => this.queryValue = query), switchMap(query => this.filter(query))); if (this.configuration.groupingFn) { this._groupedItems = this._items.pipe(map(items => this.configuration.groupingFn(items))); } @@ -313,7 +315,7 @@ export class SingleAutoCompleteComponent extends _CustomComponentMixinBase imple } get requestDelay(): number { - return this.configuration.requestDelay != null ? this.configuration.requestDelay : 400; + return this.configuration.requestDelay != null ? this.configuration.requestDelay : 600; } get minFilteringChars(): number { diff --git a/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation-dialog.component.html b/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation-dialog.component.html index 1e0bd007e..fa13b7b57 100644 --- a/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation-dialog.component.html +++ b/dmp-frontend/src/app/ui/dmp/invitation/dmp-invitation-dialog.component.html @@ -9,7 +9,8 @@
- +