Skip to content

Commit 2fb393d

Browse files
Removed the AbstractBrowseByTypeComponent
1 parent 239f082 commit 2fb393d

7 files changed

Lines changed: 51 additions & 55 deletions

File tree

src/app/browse-by/abstract-browse-by-type.component.ts

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/app/browse-by/browse-by-metadata-page/browse-by-metadata-page.component.ts

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { combineLatest as observableCombineLatest, Observable } from 'rxjs';
2-
import { Component, Inject, OnInit, OnDestroy } from '@angular/core';
1+
import { combineLatest as observableCombineLatest, Observable, Subscription } from 'rxjs';
2+
import { Component, Inject, OnInit, OnDestroy, Input } from '@angular/core';
33
import { RemoteData } from '../../core/data/remote-data';
44
import { PaginatedList } from '../../core/data/paginated-list.model';
55
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
@@ -23,8 +23,8 @@ import { Community } from '../../core/shared/community.model';
2323
import { APP_CONFIG, AppConfig } from '../../../config/app-config.interface';
2424
import { DSONameService } from '../../core/breadcrumbs/dso-name.service';
2525
import { rendersBrowseBy } from '../browse-by-switcher/browse-by-decorator';
26-
import { AbstractBrowseByTypeComponent } from '../abstract-browse-by-type.component';
2726
import { BrowseByDataType } from '../browse-by-switcher/browse-by-data-type';
27+
import { Context } from '../../core/shared/context.model';
2828

2929
export const BBM_PAGINATION_ID = 'bbm';
3030

