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 { ItemViewMode } from '../../../shared/items/item-type-decorator';
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 { RelationshipService } from '../../../core/data/relationship.service';
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({
selector: 'ds-related-items',
@@ -16,7 +19,7 @@ import { FindAllOptions } from '../../../core/data/request.models';
* 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
*/
export class RelatedItemsComponent implements OnInit {
export class RelatedItemsComponent implements OnInit, OnDestroy {
/**
* The parent of the list of related items to display
*/
@@ -39,6 +42,11 @@ export class RelatedItemsComponent implements OnInit {
*/
@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
*/
@@ -60,11 +68,19 @@ export class RelatedItemsComponent implements OnInit {
*/
showingAll = false;
/**
* Subscription on items used to update the "hidden" property of this component
*/
itemSub: Subscription;
constructor(public relationshipService: RelationshipService) {
}
ngOnInit(): void {
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.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="container">
<div class="row">
<div class="col-12 col-md-4">
<ds-related-items
[parentItem]="item"
[relationType]="'isProjectOfPublication'"
[label]="'relationships.isProjectOf' | translate">
</ds-related-items>
</div>
<div class="col-12 col-md-4">
<ds-related-items
[parentItem]="item"
[relationType]="'isOrgUnitOfPublication'"
[label]="'relationships.isOrgUnitOf' | translate">
</ds-related-items>
</div>
<div class="col-12 col-md-4">
<ds-related-items
[parentItem]="item"
[relationType]="'isJournalIssueOfPublication'"
[label]="'relationships.isJournalIssueOf' | translate">
</ds-related-items>
</div>
<ds-related-items
class="col-12 col-md-4"
[parentItem]="item"
[relationType]="'isProjectOfPublication'"
[label]="'relationships.isProjectOf' | translate">
</ds-related-items>
<ds-related-items
class="col-12 col-md-4"
[parentItem]="item"
[relationType]="'isOrgUnitOfPublication'"
[label]="'relationships.isOrgUnitOf' | translate">
</ds-related-items>
<ds-related-items
class="col-12 col-md-4"
[parentItem]="item"
[relationType]="'isJournalIssueOfPublication'"
[label]="'relationships.isJournalIssueOf' | translate">
</ds-related-items>
</div>
</div>
</div>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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