import {Component, Input, Output, EventEmitter, ViewChild, ChangeDetectionStrategy, ViewEncapsulation} from '@angular/core'; import {Observable} from 'rxjs/Observable'; import {ActivatedRoute, Router} from '@angular/router'; import {Location} from '@angular/common'; import "rxjs/add/observable/zip"; import { Meta, MetaDefinition, ConfigurationService} from 'ng-openaire-library'; import {SearchPublicationsService, SearchDataprovidersService, SearchProjectsService, SearchDatasetsService, SearchOrganizationsService, SearchFields} from 'ng-openaire-library'; import { ErrorCodes, RouterHelper, NumberUtils, RefineFieldResultsService, PiwikService} from 'ng-openaire-library'; import{EnvProperties} from 'ng-openaire-library'; @Component({ selector: 'home', templateUrl: 'home.component.html', }) export class HomeComponent { public piwiksub: any; public subfunders: any; public pageTitle = "OpenAIRE" public keyword:string = ""; public searchFields:SearchFields = new SearchFields(); public errorCodes:ErrorCodes = new ErrorCodes(); public routerHelper:RouterHelper = new RouterHelper(); public publicationsSize:any = null; public datasetsSize:any = null; public fundersSize:any = null; public projectsSize:any = null; public datasourcesSize:any = null; showPublications:boolean= false; showDatasets:boolean= false; showProjects:boolean= false; showDataProviders:boolean= false; properties: EnvProperties; public subPub;public subData;public subProjects;public subOrg; public subDataPr; constructor ( private route: ActivatedRoute, private _router: Router, private _searchPublicationsService: SearchPublicationsService, private _searchDataprovidersService: SearchDataprovidersService, private _searchProjectsService: SearchProjectsService, private _searchDatasetsService: SearchDatasetsService, private _searchOrganizationsService: SearchOrganizationsService, private _refineFieldResultsService:RefineFieldResultsService, private location: Location, private _meta: Meta,private _piwikService:PiwikService, private config: ConfigurationService ) { var description = "open access, research, scientific publication, European Commission, EC, FP7, ERC, Horizon 2020, H2020, search, projects "; var title = "OpenAIRE"; this._meta.setTitle(title); this._meta.updateMeta("description", description); this._meta.updateProperty("og:description", description); this._meta.updateProperty("og:title", title); } public ngOnInit() { this.route.data .subscribe((data: { envSpecific: EnvProperties }) => { this.properties = data.envSpecific; if(this.properties!=null){ var url = this.properties.baseLink+this._router.url; this._meta.updateProperty("og:url", url); if(this.properties.enablePiwikTrack && (typeof document !== 'undefined')){ this.piwiksub = this._piwikService.trackView("OpenAIRE").subscribe(); } this.config.getCommunityInformation(this.properties.adminToolsAPIURL, this.properties.adminToolsCommunity ).subscribe(data => { var showEntity = {}; for(var i=0; i< data.entities.length; i++){ showEntity[""+data.entities[i]["pid"]+""] = data.entities[i]["isEnabled"]; } this.showPublications = showEntity["publication"]; this.showDatasets = showEntity["dataset"]; this.showProjects = showEntity["project"]; this.showDataProviders = showEntity["datasource"]; this.getNumbers(); }); } }); } public ngOnDestroy() { if(this.piwiksub){ this.piwiksub.unsubscribe(); } if(this.subfunders){ this.subfunders.unsubscribe(); } if(this.subPub){ this.subPub.unsubscribe(); } if(this.subData){ this.subData.unsubscribe(); } // if(this.subProjects){ // this.subProjects.unsubscribe(); // } // if(this.subOrg){ // this.subOrg.unsubscribe(); // } if(this.subDataPr){ this.subDataPr.unsubscribe(); } } private getNumbers() { if(this.showPublications){ this.subPub = this._searchPublicationsService.numOfSearchPublications("", this.properties).subscribe( data => { if(data && data != null && data > 0 ){ this.publicationsSize = NumberUtils.roundNumber(data); } }, err => { console.log(err); } ); } if(this.showDatasets){ this.subData = this._searchDatasetsService.numOfSearchDatasets("", this.properties).subscribe( data => { if(data && data != null && data > 0 ){ this.datasetsSize = NumberUtils.roundNumber(data); } }, err => { console.log(err); } ); } if(this.showProjects){ this.subfunders = this._refineFieldResultsService.getRefineFieldsResultsByEntityName(["funder"],"project", this.properties).subscribe( data => { if(data[0] && data[0] > 0 ){ this.projectsSize = NumberUtils.roundNumber(data[0]); } if(data[1].length > 0 && data[1][0].filterId == "funder" && data[1][0].values ){ this.fundersSize = NumberUtils.roundNumber(data[1][0].values.length); } }, err => { console.log(err); }); } if(this.showDataProviders){ this.subDataPr = this._searchDataprovidersService.numOfSearchDataproviders("", this.properties).subscribe( data => { if(data && data != null && data > 0 ){ this.datasourcesSize = NumberUtils.roundNumber(data); } }, err => { console.log(err); } ); } } }