diff --git a/src/app/+admin/admin-registries/admin-registries.module.ts b/src/app/+admin/admin-registries/admin-registries.module.ts
index fb9dcdaa63..8ff42646ac 100644
--- a/src/app/+admin/admin-registries/admin-registries.module.ts
+++ b/src/app/+admin/admin-registries/admin-registries.module.ts
@@ -6,10 +6,12 @@ import { MetadataSchemaComponent } from './metadata-schema/metadata-schema.compo
import { RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { BitstreamFormatsComponent } from './bitstream-formats/bitstream-formats.component';
+import { SharedModule } from '../../shared/shared.module';
@NgModule({
imports: [
CommonModule,
+ SharedModule,
RouterModule,
TranslateModule,
AdminRegistriesRoutingModule
diff --git a/src/app/+admin/admin-registries/bitstream-formats/bitstream-formats.component.html b/src/app/+admin/admin-registries/bitstream-formats/bitstream-formats.component.html
index 87b3ba85eb..f3d6e47331 100644
--- a/src/app/+admin/admin-registries/bitstream-formats/bitstream-formats.component.html
+++ b/src/app/+admin/admin-registries/bitstream-formats/bitstream-formats.component.html
@@ -6,24 +6,33 @@
{{'admin.registries.bitstream-formats.description' | translate}}
-
+
+
+
diff --git a/src/app/+admin/admin-registries/bitstream-formats/bitstream-formats.component.ts b/src/app/+admin/admin-registries/bitstream-formats/bitstream-formats.component.ts
index d64b48d4c5..d54d2c5e96 100644
--- a/src/app/+admin/admin-registries/bitstream-formats/bitstream-formats.component.ts
+++ b/src/app/+admin/admin-registries/bitstream-formats/bitstream-formats.component.ts
@@ -4,6 +4,7 @@ import { Observable } from 'rxjs/Observable';
import { RemoteData } from '../../../core/data/remote-data';
import { PaginatedList } from '../../../core/data/paginated-list';
import { BitstreamFormat } from '../../../core/registry/mock-bitstream-format.model';
+import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
@Component({
selector: 'ds-bitstream-formats',
@@ -12,8 +13,21 @@ import { BitstreamFormat } from '../../../core/registry/mock-bitstream-format.mo
export class BitstreamFormatsComponent {
bitstreamFormats: Observable>>;
+ config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
+ id: 'registry-bitstreamformats-pagination',
+ pageSize: 20
+ });
- constructor(registryService: RegistryService) {
- this.bitstreamFormats = registryService.getBitstreamFormats();
+ constructor(private registryService: RegistryService) {
+ this.updateFormats();
+ }
+
+ onPageChange(event) {
+ this.config.currentPage = event;
+ this.updateFormats();
+ }
+
+ private updateFormats() {
+ this.bitstreamFormats = this.registryService.getBitstreamFormats(this.config);
}
}
diff --git a/src/app/+admin/admin-registries/metadata-registry/metadata-registry.component.html b/src/app/+admin/admin-registries/metadata-registry/metadata-registry.component.html
index 27f761581c..67cfa52601 100644
--- a/src/app/+admin/admin-registries/metadata-registry/metadata-registry.component.html
+++ b/src/app/+admin/admin-registries/metadata-registry/metadata-registry.component.html
@@ -6,24 +6,33 @@
{{'admin.registries.metadata.description' | translate}}
-
+
+
+
diff --git a/src/app/+admin/admin-registries/metadata-registry/metadata-registry.component.ts b/src/app/+admin/admin-registries/metadata-registry/metadata-registry.component.ts
index 3158c4bb46..2baed2ef6e 100644
--- a/src/app/+admin/admin-registries/metadata-registry/metadata-registry.component.ts
+++ b/src/app/+admin/admin-registries/metadata-registry/metadata-registry.component.ts
@@ -4,6 +4,7 @@ import { Observable } from 'rxjs/Observable';
import { RemoteData } from '../../../core/data/remote-data';
import { PaginatedList } from '../../../core/data/paginated-list';
import { MetadataSchema } from '../../../core/metadata/metadataschema.model';
+import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
@Component({
selector: 'ds-metadata-registry',
@@ -12,9 +13,22 @@ import { MetadataSchema } from '../../../core/metadata/metadataschema.model';
export class MetadataRegistryComponent {
metadataSchemas: Observable>>;
+ config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
+ id: 'registry-metadataschemas-pagination',
+ pageSize: 10
+ });
constructor(private registryService: RegistryService) {
- this.metadataSchemas = this.registryService.getMetadataSchemas();
+ this.updateSchemas();
+ }
+
+ onPageChange(event) {
+ this.config.currentPage = event;
+ this.updateSchemas();
+ }
+
+ private updateSchemas() {
+ this.metadataSchemas = this.registryService.getMetadataSchemas(this.config);
}
}
diff --git a/src/app/+admin/admin-registries/metadata-schema/metadata-schema.component.html b/src/app/+admin/admin-registries/metadata-schema/metadata-schema.component.html
index f07a6cc670..f9e460e717 100644
--- a/src/app/+admin/admin-registries/metadata-schema/metadata-schema.component.html
+++ b/src/app/+admin/admin-registries/metadata-schema/metadata-schema.component.html
@@ -7,22 +7,31 @@
{{'admin.registries.schema.description' | translate:namespace }}
{{'admin.registries.schema.fields.head' | translate}}
-
+
+
+
diff --git a/src/app/+admin/admin-registries/metadata-schema/metadata-schema.component.ts b/src/app/+admin/admin-registries/metadata-schema/metadata-schema.component.ts
index 7e6085a091..6b0e4b16c6 100644
--- a/src/app/+admin/admin-registries/metadata-schema/metadata-schema.component.ts
+++ b/src/app/+admin/admin-registries/metadata-schema/metadata-schema.component.ts
@@ -6,6 +6,8 @@ import { RemoteData } from '../../../core/data/remote-data';
import { PaginatedList } from '../../../core/data/paginated-list';
import { MetadataField } from '../../../core/metadata/metadatafield.model';
import { MetadataSchema } from '../../../core/metadata/metadataschema.model';
+import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
+import { SortOptions } from '../../../core/cache/models/sort-options.model';
@Component({
selector: 'ds-metadata-schema',
@@ -17,6 +19,10 @@ export class MetadataSchemaComponent implements OnInit {
metadataSchema: Observable>;
metadataFields: Observable>>;
+ config: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
+ id: 'registry-metadatafields-pagination',
+ pageSize: 20
+ });
constructor(private registryService: RegistryService, private route: ActivatedRoute) {
@@ -30,10 +36,19 @@ export class MetadataSchemaComponent implements OnInit {
initialize(params) {
this.metadataSchema = this.registryService.getMetadataSchemaByName(params.schemaName);
- this.metadataSchema.subscribe((value) => {
- const schema = value.payload;
- // this.metadataFields = this.registryService.getMetadataFieldsBySchema(schema);
- this.namespace = { namespace: value.payload.namespace };
+ this.updateFields();
+ }
+
+ onPageChange(event) {
+ this.config.currentPage = event;
+ this.updateFields();
+ }
+
+ private updateFields() {
+ this.metadataSchema.subscribe((schemaData) => {
+ const schema = schemaData.payload;
+ this.metadataFields = this.registryService.getMetadataFieldsBySchema(schema, this.config);
+ this.namespace = { namespace: schemaData.payload.namespace };
});
}
diff --git a/src/app/core/cache/response-cache.models.ts b/src/app/core/cache/response-cache.models.ts
index 94c0ccc58c..13987cdf4a 100644
--- a/src/app/core/cache/response-cache.models.ts
+++ b/src/app/core/cache/response-cache.models.ts
@@ -7,6 +7,8 @@ import { FacetValue } from '../../+search-page/search-service/facet-value.model'
import { SearchFilterConfig } from '../../+search-page/search-service/search-filter-config.model';
import { RegistryMetadataschemasResponse } from '../registry/registry-metadataschemas-response.model';
import { MetadataSchema } from '../metadata/metadataschema.model';
+import { RegistryMetadatafieldsResponse } from '../registry/registry-metadatafields-response.model';
+import { RegistryBitstreamformatsResponse } from '../registry/registry-bitstreamformats-response.model';
/* tslint:disable:max-classes-per-file */
export class RestResponse {
@@ -36,6 +38,26 @@ export class RegistryMetadataschemasSuccessResponse extends RestResponse {
}
}
+export class RegistryMetadatafieldsSuccessResponse extends RestResponse {
+ constructor(
+ public metadatafieldsResponse: RegistryMetadatafieldsResponse,
+ public statusCode: string,
+ public pageInfo?: PageInfo
+ ) {
+ super(true, statusCode);
+ }
+}
+
+export class RegistryBitstreamformatsSuccessResponse extends RestResponse {
+ constructor(
+ public bitstreamformatsResponse: RegistryBitstreamformatsResponse,
+ public statusCode: string,
+ public pageInfo?: PageInfo
+ ) {
+ super(true, statusCode);
+ }
+}
+
export class MetadataschemaSuccessResponse extends RestResponse {
constructor(
public metadataschema: MetadataSchema,
diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts
index 82307921ef..4e99bcdeeb 100644
--- a/src/app/core/core.module.ts
+++ b/src/app/core/core.module.ts
@@ -47,6 +47,8 @@ import { FacetConfigResponseParsingService } from './data/facet-config-response-
import { RegistryService } from './registry/registry.service';
import { RegistryMetadataschemasResponseParsingService } from './data/registry-metadataschemas-response-parsing.service';
import { MetadataschemaParsingService } from './data/metadataschema-parsing.service';
+import { RegistryMetadatafieldsResponseParsingService } from './data/registry-metadatafields-response-parsing.service';
+import { RegistryBitstreamformatsResponseParsingService } from './data/registry-bitstreamformats-response-parsing.service';
const IMPORTS = [
CommonModule,
@@ -83,6 +85,8 @@ const PROVIDERS = [
FacetValueMapResponseParsingService,
FacetConfigResponseParsingService,
RegistryMetadataschemasResponseParsingService,
+ RegistryMetadatafieldsResponseParsingService,
+ RegistryBitstreamformatsResponseParsingService,
MetadataschemaParsingService,
DebugResponseParsingService,
SearchResponseParsingService,
diff --git a/src/app/core/data/registry-bitstreamformats-response-parsing.service.ts b/src/app/core/data/registry-bitstreamformats-response-parsing.service.ts
new file mode 100644
index 0000000000..d981a12719
--- /dev/null
+++ b/src/app/core/data/registry-bitstreamformats-response-parsing.service.ts
@@ -0,0 +1,25 @@
+import { RegistryBitstreamformatsSuccessResponse, RestResponse } from '../cache/response-cache.models';
+import { RegistryBitstreamformatsResponse } from '../registry/registry-bitstreamformats-response.model';
+import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
+import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
+import { RestRequest } from './request.models';
+import { DSOResponseParsingService } from './dso-response-parsing.service';
+import { ResponseParsingService } from './parsing.service';
+import { Injectable } from '@angular/core';
+
+@Injectable()
+export class RegistryBitstreamformatsResponseParsingService implements ResponseParsingService {
+ constructor(private dsoParser: DSOResponseParsingService) {
+ }
+
+ parse(request: RestRequest, data: DSpaceRESTV2Response): RestResponse {
+ const payload = data.payload;
+
+ const bitstreamformats = payload._embedded.bitstreamformats;
+ payload.bitstreamformats = bitstreamformats;
+
+ const deserialized = new DSpaceRESTv2Serializer(RegistryBitstreamformatsResponse).deserialize(payload);
+ return new RegistryBitstreamformatsSuccessResponse(deserialized, data.statusCode, this.dsoParser.processPageInfo(data.payload.page));
+ }
+
+}
diff --git a/src/app/core/data/registry-metadatafields-response-parsing.service.ts b/src/app/core/data/registry-metadatafields-response-parsing.service.ts
new file mode 100644
index 0000000000..2620916070
--- /dev/null
+++ b/src/app/core/data/registry-metadatafields-response-parsing.service.ts
@@ -0,0 +1,34 @@
+import {
+ RegistryMetadatafieldsSuccessResponse, RegistryMetadataschemasSuccessResponse,
+ RestResponse
+} from '../cache/response-cache.models';
+import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
+import { RestRequest } from './request.models';
+import { ResponseParsingService } from './parsing.service';
+import { RegistryMetadataschemasResponse } from '../registry/registry-metadataschemas-response.model';
+import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
+import { DSOResponseParsingService } from './dso-response-parsing.service';
+import { Injectable } from '@angular/core';
+import { forEach } from '@angular/router/src/utils/collection';
+import { RegistryMetadatafieldsResponse } from '../registry/registry-metadatafields-response.model';
+
+@Injectable()
+export class RegistryMetadatafieldsResponseParsingService implements ResponseParsingService {
+ constructor(private dsoParser: DSOResponseParsingService) {
+ }
+
+ parse(request: RestRequest, data: DSpaceRESTV2Response): RestResponse {
+ const payload = data.payload;
+
+ const metadatafields = payload._embedded.metadatafields;
+ metadatafields.forEach((field) => {
+ field.schema = field._embedded.schema;
+ });
+
+ payload.metadatafields = metadatafields;
+
+ const deserialized = new DSpaceRESTv2Serializer(RegistryMetadatafieldsResponse).deserialize(payload);
+ return new RegistryMetadatafieldsSuccessResponse(deserialized, data.statusCode, this.dsoParser.processPageInfo(data.payload.page));
+ }
+
+}
diff --git a/src/app/core/metadata/metadatafield.model.ts b/src/app/core/metadata/metadatafield.model.ts
index bf9921a1ce..77cecb927e 100644
--- a/src/app/core/metadata/metadatafield.model.ts
+++ b/src/app/core/metadata/metadatafield.model.ts
@@ -1,9 +1,20 @@
import { MetadataSchema } from './metadataschema.model';
+import { autoserialize } from 'cerialize';
+import { ListableObject } from '../../shared/object-collection/shared/listable-object.model';
-export class MetadataField {
+export class MetadataField implements ListableObject {
+ @autoserialize
self: string;
+
+ @autoserialize
element: string;
+
+ @autoserialize
qualifier: string;
- scopenote: string;
+
+ @autoserialize
+ scopeNote: string;
+
+ @autoserialize
schema: MetadataSchema;
}
diff --git a/src/app/core/registry/registry-bitstreamformats-response.model.ts b/src/app/core/registry/registry-bitstreamformats-response.model.ts
new file mode 100644
index 0000000000..81de379e9e
--- /dev/null
+++ b/src/app/core/registry/registry-bitstreamformats-response.model.ts
@@ -0,0 +1,14 @@
+import { autoserialize, autoserializeAs } from 'cerialize';
+import { PageInfo } from '../shared/page-info.model';
+import { BitstreamFormat } from '../shared/bitstream-format.model';
+
+export class RegistryBitstreamformatsResponse {
+ @autoserializeAs(BitstreamFormat)
+ bitstreamformats: BitstreamFormat[];
+
+ @autoserialize
+ page: PageInfo;
+
+ @autoserialize
+ self: string;
+}
diff --git a/src/app/core/registry/registry-metadatafields-response.model.ts b/src/app/core/registry/registry-metadatafields-response.model.ts
new file mode 100644
index 0000000000..19ec537dfb
--- /dev/null
+++ b/src/app/core/registry/registry-metadatafields-response.model.ts
@@ -0,0 +1,14 @@
+import { PageInfo } from '../shared/page-info.model';
+import { autoserialize, autoserializeAs } from 'cerialize';
+import { MetadataField } from '../metadata/metadatafield.model';
+
+export class RegistryMetadatafieldsResponse {
+ @autoserializeAs(MetadataField)
+ metadatafields: MetadataField[];
+
+ @autoserialize
+ page: PageInfo;
+
+ @autoserialize
+ self: string;
+}
diff --git a/src/app/core/registry/registry.service.ts b/src/app/core/registry/registry.service.ts
index 0c9ece4a71..4359284158 100644
--- a/src/app/core/registry/registry.service.ts
+++ b/src/app/core/registry/registry.service.ts
@@ -16,18 +16,27 @@ import { RequestService } from '../data/request.service';
import { ResponseCacheService } from '../cache/response-cache.service';
import { RegistryMetadataschemasResponse } from './registry-metadataschemas-response.model';
import { ResponseCacheEntry } from '../cache/response-cache.reducer';
-import { MetadataschemaSuccessResponse, RegistryMetadataschemasSuccessResponse } from '../cache/response-cache.models';
+import {
+ MetadataschemaSuccessResponse, RegistryBitstreamformatsSuccessResponse, RegistryMetadatafieldsSuccessResponse,
+ RegistryMetadataschemasSuccessResponse
+} from '../cache/response-cache.models';
import { HALEndpointService } from '../shared/hal-endpoint.service';
import { MetadataschemaParsingService } from '../data/metadataschema-parsing.service';
+import { Res } from 'awesome-typescript-loader/dist/checker/protocol';
+import { RegistryMetadatafieldsResponseParsingService } from '../data/registry-metadatafields-response-parsing.service';
+import { RegistryMetadatafieldsResponse } from './registry-metadatafields-response.model';
+import { isNotEmpty } from '../../shared/empty.util';
+import { URLCombiner } from '../url-combiner/url-combiner';
+import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
+import { RegistryBitstreamformatsResponseParsingService } from '../data/registry-bitstreamformats-response-parsing.service';
+import { RegistryBitstreamformatsResponse } from './registry-bitstreamformats-response.model';
@Injectable()
export class RegistryService {
private metadataSchemasPath = 'metadataschemas';
-
- metadataSchemas: MetadataSchema[];
- metadataFields: MetadataField[];
- bitstreamFormats: BitstreamFormat[];
+ private metadataFieldsPath = 'metadatafields';
+ private bitstreamFormatsPath = 'bitstreamformats';
constructor(protected responseCache: ResponseCacheService,
protected requestService: RequestService,
@@ -36,18 +45,8 @@ export class RegistryService {
}
- public getMetadataSchemas(): Observable>> {
- const requestObs = this.halService.getEndpoint(this.metadataSchemasPath).pipe(
- map((url: string) => {
- const request = new GetRequest(this.requestService.generateRequestId(), url);
- return Object.assign(request, {
- getResponseParser(): GenericConstructor {
- return RegistryMetadataschemasResponseParsingService;
- }
- });
- }),
- tap((request: RestRequest) => this.requestService.configure(request)),
- );
+ public getMetadataSchemas(pagination: PaginationComponentOptions): Observable>> {
+ const requestObs = this.getMetadataSchemasRequestObs(pagination);
const requestEntryObs = requestObs.pipe(
flatMap((request: RestRequest) => this.requestService.getByHref(request.href))
@@ -79,17 +78,12 @@ export class RegistryService {
}
public getMetadataSchemaByName(schemaName: string): Observable> {
- const requestObs = this.halService.getEndpoint(this.metadataSchemasPath).pipe(
- map((url: string) => {
- const request = new GetRequest(this.requestService.generateRequestId(), url);
- return Object.assign(request, {
- getResponseParser(): GenericConstructor {
- return RegistryMetadataschemasResponseParsingService;
- }
- });
- }),
- tap((request: RestRequest) => this.requestService.configure(request)),
- );
+ // Temporary pagination to get ALL metadataschemas until there's a rest api endpoint for fetching a specific schema
+ const pagination: PaginationComponentOptions = Object.assign(new PaginationComponentOptions(), {
+ id: 'all-metadatafields-pagination',
+ pageSize: 10000
+ });
+ const requestObs = this.getMetadataSchemasRequestObs(pagination);
const requestEntryObs = requestObs.pipe(
flatMap((request: RestRequest) => this.requestService.getByHref(request.href))
@@ -112,24 +106,129 @@ export class RegistryService {
return this.rdb.toRemoteDataObservable(requestEntryObs, responseCacheObs, metadataschemaObs);
}
- public getMetadataFieldsBySchema(schema: MetadataSchema): Observable>> {
- const pageInfo = new PageInfo();
- pageInfo.elementsPerPage = 10;
- pageInfo.currentPage = 1;
+ public getMetadataFieldsBySchema(schema: MetadataSchema, pagination: PaginationComponentOptions): Observable>> {
+ const requestObs = this.getMetadataFieldsRequestObs(pagination);
- const payload = new PaginatedList(pageInfo, this.metadataFields.filter((value) => value.schema === schema));
- const remoteData = new RemoteData(false, false, true, undefined, payload);
- return Observable.of(remoteData);
+ const requestEntryObs = requestObs.pipe(
+ flatMap((request: RestRequest) => this.requestService.getByHref(request.href))
+ );
+
+ const responseCacheObs = requestObs.pipe(
+ flatMap((request: RestRequest) => this.responseCache.get(request.href))
+ );
+
+ const rmrObs: Observable = responseCacheObs.pipe(
+ map((entry: ResponseCacheEntry) => entry.response),
+ map((response: RegistryMetadatafieldsSuccessResponse) => response.metadatafieldsResponse)
+ );
+
+ const metadatafieldsObs: Observable = rmrObs.pipe(
+ map((rmr: RegistryMetadatafieldsResponse) => rmr.metadatafields),
+ map((metadataFields: MetadataField[]) => metadataFields.filter((field) => field.schema.id === schema.id))
+ );
+
+ const pageInfoObs: Observable = responseCacheObs.pipe(
+ map((entry: ResponseCacheEntry) => entry.response),
+ map((response: RegistryMetadatafieldsSuccessResponse) => response.pageInfo)
+ );
+
+ const payloadObs = Observable.combineLatest(metadatafieldsObs, pageInfoObs, (metadatafields, pageInfo) => {
+ return new PaginatedList(pageInfo, metadatafields);
+ });
+
+ return this.rdb.toRemoteDataObservable(requestEntryObs, responseCacheObs, payloadObs);
}
- public getBitstreamFormats(): Observable>> {
- const pageInfo = new PageInfo();
- pageInfo.elementsPerPage = 10;
- pageInfo.currentPage = 1;
+ public getBitstreamFormats(pagination: PaginationComponentOptions): Observable>> {
+ const requestObs = this.getBitstreamFormatsRequestObs(pagination);
- const payload = new PaginatedList(pageInfo, this.bitstreamFormats);
- const remoteData = new RemoteData(false, false, true, undefined, payload);
- return Observable.of(remoteData);
+ const requestEntryObs = requestObs.pipe(
+ flatMap((request: RestRequest) => this.requestService.getByHref(request.href))
+ );
+
+ const responseCacheObs = requestObs.pipe(
+ flatMap((request: RestRequest) => this.responseCache.get(request.href))
+ );
+
+ const rbrObs: Observable = responseCacheObs.pipe(
+ map((entry: ResponseCacheEntry) => entry.response),
+ map((response: RegistryBitstreamformatsSuccessResponse) => response.bitstreamformatsResponse)
+ );
+
+ const bitstreamformatsObs: Observable = rbrObs.pipe(
+ map((rbr: RegistryBitstreamformatsResponse) => rbr.bitstreamformats)
+ );
+
+ const pageInfoObs: Observable = responseCacheObs.pipe(
+ map((entry: ResponseCacheEntry) => entry.response),
+ map((response: RegistryBitstreamformatsSuccessResponse) => response.pageInfo)
+ );
+
+ const payloadObs = Observable.combineLatest(bitstreamformatsObs, pageInfoObs, (bitstreamformats, pageInfo) => {
+ return new PaginatedList(pageInfo, bitstreamformats);
+ });
+
+ return this.rdb.toRemoteDataObservable(requestEntryObs, responseCacheObs, payloadObs);
+ }
+
+ private getMetadataSchemasRequestObs(pagination: PaginationComponentOptions): Observable {
+ return this.halService.getEndpoint(this.metadataSchemasPath).pipe(
+ map((url: string) => {
+ const args: string[] = [];
+ args.push(`size=${pagination.pageSize}`);
+ args.push(`page=${pagination.currentPage - 1}`);
+ if (isNotEmpty(args)) {
+ url = new URLCombiner(url, `?${args.join('&')}`).toString();
+ }
+ const request = new GetRequest(this.requestService.generateRequestId(), url);
+ return Object.assign(request, {
+ getResponseParser(): GenericConstructor {
+ return RegistryMetadataschemasResponseParsingService;
+ }
+ });
+ }),
+ tap((request: RestRequest) => this.requestService.configure(request)),
+ );
+ }
+
+ private getMetadataFieldsRequestObs(pagination: PaginationComponentOptions): Observable {
+ return this.halService.getEndpoint(this.metadataFieldsPath).pipe(
+ map((url: string) => {
+ const args: string[] = [];
+ args.push(`size=${pagination.pageSize}`);
+ args.push(`page=${pagination.currentPage - 1}`);
+ if (isNotEmpty(args)) {
+ url = new URLCombiner(url, `?${args.join('&')}`).toString();
+ }
+ const request = new GetRequest(this.requestService.generateRequestId(), url);
+ return Object.assign(request, {
+ getResponseParser(): GenericConstructor {
+ return RegistryMetadatafieldsResponseParsingService;
+ }
+ });
+ }),
+ tap((request: RestRequest) => this.requestService.configure(request)),
+ );
+ }
+
+ private getBitstreamFormatsRequestObs(pagination: PaginationComponentOptions): Observable {
+ return this.halService.getEndpoint(this.bitstreamFormatsPath).pipe(
+ map((url: string) => {
+ const args: string[] = [];
+ args.push(`size=${pagination.pageSize}`);
+ args.push(`page=${pagination.currentPage - 1}`);
+ if (isNotEmpty(args)) {
+ url = new URLCombiner(url, `?${args.join('&')}`).toString();
+ }
+ const request = new GetRequest(this.requestService.generateRequestId(), url);
+ return Object.assign(request, {
+ getResponseParser(): GenericConstructor {
+ return RegistryBitstreamformatsResponseParsingService;
+ }
+ });
+ }),
+ tap((request: RestRequest) => this.requestService.configure(request)),
+ );
}
}
diff --git a/src/app/shared/pagination/pagination.component.ts b/src/app/shared/pagination/pagination.component.ts
index 2fa70ddd18..7c7cf69bc7 100644
--- a/src/app/shared/pagination/pagination.component.ts
+++ b/src/app/shared/pagination/pagination.component.ts
@@ -207,8 +207,10 @@ export class PaginationComponent implements OnDestroy, OnInit {
this.pageSizeOptions = this.paginationOptions.pageSizeOptions;
this.currentPage = this.paginationOptions.currentPage;
this.pageSize = this.paginationOptions.pageSize;
- this.sortDirection = this.sortOptions.direction;
- this.sortField = this.sortOptions.field;
+ if (this.sortOptions) {
+ this.sortDirection = this.sortOptions.direction;
+ this.sortField = this.sortOptions.field;
+ }
this.currentQueryParams = {
pageId: this.id,
page: this.currentPage,