Skip to content

Commit d298ba3

Browse files
committed
[DSC-747] add MetadataFilter interface
1 parent b6840e8 commit d298ba3

2 files changed

Lines changed: 20 additions & 12 deletions

File tree

src/app/core/data/bitstream-data.service.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.util
3030
import { PageInfo } from '../shared/page-info.model';
3131
import { RequestParam } from '../cache/models/request-param.model';
3232

33+
export interface MetadataFilter {
34+
metadataName: string;
35+
metadataValue: string;
36+
}
37+
3338
/**
3439
* A service to retrieve {@link Bitstream}s from the REST API
3540
*/
@@ -191,7 +196,8 @@ export class BitstreamDataService extends DataService<Bitstream> {
191196
*
192197
* @param uuid The item UUID to retrieve bitstreams from
193198
* @param bundlename Bundle type of the bitstreams
194-
* @param metadataFilter Array of object we want to filter by
199+
* @param metadataFilters Array of object we want to filter by
200+
* @param options The {@link FindListOptions} for the request
195201
* @param useCachedVersionIfAvailable If this is true, the request will only be sent if there's
196202
* no valid cached version. Defaults to true
197203
* @param reRequestOnStale Whether or not the request should automatically be re-
@@ -202,7 +208,7 @@ export class BitstreamDataService extends DataService<Bitstream> {
202208
findByItem(
203209
uuid: string,
204210
bundlename: string,
205-
metadataFilter: any,
211+
metadataFilters: MetadataFilter[],
206212
options: FindListOptions,
207213
useCachedVersionIfAvailable = true,
208214
reRequestOnStale = true,
@@ -212,10 +218,9 @@ export class BitstreamDataService extends DataService<Bitstream> {
212218
searchParams.push(new RequestParam('uuid', uuid));
213219
searchParams.push(new RequestParam('name', bundlename));
214220

215-
216-
Object.keys(metadataFilter).forEach(key => {
217-
searchParams.push(new RequestParam('filterMetadata', key));
218-
searchParams.push(new RequestParam('filterMetadataValue', metadataFilter[key]));
221+
metadataFilters.forEach((entry: MetadataFilter) => {
222+
searchParams.push(new RequestParam('filterMetadata', entry.metadataName));
223+
searchParams.push(new RequestParam('filterMetadataValue', entry.metadataValue));
219224
});
220225

221226
const hrefObs = this.getSearchByHref(

src/app/cris-layout/cris-layout-matrix/cris-layout-box-container/boxes/metadata/rendering-types/bitstream-rendering-model.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import { map } from 'rxjs/operators';
66
import { TranslateService } from '@ngx-translate/core';
77

88
import { Bitstream } from '../../../../../../core/shared/bitstream.model';
9-
import { hasValue, isEmpty } from '../../../../../../shared/empty.util';
9+
import { hasValue, isNotEmpty } from '../../../../../../shared/empty.util';
1010
import { getFirstCompletedRemoteData } from '../../../../../../core/shared/operators';
11-
import { BitstreamDataService } from '../../../../../../core/data/bitstream-data.service';
11+
import { BitstreamDataService, MetadataFilter } from '../../../../../../core/data/bitstream-data.service';
1212
import { Item } from '../../../../../../core/shared/item.model';
1313
import { LayoutField } from '../../../../../../core/layout/models/box.model';
1414
import { RenderingTypeStructuredModelComponent } from './rendering-type-structured.model';
@@ -116,13 +116,16 @@ export abstract class BitstreamRenderingModelComponent extends RenderingTypeStru
116116
* @param options The {@link FindListOptions} for the request
117117
*/
118118
getBitstreamsByItem(options?: FindListOptions): Observable<PaginatedList<Bitstream>> {
119-
let filter = {};
120-
if (!isEmpty(this.field.bitstream.metadataValue)) {
121-
filter = { [this.field.bitstream.metadataField]: this.field.bitstream.metadataValue };
119+
let filters: MetadataFilter[] = [];
120+
if (isNotEmpty(this.field.bitstream.metadataValue)) {
121+
filters.push({
122+
metadataName: this.field.bitstream.metadataField,
123+
metadataValue: this.field.bitstream.metadataValue
124+
});
122125
}
123126

124127
return this.bitstreamDataService
125-
.findByItem(this.item.uuid, this.field.bitstream.bundle, filter, options, false, false, followLink('thumbnail'))
128+
.findByItem(this.item.uuid, this.field.bitstream.bundle, filters, options, false, false, followLink('thumbnail'))
126129
.pipe(
127130
getFirstCompletedRemoteData(),
128131
map((response: RemoteData<PaginatedList<Bitstream>>) => {

0 commit comments

Comments
 (0)