[Trunk | Library]:
1. result-preview.ts: In interface "Author" add field "orcid_pending". 2. deletedByInference.service.ts, searchResearchResults.service.ts, resultLanding.service.ts: a. [Bug fix #6342]: On title parsing, set the title with classid = "main title" if exists. b. Add "orcid_pending" field to authors, to separate "orcid" from "orcid_pending". c. Only for resultLanding.service.ts: Add "orcid_pending" field to authors, to separate "orcid" from "orcid_pending". 3. open-aire-jsonld-converter.service.ts: [Bug fix #6342]: On title parsing, set the title with classid = "main title" if exists. 4. showAuthors.component.ts: Show black ORCID icon for authors with orcid_pending (and keep green icon for orcid). git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@60464 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
5ee9ca6803
commit
f592e7943f
|
@ -67,9 +67,22 @@ export class DeletedByInferenceService {
|
|||
let title = _result['oaf:result']['title'];
|
||||
|
||||
if(Array.isArray(title)) {
|
||||
result.title = title[0].content;
|
||||
for(let i=0; i<title.length; i++) {
|
||||
if(title[i] && title[i].content) {
|
||||
if(!result.title || title[i].classid == "main title") {
|
||||
result.title = String(title[i].content);
|
||||
}
|
||||
if(title[i].classid == "main title") {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!result.title) {
|
||||
result.title = "";
|
||||
}
|
||||
//result.title = title[0].content;
|
||||
} else {
|
||||
result.title = title.content;
|
||||
result.title = String(title.content);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -121,7 +134,7 @@ export class DeletedByInferenceService {
|
|||
|
||||
if(_result['oaf:result'] && _result['oaf:result']['creator']) {
|
||||
if(result.authors == undefined) {
|
||||
result.authors = new Array<{"fullName": string, "orcid": string}>();
|
||||
result.authors = new Array<{"fullName": string, "orcid": string, "orcid_pending": string}>();
|
||||
}
|
||||
|
||||
let authors = _result['oaf:result']['creator'];
|
||||
|
@ -133,7 +146,7 @@ export class DeletedByInferenceService {
|
|||
/*if (author.orcid && author.orcid.indexOf(properties.orcidURL) != -1) {
|
||||
author.orcid = author.orcid.substr(properties.orcidURL.length);
|
||||
}*/
|
||||
result['authors'][author.rank] = {"fullName": author.content, "orcid": author.orcid};
|
||||
result['authors'][author.rank] = {"fullName": author.content, "orcid": author.orcid, "orcid_pending": author.orcid_pending};
|
||||
}
|
||||
}
|
||||
result.authors = result.authors.filter(function (item) {
|
||||
|
|
|
@ -28,7 +28,7 @@ export class ResultLandingService {
|
|||
url += 'datasets/';
|
||||
} else if (type === 'software') {
|
||||
url += 'software/';
|
||||
} else if (type === 'orp') {
|
||||
} else if (type === 'orp' || type === 'other') {
|
||||
url += 'other/';
|
||||
} else if (type === 'result') {
|
||||
url += 'results/';
|
||||
|
@ -153,12 +153,17 @@ export class ResultLandingService {
|
|||
if(Array.isArray(data[1])) {
|
||||
for(let i=0; i<data[1].length; i++) {
|
||||
if(data[1][i] && data[1][i].content) {
|
||||
this.resultLandingInfo.title = data[1][i].content;
|
||||
if(!this.resultLandingInfo.title || data[1][i].classid == "main title") {
|
||||
this.resultLandingInfo.title = String(data[1][i].content);
|
||||
}
|
||||
if(data[1][i].classid == "main title") {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!this.resultLandingInfo.title) {
|
||||
this.resultLandingInfo.title = "";
|
||||
}
|
||||
// this.resultLandingInfo.title = (data[1][0] && data[1][0].content) ? String(data[1][0].content) : "";
|
||||
if(data[1][1].classid === 'subtitle') {
|
||||
this.resultLandingInfo.subtitle = (data[1][1] && data[1][1].content) ? String(data[1][1].content) : "";
|
||||
|
@ -334,7 +339,7 @@ export class ResultLandingService {
|
|||
// res['result']['metadata']['oaf:entity']['oaf:result']['creator']
|
||||
if(data[9] != null) {
|
||||
if(this.resultLandingInfo.authors == undefined) {
|
||||
this.resultLandingInfo.authors = new Array<{"fullName": string, "orcid": string}>();
|
||||
this.resultLandingInfo.authors = new Array<{"fullName": string, "orcid": string, "orcid_pending": string}>();
|
||||
}
|
||||
|
||||
let authors = data[9];
|
||||
|
@ -343,7 +348,7 @@ export class ResultLandingService {
|
|||
for(let i=0; i<length; i++) {
|
||||
let author = Array.isArray(authors) ? authors[i] : authors;
|
||||
if(author) {
|
||||
this.resultLandingInfo['authors'][author.rank] = {"fullName": author.content, "orcid": author.orcid};
|
||||
this.resultLandingInfo['authors'][author.rank] = {"fullName": author.content, "orcid": author.orcid, "orcid_pending": author.orcid_pending};
|
||||
}
|
||||
}
|
||||
this.resultLandingInfo.authors = this.resultLandingInfo.authors.filter(function (item) {
|
||||
|
|
|
@ -265,7 +265,20 @@ export class SearchResearchResultsService {
|
|||
result['title'] = {"name": '', "accessMode": '', "sc39": ''};
|
||||
|
||||
if(Array.isArray(resData['title'])) {
|
||||
result['title'].name = (resData['title'][0] && resData['title'][0].content) ? String(resData['title'][0].content) : "";
|
||||
for(let i=0; i<resData['title'].length; i++) {
|
||||
if(resData['title'][i] && resData['title'][i].content) {
|
||||
if(!result.title.name || resData['title'][i].classid == "main title") {
|
||||
result['title'].name = String(resData['title'][i].content);
|
||||
}
|
||||
if(resData['title'][i].classid == "main title") {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!result.title.name) {
|
||||
result['title'].name = "";
|
||||
}
|
||||
// result['title'].name = (resData['title'][0] && resData['title'][0].content) ? String(resData['title'][0].content) : "";
|
||||
} else {
|
||||
result['title'].name = (resData['title'] && resData['title'].content) ? String(resData['title'].content) : "";
|
||||
}
|
||||
|
@ -275,6 +288,8 @@ export class SearchResearchResultsService {
|
|||
if(canId){
|
||||
result['id'] = canId;
|
||||
}
|
||||
result['relcanId'] = result['id'];
|
||||
|
||||
if(resData['bestaccessright'] && resData['bestaccessright'].hasOwnProperty("classname")) {
|
||||
result['title'].accessMode = resData['bestaccessright'].classname;
|
||||
}
|
||||
|
@ -294,7 +309,7 @@ export class SearchResearchResultsService {
|
|||
|
||||
if(resData.hasOwnProperty("creator") && resData['creator'] != null) {
|
||||
if(result['authors'] == undefined) {
|
||||
result['authors'] = new Array<{"fullName": string, "orcid": string}>();
|
||||
result['authors'] = new Array<{"fullName": string, "orcid": string, "orcid_pending": string}>();
|
||||
}
|
||||
|
||||
let authors = resData['creator'];
|
||||
|
@ -303,7 +318,7 @@ export class SearchResearchResultsService {
|
|||
for(let i=0; i<length; i++) {
|
||||
let author = Array.isArray(authors) ? authors[i] : authors;
|
||||
if(author) {
|
||||
result['authors'][author.rank] = {"fullName": author.content, "orcid": author.orcid};
|
||||
result['authors'][author.rank] = {"fullName": author.content, "orcid": author.orcid, "orcid_pending": author.orcid_pending};
|
||||
}
|
||||
}
|
||||
result.authors = result.authors.filter(function (item) {
|
||||
|
|
|
@ -174,8 +174,23 @@ convertDatasource(datasource: any, URL, otherUrl): Organization {
|
|||
|
||||
private getTitle(result: any): String[] {
|
||||
const title = _.get(result, "result.metadata.oaf:entity.oaf:result.title", null);
|
||||
let return_title;
|
||||
if(title && Array.isArray(title) ){
|
||||
return (title[0] && title[0].content)?title[0].content:"";
|
||||
for(let i=0; i<title.length; i++) {
|
||||
if(title[i] && title[i].content) {
|
||||
if(!return_title || title[i].classid == "main title") {
|
||||
return_title = String(title[i].content);
|
||||
}
|
||||
if(title[i].classid == "main title") {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!return_title) {
|
||||
return_title = "";
|
||||
}
|
||||
return return_title;
|
||||
// return (title[0] && title[0].content)?title[0].content:"";
|
||||
}else{
|
||||
return (title && title.content)?title.content:"";
|
||||
}
|
||||
|
|
|
@ -13,17 +13,20 @@ import {properties} from "../../../../environments/environment";
|
|||
template: `
|
||||
<div *ngIf="authors" class="uk-height-max-medium uk-overflow-auto">
|
||||
<span *ngFor="let author of authors.slice(0,numberOfAuthors) let i=index">
|
||||
<span *ngIf="!author.orcid || !testBrowser"
|
||||
<span *ngIf="(!author.orcid && !author.orcid_pending) || !testBrowser"
|
||||
[class.uk-text-small]="small">
|
||||
{{author.fullName + "; "}}
|
||||
</span>
|
||||
<a *ngIf="author.orcid && testBrowser">
|
||||
<img src="assets/common-assets/common/ORCIDiD_icon16x16.png" alt="">{{" "}}
|
||||
<span [class.uk-text-small]="small">
|
||||
{{author.fullName + "; "}}
|
||||
<a *ngIf="(author.orcid || author.orcid_pending) && testBrowser" class="uk-display-inline-block space">
|
||||
<span>
|
||||
<img *ngIf="author.orcid" src="assets/common-assets/common/ORCIDiD_icon16x16.png" alt="">{{" "}}
|
||||
<img *ngIf="author.orcid_pending" src="assets/common-assets/common/ORCIDiD_iconbw16x16.png" alt="">{{" "}}
|
||||
<span [class.uk-text-small]="small">
|
||||
{{author.fullName + "; "}}
|
||||
</span>
|
||||
</span>
|
||||
</a>
|
||||
<div *ngIf="author.orcid && testBrowser"
|
||||
<div *ngIf="(author.orcid || author.orcid_pending) && testBrowser"
|
||||
class="default-dropdown uk-margin-remove-top uk-padding-medium uk-dropdown"
|
||||
uk-dropdown="pos: bottom-left; mode:click" style="min-width: 70px !important;">
|
||||
<b class="uk-margin-top">{{author.fullName}}</b>
|
||||
|
@ -31,18 +34,21 @@ import {properties} from "../../../../environments/environment";
|
|||
<div class="uk-text-muted uk-margin-small-bottom uk-margin-small-top">ORCID</div>
|
||||
<div>
|
||||
<div class="orcid uk-display-inline-block">
|
||||
<input #element class="uk-padding-small uk-padding-remove-vertical uk-disabled" style="min-height: 38px" name="code" [value]="author.orcid">
|
||||
<input #element class="uk-padding-small uk-padding-remove-vertical uk-disabled"
|
||||
style="min-height: 38px; min-width: 250px;" name="code" [value]="properties.orcidURL+(author.orcid ? author.orcid : author.orcid_pending)">
|
||||
<button [class]="'uk-button uk-button-primary uk-button-small uk-icon copy orcid_clipboard_btn_auhtor_'+i" style="min-height: 40px"
|
||||
(click)="copyToClipboard(element)" title="Copy to clipboard">
|
||||
<span class="custom-icon custom-copy-white"></span>
|
||||
</button>
|
||||
</div>
|
||||
<a class="uk-button uk-button-primary custom-icon-button target uk-button-icon uk-margin-small-left"
|
||||
title="Visit author in Orcid" [href]="properties.orcidURL+author.orcid" target="_blank">
|
||||
title="Visit author in ORCID" [href]="properties.orcidURL+(author.orcid ? author.orcid : author.orcid_pending)" target="_blank">
|
||||
<span class="custom-icon custom-external-white"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div *ngIf="author.orcid" class="uk-text-muted uk-text-small uk-margin-top">Harvested from ORCID Public Data File</div>
|
||||
|
||||
<hr>
|
||||
<div class="uk-margin-top">
|
||||
|
@ -51,7 +57,7 @@ import {properties} from "../../../../environments/environment";
|
|||
<div class="uk-text-center uk-margin-top uk-margin-large-left uk-margin-large-right">
|
||||
<a class="uk-button uk-text-bold portal-button uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
|
||||
(click)="onClick()"
|
||||
[queryParams]="routerHelper.createQueryParams(['orcid','oc'],[author['orcid'],'and'])"
|
||||
[queryParams]="routerHelper.createQueryParams(['orcid','oc'],[(author['orcid'] ? author['orcid'] : author['orcid_pending']),'and'])"
|
||||
routerLinkActive="router-link-active" [routerLink]="properties.searchLinkToAdvancedResults">
|
||||
<span class="space">Search</span>
|
||||
</a>
|
||||
|
|
|
@ -52,6 +52,7 @@ export interface Project {
|
|||
export interface Author {
|
||||
fullName: string;
|
||||
orcid: string;
|
||||
orcid_pending: string;
|
||||
}
|
||||
|
||||
export interface ResultTitle {
|
||||
|
|
Loading…
Reference in New Issue