diff --git a/landingPages/landing-utils/fundedBy.component.ts b/landingPages/landing-utils/fundedBy.component.ts
index 9cb60767..f5e78cff 100644
--- a/landingPages/landing-utils/fundedBy.component.ts
+++ b/landingPages/landing-utils/fundedBy.component.ts
@@ -79,10 +79,10 @@ export class FundedByComponent {
public buildFundingTooltip(item: { "id": string, "acronym": string, "title": string,
"funderShortname": string, "funderName": string,
"funding": string, "code": string, "provenanceAction": string, inline: boolean}) {
- let tooltipContent: string = "
";
+
return tooltipContent;
}
diff --git a/landingPages/landing-utils/parsingFunctions.class.ts b/landingPages/landing-utils/parsingFunctions.class.ts
index c08f37f7..4b75a72b 100644
--- a/landingPages/landing-utils/parsingFunctions.class.ts
+++ b/landingPages/landing-utils/parsingFunctions.class.ts
@@ -10,7 +10,7 @@ export class ParsingFunctions {
"funding": string, "code": string,
"provenanceAction": string, "inline": boolean
}[],
- relation: any, projectsProvenanceVocabulary: any):
+ relation: any, provenanceActionVocabulary: any):
{ "id": string, "acronym": string, "title": string,
"funderShortname": string, "funderName": string,
"funding": string, "code": string,
@@ -39,8 +39,8 @@ export class ParsingFunctions {
fundedByProject['title'] = relation.title;
fundedByProject['code'] = relation.code;
- if(relation.provenanceaction in projectsProvenanceVocabulary) {
- fundedByProject['provenanceAction'] = projectsProvenanceVocabulary[relation.provenanceaction];
+ if(provenanceActionVocabulary != null && relation.provenanceaction in provenanceActionVocabulary) {
+ fundedByProject['provenanceAction'] = provenanceActionVocabulary[relation.provenanceaction];
}
} else {
fundedByProject['id'] = "";
@@ -535,7 +535,6 @@ export class ParsingFunctions {
contexts[position]['labelCategory'] = category.label;
contexts[position]['labelConcept'] = null;
position++;
- console.info(contexts);
}
}
} else {
diff --git a/landingPages/result/resultLanding.component.ts b/landingPages/result/resultLanding.component.ts
index 83a2d590..7c70f95e 100644
--- a/landingPages/result/resultLanding.component.ts
+++ b/landingPages/result/resultLanding.component.ts
@@ -134,7 +134,7 @@ export class ResultLandingComponent {
this.metricsClicked = false;
if (this.id) {
- this.getResultLandingInfo(this.id);
+ this.getProvenanceVocabularyAndResultLandingInfo();
} else {
this.showLoading = false;
@@ -192,14 +192,26 @@ export class ResultLandingComponent {
);
}
- private getResultLandingInfo(id: string) {
+ private getProvenanceVocabularyAndResultLandingInfo() {
this.warningMessage = '';
this.errorMessage = '';
this.showLoading = true;
this.resultLandingInfo = null;
- this.infoSub = this._resultLaningService.getResultLandingInfo(this.id, this.type, this.properties).subscribe(
+ this._resultLaningService.getProvenanceActionVocabulary(this.properties).subscribe(
+ provenanceActionVocabulary => {
+ this.getResultLandingInfo(provenanceActionVocabulary);
+ }, err => {
+ this.getResultLandingInfo(null);
+ this.handleError("Error getting provenance action vocabulary for "+this.type+" with id: " + this.id, err);
+ }
+ );
+
+ }
+
+ private getResultLandingInfo(provenanceActionVocabulary: any) {
+ this.infoSub = this._resultLaningService.getResultLandingInfo(this.id, this.type, provenanceActionVocabulary, this.properties).subscribe(
data => {
this.resultLandingInfo = data;
this.seoService.createLinkForCanonicalURL(this.properties.baseLink + this.linkToLandingPage + this.resultLandingInfo.record["result"]["header"]["dri:objIdentifier"]);
diff --git a/landingPages/result/resultLanding.service.ts b/landingPages/result/resultLanding.service.ts
index dc35b1df..9af7c624 100644
--- a/landingPages/result/resultLanding.service.ts
+++ b/landingPages/result/resultLanding.service.ts
@@ -4,7 +4,7 @@ import {throwError} from 'rxjs';
import {ResultLandingInfo} from '../../utils/entities/resultLandingInfo';
import {EnvProperties} from '../../utils/properties/env-properties';
import {ParsingFunctions} from '../landing-utils/parsingFunctions.class';
-import {map} from "rxjs/operators";
+import {map, tap} from "rxjs/operators";
@Injectable()
export class ResultLandingService {
@@ -16,7 +16,7 @@ export class ResultLandingService {
public parsingFunctions: ParsingFunctions;
resultLandingInfo: ResultLandingInfo;
- getResultLandingInfo (id: string, type: string, properties: EnvProperties): any {
+ getResultLandingInfo (id: string, type: string, provenanceActionVocabulary: any, properties: EnvProperties): any {
let url = properties.searchAPIURLLAst;
if (type === 'publication') {
url += 'publications/';
@@ -50,7 +50,23 @@ export class ResultLandingService {
res[0], // 13
res[2] // 14
]))
- .pipe(map(res => this.parseResultLandingInfo(res, properties)));
+ .pipe(map(res => this.parseResultLandingInfo(res, provenanceActionVocabulary, properties)));
+ }
+
+ getProvenanceActionVocabulary (properties: EnvProperties): any {
+ let url = properties.vocabulariesAPI+"dnet:provenanceActions.json";
+
+ return this.http.get((properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url)
+ .pipe(map(res => res['terms']))
+ .pipe(map(res => this.parseProvenanceActionVocabulary(res, properties)));
+ }
+
+ parseProvenanceActionVocabulary(terms: any, properties: EnvProperties) {
+ var provenanceActionVocabulary: {} = {};
+ for(let term of terms) {
+ provenanceActionVocabulary[term.code] = term.englishName;
+ }
+ return provenanceActionVocabulary;
}
private handleError (error: HttpErrorResponse) {
@@ -60,7 +76,7 @@ export class ResultLandingService {
return throwError(error || 'Server error');
}
- parseResultLandingInfo (data: any, properties: EnvProperties): any {
+ parseResultLandingInfo (data: any, provenanceActionVocabulary: any, properties: EnvProperties): any {
this.resultLandingInfo = new ResultLandingInfo();
// res
@@ -105,13 +121,11 @@ export class ResultLandingService {
relation = Array.isArray(data[2]) ? data[2][i] : data[2];
if(relation.hasOwnProperty("to")) {
if(relation['to'].class == "isProducedBy") {
- this.resultLandingInfo.fundedByProjects = this.parsingFunctions.parseFundingByProjects(this.resultLandingInfo.fundedByProjects, relation, this.resultLandingInfo.projectsProvenanceVocabulary);
+ this.resultLandingInfo.fundedByProjects = this.parsingFunctions.parseFundingByProjects(this.resultLandingInfo.fundedByProjects, relation, provenanceActionVocabulary);
} else if(relation['to'].class == "isRelatedTo") {
- let provenanceAction: string;
- if(relation.provenanceaction in this.resultLandingInfo.researchResultsProvenanceVocabulary) {
- provenanceAction = this.resultLandingInfo.researchResultsProvenanceVocabulary[relation.provenanceaction];
- } else {
- provenanceAction = "Other";
+ let provenanceAction: string = "";
+ if(provenanceActionVocabulary != null && relation.provenanceaction in provenanceActionVocabulary) {
+ provenanceAction = provenanceActionVocabulary[relation.provenanceaction];
}
this.resultLandingInfo.relatedResearchResults = this.parsingFunctions.parseRelatedResearchResults(this.resultLandingInfo.relatedResearchResults, relation, provenanceAction);
diff --git a/utils/entities/resultLandingInfo.ts b/utils/entities/resultLandingInfo.ts
index a8a4b059..faec1721 100644
--- a/utils/entities/resultLandingInfo.ts
+++ b/utils/entities/resultLandingInfo.ts
@@ -20,25 +20,6 @@ export class ResultLandingInfo {
"accessMode": string[], "bestAccessMode": string,
"type": string, "year":string}[];
- projectsProvenanceVocabulary: { "sysimport:crosswalk:repository": string,
- "sysimport:crosswalk:entityregistry": string,
- "sysimport:crosswalk:datasetarchive": string,
- "iis": string,
- "sysimport:mining:repository": string,
- "user:claim:pid": string,
- "user:claim:search": string,
- "user:claim:datacite": string
- } = {
- "sysimport:crosswalk:repository": "Repository",
- "sysimport:crosswalk:entityregistry": "Repository",
- "sysimport:crosswalk:datasetarchive": "Repository",
- "iis": "OpenAIRE",
- "sysimport:mining:repository": "OpenAIRE",
- "user:claim:pid": "User",
- "user:claim:search": "User",
- "user:claim:datacite": "User"
- };
-
fundedByProjects: { "id": string, "acronym": string, "title": string,
"funderShortname": string, "funderName": string,
"funding": string, "code": string, "provenanceAction": string, "inline": boolean}[];
@@ -53,9 +34,6 @@ export class ResultLandingInfo {
otherSubjects: Map;
classifiedSubjects: Map; //
- researchResultsProvenanceVocabulary: {"iis": string, "sysimport": string, "user": string} =
- {"iis": "Inferred", "sysimport": "Harvested", "user": "Claimed"};
-
// percentage is for trust
relatedResearchResults: Map;
// percentage is for similarity