[Trunk | Library]:
1. Create 'authors' folder in 'utils' to show authors, including dropdown with their ORCID information if available (used by landing & search pages). 2. Landing & Search Pages (services): Parse ORCID information of authors (creators) & cut it, if prefix is included. git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@55899 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
parent
bb4d406a8f
commit
adfd6b568d
|
@ -688,7 +688,7 @@ openaireORPPageChange($event) {
|
|||
result.result = item;
|
||||
if(item.authors){
|
||||
for(var j=0; j<item.authors.length; j++){
|
||||
result.authors.push(item.authors[j]);
|
||||
result.authors.push(item.authors[j]['fullName']);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
|
||||
<span *ngIf="!displayedResult.url" > {{((displayedResult.title == undefined || displayedResult.title == '')?'[no title available]':displayedResult.title)}}</span>
|
||||
</div>
|
||||
<div *ngIf="displayedResult.result.authors && displayedResult.result.authors.length >0 " class="uk-article-meta">Authors: <span *ngFor="let author of displayedResult.result.authors.slice(0,10) let i = index">{{author}}{{(i < (displayedResult.result.authors.slice(0,10).length-1))?"; ":""}}{{(i == displayedResult.result.authors.slice(0,10).length-1 && displayedResult.result.authors.length > 10)?"...":""}}</span></div>
|
||||
<div *ngIf="displayedResult.result.authors && displayedResult.result.authors.length >0 " class="uk-article-meta">Authors: <span *ngFor="let author of displayedResult.result.authors.slice(0,10) let i = index">{{author.fullName}}{{(i < (displayedResult.result.authors.slice(0,10).length-1))?"; ":""}}{{(i == displayedResult.result.authors.slice(0,10).length-1 && displayedResult.result.authors.length > 10)?"...":""}}</span></div>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
</div-->
|
||||
|
||||
<div class= " uk-margin-top">
|
||||
<showAuthors [authors]="datasetInfo.authors" searchPage="datasets"></showAuthors>
|
||||
<showAuthors [authors]="datasetInfo.authors"></showAuthors>
|
||||
<span *ngIf="datasetInfo.date != ''">({{datasetInfo.date}})</span>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -25,13 +25,15 @@ import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
|
|||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
import {ShowAuthorsModule} from "../../utils/authors/showAuthors.module";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
//MaterialModule.forRoot(),
|
||||
CommonModule, FormsModule, SharedModule, RouterModule, LandingModule,
|
||||
CiteThisModule, ResultLandingModule, MetricsModule, IFrameModule, PagingModule,
|
||||
AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule
|
||||
AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule,
|
||||
ShowAuthorsModule
|
||||
],
|
||||
declarations: [
|
||||
DatasetComponent
|
||||
|
|
|
@ -45,7 +45,7 @@ export class DatasetService {
|
|||
res[2], //13
|
||||
(res[1]['extraInfo']!= undefined && res[1]['extraInfo']['citations']!= undefined)? res[1]['extraInfo']['citations']['citation']:null, //14
|
||||
res[1]['journal'] //15
|
||||
]).map(res => this.parseDatasetInfo(res));
|
||||
]).map(res => this.parseDatasetInfo(res, properties));
|
||||
}
|
||||
|
||||
private handleError (error: Response) {
|
||||
|
@ -55,7 +55,7 @@ export class DatasetService {
|
|||
return Observable.throw(error || 'Server error');
|
||||
}
|
||||
|
||||
parseDatasetInfo (data: any):any {
|
||||
parseDatasetInfo (data: any, properties: EnvProperties):any {
|
||||
this.datasetInfo = new DatasetInfo();
|
||||
this.datasetInfo.record = data[13];
|
||||
// ['result']['metadata']['oaf:entity']['oaf:result']
|
||||
|
@ -199,19 +199,23 @@ export class DatasetService {
|
|||
// ['result']['metadata']['oaf:entity']['oaf:result']['creator']
|
||||
if(data[10] != null) {
|
||||
if(this.datasetInfo.authors == undefined) {
|
||||
this.datasetInfo.authors = new Array<string>();
|
||||
this.datasetInfo.authors = new Array<{"fullName": string, "orcid": string}>();
|
||||
}
|
||||
|
||||
let authors = data[10];
|
||||
let length = Array.isArray(authors) ? authors.length : 1;
|
||||
|
||||
for(let i=0; i<length; i++) {
|
||||
let author = Array.isArray(authors) ? authors[i] : authors;
|
||||
this.datasetInfo.authors[author.rank] = author.content;
|
||||
|
||||
if(author) {
|
||||
if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
|
||||
author.ORCID = author.ORCID.substr(properties.orcidURL.length);
|
||||
}
|
||||
this.datasetInfo['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
|
||||
}
|
||||
}
|
||||
|
||||
this.datasetInfo.authors = this.datasetInfo.authors.filter(function (item) {
|
||||
return (item != undefined);
|
||||
return (item != undefined && item.fullName != undefined);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -81,10 +81,10 @@ export class CiteThisComponent {
|
|||
citationData.author = [];
|
||||
var max_length = (this.result.authors.length > 10)?10:this.result.authors.length;
|
||||
for (var i =0 ;i < max_length; i++){
|
||||
if(this.result.authors[i] && this.result.authors[i].indexOf(", ") !== -1){
|
||||
citationData.author.push({given:this.result.authors[i].split(", ")[0], family:this.result.authors[i].split(", ")[1], 'parse-names':true});
|
||||
if(this.result.authors[i] && this.result.authors[i].fullName && this.result.authors[i].fullName.indexOf(", ") !== -1){
|
||||
citationData.author.push({given:this.result.authors[i].fullName.split(", ")[0], family:this.result.authors[i].fullName.split(", ")[1], 'parse-names':true});
|
||||
}else{
|
||||
citationData.author.push({given:"", family:this.result.authors[i], 'parse-names':true});
|
||||
citationData.author.push({given:"", family:this.result.authors[i].fullName, 'parse-names':true});
|
||||
}
|
||||
// citationData.authors.push(this.result.authors[i]);
|
||||
}
|
||||
|
|
|
@ -12,11 +12,12 @@ import { FormsModule } from '@angular/forms';
|
|||
import {PagingModule} from '../../../utils/paging.module';
|
||||
|
||||
import {ErrorMessagesModule} from '../../../utils/errorMessages.module';
|
||||
import {ShowAuthorsModule} from "../../../utils/authors/showAuthors.module";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, ResultLandingModule,
|
||||
PagingModule, ErrorMessagesModule
|
||||
PagingModule, ErrorMessagesModule, ShowAuthorsModule
|
||||
],
|
||||
declarations: [
|
||||
DeletedByInferenceComponent
|
||||
|
|
|
@ -28,10 +28,10 @@ export class DeletedByInferenceService {
|
|||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => res['result']['metadata']['oaf:entity'])
|
||||
.map(res => this.parseDeletedByInferencePublications(res));
|
||||
.map(res => this.parseDeletedByInferencePublications(res, properties));
|
||||
}
|
||||
|
||||
parseDeletedByInferencePublications (result: any): DeletedByInferenceResult {
|
||||
parseDeletedByInferencePublications (result: any, properties: EnvProperties): DeletedByInferenceResult {
|
||||
/*title, authors, abstract, List of projects, PIDs,
|
||||
collectedfrom (link pointing to the download url), access rights*/
|
||||
|
||||
|
@ -140,7 +140,7 @@ export class DeletedByInferenceService {
|
|||
|
||||
if(result['oaf:result'] && result['oaf:result']['creator']) {
|
||||
if(publication.authors == undefined) {
|
||||
publication.authors = new Array<string>();
|
||||
publication.authors = new Array<{"fullName": string, "orcid": string}>();
|
||||
}
|
||||
|
||||
let authors = result['oaf:result']['creator'];
|
||||
|
@ -148,10 +148,15 @@ export class DeletedByInferenceService {
|
|||
|
||||
for(let i=0; i<length; i++) {
|
||||
let author = Array.isArray(authors) ? authors[i] : authors;
|
||||
publication.authors[author.rank] = author.content;
|
||||
if(author) {
|
||||
if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
|
||||
author.ORCID = author.ORCID.substr(properties.orcidURL.length);
|
||||
}
|
||||
publication['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
|
||||
}
|
||||
}
|
||||
publication.authors = publication.authors.filter(function (item) {
|
||||
return (item != undefined);
|
||||
return (item != undefined && item.fullName != undefined);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import { FormsModule } from '@angular/forms';
|
|||
import { RouterModule } from '@angular/router';
|
||||
import {PagingModule} from '../../utils/paging.module';
|
||||
|
||||
import {ShowAuthorsComponent} from './showAuthors.component';
|
||||
//import {ShowAuthorsComponent} from './showAuthors.component';
|
||||
import {ShowIdentifiersComponent} from './showIdentifiers.component';
|
||||
import {ShowSubjectsComponent} from './showSubjects.component';
|
||||
import {FundedByComponent} from './fundedBy.component';
|
||||
|
@ -21,13 +21,13 @@ import {ShowPublisherModule} from "./showPublisher.module";
|
|||
CommonModule, FormsModule, RouterModule, PagingModule, ShowPublisherModule
|
||||
],
|
||||
declarations: [
|
||||
ShowAuthorsComponent,ShowIdentifiersComponent,ShowSubjectsComponent,
|
||||
ShowIdentifiersComponent,ShowSubjectsComponent,
|
||||
FundedByComponent,PublishedInComponent,AvailableOnComponent,TabTableComponent
|
||||
],
|
||||
providers:[
|
||||
],
|
||||
exports: [
|
||||
ShowAuthorsComponent, ShowIdentifiersComponent, ShowSubjectsComponent,
|
||||
ShowIdentifiersComponent, ShowSubjectsComponent,
|
||||
FundedByComponent, PublishedInComponent, AvailableOnComponent, TabTableComponent, ShowPublisherComponent
|
||||
]
|
||||
})
|
||||
|
|
|
@ -3,7 +3,7 @@ import {RouterHelper} from '../../utils/routerHelper.class';
|
|||
import {HelperFunctions} from "../../utils/HelperFunctions.class";
|
||||
|
||||
@Component({
|
||||
selector: 'showAuthors',
|
||||
selector: 'showAuthors1',
|
||||
template: `
|
||||
<span *ngIf="authors != undefined">
|
||||
<div *ngIf="showAll">
|
||||
|
@ -40,7 +40,7 @@ import {HelperFunctions} from "../../utils/HelperFunctions.class";
|
|||
|
||||
})
|
||||
|
||||
export class ShowAuthorsComponent {
|
||||
export class ShowAuthorsComponent1 {
|
||||
@Input() authors: { [key: string]: string }[];
|
||||
@Input() searchPage:string ="publications"
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
</span>
|
||||
|
||||
<div class= " uk-margin-top">
|
||||
<showAuthors [authors]="orpInfo.authors" searchPage="orps"></showAuthors>
|
||||
<showAuthors [authors]="orpInfo.authors"></showAuthors>
|
||||
<span *ngIf="orpInfo.date != ''">({{orpInfo.date}})</span>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -22,13 +22,15 @@ import {FreeGuard} from'../../login/freeGuard.guard';
|
|||
import {IsRouteEnabled} from '../../error/isRouteEnabled.guard';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
import {ShowAuthorsModule} from "../../utils/authors/showAuthors.module";
|
||||
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, SharedModule, RouterModule, LandingModule,
|
||||
CiteThisModule, ResultLandingModule, MetricsModule, IFrameModule, PagingModule,
|
||||
AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule
|
||||
AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule,
|
||||
ShowAuthorsModule
|
||||
],
|
||||
declarations: [
|
||||
OrpComponent
|
||||
|
|
|
@ -43,7 +43,7 @@ export class OrpService {
|
|||
res[2], //13
|
||||
(res[1]['extraInfo']!= undefined && res[1]['extraInfo']['citations']!= undefined)? res[1]['extraInfo']['citations']['citation']:null, //14
|
||||
res[1]['oaf:result']['journal'] //15
|
||||
]).map(res => this.parseOrpInfo(res));
|
||||
]).map(res => this.parseOrpInfo(res, properties));
|
||||
}
|
||||
|
||||
private handleError (error: Response) {
|
||||
|
@ -53,7 +53,7 @@ export class OrpService {
|
|||
return Observable.throw(error || 'Server error');
|
||||
}
|
||||
|
||||
parseOrpInfo (data: any):any {
|
||||
parseOrpInfo (data: any, properties: EnvProperties):any {
|
||||
this.orpInfo = new OrpInfo();
|
||||
this.orpInfo.record = data[13];
|
||||
if(data[0] != null) {
|
||||
|
@ -169,19 +169,23 @@ export class OrpService {
|
|||
|
||||
if(data[10] != null) {
|
||||
if(this.orpInfo.authors == undefined) {
|
||||
this.orpInfo.authors = new Array<string>();
|
||||
this.orpInfo.authors = new Array<{"fullName": string, "orcid": string}>();
|
||||
}
|
||||
|
||||
let authors = data[10];
|
||||
let length = Array.isArray(authors) ? authors.length : 1;
|
||||
|
||||
for(let i=0; i<length; i++) {
|
||||
let author = Array.isArray(authors) ? authors[i] : authors;
|
||||
this.orpInfo.authors[author.rank] = author.content;
|
||||
|
||||
if(author) {
|
||||
if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
|
||||
author.ORCID = author.ORCID.substr(properties.orcidURL.length);
|
||||
}
|
||||
this.orpInfo['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
|
||||
}
|
||||
}
|
||||
|
||||
this.orpInfo.authors = this.orpInfo.authors.filter(function (item) {
|
||||
return (item != undefined);
|
||||
return (item != undefined && item.fullName != undefined);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
|
||||
<div class= " uk-margin-top">
|
||||
<showAuthors [authors]="publicationInfo.authors" searchPage="publications"></showAuthors>
|
||||
<showAuthors [authors]="publicationInfo.authors"></showAuthors>
|
||||
<span *ngIf="publicationInfo.date != ''">({{publicationInfo.date}})</span>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -23,13 +23,14 @@ import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2j
|
|||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
|
||||
import {DeletedByInferenceModule} from '../landing-utils/deletedByInference/deletedByInference.module';
|
||||
import {ShowAuthorsModule} from "../../utils/authors/showAuthors.module";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, LandingModule, SharedModule, RouterModule,
|
||||
CiteThisModule, PagingModule, ResultLandingModule, IFrameModule,
|
||||
MetricsModule, AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule,
|
||||
DeletedByInferenceModule
|
||||
DeletedByInferenceModule, ShowAuthorsModule
|
||||
],
|
||||
declarations: [
|
||||
PublicationComponent
|
||||
|
|
|
@ -47,7 +47,7 @@ export class PublicationService {
|
|||
res[2], //14
|
||||
res[1]['oaf:result']['country'] //15
|
||||
])
|
||||
.map(res => this.parsePublicationInfo(res));
|
||||
.map(res => this.parsePublicationInfo(res, properties));
|
||||
}
|
||||
|
||||
private handleError (error: Response) {
|
||||
|
@ -57,7 +57,7 @@ export class PublicationService {
|
|||
return Observable.throw(error || 'Server error');
|
||||
}
|
||||
|
||||
parsePublicationInfo (data: any):any {
|
||||
parsePublicationInfo (data: any, properties: EnvProperties):any {
|
||||
this.publicationInfo = new PublicationInfo();
|
||||
this.publicationInfo.record = data[14];
|
||||
if(data[0] != null) {
|
||||
|
@ -243,7 +243,7 @@ export class PublicationService {
|
|||
|
||||
if(data[13] != null) {
|
||||
if(this.publicationInfo.authors == undefined) {
|
||||
this.publicationInfo.authors = new Array<string>();
|
||||
this.publicationInfo.authors = new Array<{"fullName": string, "orcid": string}>();
|
||||
}
|
||||
|
||||
let authors = data[13];
|
||||
|
@ -251,10 +251,15 @@ export class PublicationService {
|
|||
|
||||
for(let i=0; i<length; i++) {
|
||||
let author = Array.isArray(authors) ? authors[i] : authors;
|
||||
this.publicationInfo.authors[author.rank] = author.content;
|
||||
if(author) {
|
||||
if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
|
||||
author.ORCID = author.ORCID.substr(properties.orcidURL.length);
|
||||
}
|
||||
this.publicationInfo['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
|
||||
}
|
||||
}
|
||||
this.publicationInfo.authors = this.publicationInfo.authors.filter(function (item) {
|
||||
return (item != undefined);
|
||||
return (item != undefined && item.fullName != undefined);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
</div-->
|
||||
|
||||
<div class= " uk-margin-top">
|
||||
<showAuthors [authors]="softwareInfo.authors" searchPage="software"></showAuthors>
|
||||
<showAuthors [authors]="softwareInfo.authors"></showAuthors>
|
||||
<span *ngIf="softwareInfo.date != ''">({{softwareInfo.date}})</span>
|
||||
</div>
|
||||
|
||||
|
|
|
@ -19,11 +19,13 @@ import { LandingModule } from '../landing-utils/landing.module';
|
|||
import { FreeGuard } from'../../login/freeGuard.guard';
|
||||
import {Schema2jsonldModule} from '../../sharedComponents/schema2jsonld/schema2jsonld.module';
|
||||
import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
|
||||
import {ShowAuthorsModule} from "../../utils/authors/showAuthors.module";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, LandingModule, RouterModule, CiteThisModule, PagingModule,
|
||||
ResultLandingModule, IFrameModule, MetricsModule, AltMetricsModule, Schema2jsonldModule, SEOServiceModule
|
||||
ResultLandingModule, IFrameModule, MetricsModule, AltMetricsModule, Schema2jsonldModule, SEOServiceModule,
|
||||
ShowAuthorsModule
|
||||
],
|
||||
declarations: [
|
||||
SoftwareComponent
|
||||
|
|
|
@ -45,7 +45,7 @@ export class SoftwareService {
|
|||
res[1]['programmingLanguage'],
|
||||
res[2],
|
||||
res[1]['journal'] //15
|
||||
]).map(res => this.parseSoftwareInfo(res));
|
||||
]).map(res => this.parseSoftwareInfo(res, properties));
|
||||
}
|
||||
|
||||
private handleError (error: Response) {
|
||||
|
@ -55,7 +55,7 @@ export class SoftwareService {
|
|||
return Observable.throw(error || 'Server error');
|
||||
}
|
||||
|
||||
parseSoftwareInfo (data: any):any {
|
||||
parseSoftwareInfo (data: any, properties: EnvProperties):any {
|
||||
this.softwareInfo = new SoftwareInfo();
|
||||
this.softwareInfo.record = data[14];
|
||||
if(data[0] != null) {
|
||||
|
@ -190,7 +190,7 @@ export class SoftwareService {
|
|||
|
||||
if(data[10] != null) {
|
||||
if(this.softwareInfo.authors == undefined) {
|
||||
this.softwareInfo.authors = new Array<string>();
|
||||
this.softwareInfo.authors = new Array<{"fullName": string, "orcid": string}>();
|
||||
}
|
||||
|
||||
let authors = data[10];
|
||||
|
@ -198,11 +198,15 @@ export class SoftwareService {
|
|||
|
||||
for(let i=0; i<length; i++) {
|
||||
let author = Array.isArray(authors) ? authors[i] : authors;
|
||||
this.softwareInfo.authors[author.rank] = author.content;
|
||||
if(author) {
|
||||
if (author.ORCID && author.ORCID.indexOf(properties.orcidURL) != -1) {
|
||||
author.ORCID = author.ORCID.substr(properties.orcidURL.length);
|
||||
}
|
||||
this.softwareInfo['authors'][author.rank] = {"fullName": author.content, "orcid": author.ORCID};
|
||||
}
|
||||
}
|
||||
|
||||
this.softwareInfo.authors = this.softwareInfo.authors.filter(function (item) {
|
||||
return (item != undefined);
|
||||
return (item != undefined && item.fullName != undefined);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -24,12 +24,13 @@
|
|||
|
||||
<span *ngIf="result.title && result.title.sc39" class="uk-label custom-label label-sc39 " title="Special Clause 39">Special Clause 39</span>
|
||||
<div class="uk-margin-small">
|
||||
<span *ngIf="result['authors'] != undefined" class="resultsAuthors uk-margin-small-top" style="font-style: italic;">
|
||||
<span *ngFor="let author of result['authors'].slice(0,15)">
|
||||
{{author}};
|
||||
</span>
|
||||
<span *ngIf="result['authors'].length > 15">...</span>
|
||||
</span>
|
||||
<!-- <span *ngIf="result['authors'] != undefined" class="resultsAuthors uk-margin-small-top" style="font-style: italic;">-->
|
||||
<!-- <span *ngFor="let author of result['authors'].slice(0,15)">-->
|
||||
<!-- {{author}};-->
|
||||
<!-- </span>-->
|
||||
<!-- <span *ngIf="result['authors'].length > 15">...</span>-->
|
||||
<!-- </span>-->
|
||||
<showAuthors [authors]="result['authors']" [authorsLimit]=15 [showAll]=false></showAuthors>
|
||||
<span *ngIf="result.year != undefined && result.year != ''">
|
||||
({{result.year}})
|
||||
</span>
|
||||
|
|
|
@ -8,12 +8,14 @@ import {ErrorMessagesModule} from '../../utils/errorMessages.module';
|
|||
import {SearchResult} from '../../utils/entities/searchResult';
|
||||
import {SearchResultComponent} from './searchResult.component';
|
||||
import {ApprovedByCommunityModule} from '../../connect/approvedByCommunity/approved.module';
|
||||
import {ShowAuthorsModule} from "../../utils/authors/showAuthors.module";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule,
|
||||
RouterModule, ErrorMessagesModule,
|
||||
ApprovedByCommunityModule
|
||||
ApprovedByCommunityModule,
|
||||
ShowAuthorsModule
|
||||
],
|
||||
declarations: [
|
||||
SearchResultComponent
|
||||
|
|
|
@ -46,12 +46,13 @@
|
|||
<span *ngIf="result.country != undefined && result.country != ''" class="uk-label custom-label label-country" title="Country"> {{result.country}}</span>
|
||||
|
||||
<div class="uk-margin-small">
|
||||
<span *ngIf="result['authors'] != undefined" class="resultsAuthors uk-margin-small-top" style="font-style: italic;">
|
||||
<span *ngFor="let author of result['authors'].slice(0,15)">
|
||||
{{author}};
|
||||
</span>
|
||||
<span *ngIf="result['authors'].length > 15">...</span>
|
||||
</span>
|
||||
<!-- <span *ngIf="result['authors'] != undefined" class="resultsAuthors uk-margin-small-top" style="font-style: italic;">-->
|
||||
<!-- <span *ngFor="let author of result['authors'].slice(0,15)">-->
|
||||
<!-- {{author}};-->
|
||||
<!-- </span>-->
|
||||
<!-- <span *ngIf="result['authors'].length > 15">...</span>-->
|
||||
<!-- </span>-->
|
||||
<showAuthors [authors]="result['authors']" [authorsLimit]=15 [showAll]=false></showAuthors>
|
||||
<span *ngIf="result.year != undefined && result.year != ''">
|
||||
({{result.year}})
|
||||
</span>
|
||||
|
|
|
@ -5,11 +5,12 @@ import { FormsModule } from '@angular/forms';
|
|||
import {SearchResult} from '../../utils/entities/searchResult';
|
||||
import {TabResultComponent} from './tabResult.component';
|
||||
import {RouterModule} from '@angular/router';
|
||||
import {ShowAuthorsModule} from "../../utils/authors/showAuthors.module";
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule,
|
||||
RouterModule
|
||||
RouterModule, ShowAuthorsModule
|
||||
],
|
||||
declarations: [
|
||||
TabResultComponent,
|
||||
|
|
|
@ -37,14 +37,14 @@ export class SearchDatasetsService {
|
|||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
//.do(res => console.info(res))
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "dataset")]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "dataset")]);
|
||||
}
|
||||
searchDatasetById (id: string , properties:EnvProperties):any {
|
||||
|
||||
let url = properties.searchAPIURLLAst+"datasets/"+id+"?format=json";
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => this.parseResults(res));
|
||||
.map(res => this.parseResults(res, properties));
|
||||
}
|
||||
|
||||
searchAggregators (id: string, params: string, refineParams:string, page: number, size: number, properties:EnvProperties ):any {
|
||||
|
@ -89,7 +89,7 @@ export class SearchDatasetsService {
|
|||
.map(res => <any> res.json())
|
||||
//.do(res => console.info(res))
|
||||
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "dataset")]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "dataset")]);
|
||||
}
|
||||
advancedSearchDatasets (params: string, page: number, size: number, sortBy: string, properties:EnvProperties ):any {
|
||||
let url = properties.searchResourcesAPIURL;
|
||||
|
@ -112,7 +112,7 @@ export class SearchDatasetsService {
|
|||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
//.do(res => console.info(res))
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
searchDatasetsForEntity (params: string, page: number, size: number, properties:EnvProperties):any {
|
||||
let link = properties.searchAPIURLLAst;
|
||||
|
@ -120,7 +120,7 @@ export class SearchDatasetsService {
|
|||
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
|
||||
searchDatasetsForDataproviders(params: string, page: number, size: number, properties:EnvProperties):any {
|
||||
|
@ -128,10 +128,10 @@ export class SearchDatasetsService {
|
|||
let url = link+params+ "&page="+(page-1)+"&size="+size + "&format=json";
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
|
||||
parseResults(data: any): SearchResult[] {
|
||||
parseResults(data: any, properties: EnvProperties): SearchResult[] {
|
||||
let results: SearchResult[] = [];
|
||||
|
||||
let length = Array.isArray(data) ? data.length : 1;
|
||||
|
@ -220,7 +220,7 @@ export class SearchDatasetsService {
|
|||
|
||||
if(resData.hasOwnProperty("creator") && resData['creator'] != null) {
|
||||
if(result['authors'] == undefined) {
|
||||
result['authors'] = new Array<string>();
|
||||
result['authors'] = new Array<{"fullName": string, "orcid": string}>();
|
||||
}
|
||||
|
||||
let authors = resData['creator'];
|
||||
|
@ -228,10 +228,15 @@ export class SearchDatasetsService {
|
|||
|
||||
for(let i=0; i<length; i++) {
|
||||
let author = Array.isArray(authors) ? authors[i] : authors;
|
||||
result.authors[author.rank] = author.content;
|
||||
if(author) {
|
||||
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 = result.authors.filter(function (item) {
|
||||
return (item != undefined);
|
||||
return (item != undefined && item.fullName != undefined);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ export class SearchOrpsService {
|
|||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
//.do(res => console.info(res))
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "other")]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "other")]);
|
||||
}
|
||||
searchOrpById (id: string , properties:EnvProperties):any {
|
||||
|
||||
|
@ -45,7 +45,7 @@ export class SearchOrpsService {
|
|||
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => this.parseResults(res));
|
||||
.map(res => this.parseResults(res, properties));
|
||||
}
|
||||
|
||||
searchAggregators (id: string, params: string, refineParams:string, page: number, size: number, properties:EnvProperties ):any {
|
||||
|
@ -91,7 +91,7 @@ export class SearchOrpsService {
|
|||
.map(res => <any> res.json())
|
||||
//.do(res => console.info(res))
|
||||
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "other")]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "other")]);
|
||||
}
|
||||
advancedSearchOrps (params: string, page: number, size: number, sortBy: string, properties:EnvProperties ):any {
|
||||
let url = properties.searchResourcesAPIURL;
|
||||
|
@ -115,7 +115,7 @@ export class SearchOrpsService {
|
|||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
//.do(res => console.info(res))
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
searchOrpsForEntity (params: string, page: number, size: number, properties:EnvProperties):any {
|
||||
let link = properties.searchAPIURLLAst;
|
||||
|
@ -124,7 +124,7 @@ export class SearchOrpsService {
|
|||
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
|
||||
searchOrpsForDataproviders(params: string, page: number, size: number, properties:EnvProperties):any {
|
||||
|
@ -133,10 +133,10 @@ export class SearchOrpsService {
|
|||
let url = link+params+ "&page="+(page-1)+"&size="+size + "&format=json";
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
|
||||
parseResults(data: any): SearchResult[] {
|
||||
parseResults(data: any, properties: EnvProperties): SearchResult[] {
|
||||
let results: SearchResult[] = [];
|
||||
|
||||
let length = Array.isArray(data) ? data.length : 1;
|
||||
|
@ -225,7 +225,7 @@ export class SearchOrpsService {
|
|||
|
||||
if(resData.hasOwnProperty("creator") && resData['creator'] != null) {
|
||||
if(result['authors'] == undefined) {
|
||||
result['authors'] = new Array<string>();
|
||||
result['authors'] = new Array<{"fullName": string, "orcid": string}>();
|
||||
}
|
||||
|
||||
let authors = resData['creator'];
|
||||
|
@ -233,10 +233,14 @@ export class SearchOrpsService {
|
|||
|
||||
for(let i=0; i<length; i++) {
|
||||
let author = Array.isArray(authors) ? authors[i] : authors;
|
||||
result.authors[author.rank] = author.content;
|
||||
}
|
||||
if(author) {
|
||||
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 = result.authors.filter(function (item) {
|
||||
return (item != undefined);
|
||||
return (item != undefined && item.fullName != undefined);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ export class SearchPublicationsService {
|
|||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
// .do(res => console.info(res))
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "publication")]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "publication")]);
|
||||
}
|
||||
searchPublicationById (id: string, properties:EnvProperties ):any {
|
||||
|
||||
|
@ -46,7 +46,7 @@ export class SearchPublicationsService {
|
|||
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => this.parseResults(res));
|
||||
.map(res => this.parseResults(res, properties));
|
||||
}
|
||||
|
||||
searchAggregators (id: string, params: string, refineParams:string, page: number, size: number, properties:EnvProperties ):any {
|
||||
|
@ -91,7 +91,7 @@ export class SearchPublicationsService {
|
|||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
//.do(res => console.info(res))
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "publication")]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "publication")]);
|
||||
}
|
||||
|
||||
advancedSearchPublications (params: string, page: number, size: number, sortBy: string, properties:EnvProperties ):any {
|
||||
|
@ -116,7 +116,7 @@ export class SearchPublicationsService {
|
|||
.map(res => <any> res.json())
|
||||
//.do(res => console.info(res))
|
||||
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
searchPublicationsForEntity (params: string, page: number, size: number, properties:EnvProperties):any {
|
||||
let link = properties.searchAPIURLLAst;
|
||||
|
@ -127,7 +127,7 @@ export class SearchPublicationsService {
|
|||
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
|
||||
searchPublicationsForDataproviders(params: string, page: number, size: number, properties:EnvProperties):any {
|
||||
|
@ -135,7 +135,7 @@ export class SearchPublicationsService {
|
|||
let url = link+params+ "&page="+(page-1)+"&size="+size + "&format=json";
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
/*
|
||||
searchPublicationsCSV (params: string, refineParams:string, page: number, size: number):any {
|
||||
|
@ -161,7 +161,7 @@ export class SearchPublicationsService {
|
|||
}
|
||||
*/
|
||||
|
||||
parseResults(data: any): SearchResult[] {
|
||||
parseResults(data: any, properties: EnvProperties): SearchResult[] {
|
||||
let results: SearchResult[] = [];
|
||||
|
||||
let length = Array.isArray(data) ? data.length : 1;
|
||||
|
@ -256,7 +256,7 @@ export class SearchPublicationsService {
|
|||
|
||||
if(resData.hasOwnProperty("creator") && resData['creator'] != null) {
|
||||
if(result['authors'] == undefined) {
|
||||
result['authors'] = new Array<string>();
|
||||
result['authors'] = new Array<{"fullName": string, "orcid": string}>();
|
||||
}
|
||||
|
||||
let authors = resData['creator'];
|
||||
|
@ -264,10 +264,15 @@ export class SearchPublicationsService {
|
|||
|
||||
for(let i=0; i<length; i++) {
|
||||
let author = Array.isArray(authors) ? authors[i] : authors;
|
||||
result.authors[author.rank] = author.content;
|
||||
if(author) {
|
||||
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 = result.authors.filter(function (item) {
|
||||
return (item != undefined);
|
||||
return (item != undefined && item.fullName != undefined);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ export class SearchSoftwareService {
|
|||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
//.do(res => console.info(res))
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "software")]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "software")]);
|
||||
}
|
||||
searchSoftwareById (id: string, properties:EnvProperties ):any {
|
||||
|
||||
|
@ -45,7 +45,7 @@ export class SearchSoftwareService {
|
|||
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => this.parseResults(res));
|
||||
.map(res => this.parseResults(res, properties));
|
||||
}
|
||||
|
||||
searchAggregators (id: string, params: string, refineParams:string, page: number, size: number, properties:EnvProperties ):any {
|
||||
|
@ -88,7 +88,7 @@ export class SearchSoftwareService {
|
|||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
//.do(res => console.info(res))
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "software")]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties),RefineResultsUtils.parse(res['refineResults'],refineFields, "software")]);
|
||||
}
|
||||
advancedSearchSoftware (params: string, page: number, size: number, sortBy: string, properties:EnvProperties ):any {
|
||||
let url = properties.searchResourcesAPIURL;
|
||||
|
@ -111,7 +111,7 @@ export class SearchSoftwareService {
|
|||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
//.do(res => console.info(res))
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
searchSoftwareForEntity (params: string, page: number, size: number, properties:EnvProperties):any {
|
||||
let link = properties.searchAPIURLLAst;
|
||||
|
@ -119,7 +119,7 @@ export class SearchSoftwareService {
|
|||
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
|
||||
searchSoftwareForDataproviders(params: string, page: number, size: number, properties:EnvProperties):any {
|
||||
|
@ -128,10 +128,10 @@ export class SearchSoftwareService {
|
|||
|
||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||
.map(res => <any> res.json())
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'])]);
|
||||
.map(res => [res['meta'].total, this.parseResults(res['results'], properties)]);
|
||||
}
|
||||
|
||||
parseResults(data: any): SearchResult[] {
|
||||
parseResults(data: any, properties: EnvProperties): SearchResult[] {
|
||||
let results: SearchResult[] = [];
|
||||
|
||||
let length = Array.isArray(data) ? data.length : 1;
|
||||
|
@ -237,7 +237,7 @@ export class SearchSoftwareService {
|
|||
|
||||
if(resData.hasOwnProperty("creator") && resData['creator'] != null) {
|
||||
if(result['authors'] == undefined) {
|
||||
result['authors'] = new Array<string>();
|
||||
result['authors'] = new Array<{"fullName": string, "orcid": string}>();
|
||||
}
|
||||
|
||||
let authors = resData['creator'];
|
||||
|
@ -245,10 +245,15 @@ export class SearchSoftwareService {
|
|||
|
||||
for(let i=0; i<length; i++) {
|
||||
let author = Array.isArray(authors) ? authors[i] : authors;
|
||||
result.authors[author.rank] = author.content;
|
||||
if(author) {
|
||||
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 = result.authors.filter(function (item) {
|
||||
return (item != undefined);
|
||||
return (item != undefined && item.fullName != undefined);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,120 @@
|
|||
import {Component, Input} from '@angular/core';
|
||||
import {ActivatedRoute} from "@angular/router";
|
||||
import {HelperFunctions} from '../HelperFunctions.class';
|
||||
import {RouterHelper} from "../routerHelper.class";
|
||||
import {EnvProperties} from '../properties/env-properties';
|
||||
|
||||
@Component({
|
||||
selector: 'showAuthors',
|
||||
template: `
|
||||
<span *ngIf="authors != undefined">
|
||||
<div *ngIf="showAll && numberOfAuthors > authorsLimit">
|
||||
<a (click)="numberOfAuthors = authorsLimit;">View less authors</a>
|
||||
</div>
|
||||
|
||||
<span *ngFor="let author of authors.slice(0,numberOfAuthors) let i=index">
|
||||
<i *ngIf="!author.orcid || (properties.environment != 'beta' && properties.environment != 'development')">{{author.fullName}}</i
|
||||
><a *ngIf="author.orcid && (properties.environment == 'beta' || properties.environment == 'development')"><i>{{author.fullName}}</i></a
|
||||
><div *ngIf="author.orcid && (properties.environment == 'beta' || properties.environment == 'development')" class=" default-dropdown uk-margin-remove-top uk-padding-medium"
|
||||
uk-dropdown="pos: bottom-left; mode:hover" style="min-width: 70px !important;">
|
||||
<b class="uk-margin-top">{{author.fullName}}</b>
|
||||
|
||||
<div>
|
||||
<div class="uk-text-muted">ORCID</div>
|
||||
<span><code class="uk-padding-small" [id]="'orcid_clipboard_auhtor_'+i">{{author.orcid}}</code></span>
|
||||
<span>
|
||||
<button [class]="'uk-icon-clipboard uk-button uk-button-primary uk-button-small orcid_clipboard_btn_auhtor_'+i"
|
||||
[attr.data-clipboard-target]="'#orcid_clipboard_auhtor_'+i" title="Copy to clipboard">
|
||||
Copy
|
||||
</button>
|
||||
<a class="uk-button uk-button-primary uk-button-small" title="Visit author in Orcid"
|
||||
[href]="properties.orcidURL+author.orcid" target="_blank">
|
||||
Visit
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<div class="uk-margin-top">
|
||||
Search <b>{{author.fullName}}</b> by <b>ORCID</b> in OpenAIRE's
|
||||
</div>
|
||||
<div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
|
||||
<a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
|
||||
[queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])" routerLinkActive="router-link-active" routerLink="/search/advanced/publications">
|
||||
Publications
|
||||
</a>
|
||||
</div>
|
||||
<div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
|
||||
<a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
|
||||
[queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])" routerLinkActive="router-link-active" routerLink="/search/advanced/datasets">
|
||||
Research Data
|
||||
</a>
|
||||
</div>
|
||||
<div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
|
||||
<a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
|
||||
[queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])" routerLinkActive="router-link-active" routerLink="/search/advanced/software">
|
||||
Software
|
||||
</a>
|
||||
</div>
|
||||
<div class="uk-text-center uk-margin-small uk-margin-large-left uk-margin-large-right">
|
||||
<a class="uk-button uk-button-small portal-button uk-padding uk-padding-remove-top uk-padding-remove-bottom uk-width-1-1"
|
||||
[queryParams]="routerHelper.createQueryParams(['orcid','oc'],[quote(author['orcid']),'and'])" routerLinkActive="router-link-active" routerLink="/search/advanced/other">
|
||||
Other Research Products
|
||||
</a>
|
||||
</div>
|
||||
</div
|
||||
><span>;</span>
|
||||
</span>
|
||||
<span *ngIf="numberOfAuthors == authorsLimit && authors.length > authorsLimit"> ... </span>
|
||||
<span *ngIf="showAll && numberOfAuthors == authorsLimit && authors.length > authorsLimit">
|
||||
<a (click)="numberOfAuthors = authors.length;">
|
||||
view all {{authors.length | number}} authors
|
||||
</a>
|
||||
</span>
|
||||
<span *ngIf="showAll && numberOfAuthors > authorsLimit">
|
||||
<a (click)="numberOfAuthors = authorsLimit; scroll()">View less authors</a>
|
||||
</span>
|
||||
</span>
|
||||
`
|
||||
|
||||
})
|
||||
|
||||
export class ShowAuthorsComponent {
|
||||
@Input() authors: {"fullName": string, "orcid": string}[];
|
||||
@Input() authorsLimit: number = 30;
|
||||
@Input() showAll: boolean = true;
|
||||
|
||||
public numberOfAuthors: number;
|
||||
public properties:EnvProperties;
|
||||
public routerHelper:RouterHelper = new RouterHelper();
|
||||
|
||||
constructor (private route: ActivatedRoute) {}
|
||||
|
||||
ngOnInit() {
|
||||
this.route.data.subscribe((data: { envSpecific: EnvProperties }) => {
|
||||
this.properties = data.envSpecific;
|
||||
});
|
||||
this.numberOfAuthors = this.authorsLimit;
|
||||
|
||||
if(typeof window !== 'undefined') {
|
||||
let orcid_clipboard;
|
||||
let Clipboard;
|
||||
Clipboard = require('clipboard');
|
||||
if(this.authors) {
|
||||
this.authors.forEach((author, index) => {
|
||||
if (author && author.orcid) {
|
||||
orcid_clipboard = new Clipboard('.orcid_clipboard_btn_auhtor_' + index);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public quote(params: string):string {
|
||||
return '"'+params+'"';
|
||||
}
|
||||
|
||||
public scroll() {
|
||||
HelperFunctions.scroll();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
import { NgModule} from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import { RouterModule } from '@angular/router';
|
||||
|
||||
import {ShowAuthorsComponent} from './showAuthors.component';
|
||||
|
||||
@NgModule({
|
||||
imports: [
|
||||
CommonModule, FormsModule, RouterModule
|
||||
],
|
||||
declarations: [
|
||||
ShowAuthorsComponent
|
||||
],
|
||||
providers:[
|
||||
],
|
||||
exports: [
|
||||
ShowAuthorsComponent
|
||||
]
|
||||
})
|
||||
export class ShowAuthorsModule { }
|
|
@ -4,7 +4,7 @@ export class DatasetInfo {
|
|||
title: string;
|
||||
subtitle: string;
|
||||
accessMode: string;
|
||||
authors: string[];
|
||||
authors: {"fullName": string, "orcid": string}[];
|
||||
date: string;
|
||||
dateofacceptance: string;
|
||||
embargoEndDate: string;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
export class DeletedByInferenceResult {
|
||||
title: string;
|
||||
accessMode: string;
|
||||
authors: string[];
|
||||
authors: {"fullName": string, "orcid": string}[];
|
||||
|
||||
date: string;
|
||||
dateofacceptance: string;
|
||||
|
|
|
@ -2,7 +2,7 @@ export class OrpInfo {
|
|||
underCurationMessage: boolean;
|
||||
title: string;
|
||||
accessMode: string;
|
||||
authors: string[];
|
||||
authors: {"fullName": string, "orcid": string}[];
|
||||
date: string;
|
||||
dateofacceptance: string;
|
||||
embargoEndDate: string;
|
||||
|
|
|
@ -3,7 +3,7 @@ export class PublicationInfo {
|
|||
//title: { "name": string, "url": string, "accessMode": string};
|
||||
title: string;
|
||||
accessMode: string;
|
||||
authors: string[];
|
||||
authors: {"fullName": string, "orcid": string}[];
|
||||
date: string;
|
||||
dateofacceptance: string;
|
||||
embargoEndDate: string;
|
||||
|
|
|
@ -11,7 +11,7 @@ export class SearchResult {
|
|||
description: string;
|
||||
year: string;
|
||||
embargoEndDate: string;
|
||||
authors: string[];
|
||||
authors: {"fullName": string, "orcid": string}[];
|
||||
|
||||
//datasets & orp:
|
||||
publisher: string;
|
||||
|
|
|
@ -3,7 +3,7 @@ export class SoftwareInfo {
|
|||
//title: { "name": string, "url": string, "accessMode": string};
|
||||
title: string;
|
||||
accessMode: string;
|
||||
authors: string[];
|
||||
authors: {"fullName": string, "orcid": string}[];
|
||||
date: string;
|
||||
dateofacceptance: string;
|
||||
embargoEndDate: string;
|
||||
|
|
Loading…
Reference in New Issue