From 0a01288a46754b441e4ddc88f34234c662cd932f Mon Sep 17 00:00:00 2001 From: argirok Date: Wed, 10 Jan 2024 00:03:47 +0200 Subject: [PATCH 1/2] direct linking for orps: fix checks, use type 'other' instead of 'orp' --- claims/directLinking/directLinking.component.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/claims/directLinking/directLinking.component.ts b/claims/directLinking/directLinking.component.ts index 229558ea..3fcd7537 100644 --- a/claims/directLinking/directLinking.component.ts +++ b/claims/directLinking/directLinking.component.ts @@ -29,7 +29,7 @@ export class DirectLinkingComponent { // linkTo: string = null; // entity type (project or context or entity) // linkToEntities: string[] = []; showOptions:ShowOptions = new ShowOptions(); - validEntityTypes = ["dataset", "publication", "software", "orp", "project", "context"]; + validEntityTypes = ["dataset", "publication", "software", "other", "project", "context"]; sources: ClaimEntity[] = []; inlineEntity: ClaimEntity = null; validInput: boolean = null;//'true; @@ -74,7 +74,7 @@ export class DirectLinkingComponent { this.getResearchResultById("dataset", this.id); } else if (this.type == "software") { this.getResearchResultById("software", this.id); - } else if (this.type == "orp") { + } else if (this.type == "other") { this.getResearchResultById("other", this.id); } else { this.validInput = this.isValidInput(null); @@ -110,9 +110,9 @@ export class DirectLinkingComponent { return false; } else if (this.type == "project" && this.showOptions.linkTo != "result") { return false; - } else if (["dataset", "publication", "software", "orp"].indexOf(this.type) != -1 && (["project", "context", "result"].indexOf(this.showOptions.linkTo) == -1)) { + } else if (["dataset", "publication", "software", "other"].indexOf(this.type) != -1 && (["project", "context", "result"].indexOf(this.showOptions.linkTo) == -1)) { return false; - } else if (["project", "dataset", "publication", "software", "orp"].indexOf(this.type) == -1) { + } else if (["project", "dataset", "publication", "software", "other"].indexOf(this.type) == -1) { return false; } else { return true; From 9a96851e70f3ee28f7e6be16f8892f094548d82a Mon Sep 17 00:00:00 2001 From: argirok Date: Wed, 10 Jan 2024 12:34:03 +0200 Subject: [PATCH 2/2] [angular-16-irish-monitor | DONE | ADDED] indicator utils, add researcher as stakeholder type and extract researcher parameters --- monitor-admin/utils/indicator-utils.ts | 31 ++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/monitor-admin/utils/indicator-utils.ts b/monitor-admin/utils/indicator-utils.ts index f8fc08ea..01229688 100644 --- a/monitor-admin/utils/indicator-utils.ts +++ b/monitor-admin/utils/indicator-utils.ts @@ -25,6 +25,7 @@ class Entities { project = 'Project'; country = 'National'; datasource = 'Repository'; + researcher = 'Researcher'; stakeholders = 'Dashboards'; funders = 'Funders'; @@ -32,6 +33,7 @@ class Entities { organizations = 'Research Institutions'; projects = 'Projects'; datasources = 'Repositories'; + researchers = 'Researchers'; } export class StakeholderConfiguration { @@ -765,6 +767,7 @@ export class IndicatorUtils { this.extractRI(obj, indicatorPath, stakeholder); this.extractOrganization(obj, indicatorPath, stakeholder); this.extractDatasource(obj, indicatorPath, stakeholder); + this.extractResearcher(obj, indicatorPath, stakeholder); } private extractFunder(obj, indicatorPath: IndicatorPath, stakeholder: Stakeholder) { @@ -846,8 +849,8 @@ export class IndicatorUtils { } } private extractDatasource(obj, indicatorPath: IndicatorPath, stakeholder: Stakeholder) { - // works for publication.project.organization.name - // and publication.organization.name + // works for .datasource.name and .HostedBy datasource + // and .datasource.id if (stakeholder.type != "datasource") { return; } @@ -871,6 +874,30 @@ export class IndicatorUtils { } } } + private extractResearcher(obj, indicatorPath: IndicatorPath, stakeholder: Stakeholder) { + // works for .orcid + if (stakeholder.type != "researcher") { + return; + } + for (let query of this.getQueryObjectName(obj) ? obj[this.getDescriptionObjectName(obj)][this.getQueryObjectName(obj)] : obj[this.getDescriptionObjectName(obj)]) { + if (query["query"]["profile"]) { + query["query"]["profile"] = ChartHelper.prefix + this.statsProfileParameter + ChartHelper.suffix; + } + if (!query["query"]["filters"]) { + return; + } + for (let filter of query["query"]["filters"]) { + for (let gfilter of filter["groupFilters"]) { + let replacedValue = this.replaceIndexValues(gfilter["values"][0], stakeholder, indicatorPath.parameters); + if(replacedValue) { // don't proceed in replacement if no replaced value matches + if ((gfilter["field"].indexOf(".orcid") != -1 )) { + gfilter["values"][0] = replacedValue; + } + } + } + } + } + } private replaceIndexValues(currentValue, stakeholder, parameters ){ if(currentValue == stakeholder.index_name){ parameters["index_name"] = stakeholder.index_name;