64574: Update mantis item pages with new template

This commit is contained in:
Kristof De Langhe
2019-09-05 17:34:13 +02:00
parent e6a051e9c6
commit adcefbae17
8 changed files with 163 additions and 144 deletions

View File

@@ -1,4 +1,4 @@
import { Component, Input, OnInit } from '@angular/core'; import { Component, HostBinding, Input, OnDestroy, OnInit } from '@angular/core';
import { Item } from '../../../core/shared/item.model'; import { Item } from '../../../core/shared/item.model';
import { ItemViewMode } from '../../../shared/items/item-type-decorator'; import { ItemViewMode } from '../../../shared/items/item-type-decorator';
import { Observable } from 'rxjs/internal/Observable'; import { Observable } from 'rxjs/internal/Observable';
@@ -6,6 +6,9 @@ import { RemoteData } from '../../../core/data/remote-data';
import { PaginatedList } from '../../../core/data/paginated-list'; import { PaginatedList } from '../../../core/data/paginated-list';
import { RelationshipService } from '../../../core/data/relationship.service'; import { RelationshipService } from '../../../core/data/relationship.service';
import { FindAllOptions } from '../../../core/data/request.models'; import { FindAllOptions } from '../../../core/data/request.models';
import { getRemoteDataPayload, getSucceededRemoteData } from '../../../core/shared/operators';
import { hasNoValue, hasValueOperator } from '../../../shared/empty.util';
import { Subscription } from 'rxjs/internal/Subscription';
@Component({ @Component({
selector: 'ds-related-items', selector: 'ds-related-items',
@@ -16,7 +19,7 @@ import { FindAllOptions } from '../../../core/data/request.models';
* This component is used for displaying relations between items * This component is used for displaying relations between items
* It expects a parent item and relationship type, as well as a label to display on top * It expects a parent item and relationship type, as well as a label to display on top
*/ */
export class RelatedItemsComponent implements OnInit { export class RelatedItemsComponent implements OnInit, OnDestroy {
/** /**
* The parent of the list of related items to display * The parent of the list of related items to display
*/ */
@@ -39,6 +42,11 @@ export class RelatedItemsComponent implements OnInit {
*/ */
@Input() label: string; @Input() label: string;
/**
* Completely hide the component until there's at least one item visible
*/
@HostBinding('class.d-none') hidden = true;
/** /**
* The list of related items * The list of related items
*/ */
@@ -60,11 +68,19 @@ export class RelatedItemsComponent implements OnInit {
*/ */
showingAll = false; showingAll = false;
/**
* Subscription on items used to update the "hidden" property of this component
*/
itemSub: Subscription;
constructor(public relationshipService: RelationshipService) { constructor(public relationshipService: RelationshipService) {
} }
ngOnInit(): void { ngOnInit(): void {
this.items$ = this.relationshipService.getRelatedItemsByLabel(this.parentItem, this.relationType, this.options); this.items$ = this.relationshipService.getRelatedItemsByLabel(this.parentItem, this.relationType, this.options);
this.itemSub = this.items$.subscribe((itemsRD: RemoteData<PaginatedList<Item>>) => {
this.hidden = !(itemsRD.hasSucceeded && itemsRD.payload && itemsRD.payload.page.length > 0);
});
} }
/** /**
@@ -82,4 +98,13 @@ export class RelatedItemsComponent implements OnInit {
this.items$ = this.relationshipService.getRelatedItemsByLabel(this.parentItem, this.relationType, this.options); this.items$ = this.relationshipService.getRelatedItemsByLabel(this.parentItem, this.relationType, this.options);
this.showingAll = false; this.showingAll = false;
} }
/**
* Unsubscribe from the item subscription
*/
ngOnDestroy(): void {
if (this.itemSub) {
this.itemSub.unsubscribe();
}
}
} }

View File

@@ -61,27 +61,24 @@
<div class="relationships-item-page"> <div class="relationships-item-page">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-4"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[parentItem]="item" [parentItem]="item"
[relationType]="'isProjectOfPublication'" [relationType]="'isProjectOfPublication'"
[label]="'relationships.isProjectOf' | translate"> [label]="'relationships.isProjectOf' | translate">
</ds-related-items> </ds-related-items>
</div> <ds-related-items
<div class="col-12 col-md-4"> class="col-12 col-md-4"
<ds-related-items [parentItem]="item"
[parentItem]="item" [relationType]="'isOrgUnitOfPublication'"
[relationType]="'isOrgUnitOfPublication'" [label]="'relationships.isOrgUnitOf' | translate">
[label]="'relationships.isOrgUnitOf' | translate"> </ds-related-items>
</ds-related-items> <ds-related-items
</div> class="col-12 col-md-4"
<div class="col-12 col-md-4"> [parentItem]="item"
<ds-related-items [relationType]="'isJournalIssueOfPublication'"
[parentItem]="item" [label]="'relationships.isJournalIssueOf' | translate">
[relationType]="'isJournalIssueOfPublication'" </ds-related-items>
[label]="'relationships.isJournalIssueOf' | translate">
</ds-related-items>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -26,25 +26,29 @@
[label]="'journalissue.page.journal-title'"> [label]="'journalissue.page.journal-title'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['journalissue.identifier.number']" [fields]="['publicationvolume.volumeNumber']"
[label]="'journalvolume.page.volume'">
</ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item"
[fields]="['publicationissue.issueNumber']"
[label]="'journalissue.page.number'"> [label]="'journalissue.page.number'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['journal.identifier.issn']" [fields]="['creativeworkseries.issn']"
[label]="'journalissue.page.journal-issn'"> [label]="'journalissue.page.journal-issn'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
</div> </div>
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['journalissue.issuedate']" [fields]="['creativework.datePublished']"
[label]="'journalissue.page.issuedate'"> [label]="'journalissue.page.issuedate'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['journalissue.identifier.description']" [fields]="['dc.description']"
[label]="'journalissue.page.description'"> [label]="'journalissue.page.description'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['journalissue.identifier.keyword']" [fields]="['creativework.keywords']"
[label]="'journalissue.page.keyword'"> [label]="'journalissue.page.keyword'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
</div> </div>
@@ -53,21 +57,21 @@
</div> </div>
</div> </div>
</div> </div>
<div class="relationships-item-page" *ngIf="(volumes$ | async) || (publications$ | async)"> <div class="relationships-item-page">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-4" *ngIf="volumes$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="volumes$ | async" [parentItem]="item"
[label]="'relationships.isSingleVolumeOf' | translate"> [relationType]="'isJournalVolumeOfIssue'"
</ds-related-items> [label]="'relationships.isSingleVolumeOf' | translate">
</div> </ds-related-items>
<div class="col-12 col-md-4" *ngIf="publications$ | async"> <ds-related-items
<ds-related-items class="mb-1 mt-1 col-12 col-md-4"
[items]="publications$ | async" [parentItem]="item"
[label]="'relationships.isPublicationOfJournalIssue' | translate"> [relationType]="'isPublicationOfJournalIssue'"
</ds-related-items> [label]="'relationships.isPublicationOfJournalIssue' | translate">
</div> </ds-related-items>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -23,17 +23,17 @@
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['journalvolume.identifier.volume']" [fields]="['publicationvolume.volumeNumber']"
[label]="'journalvolume.page.volume'"> [label]="'journalvolume.page.volume'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['journalvolume.issuedate']" [fields]="['creativework.datePublished']"
[label]="'journalvolume.page.issuedate'"> [label]="'journalvolume.page.issuedate'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
</div> </div>
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['journalvolume.identifier.description']" [fields]="['dc.description']"
[label]="'journalvolume.page.description'"> [label]="'journalvolume.page.description'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
</div> </div>
@@ -42,21 +42,21 @@
</div> </div>
</div> </div>
</div> </div>
<div class="relationships-item-page" *ngIf="(journals$ | async) || (issues$ | async)"> <div class="relationships-item-page">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-4" *ngIf="journals$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="journals$ | async" [parentItem]="item"
[label]="'relationships.isSingleJournalOf' | translate"> [relationType]="'isJournalOfVolume'"
</ds-related-items> [label]="'relationships.isSingleJournalOf' | translate">
</div> </ds-related-items>
<div class="col-12 col-md-4" *ngIf="issues$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="issues$ | async" [parentItem]="item"
[label]="'relationships.isIssueOf' | translate"> [relationType]="'isIssueOfJournalVolume'"
</ds-related-items> [label]="'relationships.isIssueOf' | translate">
</div> </ds-related-items>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -22,21 +22,21 @@
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-generic-item-page-field class="item-page-fields" [item]="item" <ds-generic-item-page-field class="item-page-fields" [item]="item"
[fields]="['journal.identifier.issn']" [fields]="['creativeworkseries.issn']"
[label]="'journal.page.issn'"> [label]="'journal.page.issn'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field class="item-page-fields" [item]="item" <ds-generic-item-page-field class="item-page-fields" [item]="item"
[fields]="['journal.publisher']" [fields]="['creativework.publisher']"
[label]="'journal.page.publisher'"> [label]="'journal.page.publisher'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['journal.contributor.editor']" [fields]="['creativework.editor']"
[label]="'journal.page.editor'"> [label]="'journal.page.editor'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
</div> </div>
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-generic-item-page-field class="item-page-fields" [item]="item" <ds-generic-item-page-field class="item-page-fields" [item]="item"
[fields]="['journal.identifier.description']" [fields]="['dc.description']"
[label]="'journal.page.description'"> [label]="'journal.page.description'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
</div> </div>
@@ -45,15 +45,15 @@
</div> </div>
</div> </div>
</div> </div>
<div class="relationships-item-page" *ngIf="volumes$ | async"> <div class="relationships-item-page">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-4" *ngIf="volumes$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="volumes$ | async" [parentItem]="item"
[label]="'relationships.isVolumeOf' | translate"> [relationType]="'isVolumeOfJournal'"
</ds-related-items> [label]="'relationships.isVolumeOf' | translate">
</div> </ds-related-items>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -23,25 +23,25 @@
<div class="row"> <div class="row">
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['orgunit.identifier.city']" [fields]="['organization.address.addressLocality']"
[label]="'orgunit.page.city'"> [label]="'orgunit.page.city'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['orgunit.identifier.country']" [fields]="['organization.adress.addressCountry']"
[label]="'orgunit.page.country'"> [label]="'orgunit.page.country'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['orgunit.identifier.id']" [fields]="['dc.identifier']"
[label]="'orgunit.page.id'"> [label]="'orgunit.page.id'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
</div> </div>
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['orgunit.identifier.dateestablished']" [fields]="['organization.foundingDate']"
[label]="'orgunit.page.dateestablished'"> [label]="'orgunit.page.dateestablished'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['orgunit.identifier.description']" [fields]="['dc.description']"
[label]="'orgunit.page.description'"> [label]="'orgunit.page.description'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
</div> </div>
@@ -50,27 +50,27 @@
</div> </div>
</div> </div>
</div> </div>
<div class="relationships-item-page" *ngIf="(people$ | async) || (projects$ | async) || (publications$ | async)"> <div class="relationships-item-page">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-4" *ngIf="people$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="people$ | async" [parentItem]="item"
[label]="'relationships.isPersonOf' | translate"> [relationType]="'isPersonOfOrgUnit'"
</ds-related-items> [label]="'relationships.isPersonOf' | translate">
</div> </ds-related-items>
<div class="col-12 col-md-4" *ngIf="projects$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="projects$ | async" [parentItem]="item"
[label]="'relationships.isProjectOf' | translate"> [relationType]="'isProjectOfOrgUnit'"
</ds-related-items> [label]="'relationships.isProjectOf' | translate">
</div> </ds-related-items>
<div class="col-12 col-md-4" *ngIf="publications$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="publications$ | async" [parentItem]="item"
[label]="'relationships.isPublicationOf' | translate"> [relationType]="'isPublicationOfOrgUnit'"
</ds-related-items> [label]="'relationships.isPublicationOf' | translate">
</div> </ds-related-items>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -17,38 +17,30 @@
<div class="col-12 col-md-10"> <div class="col-12 col-md-10">
<h2 class="item-page-title-field"> <h2 class="item-page-title-field">
{{'person.page.titleprefix' | translate}}<ds-metadata-values {{'person.page.titleprefix' | translate}}<ds-metadata-values
[mdValues]="item?.allMetadata(['dc.contributor.author'])"></ds-metadata-values> [mdValues]="[item?.firstMetadata('person.familyName'), item?.firstMetadata('person.givenName')]" [separator]="', '"></ds-metadata-values>
</h2> </h2>
<div class="row"> <div class="row">
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['person.identifier.email']" [fields]="['person.email']"
[label]="'person.page.email'"> [label]="'person.page.email'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['person.identifier.orcid']" [fields]="['person.birthDate']"
[label]="'person.page.orcid'">
</ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item"
[fields]="['person.identifier.birthdate']"
[label]="'person.page.birthdate'"> [label]="'person.page.birthdate'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item"
[fields]="['person.identifier.staffid']"
[label]="'person.page.staffid'">
</ds-generic-item-page-field>
</div> </div>
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['person.identifier.jobtitle']" [fields]="['person.jobTitle']"
[label]="'person.page.jobtitle'"> [label]="'person.page.jobtitle'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['person.identifier.lastname']" [fields]="['person.familyName']"
[label]="'person.page.lastname'"> [label]="'person.page.lastname'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['person.identifier.firstname']" [fields]="['person.givenName']"
[label]="'person.page.firstname'"> [label]="'person.page.firstname'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
</div> </div>
@@ -57,21 +49,21 @@
</div> </div>
</div> </div>
</div> </div>
<div class="relationships-item-page" *ngIf="(projects$ | async) || (orgUnits$ | async)"> <div class="relationships-item-page">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-4" *ngIf="projects$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="projects$ | async" [parentItem]="item"
[label]="'relationships.isProjectOf' | translate"> [relationType]="'isProjectOfPerson'"
</ds-related-items> [label]="'relationships.isProjectOf' | translate">
</div> </ds-related-items>
<div class="col-12 col-md-4" *ngIf="orgUnits$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="orgUnits$ | async" [parentItem]="item"
[label]="'relationships.isOrgUnitOf' | translate"> [relationType]="'isOrgUnitOfPerson'"
</ds-related-items> [label]="'relationships.isOrgUnitOf' | translate">
</div> </ds-related-items>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -22,9 +22,10 @@
</h2> </h2>
<div class="row"> <div class="row">
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-metadata-representation-list <ds-metadata-representation-list [parentItem]="item"
[label]="'project.page.contributor' | translate" [itemType]="'OrgUnit'"
[representations]="contributors$ | async"> [metadataField]="'project.contributor.other'"
[label]="'project.page.contributor' | translate">
</ds-metadata-representation-list> </ds-metadata-representation-list>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['project.identifier.funder']" [fields]="['project.identifier.funder']"
@@ -41,15 +42,15 @@
</div> </div>
<div class="col-12 col-md-6"> <div class="col-12 col-md-6">
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['project.identifier.id']" [fields]="['dc.identifier']"
[label]="'project.page.id'"> [label]="'project.page.id'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['project.identifier.description']" [fields]="['dc.description']"
[label]="'project.page.description'"> [label]="'project.page.description'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
<ds-generic-item-page-field [item]="item" <ds-generic-item-page-field [item]="item"
[fields]="['project.identifier.keyword']" [fields]="['dc.subject']"
[label]="'project.page.keyword'"> [label]="'project.page.keyword'">
</ds-generic-item-page-field> </ds-generic-item-page-field>
</div> </div>
@@ -58,27 +59,27 @@
</div> </div>
</div> </div>
</div> </div>
<div class="relationships-item-page" *ngIf="(people$ | async) || (publications$ | async) || (orgUnits$ | async)"> <div class="relationships-item-page">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-4" *ngIf="people$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="people$ | async" [parentItem]="item"
[label]="'relationships.isPersonOf' | translate"> [relationType]="'isPersonOfProject'"
</ds-related-items> [label]="'relationships.isPersonOf' | translate">
</div> </ds-related-items>
<div class="col-12 col-md-4" *ngIf="publications$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="publications$ | async" [parentItem]="item"
[label]="'relationships.isPublicationOf' | translate"> [relationType]="'isPublicationOfProject'"
</ds-related-items> [label]="'relationships.isPublicationOf' | translate">
</div> </ds-related-items>
<div class="col-12 col-md-4" *ngIf="orgUnits$ | async"> <ds-related-items
<ds-related-items class="col-12 col-md-4"
[items]="orgUnits$ | async" [parentItem]="item"
[label]="'relationships.isOrgUnitOf' | translate"> [relationType]="'isOrgUnitOfProject'"
</ds-related-items> [label]="'relationships.isOrgUnitOf' | translate">
</div> </ds-related-items>
</div> </div>
</div> </div>
</div> </div>