From dfe11431846872abce7bc750a751ab4cb184a633 Mon Sep 17 00:00:00 2001 From: lotte <lotte_hofstede@hotmail.com> Date: Thu, 10 Oct 2019 16:18:14 +0200 Subject: [PATCH] metadata representation --- .../publication/publication.component.ts | 4 +- ...etadata-representation-list.component.html | 6 +-- .../+my-dspace-page/my-dspace-page.module.ts | 3 +- .../my-dspace-results.component.html | 3 +- .../my-dspace-results.component.ts | 2 + src/app/+search-page/search-result.model.ts | 4 +- src/app/core/metadata/metadata-field.model.ts | 4 +- .../core/metadata/metadata-schema.model.ts | 4 +- src/app/core/shared/browse-entry.model.ts | 4 +- src/app/core/shared/dspace-object.model.ts | 4 +- src/app/core/shared/item.model.ts | 12 ++--- ...-search-result-grid-element.component.html | 2 +- ...-search-result-grid-element.component.html | 2 +- ...-search-result-grid-element.component.html | 2 +- ...-search-result-grid-element.component.html | 2 +- ...-search-result-grid-element.component.html | 2 +- ...-search-result-grid-element.component.html | 2 +- ...rgunit-item-page-list-element.component.ts | 3 -- .../project/project-list-element.component.ts | 6 +-- ...ct-search-result-list-element.component.ts | 6 +-- .../metadata-representation.decorator.ts | 4 +- .../object-collection.component.html | 3 ++ .../object-collection.component.ts | 1 + .../shared/listable-object.model.ts | 2 +- ...table-object-component-loader.component.ts | 2 +- .../listable-object.decorator.ts | 47 +++++++++++-------- ...-search-result-detail-element.component.ts | 6 +++ .../object-detail.component.html | 6 +-- .../object-detail.component.scss | 4 +- .../object-detail/object-detail.component.ts | 2 + .../publication-grid-element.component.ts | 4 +- .../object-grid/object-grid.component.html | 6 +-- .../object-grid/object-grid.component.scss | 2 +- .../object-grid/object-grid.component.ts | 4 +- ...-search-result-grid-element.component.html | 2 +- .../publication-list-element.component.ts | 4 +- .../item-type-badge.component.html | 2 +- .../item-metadata-list-element.component.ts | 4 +- ...in-text-metadata-list-element.component.ts | 6 +-- ...ed-search-result-list-element.component.ts | 1 + ...esult-list-element-submission.component.ts | 10 ++-- ...ol-search-result-list-element.component.ts | 1 + ...em-search-result-list-element.component.ts | 1 + ...em-search-result-list-element.component.ts | 1 + .../object-list/object-list.component.html | 2 +- .../object-list/object-list.component.ts | 2 + ...on-search-result-list-element.component.ts | 1 - ...-search-result-list-element.component.html | 26 +++++----- 48 files changed, 131 insertions(+), 102 deletions(-) diff --git a/src/app/+item-page/simple/item-types/publication/publication.component.ts b/src/app/+item-page/simple/item-types/publication/publication.component.ts index 8f0bdc141d..5bc118a4ca 100644 --- a/src/app/+item-page/simple/item-types/publication/publication.component.ts +++ b/src/app/+item-page/simple/item-types/publication/publication.component.ts @@ -5,10 +5,10 @@ import { ItemComponent } from '../shared/item.component'; import { MetadataRepresentation } from '../../../../core/shared/metadata-representation/metadata-representation.model'; import { getRelatedItemsByTypeLabel } from '../shared/item-relationships-utils'; import { ViewMode } from '../../../../core/shared/view-mode.model'; -import { DEFAULT_ITEM_TYPE, listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; +import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; @listableObjectComponent('Publication', ViewMode.StandalonePage) -@listableObjectComponent(DEFAULT_ITEM_TYPE, ViewMode.StandalonePage) +@listableObjectComponent(Item.name, ViewMode.StandalonePage) @Component({ selector: 'ds-publication', styleUrls: ['./publication.component.scss'], diff --git a/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.html b/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.html index 0bc7d51244..c875f7fe32 100644 --- a/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.html +++ b/src/app/+item-page/simple/metadata-representation-list/metadata-representation-list.component.html @@ -1,5 +1,5 @@ <ds-metadata-field-wrapper *ngIf="representations && representations.length > 0" [label]="label"> - <ds-listable-object-component-loader *ngFor="let rep of representations" - [object]="rep" [viewMode]="viewMode"> - </ds-listable-object-component-loader> + <ds-metadata-representation-loader *ngFor="let rep of representations" + [mdRepresentation]="rep"> + </ds-metadata-representation-loader> </ds-metadata-field-wrapper> diff --git a/src/app/+my-dspace-page/my-dspace-page.module.ts b/src/app/+my-dspace-page/my-dspace-page.module.ts index 6d2b8c0614..685f1155be 100644 --- a/src/app/+my-dspace-page/my-dspace-page.module.ts +++ b/src/app/+my-dspace-page/my-dspace-page.module.ts @@ -58,7 +58,8 @@ import { PoolSearchResultDetailElementComponent } from '../shared/object-detail/ WorkspaceItemSearchResultDetailElementComponent, WorkflowItemSearchResultDetailElementComponent, ClaimedTaskSearchResultDetailElementComponent, - PoolSearchResultDetailElementComponent + PoolSearchResultDetailElementComponent, + ItemSearchResultListElementSubmissionComponent ] }) diff --git a/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.html b/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.html index 132a0d2204..63eb0ff9a7 100644 --- a/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.html +++ b/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.html @@ -4,7 +4,8 @@ [hasBorder]="hasBorder" [sortConfig]="searchConfig.sort" [objects]="searchResults" - [hideGear]="true"> + [hideGear]="true" + [context]="context"> </ds-viewable-collection> </div> <ds-loading *ngIf="isLoading()" message="{{'loading.mydspace-results' | translate}}"></ds-loading> diff --git a/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.ts b/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.ts index a72e797b35..61669277cf 100644 --- a/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.ts +++ b/src/app/+my-dspace-page/my-dspace-results/my-dspace-results.component.ts @@ -7,6 +7,7 @@ import { PaginatedList } from '../../core/data/paginated-list'; import { ViewMode } from '../../core/shared/view-mode.model'; import { isEmpty } from '../../shared/empty.util'; import { SearchResult } from '../../+search-page/search-result.model'; +import { Context } from '../../core/shared/context.model'; /** * Component that represents all results for mydspace page @@ -36,6 +37,7 @@ export class MyDSpaceResultsComponent { */ @Input() viewMode: ViewMode; + context = Context.Submission; /** * A boolean representing if search results entry are separated by a line */ diff --git a/src/app/+search-page/search-result.model.ts b/src/app/+search-page/search-result.model.ts index 0006426119..693f81e65b 100644 --- a/src/app/+search-page/search-result.model.ts +++ b/src/app/+search-page/search-result.model.ts @@ -16,7 +16,7 @@ export class SearchResult<T extends DSpaceObject> implements ListableObject { */ hitHighlights: MetadataMap; - getRenderType(): string { - return this.indexableObject.getRenderType() + 'SearchResult'; + getRenderTypes(): string[] { + return this.indexableObject.getRenderTypes().map((type) => type +'SearchResult'); } } diff --git a/src/app/core/metadata/metadata-field.model.ts b/src/app/core/metadata/metadata-field.model.ts index e451398fab..b4a20924b9 100644 --- a/src/app/core/metadata/metadata-field.model.ts +++ b/src/app/core/metadata/metadata-field.model.ts @@ -51,7 +51,7 @@ export class MetadataField implements ListableObject { return key; } - getRenderType(): string { - return this.constructor.name; + getRenderTypes(): string[] { + return [this.constructor.name]; } } diff --git a/src/app/core/metadata/metadata-schema.model.ts b/src/app/core/metadata/metadata-schema.model.ts index 6859f580c0..f1551327a5 100644 --- a/src/app/core/metadata/metadata-schema.model.ts +++ b/src/app/core/metadata/metadata-schema.model.ts @@ -27,7 +27,7 @@ export class MetadataSchema implements ListableObject { */ namespace: string; - getRenderType(): string { - return this.constructor.name; + getRenderTypes(): string[] { + return [this.constructor.name]; } } diff --git a/src/app/core/shared/browse-entry.model.ts b/src/app/core/shared/browse-entry.model.ts index 067fac2bff..a8b41894f5 100644 --- a/src/app/core/shared/browse-entry.model.ts +++ b/src/app/core/shared/browse-entry.model.ts @@ -29,7 +29,7 @@ export class BrowseEntry implements ListableObject { */ count: number; - getRenderType(): string { - return (this as any).type.value; + getRenderTypes(): string[] { + return [this.constructor.name]; } } diff --git a/src/app/core/shared/dspace-object.model.ts b/src/app/core/shared/dspace-object.model.ts index 0a22315598..16f4002b7f 100644 --- a/src/app/core/shared/dspace-object.model.ts +++ b/src/app/core/shared/dspace-object.model.ts @@ -146,7 +146,7 @@ export class DSpaceObject implements CacheableObject, ListableObject { }); } - getRenderType(): string { - return this.constructor.name; + getRenderTypes(): string[] { + return [this.constructor.name]; } } diff --git a/src/app/core/shared/item.model.ts b/src/app/core/shared/item.model.ts index 28a889a18f..2f553a58db 100644 --- a/src/app/core/shared/item.model.ts +++ b/src/app/core/shared/item.model.ts @@ -5,7 +5,7 @@ import { DSpaceObject } from './dspace-object.model'; import { Collection } from './collection.model'; import { RemoteData } from '../data/remote-data'; import { Bitstream } from './bitstream.model'; -import { hasValue, isNotEmpty } from '../../shared/empty.util'; +import { hasValue, isEmpty, isNotEmpty } from '../../shared/empty.util'; import { PaginatedList } from '../data/paginated-list'; import { Relationship } from './item-relationships/relationship.model'; import { ResourceType } from './resource-type'; @@ -110,11 +110,11 @@ export class Item extends DSpaceObject { })); } - getRenderType(): string { - const entityType = this.firstMetadataValue('relationship.type'); - if (isNotEmpty(entityType)) { - return entityType; + getRenderTypes(): string[] { + let entityType = this.firstMetadataValue('relationship.type'); + if (isEmpty(entityType)) { + entityType = 'Publication'; } - return 'Publication'; + return [entityType, ...super.getRenderTypes()]; } } diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html index ed5d11ef71..23cc3ae285 100644 --- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html +++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-issue/journal-issue-search-result-grid-element.component.html @@ -7,7 +7,7 @@ </div> </a> <div class="card-body"> - <ds-item-type-badge [object]="object"></ds-item-type-badge> + <ds-item-type-badge [object]="dso"></ds-item-type-badge> <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4"> <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('dc.title')"></h4> </ds-truncatable-part> diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html index 4dea5fc879..f9ee1c51b7 100644 --- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html +++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal-volume/journal-volume-search-result-grid-element.component.html @@ -7,7 +7,7 @@ </div> </a> <div class="card-body"> - <ds-item-type-badge [object]="object"></ds-item-type-badge> + <ds-item-type-badge [object]="dso"></ds-item-type-badge> <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4"> <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('dc.title')"></h4> </ds-truncatable-part> diff --git a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html index 2474c27b6c..72faf6a864 100644 --- a/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html +++ b/src/app/entity-groups/journal-entities/item-grid-elements/search-result-grid-elements/journal/journal-search-result-grid-element.component.html @@ -7,7 +7,7 @@ </div> </a> <div class="card-body"> - <ds-item-type-badge [object]="object"></ds-item-type-badge> + <ds-item-type-badge [object]="dso"></ds-item-type-badge> <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4"> <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('dc.title')"></h4> </ds-truncatable-part> diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.html index f3fc0d269b..675044294a 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.html +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/orgunit/orgunit-search-result-grid-element.component.html @@ -7,7 +7,7 @@ </div> </a> <div class="card-body"> - <ds-item-type-badge [object]="object"></ds-item-type-badge> + <ds-item-type-badge [object]="dso"></ds-item-type-badge> <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4"> <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('organization.legalName')"></h4> </ds-truncatable-part> diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html index 523f524834..378bf43ec2 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html @@ -7,7 +7,7 @@ </div> </a> <div class="card-body"> - <ds-item-type-badge [object]="object"></ds-item-type-badge> + <ds-item-type-badge [object]="dso"></ds-item-type-badge> <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4"> <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('person.familyName') + ', ' + dso.firstMetadataValue('person.givenName')"></h4> </ds-truncatable-part> diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html index c409a850cd..4e98f94fb9 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html @@ -7,7 +7,7 @@ </div> </a> <div class="card-body"> - <ds-item-type-badge [object]="object"></ds-item-type-badge> + <ds-item-type-badge [object]="dso"></ds-item-type-badge> <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4"> <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('dc.title')"></h4> </ds-truncatable-part> diff --git a/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts index 62a257010f..708139da95 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/orgunit/orgunit-item-page-list-element.component.ts @@ -1,7 +1,4 @@ import { Component } from '@angular/core'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; -import { DEFAULT_ITEM_TYPE, listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; -import { Context } from '../../../../core/shared/context.model'; import { AbstractListableElementComponent } from '../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; import { Item } from '../../../../core/shared/item.model'; import { metadataRepresentationComponent } from '../../../../shared/metadata-representation/metadata-representation.decorator'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts index 04d66dcf34..5f158158d8 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts @@ -1,10 +1,10 @@ import { Component } from '@angular/core'; -import { metadataRepresentationComponent } from '../../../../shared/metadata-representation/metadata-representation.decorator'; -import { MetadataRepresentationType } from '../../../../core/shared/metadata-representation/metadata-representation.model'; import { AbstractListableElementComponent } from '../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; import { Item } from '../../../../core/shared/item.model'; +import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; +import { ViewMode } from '../../../../core/shared/view-mode.model'; -@metadataRepresentationComponent('Project', MetadataRepresentationType.PlainText) +@listableObjectComponent('Project', ViewMode.ListElement) @Component({ selector: 'ds-project-list-element', styleUrls: ['./project-list-element.component.scss'], diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts index 5fd5d57d81..c00ae53d6c 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts @@ -1,11 +1,11 @@ import { Component } from '@angular/core'; import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component'; import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; -import { metadataRepresentationComponent } from '../../../../../shared/metadata-representation/metadata-representation.decorator'; -import { MetadataRepresentationType } from '../../../../../core/shared/metadata-representation/metadata-representation.model'; import { Item } from '../../../../../core/shared/item.model'; +import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; +import { ViewMode } from '../../../../../core/shared/view-mode.model'; -@metadataRepresentationComponent('ProjectSearchResult', MetadataRepresentationType.PlainText) +@listableObjectComponent('ProjectSearchResult', ViewMode.ListElement) @Component({ selector: 'ds-project-search-result-list-element', styleUrls: ['./project-search-result-list-element.component.scss'], diff --git a/src/app/shared/metadata-representation/metadata-representation.decorator.ts b/src/app/shared/metadata-representation/metadata-representation.decorator.ts index 42495fec81..913599b989 100644 --- a/src/app/shared/metadata-representation/metadata-representation.decorator.ts +++ b/src/app/shared/metadata-representation/metadata-representation.decorator.ts @@ -1,7 +1,7 @@ import { MetadataRepresentationType } from '../../core/shared/metadata-representation/metadata-representation.model'; import { hasNoValue, hasValue } from '../empty.util'; import { Context } from '../../core/shared/context.model'; -import { DEFAULT_ITEM_TYPE } from '../object-collection/shared/listable-object/listable-object.decorator'; +import { Item } from '../../core/shared/item.model'; const map = new Map(); @@ -39,5 +39,5 @@ export function getMetadataRepresentationComponent(entityType: string, mdReprese } return mapForEntity.get(DEFAULT_REPRESENTATION_TYPE).get(DEFAULT_CONTEXT); } - return map.get(DEFAULT_ITEM_TYPE).get(DEFAULT_REPRESENTATION_TYPE).get(DEFAULT_CONTEXT); + return map.get(Item.name).get(DEFAULT_REPRESENTATION_TYPE).get(DEFAULT_CONTEXT); } \ No newline at end of file diff --git a/src/app/shared/object-collection/object-collection.component.html b/src/app/shared/object-collection/object-collection.component.html index b3175aef2b..cd845b5b47 100644 --- a/src/app/shared/object-collection/object-collection.component.html +++ b/src/app/shared/object-collection/object-collection.component.html @@ -3,6 +3,7 @@ [objects]="objects" [hasBorder]="hasBorder" [hideGear]="hideGear" + [context]="context" (paginationChange)="onPaginationChange($event)" (pageChange)="onPageChange($event)" (pageSizeChange)="onPageSizeChange($event)" @@ -15,6 +16,7 @@ [sortConfig]="sortConfig" [objects]="objects" [hideGear]="hideGear" + [context]="context" (paginationChange)="onPaginationChange($event)" (pageChange)="onPageChange($event)" (pageSizeChange)="onPageSizeChange($event)" @@ -27,6 +29,7 @@ [sortConfig]="sortConfig" [objects]="objects" [hideGear]="hideGear" + [context]="context" *ngIf="(currentMode$ | async) === viewModeEnum.DetailedListElement"> </ds-object-detail> diff --git a/src/app/shared/object-collection/object-collection.component.ts b/src/app/shared/object-collection/object-collection.component.ts index 2b25915f1e..175bd3ea53 100644 --- a/src/app/shared/object-collection/object-collection.component.ts +++ b/src/app/shared/object-collection/object-collection.component.ts @@ -24,6 +24,7 @@ export class ObjectCollectionComponent implements OnInit { @Input() sortConfig: SortOptions; @Input() hasBorder = false; @Input() hideGear = false; + @Input() context: string; pageInfo: Observable<PageInfo>; /** * An event fired when the page is changed. diff --git a/src/app/shared/object-collection/shared/listable-object.model.ts b/src/app/shared/object-collection/shared/listable-object.model.ts index 62ab24ae33..cef068e47c 100644 --- a/src/app/shared/object-collection/shared/listable-object.model.ts +++ b/src/app/shared/object-collection/shared/listable-object.model.ts @@ -1,5 +1,5 @@ import { TypedObject } from '../../../core/cache/object-cache.reducer'; export interface ListableObject extends TypedObject { - getRenderType(): string; + getRenderTypes(): string[]; } diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts index 00e78a3d50..45367df857 100644 --- a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts +++ b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.ts @@ -49,6 +49,6 @@ export class ListableObjectComponentLoaderComponent implements OnInit { * @returns {string} */ private getComponent(): GenericConstructor<Component> { - return getListableObjectComponent(this.object.getRenderType(), this.viewMode) + return getListableObjectComponent(this.object.getRenderTypes(), this.viewMode, this.context) } } diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts b/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts index 092bf8068f..29cd1287a1 100644 --- a/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts +++ b/src/app/shared/object-collection/shared/listable-object/listable-object.decorator.ts @@ -1,15 +1,12 @@ import { ViewMode } from '../../../../core/shared/view-mode.model'; -import { GenericConstructor } from '../../../../core/shared/generic-constructor'; -import { ListableObject } from '../listable-object.model'; import { Context } from '../../../../core/shared/context.model'; import { hasNoValue, hasValue } from '../../../empty.util'; import { DEFAULT_CONTEXT } from '../../../metadata-representation/metadata-representation.decorator'; -export const DEFAULT_ITEM_TYPE = 'Default'; export const DEFAULT_VIEW_MODE = ViewMode.ListElement; -const listElementMap = new Map(); +const map = new Map(); /** * Decorator used for rendering simple item pages by type and viewMode (and optionally a representationType) @@ -21,30 +18,40 @@ export function listableObjectComponent(objectType: string, viewMode: ViewMode, if (hasNoValue(objectType)) { return; } - if (hasNoValue(listElementMap.get(objectType))) { - listElementMap.set(objectType, new Map()); + if (hasNoValue(map.get(objectType))) { + map.set(objectType, new Map()); } - if (hasNoValue(listElementMap.get(objectType).get(viewMode))) { - listElementMap.get(objectType).set(viewMode, new Map()); + if (hasNoValue(map.get(objectType).get(viewMode))) { + map.get(objectType).set(viewMode, new Map()); } - listElementMap.get(objectType).get(viewMode).set(context, component); + map.get(objectType).get(viewMode).set(context, component); }; } -export function getListableObjectComponent(entityType: GenericConstructor<ListableObject> | string, viewMode: ViewMode, context: Context = DEFAULT_CONTEXT) { - const mapForType = listElementMap.get(entityType); - if (hasValue(mapForType)) { - const typeAndMDRepMap = mapForType.get(viewMode); - if (hasValue(typeAndMDRepMap)) { - if (hasValue(typeAndMDRepMap.get(context))) { - return typeAndMDRepMap.get(context); +export function getListableObjectComponent(types: string[], viewMode: ViewMode, context: Context = DEFAULT_CONTEXT) { + let bestMatch = undefined; + let bestMatchValue = 0; + for (let i = 0; i < types.length; i++) { + const typeMap = map.get(types[i]); + if (hasValue(typeMap)) { + const typeModeMap = typeMap.get(viewMode); + if (hasValue(typeModeMap)) { + if (hasValue(typeModeMap.get(context))) { + console.log(typeModeMap.get(context)); + return typeModeMap.get(context); + } + if (bestMatchValue < 2 && hasValue(typeModeMap.get(DEFAULT_CONTEXT))) { + bestMatchValue = 2; + bestMatch = typeModeMap.get(DEFAULT_CONTEXT); + } } - if (hasValue(typeAndMDRepMap.get(DEFAULT_CONTEXT))) { - return typeAndMDRepMap.get(DEFAULT_CONTEXT); + if (bestMatchValue < 1 && hasValue(typeMap.get(DEFAULT_VIEW_MODE).get(DEFAULT_CONTEXT))) { + bestMatchValue = 1; + bestMatch = typeMap.get(DEFAULT_VIEW_MODE).get(DEFAULT_CONTEXT); } } - return mapForType.get(DEFAULT_VIEW_MODE).get(DEFAULT_CONTEXT); } - return listElementMap.get(DEFAULT_ITEM_TYPE).get(DEFAULT_VIEW_MODE).get(DEFAULT_CONTEXT); + console.log(bestMatch); + return bestMatch; } \ No newline at end of file diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts index c0e3db6348..4a9b4d6380 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/item-search-result/item-search-result-detail-element.component.ts @@ -17,6 +17,12 @@ import { ItemSearchResult } from '../../../object-collection/shared/item-search- }) @listableObjectComponent('PublicationSearchResult', ViewMode.DetailedListElement) +@listableObjectComponent('OrgUnitSearchResult', ViewMode.DetailedListElement) +@listableObjectComponent('PersonSearchResult', ViewMode.DetailedListElement) +@listableObjectComponent('JournalSearchResult', ViewMode.DetailedListElement) +@listableObjectComponent('JournalIssueSearchResult', ViewMode.DetailedListElement) +@listableObjectComponent('JournalVolumeSearchResult', ViewMode.DetailedListElement) +@listableObjectComponent('ProjectSearchResult', ViewMode.DetailedListElement) export class ItemSearchResultDetailElementComponent extends SearchResultDetailElementComponent<ItemSearchResult, Item> { /** diff --git a/src/app/shared/object-detail/object-detail.component.html b/src/app/shared/object-detail/object-detail.component.html index 400781b6d2..7fef7d9689 100644 --- a/src/app/shared/object-detail/object-detail.component.html +++ b/src/app/shared/object-detail/object-detail.component.html @@ -14,9 +14,9 @@ <div class="row mt-2" *ngIf="objects?.hasSucceeded" @fadeIn> <div class="col" *ngFor="let object of objects?.payload?.page"> - <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode"></ds-listable-object-component-loader> + <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [context]="context"></ds-listable-object-component-loader> </div> </div> - <ds-error *ngIf="objects.hasFailed | async" message="{{'error.objects' | translate}}"></ds-error> - <ds-loading *ngIf="objects.isLoading | async" message="{{'loading.objects' | translate}}"></ds-loading> + <ds-error *ngIf="objects.hasFailed" message="{{'error.objects' | translate}}"></ds-error> + <ds-loading *ngIf="objects.isLoading" message="{{'loading.objects' | translate}}"></ds-loading> </ds-pagination> diff --git a/src/app/shared/object-detail/object-detail.component.scss b/src/app/shared/object-detail/object-detail.component.scss index 9a077e3e08..e0a4e3abdc 100644 --- a/src/app/shared/object-detail/object-detail.component.scss +++ b/src/app/shared/object-detail/object-detail.component.scss @@ -1,9 +1,9 @@ @import '../../../styles/variables'; @import '../../../styles/mixins'; -ds-wrapper-detail-element ::ng-deep { +:host::ng-deep { div.thumbnail > img { height: $card-thumbnail-height; width: 100%; } -} +} \ No newline at end of file diff --git a/src/app/shared/object-detail/object-detail.component.ts b/src/app/shared/object-detail/object-detail.component.ts index 24df1bf504..93da1bcce6 100644 --- a/src/app/shared/object-detail/object-detail.component.ts +++ b/src/app/shared/object-detail/object-detail.component.ts @@ -16,6 +16,7 @@ import { ListableObject } from '../object-collection/shared/listable-object.mode import { PaginationComponentOptions } from '../pagination/pagination-component-options.model'; import { ViewMode } from '../../core/shared/view-mode.model'; +import { Context } from '../../core/shared/context.model'; /** * This component renders a paginated set of results in the detail view. @@ -50,6 +51,7 @@ export class ObjectDetailComponent { * A boolean representing if to hide pagination when there is only a page */ @Input() hidePagerWhenSinglePage = true; + @Input() context: Context; /** * The list of objects to paginate diff --git a/src/app/shared/object-grid/item-grid-element/item-types/publication/publication-grid-element.component.ts b/src/app/shared/object-grid/item-grid-element/item-types/publication/publication-grid-element.component.ts index 0893d6b121..4927b18b9d 100644 --- a/src/app/shared/object-grid/item-grid-element/item-types/publication/publication-grid-element.component.ts +++ b/src/app/shared/object-grid/item-grid-element/item-types/publication/publication-grid-element.component.ts @@ -1,12 +1,12 @@ import { Component } from '@angular/core'; import { focusShadow } from '../../../../animations/focus'; import { ViewMode } from '../../../../../core/shared/view-mode.model'; -import { DEFAULT_ITEM_TYPE, listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator'; +import { listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator'; import { AbstractListableElementComponent } from '../../../../object-collection/shared/object-collection-element/abstract-listable-element.component'; import { Item } from '../../../../../core/shared/item.model'; @listableObjectComponent('Publication', ViewMode.GridElement) -@listableObjectComponent(DEFAULT_ITEM_TYPE, ViewMode.GridElement) +@listableObjectComponent(Item.name, ViewMode.GridElement) @Component({ selector: 'ds-publication-grid-element', styleUrls: ['./publication-grid-element.component.scss'], diff --git a/src/app/shared/object-grid/object-grid.component.html b/src/app/shared/object-grid/object-grid.component.html index c5cd34608f..f527aa3555 100644 --- a/src/app/shared/object-grid/object-grid.component.html +++ b/src/app/shared/object-grid/object-grid.component.html @@ -13,11 +13,11 @@ <div class="card-columns row" *ngIf="objects?.hasSucceeded"> <div class="card-column col col-sm-6 col-lg-4" *ngFor="let column of (columns$ | async)" @fadeIn> <div class="card-element" *ngFor="let object of column"> - <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode"></ds-listable-object-component-loader> + <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [context]="context"></ds-listable-object-component-loader> </div> </div> </div> - <ds-error *ngIf="objects.hasFailed | async" message="{{'error.objects' | translate}}"></ds-error> - <ds-loading *ngIf="objects.isLoading | async" message="{{'loading.objects' | translate}}"></ds-loading> + <ds-error *ngIf="objects.hasFailed" message="{{'error.objects' | translate}}"></ds-error> + <ds-loading *ngIf="objects.isLoading" message="{{'loading.objects' | translate}}"></ds-loading> </ds-pagination> diff --git a/src/app/shared/object-grid/object-grid.component.scss b/src/app/shared/object-grid/object-grid.component.scss index 8f19309d89..fb883a1f07 100644 --- a/src/app/shared/object-grid/object-grid.component.scss +++ b/src/app/shared/object-grid/object-grid.component.scss @@ -1,6 +1,6 @@ $ds-wrapper-grid-spacing: $spacer/2; -ds-wrapper-grid-element ::ng-deep { +:host ::ng-deep { div.thumbnail > img { height: $card-thumbnail-height; width: 100%; diff --git a/src/app/shared/object-grid/object-grid.component.ts b/src/app/shared/object-grid/object-grid.component.ts index d3bfbb8e58..52f6e29d14 100644 --- a/src/app/shared/object-grid/object-grid.component.ts +++ b/src/app/shared/object-grid/object-grid.component.ts @@ -21,6 +21,7 @@ import { ListableObject } from '../object-collection/shared/listable-object.mode import { PaginationComponentOptions } from '../pagination/pagination-component-options.model'; import { ViewMode } from '../../core/shared/view-mode.model'; +import { Context } from '../../core/shared/context.model'; @Component({ changeDetection: ChangeDetectionStrategy.Default, @@ -32,12 +33,13 @@ import { ViewMode } from '../../core/shared/view-mode.model'; }) export class ObjectGridComponent implements OnInit { - viewMode = ViewMode.ListElement; + viewMode = ViewMode.GridElement; @Input() config: PaginationComponentOptions; @Input() sortConfig: SortOptions; @Input() hideGear = false; @Input() hidePagerWhenSinglePage = true; + @Input() context: Context; private _objects$: BehaviorSubject<RemoteData<PaginatedList<ListableObject>>>; @Input() set objects(objects: RemoteData<PaginatedList<ListableObject>>) { diff --git a/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.html b/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.html index d5b481f13c..e0eedc22fc 100644 --- a/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.html +++ b/src/app/shared/object-grid/search-result-grid-element/item-search-result/publication/publication-search-result-grid-element.component.html @@ -7,7 +7,7 @@ </div> </a> <div class="card-body"> - <ds-item-type-badge [object]="object"></ds-item-type-badge> + <ds-item-type-badge [object]="dso"></ds-item-type-badge> <ds-truncatable-part [id]="dso.id" [minLines]="3" type="h4"> <h4 class="card-title" [innerHTML]="dso.firstMetadataValue('dc.title')"></h4> </ds-truncatable-part> diff --git a/src/app/shared/object-list/item-list-element/item-types/publication/publication-list-element.component.ts b/src/app/shared/object-list/item-list-element/item-types/publication/publication-list-element.component.ts index 9c1b27e785..73cdf978ac 100644 --- a/src/app/shared/object-list/item-list-element/item-types/publication/publication-list-element.component.ts +++ b/src/app/shared/object-list/item-list-element/item-types/publication/publication-list-element.component.ts @@ -1,11 +1,11 @@ import { Component } from '@angular/core'; import { ViewMode } from '../../../../../core/shared/view-mode.model'; -import { DEFAULT_ITEM_TYPE, listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator'; +import { listableObjectComponent } from '../../../../object-collection/shared/listable-object/listable-object.decorator'; import { AbstractListableElementComponent } from '../../../../object-collection/shared/object-collection-element/abstract-listable-element.component'; import { Item } from '../../../../../core/shared/item.model'; @listableObjectComponent('Publication', ViewMode.ListElement) -@listableObjectComponent(DEFAULT_ITEM_TYPE, ViewMode.ListElement) +@listableObjectComponent(Item.name, ViewMode.ListElement) @Component({ selector: 'ds-publication-list-element', styleUrls: ['./publication-list-element.component.scss'], diff --git a/src/app/shared/object-list/item-type-badge/item-type-badge.component.html b/src/app/shared/object-list/item-type-badge/item-type-badge.component.html index 35d7663801..947970b7e1 100644 --- a/src/app/shared/object-list/item-type-badge/item-type-badge.component.html +++ b/src/app/shared/object-list/item-type-badge/item-type-badge.component.html @@ -1,3 +1,3 @@ -<div *ngIf="object && object.indexableObject && object.indexableObject.firstMetadataValue('relationship.type') as type"> +<div *ngIf="object && object.firstMetadataValue('relationship.type') as type"> <span class="badge badge-light">{{ type.toLowerCase() + '.listelement.badge' | translate }}</span> </div> diff --git a/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts b/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts index 25e97d59f6..08ff67e3f1 100644 --- a/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts +++ b/src/app/shared/object-list/metadata-representation-list-element/item/item-metadata-list-element.component.ts @@ -3,9 +3,9 @@ import { Component } from '@angular/core'; import { MetadataRepresentationListElementComponent } from '../metadata-representation-list-element.component'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { metadataRepresentationComponent } from '../../../metadata-representation/metadata-representation.decorator'; -import { DEFAULT_ITEM_TYPE } from '../../../object-collection/shared/listable-object/listable-object.decorator'; +import { Item } from '../../../../core/shared/item.model'; -@metadataRepresentationComponent(DEFAULT_ITEM_TYPE, MetadataRepresentationType.Item) +@metadataRepresentationComponent(Item.name, MetadataRepresentationType.Item) @Component({ selector: 'ds-item-metadata-list-element', templateUrl: './item-metadata-list-element.component.html' diff --git a/src/app/shared/object-list/metadata-representation-list-element/plain-text/plain-text-metadata-list-element.component.ts b/src/app/shared/object-list/metadata-representation-list-element/plain-text/plain-text-metadata-list-element.component.ts index 20d7c9739e..50e2c2a60b 100644 --- a/src/app/shared/object-list/metadata-representation-list-element/plain-text/plain-text-metadata-list-element.component.ts +++ b/src/app/shared/object-list/metadata-representation-list-element/plain-text/plain-text-metadata-list-element.component.ts @@ -2,11 +2,11 @@ import { MetadataRepresentationType } from '../../../../core/shared/metadata-rep import { Component } from '@angular/core'; import { MetadataRepresentationListElementComponent } from '../metadata-representation-list-element.component'; import { metadataRepresentationComponent } from '../../../metadata-representation/metadata-representation.decorator'; -import { DEFAULT_ITEM_TYPE } from '../../../object-collection/shared/listable-object/listable-object.decorator'; +import { Item } from '../../../../core/shared/item.model'; -@metadataRepresentationComponent(DEFAULT_ITEM_TYPE, MetadataRepresentationType.PlainText) +@metadataRepresentationComponent(Item.name, MetadataRepresentationType.PlainText) // For now, authority controlled fields are rendered the same way as plain text fields -@metadataRepresentationComponent(DEFAULT_ITEM_TYPE, MetadataRepresentationType.AuthorityControlled) +@metadataRepresentationComponent(Item.name, MetadataRepresentationType.AuthorityControlled) @Component({ selector: 'ds-plain-text-metadata-list-element', templateUrl: './plain-text-metadata-list-element.component.html' diff --git a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts index 5668ece14e..1e74487a97 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/claimed-search-result/claimed-search-result-list-element.component.ts @@ -46,6 +46,7 @@ export class ClaimedSearchResultListElementComponent extends SearchResultListEle * Initialize all instance variables */ ngOnInit() { + super.ngOnInit(); this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<WorkflowItem>>); } diff --git a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts index 6ff9afd0d7..31d2977304 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/item-search-result/item-search-result-list-element-submission.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { Item } from '../../../../core/shared/item.model'; import { MyDspaceItemStatusType } from '../../../object-collection/shared/mydspace-item-status/my-dspace-item-status-type'; @@ -17,12 +17,14 @@ import { SearchResultListElementComponent } from '../../search-result-list-eleme templateUrl: './item-search-result-list-element-submission.component.html' }) -@listableObjectComponent('PublicationSearchResult', ViewMode.ListElement, Context.Submission) -export class ItemSearchResultListElementSubmissionComponent extends SearchResultListElementComponent<ItemSearchResult, Item> { +@listableObjectComponent(ItemSearchResult.name, ViewMode.ListElement, Context.Submission) +export class ItemSearchResultListElementSubmissionComponent extends SearchResultListElementComponent<ItemSearchResult, Item> implements OnInit { + ngOnInit() { + super.ngOnInit(); + } /** * Represent item's status */ public status = MyDspaceItemStatusType.ARCHIVED; - } diff --git a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts index 3ec85ae040..92e0ea3818 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/pool-search-result/pool-search-result-list-element.component.ts @@ -51,6 +51,7 @@ export class PoolSearchResultListElementComponent extends SearchResultListElemen * Initialize all instance variables */ ngOnInit() { + super.ngOnInit(); this.initWorkflowItem(this.dso.workflowitem as Observable<RemoteData<WorkflowItem>>); } diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts index d5ac65c740..6a9013b9af 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workflow-item-search-result/workflow-item-search-result-list-element.component.ts @@ -39,6 +39,7 @@ export class WorkflowItemSearchResultListElementComponent extends SearchResultLi * Initialize all instance variables */ ngOnInit() { + super.ngOnInit(); this.initItem(this.dso.item as Observable<RemoteData<Item>> ); } diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts index e4d8409f1c..dd32f56aba 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts @@ -39,6 +39,7 @@ export class WorkspaceItemSearchResultListElementComponent extends SearchResultL * Initialize all instance variables */ ngOnInit() { + super.ngOnInit(); this.initItem(this.dso.item as Observable<RemoteData<Item>>); } diff --git a/src/app/shared/object-list/object-list.component.html b/src/app/shared/object-list/object-list.component.html index b19daa035a..daec1db8ad 100644 --- a/src/app/shared/object-list/object-list.component.html +++ b/src/app/shared/object-list/object-list.component.html @@ -12,7 +12,7 @@ (paginationChange)="onPaginationChange($event)"> <ul *ngIf="objects?.hasSucceeded" class="list-unstyled"> <li *ngFor="let object of objects?.payload?.page; let i = index; let last = last" class="mt-4 mb-4" [class.border-bottom]="hasBorder && !last"> - <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [index]="i"></ds-listable-object-component-loader> + <ds-listable-object-component-loader [object]="object" [viewMode]="viewMode" [index]="i" [context]="context"></ds-listable-object-component-loader> </li> </ul> </ds-pagination> diff --git a/src/app/shared/object-list/object-list.component.ts b/src/app/shared/object-list/object-list.component.ts index cf4728464a..0776134e83 100644 --- a/src/app/shared/object-list/object-list.component.ts +++ b/src/app/shared/object-list/object-list.component.ts @@ -13,6 +13,7 @@ import { fadeIn } from '../animations/fade'; import { ListableObject } from '../object-collection/shared/listable-object.model'; import { PaginationComponentOptions } from '../pagination/pagination-component-options.model'; import { ViewMode } from '../../core/shared/view-mode.model'; +import { Context } from '../../core/shared/context.model'; @Component({ changeDetection: ChangeDetectionStrategy.Default, @@ -29,6 +30,7 @@ export class ObjectListComponent { @Input() hasBorder = false; @Input() hideGear = false; @Input() hidePagerWhenSinglePage = true; + @Input() context: Context; private _objects: RemoteData<PaginatedList<ListableObject>>; @Input() set objects(objects: RemoteData<PaginatedList<ListableObject>>) { this._objects = objects; diff --git a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts index 1a678dddb7..014763c53a 100644 --- a/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts +++ b/src/app/shared/object-list/search-result-list-element/collection-search-result/collection-search-result-list-element.component.ts @@ -6,7 +6,6 @@ import { Collection } from '../../../../core/shared/collection.model'; import { CollectionSearchResult } from '../../../object-collection/shared/collection-search-result.model'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; -import { BrowseEntry } from '../../../../core/shared/browse-entry.model'; @Component({ selector: 'ds-collection-search-result-list-element', diff --git a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.html b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.html index f6bfe787cb..62b9bc5e74 100644 --- a/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.html +++ b/src/app/shared/object-list/search-result-list-element/item-search-result/item-types/publication/publication-search-result-list-element.component.html @@ -1,13 +1,13 @@ - <ds-item-type-badge [object]="dso"></ds-item-type-badge> +<ds-item-type-badge [object]="dso"></ds-item-type-badge> - <ds-truncatable [id]="dso.id" *ngIf="object !== undefined && object !== null"> - <a - [routerLink]="['/items/' + dso.id]" class="lead" - [innerHTML]="firstMetadataValue('dc.title')"></a> - <span class="text-muted"> +<ds-truncatable [id]="dso.id" *ngIf="object !== undefined && object !== null"> + <a + [routerLink]="['/items/' + dso.id]" class="lead" + [innerHTML]="firstMetadataValue('dc.title')"></a> + <span class="text-muted"> <ds-truncatable-part [id]="dso.id" [minLines]="1"> <ng-container *ngIf="dso.firstMetadataValue('dc.publisher') || dso.firstMetadataValue('dc.date.issued')">(<span class="item-list-publisher" - [innerHTML]="firstMetadataValue('dc.publisher')">, </span><span + [innerHTML]="firstMetadataValue('dc.publisher')">, </span><span *ngIf="dso.firstMetadataValue('dc.date.issued')" class="item-list-date" [innerHTML]="firstMetadataValue('dc.date.issued')"></span>)</ng-container> <span *ngIf="dso.allMetadata(['dc.contributor.author', 'dc.creator', 'dc.contributor.*']).length > 0" @@ -19,9 +19,9 @@ </span> </ds-truncatable-part> </span> - <div *ngIf="dso.firstMetadataValue('dc.description.abstract')" class="item-list-abstract"> - <ds-truncatable-part [id]="dso.id" [minLines]="3"><span - [innerHTML]="firstMetadataValue('dc.description.abstract')"></span> - </ds-truncatable-part> - </div> - </ds-truncatable> + <div *ngIf="dso.firstMetadataValue('dc.description.abstract')" class="item-list-abstract"> + <ds-truncatable-part [id]="dso.id" [minLines]="3"><span + [innerHTML]="firstMetadataValue('dc.description.abstract')"></span> + </ds-truncatable-part> + </div> +</ds-truncatable> -- GitLab