[Trunk|Library]: #4220: Add 'References' section in 'Research Data Landing page'.

git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@55057 d315682c-612b-4755-9ff5-7f18f6832af3
This commit is contained in:
konstantina.galouni 2019-03-21 09:36:39 +00:00
parent 8bb75a388d
commit f28d8a3b44
5 changed files with 76 additions and 16 deletions

View File

@ -83,6 +83,31 @@
</div></div> -->
<ul class="custom-accordion" uk-accordion>
<li *ngIf="datasetInfo.references" (click)="activeTab='References'">
<a class="uk-accordion-title" href="#">
References ({{datasetInfo.references.length | number}})
</a>
<div class="uk-accordion-content">
<div>
<div *ngIf="datasetInfo.references.length > pageSize" class="uk-margin-bottom">
<span class="uk-h6">{{datasetInfo.references.length | number}} references, page {{referencesPage | number}} of {{totalPages(datasetInfo.references.length) | number}}</span>
<paging-no-load class="uk-float-right" [currentPage]="referencesPage" [totalResults]="datasetInfo.references.length" [size]="pageSize" (pageChange)="updateReferencesPage($event)"></paging-no-load>
</div>
<div *ngFor="let item of datasetInfo.references.slice((referencesPage-1)*pageSize, referencesPage*pageSize)">
<p *ngIf=" item && item['url']"
class="custom-external custom-icon">
<a href="{{item['url']}}" target="_blank">
{{item['name']}}
</a>
</p>
<p *ngIf="!item['url']" class="pseudo-external custom-icon">
{{item['name']}}
</p>
</div>
</div>
</div>
</li>
<li *ngIf="datasetInfo.relatedResearchResults" (click)="activeTab='Related Research Results'">
<a class="uk-accordion-title" href="#">

View File

