import {Component, OnInit} from "@angular/core"; import {ActivatedRoute, Router} from "@angular/router"; import {SEOService} from "../openaireLibrary/sharedComponents/SEO/SEO.service"; import {PiwikService} from "../openaireLibrary/utils/piwik/piwik.service"; import {Meta, Title} from "@angular/platform-browser"; import {SearchOrcidService} from "../openaireLibrary/claims/claim-utils/service/searchOrcid.service"; import {CustomFilterService} from "../openaireLibrary/shared/customFilter.service"; import {SearchResearchResultsService} from "../openaireLibrary/services/searchResearchResults.service"; import {LayoutService} from "../openaireLibrary/dashboard/sharedComponents/sidebar/layout.service"; import {ResearcherBaseComponent} from "../shared/researcher-base.component"; import {LinksResolver} from "../search/links-resolver"; import {SearchCustomFilter} from "../openaireLibrary/searchPages/searchUtils/searchUtils.class"; import {properties} from "../../environments/environment"; import {StakeholderService} from "../openaireLibrary/monitor/services/stakeholder.service"; import {ConfigurationService} from "../openaireLibrary/utils/configuration/configuration.service"; import {OpenaireEntities} from "../openaireLibrary/utils/properties/searchFields"; @Component({ selector: 'researcher', template: `
{{author.authorGivenName}} {{author.authorFamilyName}}
{{totalResults}} {{openaireEntities.RESULTS}}
{{author.institutions.join(", ")}}
Open Access

Researcher Monitors

` }) export class ResearcherComponent extends ResearcherBaseComponent implements OnInit { totalResults: number; openResults: number; loading: boolean = false; stakeholder; isSearch: boolean = false; openaireEntities = OpenaireEntities; constructor(protected _router: Router, protected _route: ActivatedRoute, protected seoService: SEOService, protected _piwikService: PiwikService, protected _title: Title, protected _meta: Meta, protected _searchOrcidService: SearchOrcidService, protected _searchResearchResultsService: SearchResearchResultsService, private _customFilterService: CustomFilterService, private layoutService: LayoutService, private stakeholderService: StakeholderService, private configurationService: ConfigurationService) { super(); super.initRouterParams(this._route, event => { this.isSearch = event.url.includes('/search'); }); } ngOnInit() { this.layoutService.setRootClass('researcher'); this.params.subscribe(params => { this.authorId = params['stakeholder']; if (this.authorId) { if(this.stakeholder?.index_id !== this.authorId) { this.loading = true; this.author = null; this._customFilterService.setCustomFilter([]); this.orcid = { success: () => { let name = this.author.authorGivenName + " " + (this.author.authorFamilyName?this.author.authorFamilyName:""); this._customFilterService.setCustomFilter( [/*new SearchCustomFilter("National", "country", "IE", "Irish National Monitor", false),*/ new SearchCustomFilter("Orcid", "authorId", this.authorId, name) ]); this.title = name; this.description = name; this.setProperties(this.orcid, "researcher", this.configurationService); LinksResolver.resetProperties(); LinksResolver.setSearchAndResultLanding("researcher/" + this.authorId); this.setMetadata(); }, error: () => { this._router.navigate([properties.errorLink]); } } this.results = { success: (res: string | number) => { this.totalResults = +res; if(this.totalResults ==0 ){ this._router.navigate([properties.errorLink]); }else{ this.loading = false; this.subscriptions.push(this.stakeholderService.getResearcherStakeholder(this.authorId,"",this.totalResults, true).subscribe(stakeholder => { this.stakeholder = stakeholder; })); this.subscriptions.push(this._searchResearchResultsService.numOfResearchOutcomes(this.param + ' and (resultbestaccessright exact "Open Access") and (peerreviewed exact "true")', properties, null).subscribe(res => { this.openResults = +res; })); } } } this.search(); /* } else { this._router.navigate([properties.errorLink]); } }));*/ } } else { this.stakeholder = null; this.author = null; this._customFilterService.setCustomFilter([]); this.title = 'Researcher Monitors'; this.description = 'Researcher Monitors'; this.setMetadata(); } }); } ngOnDestroy() { super.ngOnDestroy(); this.layoutService.setRootClass(null); } getPercentage(){ let num = (this.openResults/this.totalResults)*100; return num == 100?100:num.toPrecision(2); } }