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 8f0bdc141d9940f8697d5aa473243883bf0aeb49..5bc118a4ca1b2a646659b05c7d0aac89a28eb15c 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 0bc7d5124406b004993e153635510fd1f3cae3ac..c875f7fe325d73a8606038121aab527d1e55c0d8 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 6d2b8c0614540289fa97128f007c2665f3f725e9..685f1155be886404f9080052ff19f88a62e53fa7 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 132a0d22040141c37952b2c8ad9937ff6977691c..63eb0ff9a71bb3f18b2b9c5706b77584028c3f52 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 a72e797b352cc03264c3d8786bf94a1f99bde6cf..61669277cf6829aa1c8760466d5e2eebf0557e49 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 0006426119cc490c3bd7ed2b9c0b0a590b4b8807..693f81e65b51b12389b890c68e67aa9516879cb5 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 e451398fab18ac57f63c21131bef211094549732..b4a20924b95cb235d4de7ceeccdf7b42d5bea071 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 6859f580c09560422fbeca865aee1f215cc0f523..f1551327a53d6245a96ce141393f2611f8aa8971 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 067fac2bff15e933716f5bd4faa606af255a9396..a8b41894f5c8d69b7c4356929804ed6520011c3c 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 0a22315598117a538c9453eb5f5218db2851f269..16f4002b7f8658199f40c7c485be5de9c79521ab 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 28a889a18f1a5a5860615110022a3d4cadf860a2..2f553a58dbdf50184118c1ce64119662c37c5036 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 ed5d11ef7168527dc505dd6cc46d50e8a97b22df..23cc3ae2856a9312654bd553e8020902ce1356c1 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 4dea5fc87992fd01613b3c20924bbb18227e05b6..f9ee1c51b7050e35976cdac8b1206fec0e1e026b 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 2474c27b6c207111ae6faf695be17f2244f02343..72faf6a864896353f49f65fcc8667e5720e7898b 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 f3fc0d269bc2e5ffe49e6f42fd5254922f0f07ae..675044294a6dfa12536780bcaeffac7edeae0190 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 523f524834b96d28d2c674a6d6894e4d4be2ecf5..378bf43ec28510b6aea390696a8031747c2073fe 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 c409a850cdae54641f8f26e1edfc9941854b4ab4..4e98f94fb9059b882f973ffa3865a97ae4c9aab3 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 62a257010f1cc97b33dce7454f2c977c12263d0e..708139da95e4aff0a8ebc2d9c79b4ed182f8fd57 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 04d66dcf34151be3aa4ac55fac5abe139cf2bbe4..5f158158d892e227d91491516afc4de9e57eaee4 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 5fd5d57d8133491db814f678c46e09adbdffc848..c00ae53d6c715d61ca34aa0f8f04b05fb2f86d0c 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 42495fec81580009d0c0eadd0ec002f0ef38aea5..913599b989a2c7e40f9cd499dfdd6728679573a3 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 b3175aef2ba900c43c7a531db001312c0daac937..cd845b5b47037ab9adcfed06ee7c20d66de9cc87 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 2b25915f1e7a2d974f6c987eca812ec828724d3e..175bd3ea53db2b7ccafe00f75a9562beba4e28fb 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 62ab24ae33c6325d31eb7f8429068b97966cf3bf..cef068e47cb487ba4483a5b6e5a92a0f1d3b6641 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 00e78a3d50a6d26f2355e5964d2e673e911f26ae..45367df857ab8c32be96f4144e3512ca455b0927 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 092bf8068f293f30a3d01c28e9f6fb8587f4e549..29cd1287a1f0e011c748171b5d4d511bc5b51691 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 c0e3db6348b9a1c8aad58ffffbe95a7cd3c95a1f..4a9b4d6380711a2b510704fe9f80acda2aa2bd96 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 400781b6d2fc1aab8e6c78492470a6e51ea14cba..7fef7d9689be5582201c160456ea3b6f251af753 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 9a077e3e08ecb6e8fa8362cf04e4f8f8bc6fbec8..e0a4e3abdc962d9e79b5f27581584fc2a3f2203f 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 24df1bf50468c60826ed6f6f443503afac05c548..93da1bcce6098b304970ef4344c43e3e198d0e7d 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 0893d6b12169cc9d0e18535761def1989b0c306a..4927b18b9d2ae6545639889ac9b297d6ffd10779 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 c5cd34608f4a096717a9abaa4fc764bbec8b8e10..f527aa35551369c0c2cc9c4733feb403d713058a 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 8f19309d89fd948d5597dcf5127610283ac03628..fb883a1f07440651d307e5021f9c511c9636ce31 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 d3bfbb8e5804783b944c5d02224f821dc53ded25..52f6e29d14024f44b65c73611429c45f3fb4a8ef 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 d5b481f13c4347f11c2c9cc7b68fce0bc2ade5fd..e0eedc22fc95a7728e049385ca0e7019fce80981 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 9c1b27e785164505077ae1fbc2c28454eb3273e3..73cdf978ac56708cdf49e5e082f935eaea48b76b 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 35d76638018a58a452f9517300abcb11ce08e719..947970b7e10e61d44f3d6dfd0b997320520f9767 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 25e97d59f62a87d120718dbaf9fd759a8918271c..08ff67e3f180dbbbcd50577562305efb45b3f109 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 20d7c9739e1e41f732d9795c1c4cdca569bc9fe7..50e2c2a60b8b5f1a2aa88c0a055e20b59e49be3e 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 5668ece14e94a7f1bb3ada382791cc5a5f6fa3b9..1e74487a97561c4e31d28447b37ff0df4dab1e19 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 6ff9afd0d74266a21640a89e0c4e9c6286e5839a..31d2977304de96c3eae721867c0e1393420bb990 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 3ec85ae0403944eaecad293f4dac8d1e6aa98681..92e0ea38184745bfc8489af557c0b768e962fe9a 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 d5ac65c740fef6091a7ee563e54a92ac59d3c046..6a9013b9afb30b38184e5eca6062e56c1038e22a 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 e4d8409f1c1ac0610fed87c14d1f7ac04d1637a1..dd32f56ababe105737ac9513858593cbba71cd19 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 b19daa035af820b7948c20c2dc7c10083f136d5a..daec1db8ade6625292bd1f02f5ee8496b70baff1 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 cf4728464a601c6d25fe4e980ab2106ca01d9770..0776134e83d4f09def396d84865bcf397a425a2f 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 1a678dddb74163d46b12e7fd1ebad5c91e99cc14..014763c53aa2897d4becb37f9c17e6b87a5d5e58 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 f6bfe787cb9fa79feaa887096ccac37d0259df4e..62b9bc5e7409509a6d27e16f0dfcd7992a704c3a 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>