Skip to content

Commit 561ccc3

Browse files
111731: Used yml config to configure the visibility advanced search component & its filters
1 parent e251c2c commit 561ccc3

9 files changed

Lines changed: 52 additions & 63 deletions

File tree

src/app/shared/search/advanced-search/advanced-search.component.spec.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import {
55
import { Router } from '@angular/router';
66
import { TranslateModule } from '@ngx-translate/core';
77

8+
import { APP_CONFIG } from '../../../../config/app-config.interface';
9+
import { environment } from '../../../../environments/environment.test';
810
import { SearchService } from '../../../core/shared/search/search.service';
911
import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service';
1012
import { SearchFilterService } from '../../../core/shared/search/search-filter.service';
@@ -39,6 +41,7 @@ describe('AdvancedSearchComponent', () => {
3941
{ provide: SearchService, useValue: searchService },
4042
{ provide: SearchConfigurationService, useValue: searchConfigurationService },
4143
{ provide: SearchFilterService, useValue: searchFilterService },
44+
{ provide: APP_CONFIG, useValue: environment },
4245
],
4346
}).compileComponents();
4447

src/app/shared/search/advanced-search/advanced-search.component.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
} from '@angular/common';
66
import {
77
Component,
8+
Inject,
89
Input,
910
OnDestroy,
1011
OnInit,
@@ -23,6 +24,10 @@ import {
2324
} from 'rxjs';
2425
import { take } from 'rxjs/operators';
2526

27+
import {
28+
APP_CONFIG,
29+
AppConfig,
30+
} from '../../../../config/app-config.interface';
2631
import { SearchService } from '../../../core/shared/search/search.service';
2732
import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service';
2833
import { SearchFilterService } from '../../../core/shared/search/search-filter.service';
@@ -84,12 +89,17 @@ export class AdvancedSearchComponent implements OnInit, OnDestroy {
8489
protected searchService: SearchService,
8590
protected searchConfigurationService: SearchConfigurationService,
8691
protected searchFilterService: SearchFilterService,
92+
@Inject(APP_CONFIG) protected appConfig: AppConfig,
8793
) {
8894
}
8995

9096
ngOnInit(): void {
9197
this.advancedFilters$ = this.searchConfigurationService.getConfigurationSearchConfig(this.configuration).pipe(
92-
map((searchConfiguration: SearchConfig) => searchConfiguration.filters.filter((filter: FilterConfig) => filter.type !== FilterType.range)),
98+
map((searchConfiguration: SearchConfig) => {
99+
return searchConfiguration.filters
100+
.filter((filter: FilterConfig) => this.appConfig.search.advancedFilters.filter.includes(filter.filter))
101+
.filter((filter: FilterConfig) => filter.type !== FilterType.range);
102+
}),
93103
);
94104
this.subs.push(this.advancedFilters$.subscribe((filters: FilterConfig[]) => {
95105
const filterMap: Map<string, FilterConfig> = new Map();

src/app/shared/search/search-filters/search-filters.component.spec.ts

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,48 @@
11
import {
22
ChangeDetectionStrategy,
3-
NO_ERRORS_SCHEMA,
3+
CUSTOM_ELEMENTS_SCHEMA,
44
} from '@angular/core';
55
import {
66
ComponentFixture,
77
TestBed,
88
waitForAsync,
99
} from '@angular/core/testing';
1010
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
11-
import { RouterTestingModule } from '@angular/router/testing';
11+
import { RouterModule } from '@angular/router';
1212
import { TranslateModule } from '@ngx-translate/core';
13-
import { APP_CONFIG } from 'src/config/app-config.interface';
14-
import { environment } from 'src/environments/environment';
1513

1614
import { SearchService } from '../../../core/shared/search/search.service';
1715
import { SearchFilterService } from '../../../core/shared/search/search-filter.service';
1816
import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-configuration.service';
1917
import { SearchConfigurationServiceStub } from '../../testing/search-configuration-service.stub';
18+
import { SearchFilterServiceStub } from '../../testing/search-filter-service.stub';
19+
import { SearchServiceStub } from '../../testing/search-service.stub';
2020
import { SearchFiltersComponent } from './search-filters.component';
2121

2222
describe('SearchFiltersComponent', () => {
2323
let comp: SearchFiltersComponent;
2424
let fixture: ComponentFixture<SearchFiltersComponent>;
25-
let searchService: SearchService;
2625

27-
const searchServiceStub = {
28-
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */
29-
getClearFiltersQueryParams: () => {
30-
},
31-
getSearchLink: () => {
32-
},
33-
getConfigurationSearchConfig: () => { },
34-
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
35-
};
36-
37-
const searchFiltersStub = {
38-
getSelectedValuesForFilter: (filter) =>
39-
[],
40-
};
26+
let searchService: SearchServiceStub;
27+
let searchFilters: SearchFilterServiceStub;
4128

4229
beforeEach(waitForAsync(() => {
30+
searchService = new SearchServiceStub();
31+
searchFilters = new SearchFilterServiceStub();
32+
4333
TestBed.configureTestingModule({
44-
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), NoopAnimationsModule, SearchFiltersComponent],
34+
imports: [
35+
TranslateModule.forRoot(),
36+
RouterModule.forRoot([]),
37+
NoopAnimationsModule,
38+
SearchFiltersComponent,
39+
],
4540
providers: [
46-
{ provide: SearchService, useValue: searchServiceStub },
41+
{ provide: SearchService, useValue: searchService },
4742
{ provide: SEARCH_CONFIG_SERVICE, useValue: new SearchConfigurationServiceStub() },
48-
{ provide: SearchFilterService, useValue: searchFiltersStub },
49-
{ provide: APP_CONFIG, useValue: environment },
50-
43+
{ provide: SearchFilterService, useValue: searchFilters },
5144
],
52-
schemas: [NO_ERRORS_SCHEMA],
45+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
5346
}).overrideComponent(SearchFiltersComponent, {
5447
set: { changeDetection: ChangeDetectionStrategy.Default },
5548
}).compileComponents();
@@ -59,13 +52,12 @@ describe('SearchFiltersComponent', () => {
5952
fixture = TestBed.createComponent(SearchFiltersComponent);
6053
comp = fixture.componentInstance; // SearchFiltersComponent test instance
6154
fixture.detectChanges();
62-
searchService = (comp as any).searchService;
6355
});
6456

6557
describe('when the getSearchLink method is called', () => {
6658
beforeEach(() => {
6759
spyOn(searchService, 'getSearchLink');
68-
(comp as any).getSearchLink();
60+
comp.getSearchLink();
6961
});
7062

7163
it('should call getSearchLink on the searchService', () => {

src/app/shared/search/search-filters/search-filters.component.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,6 @@ import {
1919
Observable,
2020
} from 'rxjs';
2121
import { map } from 'rxjs/operators';
22-
import {
23-
APP_CONFIG,
24-
AppConfig,
25-
} from 'src/config/app-config.interface';
2622

2723
import { RemoteData } from '../../../core/data/remote-data';
2824
import { SearchService } from '../../../core/shared/search/search.service';
@@ -32,7 +28,6 @@ import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-configu
3228
import { currentPath } from '../../utils/route.utils';
3329
import { AdvancedSearchComponent } from '../advanced-search/advanced-search.component';
3430
import { AppliedFilter } from '../models/applied-filter.model';
35-
import { PaginatedSearchOptions } from '../models/paginated-search-options.model';
3631
import { SearchFilterConfig } from '../models/search-filter-config.model';
3732
import { SearchFilterComponent } from './search-filter/search-filter.component';
3833

@@ -52,7 +47,7 @@ export class SearchFiltersComponent implements OnInit {
5247
* An observable containing configuration about which filters are shown and how they are shown
5348
*/
5449
@Input() filters: Observable<RemoteData<SearchFilterConfig[]>>;
55-
@Input() searchOptions: PaginatedSearchOptions;
50+
5651
/**
5752
* List of all filters that are currently active with their value set to null.
5853
* Used to reset all filters at once
@@ -90,7 +85,6 @@ export class SearchFiltersComponent implements OnInit {
9085
filterLabel = 'search';
9186

9287
constructor(
93-
@Inject(APP_CONFIG) protected appConfig: AppConfig,
9488
protected searchService: SearchService,
9589
protected searchFilterService: SearchFilterService,
9690
protected router: Router,

src/app/shared/search/search-labels/search-label/search-label.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[queryParams]="(removeParameters$ | async)"
55
(click)="searchFilterService.minimizeAll()">
66
<span class="d-flex">
7-
<span class="flex-grow-1 text-left">{{ ('search.filters.applied.f.' + appliedFilter.filter) | translate}}: {{'search.filters.' + appliedFilter.filter + '.' + appliedFilter.label | translate: { default: appliedFilter.label } }}</span>
7+
<span class="flex-grow-1 text-left">{{ ('search.filters.applied.f.' + appliedFilter.filter) | translate}}{{'search.filters.applied.operator.' + appliedFilter.operator | translate}}: {{'search.filters.' + appliedFilter.filter + '.' + appliedFilter.label | translate: { default: appliedFilter.label } }}</span>
88
<span class="pl-1" aria-hidden="true">×</span>
99
</span>
1010
</a>

src/app/shared/search/search-sidebar/search-sidebar.component.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
[refreshFilters]="refreshFilters"
2525
[inPlaceSearch]="inPlaceSearch">
2626
</ds-themed-search-filters>
27-
<ds-advanced-search [configuration]="configuration"
27+
<ds-advanced-search *ngIf="appConfig.search.advancedFilters.enabled"
28+
[configuration]="configuration"
2829
[filtersConfig]="(filters | async)?.payload">
2930
</ds-advanced-search>
3031
<ds-themed-search-settings *ngIf="inPlaceSearch"

src/app/shared/search/search-sidebar/search-sidebar.component.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import { By } from '@angular/platform-browser';
1111
import { NgbCollapseModule } from '@ng-bootstrap/ng-bootstrap';
1212
import { TranslateModule } from '@ngx-translate/core';
1313

14+
import { APP_CONFIG } from '../../../../config/app-config.interface';
15+
import { environment } from '../../../../environments/environment.test';
1416
import { AdvancedSearchComponent } from '../advanced-search/advanced-search.component';
1517
import { ThemedSearchFiltersComponent } from '../search-filters/themed-search-filters.component';
1618
import { ThemedSearchSettingsComponent } from '../search-settings/themed-search-settings.component';
@@ -27,6 +29,9 @@ describe('SearchSidebarComponent', () => {
2729
NgbCollapseModule,
2830
SearchSidebarComponent,
2931
],
32+
providers: [
33+
{ provide: APP_CONFIG, useValue: environment },
34+
],
3035
schemas: [CUSTOM_ELEMENTS_SCHEMA],
3136
})
3237
.overrideComponent(SearchSidebarComponent, {

src/app/shared/search/search-sidebar/search-sidebar.component.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
import {
66
Component,
77
EventEmitter,
8+
Inject,
89
Input,
910
Output,
1011
} from '@angular/core';
@@ -14,6 +15,10 @@ import {
1415
Observable,
1516
} from 'rxjs';
1617

18+
import {
19+
APP_CONFIG,
20+
AppConfig,
21+
} from '../../../../config/app-config.interface';
1722
import { SortOptions } from '../../../core/cache/models/sort-options.model';
1823
import { RemoteData } from '../../../core/data/remote-data';
1924
import { ViewMode } from '../../../core/shared/view-mode.model';
@@ -120,4 +125,9 @@ export class SearchSidebarComponent {
120125
*/
121126
@Output() changeViewMode: EventEmitter<ViewMode> = new EventEmitter<ViewMode>();
122127

128+
constructor(
129+
@Inject(APP_CONFIG) protected appConfig: AppConfig,
130+
) {
131+
}
132+
123133
}

src/assets/i18n/en.json5

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6058,24 +6058,6 @@
60586058

60596059
"admin.notifications.publicationclaim.page.title": "Publication Claim",
60606060

6061-
"filter.search.operator.placeholder": "Operator",
6062-
6063-
"search.filters.filter.entityType.text": "Item Type",
6064-
6065-
"search.filters.operator.equals.text": "Equals",
6066-
6067-
"search.filters.operator.notequals.text": "Not Equals",
6068-
6069-
"search.filters.operator.notcontains.text": "Not Contains",
6070-
6071-
"search.filters.operator.contains.text": "Contains",
6072-
6073-
"search.filters.filter.title.text": "Title",
6074-
6075-
"search.filters.applied.f.title": "Title",
6076-
6077-
"search.filters.filter.author.text": "Author",
6078-
60796061
"coar-notify-support.title": "COAR Notify Protocol",
60806062

60816063
"coar-notify-support-title.content": "Here, we fully support the COAR Notify protocol, which is designed to enhance the communication between repositories. To learn more about the COAR Notify protocol, visit the <a href=\\\"https://notify.coar-repositories.org/\\\">COAR Notify website</a>.",
@@ -6370,14 +6352,6 @@
63706352

63716353
"type-equals-journal-article_condition.label": "Type equals Journal Article",
63726354

6373-
"search.filters.filter.subject.text": "Subject",
6374-
6375-
"search.advanced.filters.head": "Advanced Search",
6376-
6377-
"filter.search.text.placeholder": "Search text",
6378-
6379-
"advancesearch.form.submit": "Add",
6380-
63816355
"ldn.no-filter.label": "None",
63826356

63836357
"admin.notify.dashboard": "Dashboard",

0 commit comments

Comments
 (0)