import {Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core'; import {SearchResult} from '../../utils/entities/searchResult'; import {EnvProperties} from '../../utils/properties/env-properties'; import {ResultPreview} from "../../utils/result-preview/result-preview"; import {HttpClient} from "@angular/common/http"; import {OrcidService} from "../../orcid/orcid.service"; import {Session} from "../../login/utils/helper.class"; import {properties} from "../../../../environments/environment"; @Component({ selector: 'search-result', templateUrl: 'searchResult.component.html' }) export class SearchResultComponent implements OnInit, OnChanges { @Input() results: SearchResult[]; previewResults:ResultPreview[]; @Input() status: number; @Input() type: string; @Input() showLoading: boolean = false; @Input() showSubjects: boolean = true; @Input() showOrganizations: boolean = true; @Input() custom_class: string = ""; @Input() properties: EnvProperties; @Input() showEnermaps: boolean; constructor( private http: HttpClient/*ATHENA CODE*/ , private orcidService: OrcidService) { } ngOnInit() {} sub; ngOnDestroy() { if(this.sub){ this.sub.unsubscribe(); } } initialize(){ this.previewResults = []; for(let result of this.results){ this.previewResults.push(this.getResultPreview(result)); } if((properties.adminToolsPortalType == "explore" || properties.adminToolsPortalType == "community" || properties.adminToolsPortalType == "aggregator") && Session.isLoggedIn() && this.results && this.results.length > 0 && (this.type == "result" || this.type == "publication" || this.type == "dataset" || this.type == "software" || this.type == "other") ) { this.orcidService.getPutCodes(this.previewResults.map( previewResult => { if(previewResult.identifiers) { let pidsArray: string[] = []; for(let key of Array.from(previewResult.identifiers.keys())) { pidsArray = pidsArray.concat(previewResult.identifiers.get(key)); } return pidsArray;//.join(); } })).subscribe( putCodes => { for (let i = 0; i < this.previewResults.length; i++) { if(this.previewResults[i].identifiers) { this.previewResults[i].orcidPutCodes = putCodes[i]; // console.debug(i, this.previewResults[i].orcidPutCodes); } } }, error => { } ); } } ngOnChanges(changes: SimpleChanges): void { if (changes.results) { this.initialize(); } } public getResultPreview(result: SearchResult): ResultPreview { return ResultPreview.searchResultConvert(result, (result.entityType)?result.entityType:this.type); } public quote(params: string): string { return '"' + params + '"'; } }