solved issues with browse pages

This commit is contained in:
lotte
2019-07-18 16:28:07 +02:00
parent 5c74c0221a
commit aff3f3df03
16 changed files with 29 additions and 33 deletions

View File

@@ -342,7 +342,7 @@ describe('ItemComponent', () => {
id: '123',
leftItem: createSuccessfulRemoteDataObject$(mockItem),
rightItem: createSuccessfulRemoteDataObject$(relatedItem),
relationshipType: createSuccessfulRemoteDataObject$new RelationshipType())
relationshipType: createSuccessfulRemoteDataObject$(new RelationshipType())
})
]));
mockItem.metadata[metadataField] = [

View File

@@ -1,10 +1,12 @@
import { autoserialize, autoserializeAs } from 'cerialize';
import { autoserialize, inheritSerialization } from 'cerialize';
import { MetadataMap } from '../core/shared/metadata.models';
import { ListableObject } from '../shared/object-collection/shared/listable-object.model';
import { NormalizedObject } from '../core/cache/models/normalized-object.model';
/**
* Represents a normalized version of a search result object of a certain DSpaceObject
*/
@inheritSerialization(NormalizedObject)
export class NormalizedSearchResult implements ListableObject {
/**
* The UUID of the DSpaceObject that was found

View File

@@ -1,7 +1,6 @@
import { AuthStatus } from './auth-status.model';
import { autoserialize, autoserializeAs, inheritSerialization } from 'cerialize';
import { mapsTo, relationship } from '../../cache/builders/build-decorators';
import { ResourceType } from '../../shared/resource-type';
import { NormalizedObject } from '../../cache/models/normalized-object.model';
import { IDToUUIDSerializer } from '../../cache/id-to-uuid-serializer';
import { EPerson } from '../../eperson/models/eperson.model';

View File

@@ -1,8 +1,9 @@
import { Injectable } from '@angular/core';
import { Observable, of as observableOf } from 'rxjs';
import { distinctUntilChanged, map, startWith, take } from 'rxjs/operators';
import { distinctUntilChanged, map, startWith } from 'rxjs/operators';
import {
ensureArrayHasValue, hasValue,
ensureArrayHasValue,
hasValue,
hasValueOperator,
isEmpty,
isNotEmpty,
@@ -23,7 +24,9 @@ import { BrowseEntry } from '../shared/browse-entry.model';
import { HALEndpointService } from '../shared/hal-endpoint.service';
import {
configureRequest,
filterSuccessfulResponses, getBrowseDefinitionLinks, getFirstOccurrence,
filterSuccessfulResponses,
getBrowseDefinitionLinks,
getFirstOccurrence,
getRemoteDataPayload,
getRequestFromRequestHref
} from '../shared/operators';
@@ -32,7 +35,6 @@ import { Item } from '../shared/item.model';
import { DSpaceObject } from '../shared/dspace-object.model';
import { BrowseEntrySearchOptions } from './browse-entry-search-options.model';
import { GenericSuccessResponse } from '../cache/response.models';
import { RequestEntry } from '../data/request.reducer';
/**
* The service handling all browse requests

View File

@@ -5,7 +5,6 @@ import { mapsTo, relationship } from '../../builders/build-decorators';
import { NormalizedDSpaceObject } from '../normalized-dspace-object.model';
import { NormalizedObject } from '../normalized-object.model';
import { IDToUUIDSerializer } from '../../id-to-uuid-serializer';
import { NormalizedItemType } from './normalized-item-type.model';
import { ItemType } from '../../../shared/item-relationships/item-type.model';
/**

View File

@@ -1,11 +1,10 @@
import { autoserialize, autoserializeAs, inheritSerialization } from 'cerialize';
import { Relationship } from '../../../shared/item-relationships/relationship.model';
import { ResourceType } from '../../../shared/resource-type';
import { mapsTo, relationship } from '../../builders/build-decorators';
import { NormalizedObject } from '../normalized-object.model';
import { IDToUUIDSerializer } from '../../id-to-uuid-serializer';
import { NormalizedRelationshipType } from './normalized-relationship-type.model';
import { RelationshipType } from '../../../shared/item-relationships/relationship-type.model';
import { Item } from '../../../shared/item.model';
/**
* Normalized model class for a DSpace Relationship
@@ -24,14 +23,14 @@ export class NormalizedRelationship extends NormalizedObject<Relationship> {
* The item to the left of this relationship
*/
@autoserialize
@relationship(ResourceType.Item, false)
@relationship(Item, false)
leftItem: string;
/**
* The item to the right of this relationship
*/
@autoserialize
@relationship(ResourceType.Item, false)
@relationship(Item, false)
rightItem: string;
/**

View File

@@ -2,7 +2,6 @@ import { autoserialize, inheritSerialization } from 'cerialize';
import { mapsTo } from '../builders/build-decorators';
import { NormalizedDSpaceObject } from './normalized-dspace-object.model';
import { License } from '../../shared/license.model';
import { ResourceType } from '../../shared/resource-type';
/**
* Normalized model class for a Collection License

View File

@@ -5,7 +5,6 @@ import { mapsTo } from '../builders/build-decorators';
import { NormalizedObject } from './normalized-object.model';
import { IDToUUIDSerializer } from '../id-to-uuid-serializer';
import { ActionType } from './action-type.model';
import { ResourceType } from '../../shared/resource-type';
/**
* Normalized model class for a Resource Policy

View File

@@ -100,7 +100,6 @@ import { NormalizedSubmissionFormsModel } from './config/models/normalized-confi
import { NormalizedSubmissionSectionModel } from './config/models/normalized-config-submission-section.model';
import { NormalizedAuthStatus } from './auth/models/normalized-auth-status.model';
import { NormalizedAuthorityValue } from './integration/models/normalized-authority-value.model';
import { BrowseEntry } from './shared/browse-entry.model';
import { RoleService } from './roles/role.service';
import { MyDSpaceGuard } from '../+my-dspace-page/my-dspace.guard';
import { MyDSpaceResponseParsingService } from './data/mydspace-response-parsing.service';
@@ -115,6 +114,8 @@ import { NormalizedRelationshipType } from './cache/models/items/normalized-rela
import { NormalizedItemType } from './cache/models/items/normalized-item-type.model';
import { MetadatafieldParsingService } from './data/metadatafield-parsing.service';
import { NormalizedSubmissionUploadsModel } from './config/models/normalized-config-submission-uploads.model';
import { NormalizedBrowseEntry } from './shared/normalized-browse-entry.model';
import { BrowseDefinition } from './shared/browse-definition.model';
const IMPORTS = [
CommonModule,
@@ -237,7 +238,8 @@ export const normalizedModels =
NormalizedSubmissionUploadsModel,
NormalizedAuthStatus,
NormalizedAuthorityValue,
BrowseEntry,
NormalizedBrowseEntry,
BrowseDefinition,
NormalizedClaimedTask,
NormalizedTaskObject,
NormalizedPoolTask,

View File

@@ -3,17 +3,13 @@ import { GLOBAL_CONFIG } from '../../../config';
import { GlobalConfig } from '../../../config/global-config.interface';
import { isNotEmpty } from '../../shared/empty.util';
import { ObjectCacheService } from '../cache/object-cache.service';
import {
ErrorResponse,
GenericSuccessResponse,
RestResponse
} from '../cache/response.models';
import { ErrorResponse, GenericSuccessResponse, RestResponse } from '../cache/response.models';
import { DSpaceRESTV2Response } from '../dspace-rest-v2/dspace-rest-v2-response.model';
import { DSpaceRESTv2Serializer } from '../dspace-rest-v2/dspace-rest-v2.serializer';
import { BrowseEntry } from '../shared/browse-entry.model';
import { BaseResponseParsingService } from './base-response-parsing.service';
import { ResponseParsingService } from './parsing.service';
import { RestRequest } from './request.models';
import { NormalizedBrowseEntry } from '../shared/normalized-browse-entry.model';
@Injectable()
export class BrowseEntriesResponseParsingService extends BaseResponseParsingService implements ResponseParsingService {
@@ -30,7 +26,7 @@ export class BrowseEntriesResponseParsingService extends BaseResponseParsingServ
if (isNotEmpty(data.payload)) {
let browseEntries = [];
if (isNotEmpty(data.payload._embedded) && Array.isArray(data.payload._embedded[Object.keys(data.payload._embedded)[0]])) {
const serializer = new DSpaceRESTv2Serializer(BrowseEntry);
const serializer = new DSpaceRESTv2Serializer(NormalizedBrowseEntry);
browseEntries = serializer.deserializeArray(data.payload._embedded[Object.keys(data.payload._embedded)[0]]);
}
return new GenericSuccessResponse(browseEntries, data.statusCode, data.statusText, this.processPageInfo(data.payload));

View File

@@ -113,7 +113,6 @@ describe('BrowseResponseParsingService', () => {
}
],
defaultSortOrder: 'ASC',
type: 'browse',
metadataKeys: [
'dc.date.issued'
],
@@ -139,7 +138,6 @@ describe('BrowseResponseParsingService', () => {
}
],
defaultSortOrder: 'ASC',
type: 'browse',
metadataKeys: [
'dc.contributor.*',
'dc.creator'
@@ -173,6 +171,5 @@ describe('BrowseResponseParsingService', () => {
const response = service.parse(validRequest, validResponse);
expect((response as GenericSuccessResponse<BrowseDefinition[]>).payload).toEqual(definitions);
});
});
});

View File

@@ -1,4 +1,4 @@
import { autoserialize, deserialize } from 'cerialize';
import { autoserialize, deserialize, inheritSerialization } from 'cerialize';
import { mapsTo, relationship } from '../cache/builders/build-decorators';
import { MetadataField } from './metadata-field.model';
import { NormalizedObject } from '../cache/models/normalized-object.model';
@@ -9,6 +9,7 @@ import { MetadataSchema } from './metadata-schema.model';
* Class the represents a normalized metadata field
*/
@mapsTo(MetadataField)
@inheritSerialization(NormalizedObject)
export class NormalizedMetadataField extends NormalizedObject<MetadataField> implements ListableObject {
/**

View File

@@ -1,14 +1,14 @@
import { autoserialize } from 'cerialize';
import { autoserialize, inheritSerialization } from 'cerialize';
import { NormalizedObject } from '../cache/models/normalized-object.model';
import { mapsTo } from '../cache/builders/build-decorators';
import { ListableObject } from '../../shared/object-collection/shared/listable-object.model';
import { ResourceType } from '../shared/resource-type';
import { MetadataSchema } from './metadata-schema.model';
/**
* Normalized class for a DSpace MetadataSchema
*/
@mapsTo(MetadataSchema)
@inheritSerialization(NormalizedObject)
export class NormalizedMetadataSchema extends NormalizedObject<MetadataSchema> implements ListableObject {
/**
* The unique identifier for this schema

View File

@@ -4,6 +4,8 @@ import { ResourceType } from './resource-type';
import { TypedObject } from '../cache/object-cache.reducer';
export class BrowseDefinition implements TypedObject {
static type = new ResourceType('browse');
@autoserialize
id: string;

View File

@@ -1,5 +1,4 @@
import { autoserialize, autoserializeAs } from 'cerialize';
import { ResourceType } from './resource-type';
import { autoserialize, autoserializeAs, inheritSerialization } from 'cerialize';
import { BrowseEntry } from './browse-entry.model';
import { NormalizedObject } from '../cache/models/normalized-object.model';
import { mapsTo } from '../cache/builders/build-decorators';
@@ -9,6 +8,7 @@ import { mapsTo } from '../cache/builders/build-decorators';
* This class is not normalized because browse entries do not have self links
*/
@mapsTo(BrowseEntry)
@inheritSerialization(NormalizedObject)
export class NormalizedBrowseEntry extends NormalizedObject<BrowseEntry> {
/**
* The authority string of this browse entry

View File

@@ -27,17 +27,16 @@ import { SubmissionJsonPatchOperationsService } from '../../../core/submission/s
import { SubmissionJsonPatchOperationsServiceStub } from '../../../shared/testing/submission-json-patch-operations-service-stub';
import { JsonPatchOperationsBuilder } from '../../../core/json-patch/builder/json-patch-operations-builder';
import { JsonPatchOperationPathCombiner } from '../../../core/json-patch/builder/json-patch-operation-path-combiner';
import { Community } from '../../../core/shared/community.model';
import { PaginatedList } from '../../../core/data/paginated-list';
import { PageInfo } from '../../../core/shared/page-info.model';
import { Collection } from '../../../core/shared/collection.model';
import {
createSuccessfulRemoteDataObject$,
createTestComponent
} from '../../../shared/testing/utils';
import { cold } from 'jasmine-marbles';
import { SearchResult } from '../../../+search-page/search-result.model';
import { SearchService } from '../../../+search-page/search-service/search.service';
import { RemoteData } from '../../../core/data/remote-data';
const mockCommunity1Collection1 = Object.assign(new Collection(), {
name: 'Community 1-Collection 1',