@@ -40,7 +40,17 @@ export const BBM_PAGINATION_ID = 'bbm';
4040
* 'dc.contributor.*'
4141
*/
4242
@rendersBrowseBy(BrowseByDataType.Metadata)
43-
export class BrowseByMetadataPageComponent extends AbstractBrowseByTypeComponent implements OnInit, OnDestroy {
43+
export class BrowseByMetadataPageComponent implements OnInit, OnDestroy {
44+
45+
/**
46+
* The optional context
47+
*/
48+
@Input() context: Context;
49+
50+
/**
51+
* The {@link BrowseByDataType} of this Component
52+
*/
53+
@Input() browseByType: BrowseByDataType;
4454

4555
/**
4656
* The list of browse-entries to display
@@ -77,6 +87,11 @@ export class BrowseByMetadataPageComponent extends AbstractBrowseByTypeComponent
7787
*/
7888
currentSort$: Observable<SortOptions>;
7989

90+
/**
91+
* List of subscriptions
92+
*/
93+
subs: Subscription[] = [];
94+
8095
/**
8196
* The default browse id to resort to when none is provided
8297
*/
@@ -129,7 +144,6 @@ export class BrowseByMetadataPageComponent extends AbstractBrowseByTypeComponent
129144
@Inject(APP_CONFIG) public appConfig: AppConfig,
130145
public dsoNameService: DSONameService,
131146
) {
132-
super();
133147
this.fetchThumbnails = this.appConfig.browseBy.showThumbnails;
134148
this.paginationConfig = Object.assign(new PaginationComponentOptions(), {
135149
id: BBM_PAGINATION_ID,
@@ -273,7 +287,7 @@ export class BrowseByMetadataPageComponent extends AbstractBrowseByTypeComponent
273287
}
274288

275289
ngOnDestroy(): void {
276-
super.ngOnDestroy();
290+
this.subs.filter((sub: Subscription) => hasValue(sub)).forEach((sub: Subscription) => sub.unsubscribe());
277291
this.paginationService.clearPagination(this.paginationConfig.id);
278292
}
279293

src/app/browse-by/browse-by-page/browse-by-page.component.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
99
import { ThemeService } from '../../shared/theme-support/theme.service';
1010
import { rendersBrowseBy } from '../browse-by-switcher/browse-by-decorator';
1111
import { Component } from '@angular/core';
12-
import { AbstractBrowseByTypeComponent } from '../abstract-browse-by-type.component';
1312
import { BrowseDefinition } from '../../core/shared/browse-definition.model';
1413
import { By } from '@angular/platform-browser';
1514
import { BrowseByDataType } from '../browse-by-switcher/browse-by-data-type';
@@ -20,7 +19,7 @@ import { BrowseByDataType } from '../browse-by-switcher/browse-by-data-type';
2019
selector: '',
2120
template: '<span id="BrowseByTestComponent"></span>',
2221
})
23-
class BrowseByTestComponent extends AbstractBrowseByTypeComponent {
22+
class BrowseByTestComponent {
2423
}
2524

2625
class TestBrowseByPageBrowseDefinition extends BrowseDefinition {

src/app/browse-by/browse-by-switcher/browse-by-decorator.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1+
import { Component } from '@angular/core';
12
import { hasNoValue } from '../../shared/empty.util';
23
import { DEFAULT_THEME, resolveTheme } from '../../shared/object-collection/shared/listable-object/listable-object.decorator';
3-
import { AbstractBrowseByTypeComponent } from '../abstract-browse-by-type.component';
44
import { Context } from '../../core/shared/context.model';
55
import { GenericConstructor } from '../../core/shared/generic-constructor';
66
import { BrowseByDataType } from './browse-by-data-type';
77

88
export const DEFAULT_BROWSE_BY_TYPE = BrowseByDataType.Metadata;
99
export const DEFAULT_BROWSE_BY_CONTEXT = Context.Any;
1010

11-
const map: Map<BrowseByDataType, Map<Context, Map<string, GenericConstructor<AbstractBrowseByTypeComponent>>>> = new Map();
11+
const map: Map<BrowseByDataType, Map<Context, Map<string, GenericConstructor<Component>>>> = new Map();
1212

1313
/**
1414
* Decorator used for rendering Browse-By pages by type
@@ -41,12 +41,12 @@ export function rendersBrowseBy(browseByType: BrowseByDataType, context = DEFAUL
4141
* @param context The context to match
4242
* @param theme the theme to match
4343
*/
44-
export function getComponentByBrowseByType(browseByType: BrowseByDataType, context: Context, theme: string): GenericConstructor<AbstractBrowseByTypeComponent> {
45-
let contextMap: Map<Context, Map<string, GenericConstructor<AbstractBrowseByTypeComponent>>> = map.get(browseByType);
44+
export function getComponentByBrowseByType(browseByType: BrowseByDataType, context: Context, theme: string): GenericConstructor<Component> {
45+
let contextMap: Map<Context, Map<string, GenericConstructor<Component>>> = map.get(browseByType);
4646
if (hasNoValue(contextMap)) {
4747
contextMap = map.get(DEFAULT_BROWSE_BY_TYPE);
4848
}
49-
let themeMap: Map<string, GenericConstructor<AbstractBrowseByTypeComponent>> = contextMap.get(context);
49+
let themeMap: Map<string, GenericConstructor<Component>> = contextMap.get(context);
5050
if (hasNoValue(themeMap)) {
5151
themeMap = contextMap.get(DEFAULT_BROWSE_BY_CONTEXT);
5252
}

src/app/browse-by/browse-by-switcher/browse-by-switcher.component.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import { ValueListBrowseDefinition } from '../../core/shared/value-list-browse-d
88
import { NonHierarchicalBrowseDefinition } from '../../core/shared/non-hierarchical-browse-definition';
99
import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
1010
import { DynamicComponentLoaderDirective } from '../../shared/abstract-component-loader/dynamic-component-loader.directive';
11-
import { AbstractBrowseByTypeComponent } from '../abstract-browse-by-type.component';
1211
import { BrowseByDataType } from './browse-by-data-type';
1312

1413
@rendersBrowseBy('BrowseBySwitcherComponent' as BrowseByDataType)
@@ -17,7 +16,7 @@ import { BrowseByDataType } from './browse-by-data-type';
1716
selector: '',
1817
template: '<span id="BrowseByTestComponent"></span>',
1918
})
20-
class BrowseByTestComponent extends AbstractBrowseByTypeComponent {
19+
class BrowseByTestComponent {
2120
}
2221

2322
describe('BrowseBySwitcherComponent', () => {

src/app/browse-by/browse-by-switcher/browse-by-switcher.component.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@ import { Component, Input } from '@angular/core';
22
import { getComponentByBrowseByType } from './browse-by-decorator';
33
import { GenericConstructor } from '../../core/shared/generic-constructor';
44
import { AbstractComponentLoaderComponent } from '../../shared/abstract-component-loader/abstract-component-loader.component';
5-
import { AbstractBrowseByTypeComponent } from '../abstract-browse-by-type.component';
65
import { BrowseByDataType } from './browse-by-data-type';
76
import { Context } from '../../core/shared/context.model';
87

98
@Component({
109
selector: 'ds-browse-by-switcher',
1110
templateUrl: '../../shared/abstract-component-loader/abstract-component-loader.component.html'
1211
})
13-
export class BrowseBySwitcherComponent extends AbstractComponentLoaderComponent<AbstractBrowseByTypeComponent> {
12+
export class BrowseBySwitcherComponent extends AbstractComponentLoaderComponent<Component> {
1413

1514
@Input() context: Context;
1615

@@ -26,7 +25,7 @@ export class BrowseBySwitcherComponent extends AbstractComponentLoaderComponent<
2625
'browseByType',
2726
];
2827

29-
public getComponent(): GenericConstructor<AbstractBrowseByTypeComponent> {
28+
public getComponent(): GenericConstructor<Component> {
3029
return getComponentByBrowseByType(this.browseByType, this.context, this.themeService.getThemeName());
3130
}
3231

src/app/browse-by/browse-by-taxonomy-page/browse-by-taxonomy-page.component.ts

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import { Component, OnInit, OnDestroy } from '@angular/core';
1+
import { Component, OnInit, OnDestroy, Input } from '@angular/core';
22
import { VocabularyOptions } from '../../core/submission/vocabularies/models/vocabulary-options.model';
33
import { VocabularyEntryDetail } from '../../core/submission/vocabularies/models/vocabulary-entry-detail.model';
44
import { ActivatedRoute } from '@angular/router';
5-
import { Observable } from 'rxjs';
5+
import { Observable, Subscription } from 'rxjs';
66
import { BrowseDefinition } from '../../core/shared/browse-definition.model';
77
import { rendersBrowseBy } from '../browse-by-switcher/browse-by-decorator';
88
import { map } from 'rxjs/operators';
99
import { HierarchicalBrowseDefinition } from '../../core/shared/hierarchical-browse-definition.model';
10-
import { AbstractBrowseByTypeComponent } from '../abstract-browse-by-type.component';
1110
import { BrowseByDataType } from '../browse-by-switcher/browse-by-data-type';
11+
import { Context } from '../../core/shared/context.model';
1212

1313
@Component({
1414
selector: 'ds-browse-by-taxonomy-page',
@@ -19,7 +19,17 @@ import { BrowseByDataType } from '../browse-by-switcher/browse-by-data-type';
1919
* Component for browsing items by metadata in a hierarchical controlled vocabulary
2020
*/
2121
@rendersBrowseBy(BrowseByDataType.Hierarchy)
22-
export class BrowseByTaxonomyPageComponent extends AbstractBrowseByTypeComponent implements OnInit, OnDestroy {
22+
export class BrowseByTaxonomyPageComponent implements OnInit, OnDestroy {
23+
24+
/**
25+
* The optional context
26+
*/
27+
@Input() context: Context;
28+
29+
/**
30+
* The {@link BrowseByDataType} of this Component
31+
*/
32+
@Input() browseByType: BrowseByDataType;
2333

2434
/**
2535
* The {@link VocabularyOptions} object
@@ -56,10 +66,14 @@ export class BrowseByTaxonomyPageComponent extends AbstractBrowseByTypeComponent
5666
*/
5767
browseDefinition$: Observable<BrowseDefinition>;
5868

69+
/**
70+
* Subscriptions to track
71+
*/
72+
subs: Subscription[] = [];
73+
5974
public constructor(
6075
protected route: ActivatedRoute,
6176
) {
62-
super();
6377
}
6478

6579
ngOnInit(): void {
@@ -108,4 +122,7 @@ export class BrowseByTaxonomyPageComponent extends AbstractBrowseByTypeComponent
108122
};
109123
}
110124

125+
ngOnDestroy(): void {
126+
this.subs.forEach((sub: Subscription) => sub.unsubscribe());
127+
}
111128
}

0 commit comments

Comments
 (0)