2020-03-16 14:09:46 +01:00
import { Component , Input , ViewChild } from '@angular/core' ;
2019-07-22 11:16:50 +02:00
import { ActivatedRoute , Router } from '@angular/router' ;
import { Meta , Title } from '@angular/platform-browser' ;
import { EnvProperties } from '../../utils/properties/env-properties' ;
import { DataProviderInfo } from '../../utils/entities/dataProviderInfo' ;
import { DataProviderService } from './dataProvider.service' ;
2019-09-11 11:45:54 +02:00
import { FetchResearchResults } from '../../utils/fetchEntitiesClasses/fetchResearchResults.class' ;
import { SearchResearchResultsService } from '../../services/searchResearchResults.service' ;
2019-07-22 11:16:50 +02:00
import { FetchProjects } from '../../utils/fetchEntitiesClasses/fetchProjects.class' ;
import { SearchProjectsService } from '../../services/searchProjects.service' ;
import { FetchDataproviders } from '../../utils/fetchEntitiesClasses/fetchDataproviders.class' ;
import { SearchDataprovidersService } from '../../services/searchDataproviders.service' ;
import { ErrorCodes } from '../../utils/properties/errorCodes' ;
import { RouterHelper } from '../../utils/routerHelper.class' ;
import { PiwikService } from '../../utils/piwik/piwik.service' ;
import { SEOService } from '../../sharedComponents/SEO/SEO.service' ;
2019-04-24 14:31:01 +02:00
import { HelperFunctions } from "../../utils/HelperFunctions.class" ;
2019-07-22 11:16:50 +02:00
import { HelperService } from "../../utils/helper/helper.service" ;
2019-11-07 10:51:09 +01:00
import { Location } from "@angular/common" ;
2020-05-08 17:04:24 +02:00
import { StringUtils } from "../../utils/string-utils.class" ;
2020-05-26 22:36:14 +02:00
import { SearchResult } from "../../utils/entities/searchResult" ;
import { ResultPreview } from "../../utils/result-preview/result-preview" ;
import { IndexInfoService } from "../../utils/indexInfo.service" ;
2020-07-13 16:42:34 +02:00
import { properties } from "../../../../environments/environment" ;
2020-11-11 15:43:13 +01:00
import { Subscriber } from "rxjs" ;
2022-04-06 16:01:25 +02:00
import { TabComponent } from "../../utils/tabs/tab.component" ;
Replace meta service import and use with meta and title from angular/platform-browser for user, publication, claimAdmin,claimsByToken, directLinking, linkingGeneric, myClaims, depositBySubject, depositBySubjectResult, deposit, depositResult, dataProvider, htmlProjectReport, organization, project, software, search, advancedSearchPage, searchPage and searchPageTableView component
git-svn-id: https://svn.driver.research-infrastructures.eu/driver/dnet40/modules/uoa-services-library/trunk/ng-openaire-library/src/app@51835 d315682c-612b-4755-9ff5-7f18f6832af3
2018-04-17 15:00:23 +02:00
2017-12-19 13:53:46 +01:00
@Component ( {
2019-07-22 11:16:50 +02:00
selector : 'dataprovider' ,
templateUrl : 'dataProvider.component.html' ,
2022-04-08 17:26:27 +02:00
2019-07-22 11:16:50 +02:00
} )
2017-12-19 13:53:46 +01:00
export class DataProviderComponent {
2018-04-11 10:59:01 +02:00
@Input ( ) piwikSiteId = null ;
2019-07-22 11:16:50 +02:00
@Input ( ) communityId = null ;
2017-12-19 13:53:46 +01:00
public dataProviderInfo : DataProviderInfo ;
public datasourceId : string ;
2021-09-08 14:21:30 +02:00
2017-12-19 13:53:46 +01:00
// Message variables
public warningMessage = "" ;
public errorMessage = "" ;
public showLoading : boolean = true ;
2020-11-11 15:43:13 +01:00
2017-12-19 13:53:46 +01:00
// Metrics tab variables
public metricsClicked : boolean ;
public viewsFrameUrl : string ;
public downloadsFrameUrl : string ;
public totalViews : number ;
public totalDownloads : number ;
public pageViews : number ;
2021-09-08 14:21:30 +02:00
2017-12-19 13:53:46 +01:00
// Statistics tab variables
public statsClicked : boolean = false ;
2021-09-08 14:21:30 +02:00
2020-03-16 14:09:46 +01:00
@ViewChild ( 'statisticsModal' ) statisticsModal ;
@ViewChild ( 'relatedDatasourcesModal' ) relatedDatasourcesModal ;
2021-09-08 14:21:30 +02:00
2017-12-19 13:53:46 +01:00
// Variables for publications, research data, projects, content providers, related content providers tabs
2019-09-11 11:45:54 +02:00
public fetchPublications : FetchResearchResults ;
public fetchDatasets : FetchResearchResults ;
public fetchSoftware : FetchResearchResults ;
public fetchOrps : FetchResearchResults ;
2017-12-19 13:53:46 +01:00
public fetchProjects : FetchProjects ;
public fetchDataproviders : FetchDataproviders ;
2020-03-16 14:09:46 +01:00
public fetchAggregatorsResults : FetchResearchResults ;
2020-05-26 22:36:14 +02:00
public searchNumber : number = 5 ;
2021-09-08 14:21:30 +02:00
2020-05-26 22:36:14 +02:00
public aggregationStatusIsInitialized : boolean = false ;
2021-09-08 14:21:30 +02:00
2017-12-19 13:53:46 +01:00
public loadingRelatedDatasources : boolean = true ;
2021-09-08 14:21:30 +02:00
2017-12-19 13:53:46 +01:00
// Active tab variable for responsiveness - show tabs only if main request is completed
public activeTab : string = "" ;
2019-07-22 11:16:50 +02:00
public showTabs : boolean = false ;
2021-09-08 14:21:30 +02:00
2020-05-26 22:36:14 +02:00
public _numberOfTabs : number = 0 ;
public tabsAreInitialized : boolean = false ;
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
public routerHelper : RouterHelper = new RouterHelper ( ) ;
public errorCodes : ErrorCodes = new ErrorCodes ( ) ;
public pageContents = null ;
public divContents = null ;
2021-09-08 14:21:30 +02:00
2017-12-19 13:53:46 +01:00
// Request results of each tab only the one time (first time tab is clicked)
private reloadPublications : boolean = true ;
private reloadDatasets : boolean = true ;
2018-05-08 14:59:30 +02:00
private reloadSoftware : boolean = true ;
2018-07-26 18:38:59 +02:00
private reloadOrps : boolean = true ;
2017-12-19 13:53:46 +01:00
private reloadProjects : boolean = true ;
private reloadDataproviders : boolean = true ;
private reloadRelatedDatasources : boolean = true ;
2021-09-08 14:21:30 +02:00
2020-03-16 14:09:46 +01:00
// Organizations variables for view more/less functionality
2020-03-17 11:04:17 +01:00
public thresholdOrganizations : number = 20 ;
public showNumOrganizations : number = 20 ;
2021-09-08 14:21:30 +02:00
2020-03-16 14:09:46 +01:00
// Subjects variables for view more/less functionality
public thresholdSubjects : number = 20 ;
public showNumSubjects : number = 20 ;
2021-09-08 14:21:30 +02:00
2020-03-16 14:09:46 +01:00
// Description variables for view more/less functionality
public thresholdDescription : number = 670 ;
public showNumDescription : number = 670 ;
2021-09-08 14:21:30 +02:00
2020-03-16 14:09:46 +01:00
public indexUpdateDate : Date ;
public showFeedback : boolean = false ;
2020-07-13 16:42:34 +02:00
public feedbackFields : string [ ] = [ 'Name' , 'Organizations' , 'Country' , 'Other' ] ;
2021-09-08 14:21:30 +02:00
2020-11-11 15:43:13 +01:00
subscriptions = [ ] ;
2020-07-13 16:42:34 +02:00
properties : EnvProperties = properties ;
2022-04-08 17:26:27 +02:00
stickyHeader : boolean = false ;
2019-07-22 11:16:50 +02:00
constructor ( private _dataproviderService : DataProviderService ,
private _piwikService : PiwikService ,
private route : ActivatedRoute ,
private _meta : Meta ,
private _title : Title ,
private _router : Router ,
2019-09-11 11:45:54 +02:00
private _searchResearchResultsService : SearchResearchResultsService ,
2019-07-22 11:16:50 +02:00
private _searchProjectsService : SearchProjectsService ,
private _searchDataprovidersService : SearchDataprovidersService ,
private seoService : SEOService ,
2019-11-07 10:51:09 +01:00
private helper : HelperService ,
2020-05-26 22:36:14 +02:00
private _location : Location ,
private indexInfoService : IndexInfoService ) {
2019-09-11 11:45:54 +02:00
this . fetchPublications = new FetchResearchResults ( this . _searchResearchResultsService ) ;
this . fetchDatasets = new FetchResearchResults ( this . _searchResearchResultsService ) ;
this . fetchSoftware = new FetchResearchResults ( this . _searchResearchResultsService ) ;
this . fetchOrps = new FetchResearchResults ( this . _searchResearchResultsService ) ;
2019-07-22 11:16:50 +02:00
this . fetchProjects = new FetchProjects ( this . _searchProjectsService ) ;
this . fetchDataproviders = new FetchDataproviders ( this . _searchDataprovidersService ) ;
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
ngOnInit() {
2020-07-13 16:42:34 +02:00
if ( typeof document !== 'undefined' ) {
2020-11-11 15:43:13 +01:00
this . subscriptions . push ( this . indexInfoService . getLastIndexDate ( this . properties ) . subscribe ( lastIndexUpdate = > {
2020-07-13 16:42:34 +02:00
if ( lastIndexUpdate ) {
this . indexUpdateDate = new Date ( lastIndexUpdate ) ;
2020-06-10 13:05:59 +02:00
}
2020-11-11 15:43:13 +01:00
} ) ) ;
2020-07-13 16:42:34 +02:00
}
//this.getDivContents();
this . getPageContents ( ) ;
2020-09-18 09:57:42 +02:00
this . updateUrl ( this . properties . domain + this . properties . baseLink + this . _router . url ) ;
2021-12-17 14:39:32 +01:00
this . seoService . createLinkForCanonicalURL ( this . properties . domain + this . properties . baseLink + this . _router . url ) ;
2020-11-11 15:43:13 +01:00
this . subscriptions . push ( this . route . queryParams . subscribe ( data = > {
2017-12-19 13:53:46 +01:00
this . updateTitle ( "Content provider" ) ;
2019-02-08 13:19:26 +01:00
this . updateDescription ( "" ) ;
2017-12-19 13:53:46 +01:00
this . datasourceId = data [ 'datasourceId' ] ;
2020-07-13 16:42:34 +02:00
if ( this . datasourceId && StringUtils . isOpenAIREID ( this . datasourceId ) ) {
2020-05-26 22:36:14 +02:00
this . initializeValues ( ) ;
2019-07-22 11:16:50 +02:00
this . getDataProviderInfo ( this . datasourceId ) ;
2019-10-31 12:39:23 +01:00
} else {
this . showLoading = false ;
2020-07-13 16:42:34 +02:00
this . _router . navigate ( [ '/error' ] , {
queryParams : {
"page" : this . _location . path ( true ) ,
"page_type" : "dataprovider"
}
} ) ;
2017-12-19 13:53:46 +01:00
}
2020-11-11 15:43:13 +01:00
} ) ) ;
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2020-05-26 22:36:14 +02:00
public initializeValues() {
this . _numberOfTabs = 0 ;
this . tabsAreInitialized = false ;
this . dataProviderInfo = null ;
this . aggregationStatusIsInitialized = false ;
this . fetchProjects . searchUtils . status = this . errorCodes . LOADING ;
this . fetchProjects . searchUtils . totalResults = 0 ;
this . fetchDataproviders . searchUtils . status = this . errorCodes . LOADING ;
this . fetchDataproviders . searchUtils . totalResults = 0 ;
this . fetchPublications . searchUtils . status = this . errorCodes . LOADING ;
this . fetchPublications . searchUtils . totalResults = 0 ;
this . fetchDatasets . searchUtils . status = this . errorCodes . LOADING ;
this . fetchDatasets . searchUtils . totalResults = 0 ;
this . fetchSoftware . searchUtils . status = this . errorCodes . LOADING ;
this . fetchSoftware . searchUtils . totalResults = 0 ;
this . fetchOrps . searchUtils . status = this . errorCodes . LOADING ;
this . fetchOrps . searchUtils . totalResults = 0 ;
this . statsClicked = false ;
this . metricsClicked = false ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private getPageContents() {
2020-11-11 15:43:13 +01:00
this . subscriptions . push ( this . helper . getPageHelpContents ( this . properties , this . communityId , this . _router . url ) . subscribe ( contents = > {
2019-07-22 11:16:50 +02:00
this . pageContents = contents ;
2020-11-11 15:43:13 +01:00
} ) ) ;
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private getDivContents() {
2020-11-11 15:43:13 +01:00
this . subscriptions . push ( this . helper . getDivHelpContents ( this . properties , this . communityId , this . _router . url ) . subscribe ( contents = > {
2019-07-22 11:16:50 +02:00
this . divContents = contents ;
2020-11-11 15:43:13 +01:00
} ) ) ;
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
ngOnDestroy() {
2020-11-11 15:43:13 +01:00
this . subscriptions . forEach ( subscription = > {
if ( subscription instanceof Subscriber ) {
subscription . unsubscribe ( ) ;
}
} ) ;
this . fetchDatasets . clearSubscriptions ( ) ;
this . fetchPublications . clearSubscriptions ( ) ;
this . fetchSoftware . clearSubscriptions ( ) ;
this . fetchPublications . clearSubscriptions ( ) ;
this . fetchDataproviders . clearSubscriptions ( ) ;
this . fetchProjects . clearSubscriptions ( ) ;
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private getDataProviderInfo ( id : string ) {
2017-12-19 13:53:46 +01:00
this . warningMessage = '' ;
2020-03-16 14:09:46 +01:00
this . errorMessage = "" ;
2017-12-19 13:53:46 +01:00
this . showLoading = true ;
2021-09-08 14:21:30 +02:00
2018-06-28 16:52:45 +02:00
this . dataProviderInfo = null ;
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
this . showTabs = false ;
if ( this . datasourceId == null || this . datasourceId == '' ) {
2017-12-19 13:53:46 +01:00
this . showLoading = false ;
2019-07-22 11:16:50 +02:00
this . warningMessage = "No valid datasource id" ;
} else {
2020-11-11 15:43:13 +01:00
this . subscriptions . push ( this . _dataproviderService . getDataproviderInfo ( this . datasourceId , this . properties ) . subscribe (
2017-12-19 13:53:46 +01:00
data = > {
2019-07-22 11:16:50 +02:00
this . dataProviderInfo = data ;
2020-09-18 09:57:42 +02:00
this . seoService . createLinkForCanonicalURL ( this . properties . domain + this . properties . baseLink + this . _router . url ) ;
2019-07-22 11:16:50 +02:00
if ( typeof document !== 'undefined' ) {
this . getDataProviderAggregationStatus ( this . dataProviderInfo . originalId ) ;
2021-07-14 13:19:57 +02:00
this . countResultsWithFundingInfo ( ) ;
2020-05-26 22:36:14 +02:00
} else {
this . aggregationStatusIsInitialized = true ;
2019-07-22 11:16:50 +02:00
}
2020-06-10 13:05:59 +02:00
if ( typeof document !== 'undefined' ) {
this . initTabs ( ) ;
}
2019-07-22 11:16:50 +02:00
this . showTabs = true ;
2020-11-12 10:51:34 +01:00
this . updateTitle ( this . dataProviderInfo.title.name?this.dataProviderInfo.title.name :this.dataProviderInfo.officialName ) ;
this . updateDescription ( this . dataProviderInfo . description ? this . dataProviderInfo . description : "Content provider, " + ( this . dataProviderInfo.title.name?this.dataProviderInfo.title.name :this.dataProviderInfo.officialName ) ) ;
2019-07-22 11:16:50 +02:00
if ( this . properties . enablePiwikTrack && ( typeof document !== 'undefined' ) ) {
2020-11-11 15:43:13 +01:00
this . subscriptions . push ( this . _piwikService . trackView ( this . properties , this . dataProviderInfo . title . name , this . piwikSiteId ) . subscribe ( ) ) ;
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
this . showLoading = false ;
2021-09-08 14:21:30 +02:00
2020-05-26 22:36:14 +02:00
// if (this.dataProviderInfo.tabs != undefined && this.dataProviderInfo.tabs.length > 0) {
// this.activeTab = this.dataProviderInfo.tabs[0].name;
// }
2017-12-19 13:53:46 +01:00
} ,
err = > {
2019-02-15 13:50:24 +01:00
//console.log(err);
2019-07-22 11:16:50 +02:00
this . handleError ( "Error getting content provider for id: " + this . datasourceId , err ) ;
2020-07-13 16:42:34 +02:00
if ( err . status == 404 ) {
this . _router . navigate ( [ '/error' ] , {
queryParams : {
"page" : this . _location . path ( true ) ,
"page_type" : "dataprovider"
}
} ) ;
2021-12-17 14:39:32 +01:00
} else if ( err . name == "TimeoutError" ) {
this . errorMessage = 'An error occurred please try again later' ;
} else {
this . errorMessage = 'No dataProvider found' ;
this . seoService . createLinkForCanonicalURL ( this . properties . domain + this . properties . baseLink + this . properties . searchLinkToDataProviders ) ;
2019-10-31 12:39:23 +01:00
}
2017-12-19 13:53:46 +01:00
this . showLoading = false ;
}
2020-11-11 15:43:13 +01:00
) ) ;
2017-12-19 13:53:46 +01:00
}
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private getDataProviderAggregationStatus ( originalId : string ) {
2020-11-11 15:43:13 +01:00
this . subscriptions . push ( this . _dataproviderService . getDataproviderAggregationStatus ( originalId , this . properties ) . subscribe (
2019-07-22 11:16:50 +02:00
data = > {
this . dataProviderInfo . aggregationStatus = data ;
2021-05-13 17:48:01 +02:00
this . aggregationStatusIsInitialized = true ;
2019-07-22 11:16:50 +02:00
} ,
err = > {
//console.log(err);
2020-05-26 22:36:14 +02:00
this . aggregationStatusIsInitialized = true ;
2021-05-13 17:48:01 +02:00
this . handleError ( "Error getting content provider aggregation status for id: " + this . datasourceId , err ) ;
2019-07-22 11:16:50 +02:00
}
2020-11-11 15:43:13 +01:00
) ) ;
2019-07-22 11:16:50 +02:00
}
2021-07-14 13:19:57 +02:00
private countResultsWithFundingInfo() {
this . subscriptions . push ( this . _searchResearchResultsService . countCollectedResultsWithFundingInfo ( this . datasourceId ) . subscribe (
fundedContent = > {
this . dataProviderInfo . fundedContent = fundedContent ;
2022-02-16 10:40:05 +01:00
// console.log(this.dataProviderInfo.fundedContent);
2021-07-14 13:19:57 +02:00
} ,
err = > {
this . handleError ( "Error getting results with funding information for datasource id: " + this . datasourceId , err ) ;
}
) )
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private updateDescription ( description : string ) {
2019-12-05 17:07:07 +01:00
this . _meta . updateTag ( { content : description.substring ( 0 , 160 ) } , "name='description'" ) ;
this . _meta . updateTag ( { content : description.substring ( 0 , 160 ) } , "property='og:description'" ) ;
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private updateTitle ( title : string ) {
2019-08-02 16:55:32 +02:00
var _prefix = "" ;
2019-12-05 17:07:07 +01:00
// if(this.communityId) {
// _prefix = "OpenAIRE | ";
// }
// var _title = _prefix + ((title.length > 50) ? title.substring(0, 50) : title);
this . _title . setTitle ( title ) ;
this . _meta . updateTag ( { content : title } , "property='og:title'" ) ;
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private updateUrl ( url : string ) {
this . _meta . updateTag ( { content : url } , "property='og:url'" ) ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private initTabs() {
2021-09-08 14:21:30 +02:00
2020-03-17 11:04:17 +01:00
//if (this.dataProviderInfo.tabs != undefined && this.dataProviderInfo.tabs.length > 0) {
2020-07-13 16:42:34 +02:00
this . reloadPublications = true ;
this . reloadDatasets = true ;
this . reloadSoftware = true ;
this . reloadOrps = true ;
this . reloadProjects = true ;
this . reloadDataproviders = true ;
this . reloadRelatedDatasources = true ;
this . statsClicked = false ;
2021-09-08 14:21:30 +02:00
2020-07-13 16:42:34 +02:00
//this.search(this.dataProviderInfo.tabs[0].content, 1, 10);
this . count ( 1 , 0 ) ;
2021-09-08 14:21:30 +02:00
2020-07-13 16:42:34 +02:00
this . metricsClicked = false ;
2021-08-10 12:46:33 +02:00
//old
2021-09-08 14:21:30 +02:00
// this.viewsFrameUrl = this.properties.framesAPIURL + 'merge.php?com=query&data=[{"query":"dtsrcRepoViews","dtsrcName":"' + this.datasourceId + '","table":"","fields":[{"fld":"sum","agg":"sum","type":"column","yaxis":1,"c":false}],"xaxis":{"name":"month","agg":"sum"},"group":"","color":"","type":"chart","size":200,"sort":"xaxis","xStyle":{"r":-30,"s":"6","l":"-","ft":"-","wt":"-"},"title":"","subtitle":"","xaxistitle":"","yaxisheaders":["Monthly views"],"generalxaxis":"","theme":0,"in":[]}]&info_types=["column"]&stacking=&steps=false&fontFamily=Courier&spacing=[5,0,0,0]&style=[{"color":"rgba(0, 0, 0, 1)","size":"18"},{"color":"rgba(0, 0, 0, 1)","size":"18"},{"color":"000000","size":""},{"color":"000000","size":""}]&backgroundColor=rgba(255,255,255,1)&colors[]=rgba(124, 181, 236, 1)&colors[]=rgba(67, 67, 72, 1)&colors[]=rgba(144, 237, 125, 1)&colors[]=rgba(247, 163, 92, 1)&colors[]=rgba(128, 133, 233, 1)&colors[]=rgba(241, 92, 128, 1)&colors[]=rgba(228, 211, 84, 1)&colors[]=rgba(43, 144, 143, 1)&colors[]=rgba(244, 91, 91, 1)&colors[]=rgba(145, 232, 225, 1)&xlinew=0&ylinew=1&legends=true&tooltips=true&persistent=false';
// this.downloadsFrameUrl = this.properties.framesAPIURL + 'merge.php?com=query&data=[{"query":"dtsrcRepoDownloads","dtsrcName":"' + this.datasourceId + '","table":"","fields":[{"fld":"sum","agg":"sum","type":"column","yaxis":1,"c":false}],"xaxis":{"name":"month","agg":"sum"},"group":"","color":"","type":"chart","size":200,"sort":"xaxis","xStyle":{"r":-30,"s":"6","l":"-","ft":"-","wt":"-"},"title":"","subtitle":"","xaxistitle":"","yaxisheaders":["Monthly downloads"],"generalxaxis":"","theme":0,"in":[]}]&info_types=["column"]&stacking=&steps=false&fontFamily=Courier&spacing=[5,0,0,0]&style=[{"color":"rgba(0, 0, 0, 1)","size":"18"},{"color":"rgba(0, 0, 0, 1)","size":"18"},{"color":"000000","size":""},{"color":"000000","size":""}]&backgroundColor=rgba(255,255,255,1)&colors[]=rgba(124, 181, 236, 1)&colors[]=rgba(67, 67, 72, 1)&colors[]=rgba(144, 237, 125, 1)&colors[]=rgba(247, 163, 92, 1)&colors[]=rgba(128, 133, 233, 1)&colors[]=rgba(241, 92, 128, 1)&colors[]=rgba(228, 211, 84, 1)&colors[]=rgba(43, 144, 143, 1)&colors[]=rgba(244, 91, 91, 1)&colors[]=rgba(145, 232, 225, 1)&xlinew=0&ylinew=1&legends=true&tooltips=true&persistent=false';
2021-08-10 12:46:33 +02:00
//new
2021-09-08 14:21:30 +02:00
this . viewsFrameUrl = this . properties . statisticsFrameNewAPIURL + 'chart?json=' + encodeURIComponent ( '{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly views","type":"column","query":{"name":"usagestats.views.monthly", "parameters":["' + this . datasourceId + '"], "profile":"OpenAIRE All-inclusive" }}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":"Monthly views"},"subtitle":{},"yAxis":{"title":{"text":""}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false},"credits":{"href":null,"enabled":true,"text":""}}}' ) ;
this . downloadsFrameUrl = this . properties . statisticsFrameNewAPIURL + 'chart?json=' +
encodeURIComponent ( '{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly downloads","type":"column","query":{"name":"usagestats.downloads.monthly", "parameters":["' + this . datasourceId + '"], "profile":"OpenAIRE All-inclusive" }}],"chart":{"backgroundColor":"#FFFFFFFF","borderColor":"#335cadff","borderRadius":0,"borderWidth":0,"plotBorderColor":"#ccccccff","plotBorderWidth":0},"title":{"text":"Monthly downloads"},"subtitle":{},"yAxis":{"title":{"text":""}},"xAxis":{"title":{}},"lang":{"noData":"No Data available for the Query"},"exporting":{"enabled":false},"plotOptions":{"series":{"dataLabels":{"enabled":false}}},"legend":{"enabled":false},"credits":{"href":null,"enabled":true,"text":""}}}' ) ;
2020-07-13 16:42:34 +02:00
this . fetchAggregatorsResults = new FetchResearchResults ( this . _searchResearchResultsService ) ;
2020-11-11 15:43:13 +01:00
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2020-03-16 14:09:46 +01:00
public getParamsForSearchLink ( type : string = "" ) {
2020-11-11 15:43:13 +01:00
2020-07-13 16:42:34 +02:00
if ( type ) {
2020-05-28 12:53:29 +02:00
return this . routerHelper . createQueryParams ( [ 'f0' , 'fv0' , 'f1' , 'fv1' , 'type' , 'qf' , 'sortBy' ] , [ "collectedfromdatasourceid" , this . datasourceId , "resulthostingdatasourceid,or" , this . datasourceId , type , "false" , 'resultdateofacceptance,descending' ] ) ;
2020-03-16 14:09:46 +01:00
} else {
return this . routerHelper . createQueryParams ( [ 'f0' , 'fv0' , 'f1' , 'fv1' ] , [ "collectedfromdatasourceid" , this . datasourceId , "resulthostingdatasourceid,or" , this . datasourceId ] ) ;
}
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private count ( page : number , size : number ) {
2020-11-11 15:43:13 +01:00
2020-07-13 16:42:34 +02:00
this . countPublications ( page , size ) ;
this . countDatasets ( page , size ) ;
this . countSoftware ( page , size ) ;
this . countOrps ( page , size ) ;
this . countProjects ( page , size ) ;
this . countDatasources ( page , size ) ;
2020-11-11 15:43:13 +01:00
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
public search ( content : string , page : number , size : number ) {
if ( content == 'publicationsTab' ) {
this . searchPublications ( page , size ) ;
} else if ( content == 'datasetsTab' ) {
this . searchDatasets ( page , size ) ;
} else if ( content == 'softwareTab' ) {
this . searchSoftware ( page , size ) ;
} else if ( content == 'orpsTab' ) {
this . searchOrps ( page , size ) ;
} else if ( content == 'projectsTab' ) {
this . searchProjects ( page , size ) ;
} else if ( content == 'datasourcesTab' ) {
this . searchDatasources ( page , size ) ;
} else if ( content == 'relatedDatasourcesTab' ) {
this . searchRelatedDatasources ( 1 , 0 ) ;
} else if ( content == 'metricsTab' ) {
this . metricsClicked = true ;
} else if ( content == 'statisticsTab' ) {
this . statsClicked = ! this . statsClicked ;
2017-12-19 13:53:46 +01:00
}
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private searchPublications ( page : number , size : number ) {
if ( this . reloadPublications &&
( this . fetchPublications . searchUtils . status == this . errorCodes . LOADING ||
2020-05-31 15:09:26 +02:00
( this . fetchPublications . searchUtils . status == this . errorCodes . DONE && this . fetchPublications . searchUtils . totalResults > 0 )
)
) {
2019-09-11 11:45:54 +02:00
this . fetchPublications . getResultsForDataproviders ( "publication" , this . datasourceId , this . dataProviderInfo . resultsBy , page , size , this . properties ) ;
2017-12-19 13:53:46 +01:00
}
2019-07-22 11:16:50 +02:00
this . reloadPublications = false ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private countPublications ( page : number , size : number ) {
2019-09-11 11:45:54 +02:00
this . fetchPublications . getResultsForDataproviders ( "publication" , this . datasourceId , this . dataProviderInfo . resultsBy , page , size , this . properties ) ;
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private searchDatasets ( page : number , size : number ) {
if ( this . reloadDatasets &&
( this . fetchDatasets . searchUtils . status == this . errorCodes . LOADING ||
2020-05-31 15:09:26 +02:00
( this . fetchDatasets . searchUtils . status == this . errorCodes . DONE && this . fetchDatasets . searchUtils . totalResults > 0 )
)
) {
2019-09-11 11:45:54 +02:00
this . fetchDatasets . getResultsForDataproviders ( "dataset" , this . datasourceId , this . dataProviderInfo . resultsBy , page , size , this . properties ) ;
2017-12-19 13:53:46 +01:00
}
2019-07-22 11:16:50 +02:00
this . reloadDatasets = false ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private countDatasets ( page : number , size : number ) {
2019-09-11 11:45:54 +02:00
this . fetchDatasets . getResultsForDataproviders ( "dataset" , this . datasourceId , this . dataProviderInfo . resultsBy , page , size , this . properties ) ;
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private searchSoftware ( page : number , size : number ) {
if ( this . reloadSoftware &&
( this . fetchSoftware . searchUtils . status == this . errorCodes . LOADING ||
2020-05-31 15:09:26 +02:00
( this . fetchSoftware . searchUtils . status == this . errorCodes . DONE && this . fetchSoftware . searchUtils . totalResults > 0 )
)
) {
2019-09-11 11:45:54 +02:00
this . fetchSoftware . getResultsForDataproviders ( "software" , this . datasourceId , this . dataProviderInfo . resultsBy , page , size , this . properties ) ;
2018-05-08 14:59:30 +02:00
}
2019-07-22 11:16:50 +02:00
this . reloadSoftware = false ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private countSoftware ( page : number , size : number ) {
2019-09-11 11:45:54 +02:00
this . fetchSoftware . getResultsForDataproviders ( "software" , this . datasourceId , this . dataProviderInfo . resultsBy , page , size , this . properties ) ;
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private searchOrps ( page : number , size : number ) {
if ( this . reloadOrps &&
( this . fetchOrps . searchUtils . status == this . errorCodes . LOADING ||
2020-05-31 15:09:26 +02:00
( this . fetchOrps . searchUtils . status == this . errorCodes . DONE && this . fetchOrps . searchUtils . totalResults > 0 )
)
) {
2019-09-11 11:45:54 +02:00
this . fetchOrps . getResultsForDataproviders ( "other" , this . datasourceId , this . dataProviderInfo . resultsBy , page , size , this . properties ) ;
2018-07-26 18:38:59 +02:00
}
2019-07-22 11:16:50 +02:00
this . reloadOrps = false ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private countOrps ( page : number , size : number ) {
2019-09-11 11:45:54 +02:00
this . fetchOrps . getResultsForDataproviders ( "other" , this . datasourceId , this . dataProviderInfo . resultsBy , page , size , this . properties ) ;
2019-07-22 11:16:50 +02:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private searchProjects ( page : number , size : number ) {
if ( this . reloadProjects &&
( this . fetchProjects . searchUtils . status == this . errorCodes . LOADING ||
2020-05-31 15:09:26 +02:00
( this . fetchProjects . searchUtils . status == this . errorCodes . DONE && this . fetchProjects . searchUtils . totalResults > 0 )
)
) {
2018-02-05 14:14:59 +01:00
this . fetchProjects . getResultsForDataproviders ( this . datasourceId , page , size , this . properties ) ;
2017-12-19 13:53:46 +01:00
}
2019-07-22 11:16:50 +02:00
this . reloadProjects = false ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private countProjects ( page : number , size : number ) {
this . fetchProjects . getResultsForDataproviders ( this . datasourceId , page , size , this . properties ) ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private searchDatasources ( page : number , size : number ) {
if ( this . reloadDataproviders &&
( this . fetchDataproviders . searchUtils . status == this . errorCodes . LOADING ||
2020-05-31 15:09:26 +02:00
( this . fetchDataproviders . searchUtils . status == this . errorCodes . DONE && this . fetchDataproviders . searchUtils . totalResults > 0 )
)
) {
2018-02-05 14:14:59 +01:00
this . fetchDataproviders . getResultsForDataproviders ( this . datasourceId , page , size , this . properties ) ;
2017-12-19 13:53:46 +01:00
}
2019-07-22 11:16:50 +02:00
this . reloadDataproviders = false ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private countDatasources ( page : number , size : number ) {
this . fetchDataproviders . getResultsForDataproviders ( this . datasourceId , page , size , this . properties ) ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private searchRelatedDatasources ( page : number , size : number ) {
// Currently no counting is done for this tab. Following condition is always false
2021-09-08 14:21:30 +02:00
2020-03-16 14:09:46 +01:00
// if (this.reloadRelatedDatasources &&
// (this.fetchAggregatorsPublications.searchUtils.status == this.errorCodes.LOADING ||
// this.fetchAggregatorsPublications.searchUtils.status == this.errorCodes.DONE)
// &&
// (this.fetchAggregatorsDatasets.searchUtils.status == this.errorCodes.LOADING ||
// this.fetchAggregatorsDatasets.searchUtils.status == this.errorCodes.DONE)
// &&
// (this.fetchAggregatorsSoftware.searchUtils.status == this.errorCodes.LOADING ||
// this.fetchAggregatorsSoftware.searchUtils.status == this.errorCodes.DONE)
// &&
// (this.fetchAggregatorsOrps.searchUtils.status == this.errorCodes.LOADING ||
// this.fetchAggregatorsOrps.searchUtils.status == this.errorCodes.DONE)
// ) {
// this.relatedDatasourcesSub = observableMerge(this.fetchAggregatorsPublications.requestComplete, this.fetchAggregatorsDatasets.requestComplete, this.fetchAggregatorsSoftware.requestComplete, this.fetchAggregatorsOrps.requestComplete)
// .subscribe(
// data => {
// },
// err => {
// },
// () => {
// this.preprocessRelatedDatasources();
// }
// );
//
// this.fetchAggregatorsPublications.getAggregatorResults("publication", this.datasourceId, page, size, this.properties);
// this.fetchAggregatorsDatasets.getAggregatorResults("dataset", this.datasourceId, page, size, this.properties);
// this.fetchAggregatorsSoftware.getAggregatorResults("software", this.datasourceId, page, size, this.properties);
// this.fetchAggregatorsOrps.getAggregatorResults("other", this.datasourceId, page, size, this.properties);
2019-07-22 11:16:50 +02:00
if ( this . reloadRelatedDatasources &&
2020-03-16 14:09:46 +01:00
( this . fetchAggregatorsResults . searchUtils . status == this . errorCodes . LOADING ||
2020-05-31 15:09:26 +02:00
( this . fetchAggregatorsResults . searchUtils . status == this . errorCodes . DONE && this . fetchAggregatorsResults . searchUtils . totalResults > 0 )
)
2020-03-16 14:09:46 +01:00
) {
2020-11-11 15:43:13 +01:00
this . subscriptions . push ( this . fetchAggregatorsResults . requestComplete . subscribe (
2020-07-13 16:42:34 +02:00
data = > {
} ,
err = > {
} ,
2020-03-16 14:09:46 +01:00
( ) = > {
2020-07-13 16:42:34 +02:00
//this.preprocessRelatedDatasources();
2020-03-16 14:09:46 +01:00
this . dataProviderInfo . relatedDatasources = this . fetchAggregatorsResults . results ;
this . loadingRelatedDatasources = false ;
}
2020-11-11 15:43:13 +01:00
) ) ;
2021-09-08 14:21:30 +02:00
2020-03-16 14:09:46 +01:00
this . fetchAggregatorsResults . getAggregatorResults ( "results" , this . datasourceId , page , size , this . properties ) ;
2019-07-22 11:16:50 +02:00
} else {
this . loadingRelatedDatasources = false ;
2017-12-19 13:53:46 +01:00
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
this . reloadRelatedDatasources = false ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private countRelatedDatasources ( page : number , size : number ) {
2020-03-16 14:09:46 +01:00
this . fetchAggregatorsResults . getAggregatorResults ( "results" , this . datasourceId , page , size , this . properties ) ;
2019-07-22 11:16:50 +02:00
}
2020-11-11 15:43:13 +01:00
2019-07-22 11:16:50 +02:00
public metricsResults ( $event ) {
this . totalViews = $event . totalViews ;
this . totalDownloads = $event . totalDownloads ;
this . pageViews = $event . pageViews ;
}
2021-09-08 14:21:30 +02:00
2020-05-05 12:37:36 +02:00
public get hasMetrics ( ) : boolean {
2021-04-09 17:39:42 +02:00
return ! ( this . totalViews && this . totalDownloads && this . pageViews ) || this . totalViews > 0 || this . totalDownloads > 0 || this . pageViews > 0 ;
2020-05-05 12:37:36 +02:00
}
2021-09-08 14:21:30 +02:00
2020-03-16 14:09:46 +01:00
public openStatistics() {
this . statsClicked = true ;
this . statisticsModal . cancelButton = false ;
this . statisticsModal . okButton = false ;
this . statisticsModal . alertTitle = "Statistics of" ;
this . statisticsModal . open ( ) ;
}
2021-09-08 14:21:30 +02:00
2020-03-16 14:09:46 +01:00
public openRelatedDatasources() {
this . searchRelatedDatasources ( 1 , 0 ) ;
this . relatedDatasourcesModal . cancelButton = false ;
this . relatedDatasourcesModal . okButton = false ;
this . relatedDatasourcesModal . alertTitle = "Related content providers of" ;
this . relatedDatasourcesModal . open ( ) ;
}
2021-09-08 14:21:30 +02:00
2020-05-29 16:15:35 +02:00
public scroll() {
HelperFunctions . scroll ( ) ;
}
2021-09-08 14:21:30 +02:00
2020-03-16 14:09:46 +01:00
public removeUnknown ( array : string [ ] ) : string [ ] {
return array . filter ( value = > value . toLowerCase ( ) !== 'unknown' ) ;
}
2021-09-08 14:21:30 +02:00
2019-07-22 11:16:50 +02:00
private handleError ( message : string , error ) {
console . error ( "Content Provider Landing Page: " + message , error ) ;
}
2021-09-08 14:21:30 +02:00
2020-07-13 16:42:34 +02:00
private getEntityName ( entityType : string , plural : boolean , full : boolean ) : string {
if ( entityType == "publication" ) {
2020-05-26 22:36:14 +02:00
return "publication" + ( plural ? "s" : "" ) ;
2020-07-13 16:42:34 +02:00
} else if ( entityType == "dataset" ) {
2020-05-26 22:36:14 +02:00
return ( full ? "research data" : ( "dataset" + ( plural ? "s" : "" ) ) ) ;
2020-07-13 16:42:34 +02:00
} else if ( entityType == "software" ) {
2020-05-26 22:36:14 +02:00
return "software" ;
2020-07-13 16:42:34 +02:00
} else if ( entityType == "other" ) {
2020-05-26 22:36:14 +02:00
return ( full ? ( "other research product" + ( plural ? "s" : "" ) ) : "other" ) ;
2020-07-13 16:42:34 +02:00
} else if ( entityType == "dataprovider" ) {
2020-05-26 22:36:14 +02:00
return ( full ? ( "content provider" + ( plural ? "s" : "" ) ) : "dataprovider" + ( plural ? "s" : "" ) ) ;
} else {
return entityType + ( plural ? "s" : "" ) ;
}
}
2021-09-08 14:21:30 +02:00
2020-05-26 22:36:14 +02:00
public getResultPreview ( result : SearchResult , type : string ) : ResultPreview {
return ResultPreview . searchResultConvert ( result , type ) ;
}
2021-09-08 14:21:30 +02:00
2020-05-26 22:36:14 +02:00
public onSelectActiveTab ( activeTabId ) {
2022-04-06 16:01:25 +02:00
if ( this . activeTab != activeTabId ) { // tab really changed
2020-05-26 22:36:14 +02:00
if ( activeTabId == 'summary' ) {
this . activeTab = 'summary' ;
} else if ( activeTabId == 'publications' ) {
this . activeTab = 'publications' ;
this . searchPublications ( 1 , this . searchNumber ) ;
} else if ( activeTabId == 'datasets' ) {
this . activeTab = 'datasets' ;
this . searchDatasets ( 1 , this . searchNumber ) ;
} else if ( activeTabId == 'software' ) {
this . activeTab = 'software' ;
this . searchSoftware ( 1 , this . searchNumber ) ;
} else if ( activeTabId == 'other' ) {
this . activeTab = "other" ;
this . searchOrps ( 1 , this . searchNumber ) ;
2020-07-13 16:42:34 +02:00
} else if ( activeTabId == 'projects' ) {
2020-05-26 22:36:14 +02:00
this . activeTab = "projects" ;
this . searchProjects ( 1 , this . searchNumber ) ;
2020-07-13 16:42:34 +02:00
} else if ( activeTabId == 'datasources' ) {
2020-05-26 22:36:14 +02:00
this . activeTab = "datasources" ;
this . searchDatasources ( 1 , this . searchNumber ) ;
2020-07-13 16:42:34 +02:00
} else if ( activeTabId == 'relatedDatasources' ) {
2020-05-26 22:36:14 +02:00
this . activeTab = "relatedDatasources" ;
this . searchRelatedDatasources ( 1 , this . searchNumber ) ;
} else if ( activeTabId == 'statistics' ) {
this . activeTab = 'statistics' ;
this . statsClicked = true ;
}
}
}
2021-09-08 14:21:30 +02:00
2020-05-26 22:36:14 +02:00
public get hasAggregationStatusInfo ( ) : boolean {
2021-07-14 13:19:57 +02:00
// return (!!this.dataProviderInfo.aggregationStatus &&
// ((!!this.dataProviderInfo.aggregationStatus.fulltexts && parseInt(this.dataProviderInfo.aggregationStatus.fulltexts) != -1)
// || (!!this.dataProviderInfo.aggregationStatus.fundedContent && parseInt(this.dataProviderInfo.aggregationStatus.fundedContent) != -1)
// || !!this.dataProviderInfo.aggregationStatus.lastUpdateDate));
2020-05-26 22:36:14 +02:00
return ( ! ! this . dataProviderInfo . aggregationStatus &&
2021-07-14 13:19:57 +02:00
( ( ! ! this . dataProviderInfo . aggregationStatus . fulltexts && parseInt ( this . dataProviderInfo . aggregationStatus . fulltexts ) != - 1 ) ) ) ;
2020-05-26 22:36:14 +02:00
}
2021-07-14 13:19:57 +02:00
2020-05-26 22:36:14 +02:00
public get hasJournalInfo ( ) : boolean {
return ( ! ! this . dataProviderInfo . journal && (
! ! this . dataProviderInfo . journal [ 'journal' ] || ! ! this . dataProviderInfo . journal [ 'issn' ] ||
! ! this . dataProviderInfo . journal [ 'lissn' ] || ! ! this . dataProviderInfo . journal [ 'eissn' ] ||
! ! this . dataProviderInfo . journal [ 'volume' ] || ! ! this . dataProviderInfo . journal [ 'issue' ] ||
! ! this . dataProviderInfo . journal [ 'start_page' ] || ! ! this . dataProviderInfo . journal [ 'end_page' ] ) ) ;
//return true;
}
2021-09-08 14:21:30 +02:00
2020-05-26 22:36:14 +02:00
public get hasPrimaryInfo ( ) : boolean {
return ! ! this . dataProviderInfo && (
! ! this . dataProviderInfo . description ||
this . hasJournalInfo ||
2020-05-29 16:15:35 +02:00
//this.hasAggregationStatusInfo ||
2020-05-26 22:36:14 +02:00
! ! this . dataProviderInfo . countries ||
( ! ! this . dataProviderInfo . subjects && this . dataProviderInfo . subjects . length > 0 ) ) ;
}
2021-09-08 14:21:30 +02:00
2020-05-26 22:36:14 +02:00
public get hasSecondaryInfo ( ) : boolean {
return ! ! this . dataProviderInfo && (
( ! ! this . dataProviderInfo . organizations && this . dataProviderInfo . organizations . length > 0 )
|| ! ! this . dataProviderInfo . oaiPmhURL || ! ! this . dataProviderInfo . openDoarId || ! ! this . dataProviderInfo . r3DataId
) ;
}
2020-11-11 15:43:13 +01:00
2017-12-19 13:53:46 +01:00
}