@ -37,8 +37,12 @@ export class DatasetComponent {
public totalDownloads: number;
public pageViews: number;
// Custom tab paging variables
public referencesPage: number = 1;
public pageSize: number = 10;
// Active tab variable for responsiveness
public activeTab: string = "Related Research Results";
public activeTab: string = "References";
// Map counting variable
public relatedResearchResultsNum: number = 0;
@ -200,4 +204,16 @@ export class DatasetComponent {
private handleError(message: string, error) {
console.error("Research Data Landing Page: "+message, error);
}
public updateReferencesPage($event) {
this.referencesPage = $event.value;
}
public totalPages(totalResults: number): number {
let totalPages:any = totalResults/this.pageSize;
if(!(Number.isInteger(totalPages))) {
totalPages = (parseInt(totalPages, this.pageSize) + 1);
}
return totalPages;
}
}

View File

@ -16,6 +16,7 @@ import {MetricsModule} from '../landing-utils/metrics.module';
import {AltMetricsModule} from '../../utils/altmetrics.module';
import {ConfigurationServiceModule} from '../../utils/configuration/configurationService.module';
import {IFrameModule} from '../../utils/iframe.module';
import {PagingModule} from '../../utils/paging.module';
import {DatasetService} from './dataset.service';
@ -29,7 +30,7 @@ import { SEOServiceModule } from '../../sharedComponents/SEO/SEOService.module';
imports: [
//MaterialModule.forRoot(),
CommonModule, FormsModule, SharedModule, RouterModule, LandingModule,
CiteThisModule, ResultLandingModule, MetricsModule, IFrameModule,
CiteThisModule, ResultLandingModule, MetricsModule, IFrameModule, PagingModule,
AltMetricsModule, ConfigurationServiceModule, Schema2jsonldModule, SEOServiceModule
],
declarations: [

View File

@ -28,21 +28,22 @@ export class DatasetService {
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
.map(res => <any> res.json())
.map(res => [res['result']['header']['dri:status'], res['result']['metadata']['oaf:entity']['oaf:result'],res])
.map(res => [res[1],
res[1]['title'],
res[1]['rels']['rel'],
res[1]['children'],
res[1]['pid'],
res[1]['subject'],
res[1]['bestaccessright'],
res[1]['collectedfrom'],
res[1]['context'],
.map(res => [res[1], //0
res[1]['title'], //1
res[1]['rels']['rel'], //2
res[1]['children'], //3
res[1]['pid'], //4
res[1]['subject'], //5
res[1]['bestaccessright'], //6
res[1]['collectedfrom'], //7
res[1]['context'], //8
//res[1]['resulttype'],
res[0],
res[1]['creator'],
res[1]['language'],
res[1]['country'],
res[2]
res[0], //9
res[1]['creator'], //10
res[1]['language'], //11
res[1]['country'], //12
res[2], //13
(res[1]['extraInfo']!= undefined && res[1]['extraInfo']['citations']!= undefined)? res[1]['extraInfo']['citations']['citation']:null //14
]).map(res => this.parseDatasetInfo(res));
}
@ -56,6 +57,7 @@ export class DatasetService {
parseDatasetInfo (data: any):any {
this.datasetInfo = new DatasetInfo();
this.datasetInfo.record = data[13];
// ['result']['metadata']['oaf:entity']['oaf:result']
if(data[0] != null) {
var date:string = (data[0].dateofacceptance)+""; // transform to string in case it is an integer
this.datasetInfo.date = (date && (date).indexOf('-') !== -1)?date.split('-')[0]:date;
@ -82,6 +84,7 @@ export class DatasetService {
if(data[0]['bestaccessright'] && data[0]['bestaccessright'].hasOwnProperty("classid")) {
this.datasetInfo.accessMode = data[0]['bestaccessright'].classid;
}
// ['result']['metadata']['oaf:entity']['oaf:result']['title']
if(data[1] != null) {
if(Array.isArray(data[1])) {
this.datasetInfo.title = data[1][0].content;
@ -93,6 +96,7 @@ export class DatasetService {
}
}
// ['result']['metadata']['oaf:entity']['oaf:result']['rels']['rel']
if(data[2] != null) {
let relation;
let length = data[2].length!=undefined ? data[2].length : 1;
@ -119,6 +123,7 @@ export class DatasetService {
}
}
// ['result']['metadata']['oaf:entity']['oaf:result']['children']
if(data[3] != null) {
if(data[3].hasOwnProperty("instance")) {
this.datasetInfo.hostedBy_collectedFrom = new Array<{ "downloadName": string, "downloadUrl": string[],
@ -155,10 +160,12 @@ export class DatasetService {
}
}
// ['result']['metadata']['oaf:entity']['oaf:result']['pid']
if(data[4] != null) {
this.datasetInfo.identifiers = this.parsingFunctions.parseIdentifiers(data[4]);
}
// ['result']['metadata']['oaf:entity']['oaf:result']['subject']
if(data[5] != null) {
let subjectResults: [string[], Map<string, string[]>, Map<string, string[]>] = this.parsingFunctions.parseAllSubjects(data[5]);
this.datasetInfo.subjects = subjectResults[0];
@ -170,6 +177,7 @@ export class DatasetService {
this.datasetInfo.hostedBy_collectedFrom, this.datasetInfo.publisher,
null, this.datasetInfo.identifiers/*, this.datasetInfo.title*/);
// ['result']['metadata']['oaf:entity']['oaf:result']['context']
if(data[8] != null) {
this.datasetInfo.contexts = this.parsingFunctions.parseContexts(data[8]);
}
@ -180,12 +188,14 @@ export class DatasetService {
// }
// }
// ['result']['header']['dri:status']
if(data[9] != null && data[9] == "under curation") {
this.datasetInfo.underCurationMessage = true;
} else {
this.datasetInfo.underCurationMessage = false;
}
// ['result']['metadata']['oaf:entity']['oaf:result']['creator']
if(data[10] != null) {
if(this.datasetInfo.authors == undefined) {
this.datasetInfo.authors = new Array<string>();
@ -204,13 +214,20 @@ export class DatasetService {
});
}
// ['result']['metadata']['oaf:entity']['oaf:result']['language']
if(data[11] != null) {
this.datasetInfo.languages = this.parsingFunctions.parseLanguages(data[11]);
}
// ['result']['metadata']['oaf:entity']['oaf:result']['country']
if(data[12] != null) {
this.datasetInfo.countries = this.parsingFunctions.parseCountries(data[12]);
}
// ['result']['metadata']['oaf:entity']['oaf:result']['extraInfo']['citations']['citation']
if(data[14] != null) {
this.datasetInfo.references = this.parsingFunctions.parseReferences(data[14]);
}
if(this.datasetInfo.relatedResearchResults) {
let self = this;
this.datasetInfo.relatedResearchResults.forEach(function (value, key, map) {

View File

@ -47,4 +47,5 @@ export class DatasetInfo {
similarResearchResults: { "name": string, "id": string, "date": string, "percentage": number, "class": string}[]; // percentage is for similarity
contexts: { "labelContext": string, "labelCategory": string, "labelConcept": string, "inline": boolean}[];
record;
references: { "name": string, "url": string}[];
}