import {Injectable} from '@angular/core'; import {Http, Response} from '@angular/http'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/observable/of'; import 'rxjs/add/operator/do'; import 'rxjs/add/operator/share'; import {SearchResult} from '../utils/entities/searchResult'; import {RefineResultsUtils} from './servicesUtils/refineResults.class'; import{EnvProperties} from '../utils/properties/env-properties'; import {StringUtils} from '../utils/string-utils.class'; @Injectable() export class SearchOrganizationsService { constructor(private http: Http ) {} parseResultsForDeposit(data: any): {"name": string, "id": string}[] { let results: {"name": string, "id": string}[] = []; let length = Array.isArray(data) ? data.length : 1; for(let i=0; i res.json()) .map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "organization")]); } advancedSearchOrganizations (params: string, page: number, size: number, properties:EnvProperties ):any { let url = properties.searchResourcesAPIURL; var basicQuery = "oaftype exact organization and " +"(reldatasourcecompatibilityid exact driver or reldatasourcecompatibilityid exact driver-openaire2.0 or " + "reldatasourcecompatibilityid exact openaire2.0 or reldatasourcecompatibilityid exact openaire3.0 or " + "reldatasourcecompatibilityid exact openaire2.0_data or reldatasourcecompatibilityid exact hostedBy or relproject=*)"; url += "?query="; if(params!= null && params != '' ) { url +=" ( "+basicQuery+ " ) " +" and (" + params + ")"; }else{ url +=" ( "+basicQuery+ " ) "; } url += "&page="+(page-1)+"&size="+size; url += "&format=json"; return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url) .map(res => res.json()) .map(res => [res['meta'].total, this.parseResults(res['results'])]); } parseResults(data: any): SearchResult[] { let results: SearchResult[] = []; let length = Array.isArray(data) ? data.length : 1; for(let i=0; i(); } let countProjects = result['projects'].length; result['projects'][countProjects] = { "id": "", "acronym": "", "title": "", "funderShortname": "", "funderName": "", "code": "" } if(relation.title != 'unidentified') { result['projects'][countProjects]['id'] = /*OpenaireProperties.getsearchLinkToProject() + */relation['to'].content; result['projects'][countProjects]['acronym'] = relation.acronym; result['projects'][countProjects]['title'] = relation.title; result['projects'][countProjects]['code'] = relation.code; } else { result['projects'][countProjects]['id'] = ""; result['projects'][countProjects]['acronym'] = ""; result['projects'][countProjects]['title'] = ""; result['projects'][countProjects]['code'] = ""; } if(relation.hasOwnProperty("funding")) { let fundingLength = Array.isArray(relation['funding']) ? relation['funding'].length : 1; for(let z=0; z res.json()) .map(res => res.total); } numOfEntityOrganizations(id: string, entity: string, properties:EnvProperties ):any { // currently not used - if used fix entity comparison below var parameters: string = ""; if(entity == "organization") { parameters = "organizations/"+id+"/organizations/count"; } let url = properties.searchAPIURLLAst+parameters+"?format=json"; return this.numOfOrganizations(url, properties); } numOfSearchOrganizations(params: string, properties:EnvProperties ):any { let url = properties.searchAPIURLLAst+"organizations/count?format=json"; if(params != "") { url += "&q=" + StringUtils.URIEncode(params); } return this.numOfOrganizations(url, properties); } }