[DURACOM-191] set map for search filters

This commit is contained in:
Andrea Barbasso
2024-01-16 11:54:15 +01:00
parent 0fb34e984d
commit 076482eacc
6 changed files with 60 additions and 38 deletions

View File

@@ -1,13 +1,17 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { FilterType } from '../../../models/filter-type.model';
import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component'; import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component';
import { renderFacetFor } from '../search-filter-type-decorator';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { FilterInputSuggestionsComponent } from '../../../../input-suggestions/filter-suggestions/filter-input-suggestions.component'; import {
import { SearchFacetOptionComponent } from '../search-facet-filter-options/search-facet-option/search-facet-option.component'; FilterInputSuggestionsComponent
import { SearchFacetSelectedOptionComponent } from '../search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component'; } from '../../../../input-suggestions/filter-suggestions/filter-input-suggestions.component';
import { NgFor, NgIf, AsyncPipe } from '@angular/common'; import {
SearchFacetOptionComponent
} from '../search-facet-filter-options/search-facet-option/search-facet-option.component';
import {
SearchFacetSelectedOptionComponent
} from '../search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component';
import { AsyncPipe, NgFor, NgIf } from '@angular/common';
@Component({ @Component({
selector: 'ds-search-authority-filter', selector: 'ds-search-authority-filter',
@@ -21,6 +25,5 @@ import { NgFor, NgIf, AsyncPipe } from '@angular/common';
/** /**
* Component that represents an authority facet for a specific filter configuration * Component that represents an authority facet for a specific filter configuration
*/ */
@renderFacetFor(FilterType.authority)
export class SearchAuthorityFilterComponent extends SearchFacetFilterComponent implements OnInit { export class SearchAuthorityFilterComponent extends SearchFacetFilterComponent implements OnInit {
} }

View File

@@ -1,11 +1,13 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { FilterType } from '../../../models/filter-type.model';
import { renderFacetFor } from '../search-filter-type-decorator';
import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component'; import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { SearchFacetOptionComponent } from '../search-facet-filter-options/search-facet-option/search-facet-option.component'; import {
import { SearchFacetSelectedOptionComponent } from '../search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component'; SearchFacetOptionComponent
import { NgFor, NgIf, AsyncPipe } from '@angular/common'; } from '../search-facet-filter-options/search-facet-option/search-facet-option.component';
import {
SearchFacetSelectedOptionComponent
} from '../search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component';
import { AsyncPipe, NgFor, NgIf } from '@angular/common';
@Component({ @Component({
selector: 'ds-search-boolean-filter', selector: 'ds-search-boolean-filter',
@@ -19,6 +21,5 @@ import { NgFor, NgIf, AsyncPipe } from '@angular/common';
/** /**
* Component that represents a boolean facet for a specific filter configuration * Component that represents a boolean facet for a specific filter configuration
*/ */
@renderFacetFor(FilterType.boolean)
export class SearchBooleanFilterComponent extends SearchFacetFilterComponent implements OnInit { export class SearchBooleanFilterComponent extends SearchFacetFilterComponent implements OnInit {
} }

View File

@@ -1,10 +1,21 @@
import { FilterType } from '../../models/filter-type.model'; import { FilterType } from '../../models/filter-type.model';
import { SearchTextFilterComponent } from './search-text-filter/search-text-filter.component';
import { SearchAuthorityFilterComponent } from './search-authority-filter/search-authority-filter.component';
import { SearchBooleanFilterComponent } from './search-boolean-filter/search-boolean-filter.component';
import { SearchHierarchyFilterComponent } from './search-hierarchy-filter/search-hierarchy-filter.component';
import { SearchRangeFilterComponent } from './search-range-filter/search-range-filter.component';
/** /**
* Contains the mapping between a facet component and a FilterType * Contains the mapping between a facet component and a FilterType
*/ */
const filterTypeMap = new Map(); const filterTypeMap = new Map();
filterTypeMap.set(FilterType.text, SearchTextFilterComponent);
filterTypeMap.set(FilterType.authority, SearchAuthorityFilterComponent);
filterTypeMap.set(FilterType.boolean, SearchBooleanFilterComponent);
filterTypeMap.set(FilterType.hierarchy, SearchHierarchyFilterComponent);
filterTypeMap.set(FilterType.range, SearchRangeFilterComponent);
/** /**
* Sets the mapping for a facet component in relation to a filter type * Sets the mapping for a facet component in relation to a filter type
* @param {FilterType} type The type for which the matching component is mapped * @param {FilterType} type The type for which the matching component is mapped

View File

@@ -1,6 +1,4 @@
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { renderFacetFor } from '../search-filter-type-decorator';
import { FilterType } from '../../../models/filter-type.model';
import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component'; import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component';
import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap'; import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
import { import {
@@ -10,7 +8,8 @@ import { SearchService } from '../../../../../core/shared/search/search.service'
import { import {
FILTER_CONFIG, FILTER_CONFIG,
IN_PLACE_SEARCH, IN_PLACE_SEARCH,
SearchFilterService, REFRESH_FILTER REFRESH_FILTER,
SearchFilterService
} from '../../../../../core/shared/search/search-filter.service'; } from '../../../../../core/shared/search/search-filter.service';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service'; import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service';
@@ -18,20 +17,27 @@ import { SEARCH_CONFIG_SERVICE } from '../../../../../my-dspace-page/my-dspace-p
import { SearchConfigurationService } from '../../../../../core/shared/search/search-configuration.service'; import { SearchConfigurationService } from '../../../../../core/shared/search/search-configuration.service';
import { SearchFilterConfig } from '../../../models/search-filter-config.model'; import { SearchFilterConfig } from '../../../models/search-filter-config.model';
import { FacetValue } from '../../../models/facet-value.model'; import { FacetValue } from '../../../models/facet-value.model';
import { getFacetValueForType } from '../../../search.utils'; import { addOperatorToFilterValue, getFacetValueForType } from '../../../search.utils';
import { filter, map, take } from 'rxjs/operators'; import { filter, map, take } from 'rxjs/operators';
import { VocabularyService } from '../../../../../core/submission/vocabularies/vocabulary.service'; import { VocabularyService } from '../../../../../core/submission/vocabularies/vocabulary.service';
import { Observable, BehaviorSubject } from 'rxjs'; import { BehaviorSubject, Observable } from 'rxjs';
import { PageInfo } from '../../../../../core/shared/page-info.model'; import { PageInfo } from '../../../../../core/shared/page-info.model';
import { environment } from '../../../../../../environments/environment'; import { environment } from '../../../../../../environments/environment';
import { addOperatorToFilterValue } from '../../../search.utils'; import {
import { VocabularyTreeviewModalComponent } from '../../../../form/vocabulary-treeview-modal/vocabulary-treeview-modal.component'; VocabularyTreeviewModalComponent
} from '../../../../form/vocabulary-treeview-modal/vocabulary-treeview-modal.component';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { FilterInputSuggestionsComponent } from '../../../../input-suggestions/filter-suggestions/filter-input-suggestions.component'; import {
import { SearchFacetOptionComponent } from '../search-facet-filter-options/search-facet-option/search-facet-option.component'; FilterInputSuggestionsComponent
import { SearchFacetSelectedOptionComponent } from '../search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component'; } from '../../../../input-suggestions/filter-suggestions/filter-input-suggestions.component';
import { NgFor, NgIf, AsyncPipe, LowerCasePipe } from '@angular/common'; import {
SearchFacetOptionComponent
} from '../search-facet-filter-options/search-facet-option/search-facet-option.component';
import {
SearchFacetSelectedOptionComponent
} from '../search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component';
import { AsyncPipe, LowerCasePipe, NgFor, NgIf } from '@angular/common';
@Component({ @Component({
selector: 'ds-search-hierarchy-filter', selector: 'ds-search-hierarchy-filter',
@@ -45,7 +51,6 @@ import { NgFor, NgIf, AsyncPipe, LowerCasePipe } from '@angular/common';
/** /**
* Component that represents a hierarchy facet for a specific filter configuration * Component that represents a hierarchy facet for a specific filter configuration
*/ */
@renderFacetFor(FilterType.hierarchy)
export class SearchHierarchyFilterComponent extends SearchFacetFilterComponent implements OnInit { export class SearchHierarchyFilterComponent extends SearchFacetFilterComponent implements OnInit {
constructor(protected searchService: SearchService, constructor(protected searchService: SearchService,

View File

@@ -1,11 +1,9 @@
import { BehaviorSubject, combineLatest as observableCombineLatest, Subscription } from 'rxjs'; import { BehaviorSubject, combineLatest as observableCombineLatest, Subscription } from 'rxjs';
import { map, startWith } from 'rxjs/operators'; import { map, startWith } from 'rxjs/operators';
import { isPlatformBrowser, NgIf, NgFor, AsyncPipe } from '@angular/common'; import { AsyncPipe, isPlatformBrowser, NgFor, NgIf } from '@angular/common';
import { Component, Inject, OnDestroy, OnInit, PLATFORM_ID } from '@angular/core'; import { Component, Inject, OnDestroy, OnInit, PLATFORM_ID } from '@angular/core';
import { TranslateService, TranslateModule } from '@ngx-translate/core'; import { TranslateModule, TranslateService } from '@ngx-translate/core';
import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service'; import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service';
import { FilterType } from '../../../models/filter-type.model';
import { renderFacetFor } from '../search-filter-type-decorator';
import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component'; import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component';
import { SearchFilterConfig } from '../../../models/search-filter-config.model'; import { SearchFilterConfig } from '../../../models/search-filter-config.model';
import { import {
@@ -21,7 +19,9 @@ import { SearchConfigurationService } from '../../../../../core/shared/search/se
import { RouteService } from '../../../../../core/services/route.service'; import { RouteService } from '../../../../../core/services/route.service';
import { hasValue } from '../../../../empty.util'; import { hasValue } from '../../../../empty.util';
import { yearFromString } from 'src/app/shared/date.util'; import { yearFromString } from 'src/app/shared/date.util';
import { SearchFacetRangeOptionComponent } from '../search-facet-filter-options/search-facet-range-option/search-facet-range-option.component'; import {
SearchFacetRangeOptionComponent
} from '../search-facet-filter-options/search-facet-range-option/search-facet-range-option.component';
import { DebounceDirective } from '../../../../utils/debounce.directive'; import { DebounceDirective } from '../../../../utils/debounce.directive';
import { NouisliderComponent } from 'ng2-nouislider'; import { NouisliderComponent } from 'ng2-nouislider';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
@@ -53,7 +53,6 @@ export const RANGE_FILTER_MAX_SUFFIX = '.max';
/** /**
* Component that represents a range facet for a specific filter configuration * Component that represents a range facet for a specific filter configuration
*/ */
@renderFacetFor(FilterType.range)
export class SearchRangeFilterComponent extends SearchFacetFilterComponent implements OnInit, OnDestroy { export class SearchRangeFilterComponent extends SearchFacetFilterComponent implements OnInit, OnDestroy {
/** /**
* Fallback minimum for the range * Fallback minimum for the range

View File

@@ -1,14 +1,18 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { FilterType } from '../../../models/filter-type.model';
import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component'; import { facetLoad, SearchFacetFilterComponent } from '../search-facet-filter/search-facet-filter.component';
import { renderFacetFor } from '../search-filter-type-decorator';
import { addOperatorToFilterValue, } from '../../../search.utils'; import { addOperatorToFilterValue, } from '../../../search.utils';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { FilterInputSuggestionsComponent } from '../../../../input-suggestions/filter-suggestions/filter-input-suggestions.component'; import {
import { SearchFacetOptionComponent } from '../search-facet-filter-options/search-facet-option/search-facet-option.component'; FilterInputSuggestionsComponent
import { SearchFacetSelectedOptionComponent } from '../search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component'; } from '../../../../input-suggestions/filter-suggestions/filter-input-suggestions.component';
import { NgFor, NgIf, AsyncPipe } from '@angular/common'; import {
SearchFacetOptionComponent
} from '../search-facet-filter-options/search-facet-option/search-facet-option.component';
import {
SearchFacetSelectedOptionComponent
} from '../search-facet-filter-options/search-facet-selected-option/search-facet-selected-option.component';
import { AsyncPipe, NgFor, NgIf } from '@angular/common';
/** /**
* This component renders a simple item page. * This component renders a simple item page.
@@ -28,7 +32,6 @@ import { NgFor, NgIf, AsyncPipe } from '@angular/common';
/** /**
* Component that represents a text facet for a specific filter configuration * Component that represents a text facet for a specific filter configuration
*/ */
@renderFacetFor(FilterType.text)
export class SearchTextFilterComponent extends SearchFacetFilterComponent implements OnInit { export class SearchTextFilterComponent extends SearchFacetFilterComponent implements OnInit {
/** /**
* Submits a new active custom value to the filter from the input field * Submits a new active custom value to the filter from the input field