[Explore | Library | new-theme]: Added more refine filters in Repositories, Journals, Registries pages | Search & Datasource landing: Show not compatible datasources | Result Landing: get relations names by relationsVocabulary (dnet:relation_relClass.json).
1. env-properties.ts & environments/: Removed old properties searchLinkToEntityRegistriesDataProvidersTable and searchLinkToJournalsTable. 2. fetchDataproviders.class.ts & searchDataproviders.service.ts: Removed old unused methods related to subjects/ tables/ csv. 3. searchFields.ts: Added more refine filters in Repositories, Journals, Registries pages (COMPATIBLE_DATAPROVIDER_FIELDS, ENTITY_REGISTRIES_FIELDS, JOURNAL_FIELDS). 4. result-preview.component.ts: Added field @Input() deposit: boolean = false; 5. result-preview.component.html: a. Added link to landing page even for not compatible datasources. b. Added class "uk-label-danger" when compatibility = "not available" only when deposit=true. 6. searchResultsInDeposit.component.html: In <result-preview> added parameter deposit="true". 7. dataProvider.component.html: a. Added class "uk-label-danger" when compatibility = "not available". b. Show custom "Not yet registered" compatibility label when compatibility = "not available". 8. ISVocabularies.service.ts: Added methods for getting relationsVocabulary (dnet:relation_relClass.json). 9. resultLanding.service.ts & parsingFunctions.class.ts: When parsing relations, get relationName from relationsVocabulary. 10. resultLanding.component.ts: Get relationsVocabulary and pass it to "getResultLandingInfo()". 11. orcid-work.component.ts: When calling "getResultLandingInfo()", added null parameter for relationsVocabulary. 12. configuration.service.ts: [Bug fix] Added more checks in method "isPageEnabledByStateAsync()".
This commit is contained in:
parent
f5def43fbd
commit
d43f576d40
|
@ -19,7 +19,7 @@
|
||||||
<li *ngFor="let result of results">
|
<li *ngFor="let result of results">
|
||||||
<result-preview [properties]="properties" [showOrganizations]="true"
|
<result-preview [properties]="properties" [showOrganizations]="true"
|
||||||
[showSubjects]="true" [result]="getResultPreview(result)" [promoteWebsiteURL]="true"
|
[showSubjects]="true" [result]="getResultPreview(result)" [promoteWebsiteURL]="true"
|
||||||
[isCard]="true">
|
[isCard]="true" deposit="true">
|
||||||
</result-preview>
|
</result-preview>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -106,7 +106,7 @@
|
||||||
<ng-container *ngIf="dataProviderInfo.compatibility &&
|
<ng-container *ngIf="dataProviderInfo.compatibility &&
|
||||||
!(dataProviderInfo.compatibility.info == 'not available' && type == 'service')">
|
!(dataProviderInfo.compatibility.info == 'not available' && type == 'service')">
|
||||||
<div>
|
<div>
|
||||||
<span class="uk-label uk-text-truncate" title="Compatibility">
|
<span class="uk-label uk-text-truncate" [class.uk-label-danger]="dataProviderInfo.compatibility.info == 'not available'" title="Compatibility">
|
||||||
<a *ngIf="dataProviderInfo.compatibility.id"
|
<a *ngIf="dataProviderInfo.compatibility.id"
|
||||||
[queryParams]="{datasourceId: dataProviderInfo.compatibility.id}" routerLinkActive="router-link-active"
|
[queryParams]="{datasourceId: dataProviderInfo.compatibility.id}" routerLinkActive="router-link-active"
|
||||||
[routerLink]="properties.searchLinkToDataProvider.split('?')[0]">
|
[routerLink]="properties.searchLinkToDataProvider.split('?')[0]">
|
||||||
|
@ -114,7 +114,10 @@
|
||||||
<ng-container *ngIf="dataProviderInfo.compatibility.name">{{dataProviderInfo.compatibility.name}}</ng-container>
|
<ng-container *ngIf="dataProviderInfo.compatibility.name">{{dataProviderInfo.compatibility.name}}</ng-container>
|
||||||
</a>
|
</a>
|
||||||
<span *ngIf="!dataProviderInfo.compatibility.id">
|
<span *ngIf="!dataProviderInfo.compatibility.id">
|
||||||
{{dataProviderInfo.compatibility.info}}
|
<ng-container *ngIf="dataProviderInfo.compatibility.info != 'not available'">{{dataProviderInfo.compatibility.info}}</ng-container>
|
||||||
|
<ng-container *ngIf="dataProviderInfo.compatibility.info == 'not available'">
|
||||||
|
Not yet registered <span *ngIf="properties.adminToolsPortalType == 'eosc'">in OpenAIRE</span>
|
||||||
|
</ng-container>
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="dataProviderInfo.compatibility.name && !dataProviderInfo.compatibility.id">
|
<span *ngIf="dataProviderInfo.compatibility.name && !dataProviderInfo.compatibility.id">
|
||||||
{{dataProviderInfo.compatibility.name}}
|
{{dataProviderInfo.compatibility.name}}
|
||||||
|
|
|
@ -439,7 +439,7 @@ export class ParsingFunctions {
|
||||||
return similarResearchResults;
|
return similarResearchResults;
|
||||||
}
|
}
|
||||||
|
|
||||||
parseResults(researchResults: RelationResult[], relation, provenanceAction: string): RelationResult[] {
|
parseResults(researchResults: RelationResult[], relation, provenanceAction: string, relationName: string): RelationResult[] {
|
||||||
if (researchResults == undefined) {
|
if (researchResults == undefined) {
|
||||||
researchResults = [];
|
researchResults = [];
|
||||||
}
|
}
|
||||||
|
@ -452,10 +452,10 @@ export class ParsingFunctions {
|
||||||
percentageName: null,
|
percentageName: null,
|
||||||
class: "",
|
class: "",
|
||||||
provenanceAction: provenanceAction,
|
provenanceAction: provenanceAction,
|
||||||
relationName: ""
|
relationName: relationName
|
||||||
};
|
};
|
||||||
|
|
||||||
researchResult.relationName = relation.to.class;
|
// researchResult.relationName = relation.to.class;
|
||||||
|
|
||||||
if(relation['resulttype']) {
|
if(relation['resulttype']) {
|
||||||
if (relation['resulttype'].classname == "publication") {
|
if (relation['resulttype'].classname == "publication") {
|
||||||
|
|
|
@ -361,6 +361,7 @@ export class ResultLandingComponent {
|
||||||
let observables: Array<Observable<any>> = [];
|
let observables: Array<Observable<any>> = [];
|
||||||
observables.push(this._vocabulariesService.getProvenanceActionVocabulary(this.properties));
|
observables.push(this._vocabulariesService.getProvenanceActionVocabulary(this.properties));
|
||||||
observables.push(this._vocabulariesService.getSubjectsVocabulary(this.properties));
|
observables.push(this._vocabulariesService.getSubjectsVocabulary(this.properties));
|
||||||
|
observables.push(this._vocabulariesService.getRelationsVocabulary(this.properties));
|
||||||
// observables.push(this.indexInfoService.getLastIndexDate(properties));
|
// observables.push(this.indexInfoService.getLastIndexDate(properties));
|
||||||
// observables.push(this.indexInfoService.getLastOrcidUpdateDate(properties));
|
// observables.push(this.indexInfoService.getLastOrcidUpdateDate(properties));
|
||||||
|
|
||||||
|
@ -369,7 +370,7 @@ export class ResultLandingComponent {
|
||||||
// this.subscriptions.push(forkJoin(observables).subscribe(
|
// this.subscriptions.push(forkJoin(observables).subscribe(
|
||||||
// this.subscriptions.push(this._vocabulariesService.getProvenanceActionVocabulary(this.properties).subscribe(
|
// this.subscriptions.push(this._vocabulariesService.getProvenanceActionVocabulary(this.properties).subscribe(
|
||||||
vocabularies => {
|
vocabularies => {
|
||||||
this.getResultLandingInfo(vocabularies[0], vocabularies[1]);
|
this.getResultLandingInfo(vocabularies[0], vocabularies[1], vocabularies[2]);
|
||||||
}, err => {
|
}, err => {
|
||||||
this.getResultLandingInfo(null, null);
|
this.getResultLandingInfo(null, null);
|
||||||
this.handleError("Error getting provenance action vocabulary for " + this.type, err);
|
this.handleError("Error getting provenance action vocabulary for " + this.type, err);
|
||||||
|
@ -423,14 +424,14 @@ export class ResultLandingComponent {
|
||||||
// return numberOfTabs;
|
// return numberOfTabs;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
private getResultLandingInfo(provenanceActionVocabulary: any, subjectsVocabulary?: string) {
|
private getResultLandingInfo(provenanceActionVocabulary: any, subjectsVocabulary?: any, relationsVocabulary?: any) {
|
||||||
if(this.resultFromInput && this.resultLandingInfo){
|
if(this.resultFromInput && this.resultLandingInfo){
|
||||||
this.showLoading = false;
|
this.showLoading = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.resultLandingInfo = null;
|
this.resultLandingInfo = null;
|
||||||
this.hasAltMetrics = false;
|
this.hasAltMetrics = false;
|
||||||
this.subscriptions.push(this._resultLandingService.getResultLandingInfo(this.id, this.identifier, this.type, provenanceActionVocabulary, subjectsVocabulary, this.properties).subscribe(
|
this.subscriptions.push(this._resultLandingService.getResultLandingInfo(this.id, this.identifier, this.type, provenanceActionVocabulary, subjectsVocabulary, relationsVocabulary, this.properties).subscribe(
|
||||||
data => {
|
data => {
|
||||||
this.resultLandingInfo = data;
|
this.resultLandingInfo = data;
|
||||||
this.id = this.resultLandingInfo.objIdentifier;
|
this.id = this.resultLandingInfo.objIdentifier;
|
||||||
|
|
|
@ -56,7 +56,9 @@ export class ResultLandingService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getResultLandingInfo (id: string, identifier: Identifier, type: string, provenanceActionVocabulary: any, subjectsVocabulary: any, properties: EnvProperties): any {
|
getResultLandingInfo (id: string, identifier: Identifier, type: string,
|
||||||
|
provenanceActionVocabulary: any, subjectsVocabulary: any, relationsVocabulary: any,
|
||||||
|
properties: EnvProperties): any {
|
||||||
let url: string = this.buildResultLandingInfoUrl(id, identifier, type);
|
let url: string = this.buildResultLandingInfoUrl(id, identifier, type);
|
||||||
|
|
||||||
let finalUrl: string = (properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url;
|
let finalUrl: string = (properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url;
|
||||||
|
@ -98,7 +100,7 @@ export class ResultLandingService {
|
||||||
(res[1]['extraInfo'] !== undefined && res[1]['extraInfo']['citations'] !== undefined)
|
(res[1]['extraInfo'] !== undefined && res[1]['extraInfo']['citations'] !== undefined)
|
||||||
? res[1]['extraInfo']['citations']['citation'] : null, // 15
|
? res[1]['extraInfo']['citations']['citation'] : null, // 15
|
||||||
]))
|
]))
|
||||||
.pipe(map(res => this.parseResultLandingInfo(res, provenanceActionVocabulary, subjectsVocabulary, properties)));
|
.pipe(map(res => this.parseResultLandingInfo(res, provenanceActionVocabulary, subjectsVocabulary, relationsVocabulary, properties)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// getProvenanceActionVocabulary (properties: EnvProperties): any {
|
// getProvenanceActionVocabulary (properties: EnvProperties): any {
|
||||||
|
@ -124,7 +126,7 @@ export class ResultLandingService {
|
||||||
return throwError(error || 'Server error');
|
return throwError(error || 'Server error');
|
||||||
}
|
}
|
||||||
|
|
||||||
parseResultLandingInfo (data: any, provenanceActionVocabulary: any, subjectsVocabulary: any, properties: EnvProperties): any {
|
parseResultLandingInfo (data: any, provenanceActionVocabulary: any, subjectsVocabulary: any, relationsVocabulary: any, properties: EnvProperties): any {
|
||||||
this.resultLandingInfo = new ResultLandingInfo();
|
this.resultLandingInfo = new ResultLandingInfo();
|
||||||
|
|
||||||
// res
|
// res
|
||||||
|
@ -186,7 +188,12 @@ export class ResultLandingService {
|
||||||
this.resultLandingInfo.fundedByProjects = this.parsingFunctions.parseFundingByProjects(this.resultLandingInfo.fundedByProjects, relation, provenanceActionVocabulary);
|
this.resultLandingInfo.fundedByProjects = this.parsingFunctions.parseFundingByProjects(this.resultLandingInfo.fundedByProjects, relation, provenanceActionVocabulary);
|
||||||
}
|
}
|
||||||
if(relation['to'].scheme && relation['to'].scheme == "dnet:result_result_relations") {
|
if(relation['to'].scheme && relation['to'].scheme == "dnet:result_result_relations") {
|
||||||
let relationName = relation.to.class;
|
let relationName: string = relation.to.class;
|
||||||
|
if(relation.to.class) {
|
||||||
|
if(relationsVocabulary != null && relation.to.class in relationsVocabulary) {
|
||||||
|
relationName = relationsVocabulary[relation.to.class];
|
||||||
|
}
|
||||||
|
}
|
||||||
if(!this.resultLandingInfo.relatedClassFilters.has(relationName)) {
|
if(!this.resultLandingInfo.relatedClassFilters.has(relationName)) {
|
||||||
this.resultLandingInfo.relatedClassFilters.add(relationName);
|
this.resultLandingInfo.relatedClassFilters.add(relationName);
|
||||||
}
|
}
|
||||||
|
@ -196,7 +203,7 @@ export class ResultLandingService {
|
||||||
provenanceAction = provenanceActionVocabulary[relation.provenanceaction];
|
provenanceAction = provenanceActionVocabulary[relation.provenanceaction];
|
||||||
}
|
}
|
||||||
|
|
||||||
this.resultLandingInfo.relatedResults = this.parsingFunctions.parseResults(this.resultLandingInfo.relatedResults, relation, provenanceAction);
|
this.resultLandingInfo.relatedResults = this.parsingFunctions.parseResults(this.resultLandingInfo.relatedResults, relation, provenanceAction, relationName);
|
||||||
} else if(relation['to'].class && relation['to'].class.toLowerCase() == "hasauthorinstitution") {
|
} else if(relation['to'].class && relation['to'].class.toLowerCase() == "hasauthorinstitution") {
|
||||||
this.resultLandingInfo.organizations = this.parseRelatedOrganizations(this.resultLandingInfo.organizations, relation);
|
this.resultLandingInfo.organizations = this.parseRelatedOrganizations(this.resultLandingInfo.organizations, relation);
|
||||||
}
|
}
|
||||||
|
|
|
@ -438,7 +438,7 @@ export class OrcidWorkComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
private getResultLandingInfo(action: string) {
|
private getResultLandingInfo(action: string) {
|
||||||
this.subscriptions.push(this.resultLandingService.getResultLandingInfo(this.resultId, null, this.type, null, null, properties).subscribe(
|
this.subscriptions.push(this.resultLandingService.getResultLandingInfo(this.resultId, null, this.type, null, null, null, properties).subscribe(
|
||||||
resultLandingInfo => {
|
resultLandingInfo => {
|
||||||
this.resultLandingInfo = resultLandingInfo;
|
this.resultLandingInfo = resultLandingInfo;
|
||||||
if (this.resultLandingInfo && this.resultLandingInfo.identifiers) {
|
if (this.resultLandingInfo && this.resultLandingInfo.identifiers) {
|
||||||
|
|
|
@ -2,9 +2,6 @@ import {Injectable} from '@angular/core';
|
||||||
import {HttpClient} from "@angular/common/http";
|
import {HttpClient} from "@angular/common/http";
|
||||||
import {SearchResult} from '../utils/entities/searchResult';
|
import {SearchResult} from '../utils/entities/searchResult';
|
||||||
import {RefineResultsUtils} from './servicesUtils/refineResults.class';
|
import {RefineResultsUtils} from './servicesUtils/refineResults.class';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import {StringUtils} from '../utils/string-utils.class';
|
import {StringUtils} from '../utils/string-utils.class';
|
||||||
import{EnvProperties} from '../utils/properties/env-properties';
|
import{EnvProperties} from '../utils/properties/env-properties';
|
||||||
import {map} from "rxjs/operators";
|
import {map} from "rxjs/operators";
|
||||||
|
@ -31,11 +28,9 @@ export class SearchDataprovidersService {
|
||||||
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||||
//.map(res => <any> res.json())
|
|
||||||
//.do(res => console.info(res))
|
|
||||||
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "datasource", usedBy)]));
|
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "datasource", usedBy)]));
|
||||||
}
|
}
|
||||||
//((oaftype exact datasource) and(collectedfromdatasourceid exact "openaire____::47ce9e9f4fad46e732cff06419ecaabb"))
|
|
||||||
advancedSearchDataproviders (params: string, page: number, size: number, properties: EnvProperties, refineParams:string=null, refineFields:string[] =null, refineQuery:string = null, depositQuery:boolean = false ):any {
|
advancedSearchDataproviders (params: string, page: number, size: number, properties: EnvProperties, refineParams:string=null, refineFields:string[] =null, refineQuery:string = null, depositQuery:boolean = false ):any {
|
||||||
let url = properties.searchAPIURLLAst+"resources"+(depositQuery?'':2)+"/?format=json";
|
let url = properties.searchAPIURLLAst+"resources"+(depositQuery?'':2)+"/?format=json";
|
||||||
|
|
||||||
|
@ -52,100 +47,9 @@ export class SearchDataprovidersService {
|
||||||
url += "&page="+(page-1)+"&size="+size;
|
url += "&page="+(page-1)+"&size="+size;
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||||
//.map(res => <any> res.json())
|
|
||||||
//.do(res => console.info(res))
|
|
||||||
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']), RefineResultsUtils.parse(res['refineResults'],refineFields, "datasource")]));
|
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']), RefineResultsUtils.parse(res['refineResults'],refineFields, "datasource")]));
|
||||||
}
|
}
|
||||||
|
|
||||||
searchCompatibleDataprovidersTable ( properties:EnvProperties):any {
|
|
||||||
let size: number = 0;
|
|
||||||
let url: string= properties.searchResourcesAPIURL;
|
|
||||||
url += '?query=((oaftype exact datasource) not(datasourcecompatibilityid = UNKNOWN) not(datasourcecompatibilityid = notCompatible) not(datasourcetypeuiid = other) not(datasourcetypeuiid exact "pubsrepository::journal") not(datasourcetypeuiid exact "aggregator::pubsrepository::journals"))';
|
|
||||||
url += "&page=0&size=0&format=json";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
|
||||||
//.map(res => <any> res.json())
|
|
||||||
.pipe(map(res => res['meta'].total));
|
|
||||||
}
|
|
||||||
|
|
||||||
searchCompatibleDataproviders (params: string,refineParams:string, page: number, size: number, refineFields:string[], properties:EnvProperties ):any {
|
|
||||||
let url: string = properties.searchResourcesAPIURL;
|
|
||||||
url += '?query=((oaftype exact datasource) not(datasourcecompatibilityid = UNKNOWN) not(datasourcecompatibilityid = notCompatible) not(datasourcetypeuiid = other) not(datasourcetypeuiid exact "pubsrepository::journal") not(datasourcetypeuiid exact "aggregator::pubsrepository::journals"))';
|
|
||||||
if(params!= null && params != '' ) {
|
|
||||||
url += params;
|
|
||||||
}
|
|
||||||
if(refineParams!= null && refineParams != '' ) {
|
|
||||||
url += refineParams;
|
|
||||||
}
|
|
||||||
url += "&page="+(page-1)+"&size="+size+"&format=json";
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
|
||||||
//.map(res => <any> res.json())
|
|
||||||
//.do(res => console.info(res))
|
|
||||||
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "datasource")]));
|
|
||||||
}
|
|
||||||
|
|
||||||
searchEntityRegistriesTable (properties:EnvProperties):any {
|
|
||||||
let size: number = 0;
|
|
||||||
let url: string= properties.searchResourcesAPIURL;
|
|
||||||
url += "?query=((oaftype exact datasource) and(datasourcetypeuiid = other))";
|
|
||||||
url += "&page=0&size=0&format=json";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
|
||||||
//.map(res => <any> res.json())
|
|
||||||
.pipe(map(res => res['meta'].total));
|
|
||||||
}
|
|
||||||
|
|
||||||
searchEntityRegistries (params: string,refineParams:string, page: number, size: number, refineFields:string[], properties:EnvProperties ):any {
|
|
||||||
let url = properties.searchResourcesAPIURL;
|
|
||||||
url += "?query=((oaftype exact datasource) and(datasourcetypeuiid = other))";
|
|
||||||
if(params!= null && params != '' ) {
|
|
||||||
url += params;
|
|
||||||
}
|
|
||||||
if(refineParams!= null && refineParams != '' ) {
|
|
||||||
url += refineParams;
|
|
||||||
}
|
|
||||||
url += "&page="+(page-1)+"&size="+size+"&format=json";
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
|
||||||
//.map(res => <any> res.json())
|
|
||||||
//.do(res => console.info(res))
|
|
||||||
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "datasource")]));
|
|
||||||
}
|
|
||||||
|
|
||||||
searchJournalsTable ( properties:EnvProperties):any {
|
|
||||||
let size: number = 0;
|
|
||||||
let url: string= properties.searchResourcesAPIURL;
|
|
||||||
url += '?query=((oaftype exact datasource) not(datasourcecompatibilityid = UNKNOWN) not(datasourcecompatibilityid = notCompatible) and (datasourcetypeuiid exact "pubsrepository::journal" or datasourcetypeuiid exact "aggregator::pubsrepository::journals" ))';
|
|
||||||
url += "&page=0&size=0&format=json";
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)//.map(res => <any> res.json())
|
|
||||||
.pipe(map(res => res['meta'].total));
|
|
||||||
}
|
|
||||||
|
|
||||||
searchJournals (params: string,refineParams:string, page: number, size: number, refineFields:string[] , properties:EnvProperties):any {
|
|
||||||
let url: string = properties.searchResourcesAPIURL;
|
|
||||||
//url += "?query=((oaftype exact datasource) not(datasourcecompatibilityid = UNKNOWN) not(datasourcecompatibilityid = notCompatible) not(datasourcetypeuiid = other))"
|
|
||||||
url += '?query=((oaftype exact datasource) not(datasourcecompatibilityid = UNKNOWN) not(datasourcecompatibilityid = notCompatible) and (datasourcetypeuiid exact "pubsrepository::journal" or datasourcetypeuiid exact "aggregator::pubsrepository::journals" ))';
|
|
||||||
|
|
||||||
if(params!= null && params != '' ) {
|
|
||||||
url += params;
|
|
||||||
}
|
|
||||||
if(refineParams!= null && refineParams != '' ) {
|
|
||||||
url += refineParams;
|
|
||||||
}
|
|
||||||
url += "&page="+(page-1)+"&size="+size+"&format=json";
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
|
||||||
//.map(res => <any> res.json())
|
|
||||||
//.do(res => console.info(res))
|
|
||||||
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']),RefineResultsUtils.parse(res['refineResults'],refineFields, "datasource")]));
|
|
||||||
}
|
|
||||||
|
|
||||||
searchDataprovidersForDeposit (id: string,type:string, page: number, size: number, properties:EnvProperties):any {
|
searchDataprovidersForDeposit (id: string,type:string, page: number, size: number, properties:EnvProperties):any {
|
||||||
let link = properties.searchResourcesAPIURL;
|
let link = properties.searchResourcesAPIURL;
|
||||||
var compatibilities = "";
|
var compatibilities = "";
|
||||||
|
@ -165,39 +69,6 @@ export class SearchDataprovidersService {
|
||||||
.pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
|
.pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
|
||||||
}
|
}
|
||||||
|
|
||||||
searchDataprovidersForDepositSearch(params: string, refineParams:string, page: number, size: number, refineFields:string[], properties:EnvProperties, usedBy: string="search" ):any {
|
|
||||||
let link = properties.searchResourcesAPIURL;
|
|
||||||
let url = link+"?query=((deletedbyinference = false) AND (oaftype exact datasource)) "+params;
|
|
||||||
if(refineParams!= null && refineParams != '' ) {
|
|
||||||
url += refineParams;
|
|
||||||
}
|
|
||||||
url += "&page="+(page-1)+"&size="+size+"&format=json";
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
|
||||||
.pipe(map(res => [res['meta'].total, this.parseResults(res['results']), RefineResultsUtils.parse(res['refineResults'],
|
|
||||||
refineFields, "datasource", usedBy)]));
|
|
||||||
}
|
|
||||||
|
|
||||||
searchDataProvidersBySubjects(keyword:string, type:string, page: number, size: number, properties:EnvProperties):any {
|
|
||||||
let link = properties.searchResourcesAPIURL;
|
|
||||||
var compatibilities = "";
|
|
||||||
if(type == "Research Data"){
|
|
||||||
compatibilities = " and (datasourcecompatibilityid <> UNKNOWN) and (datasourcecompatibilityid = openaire2.0_data)"
|
|
||||||
}else if(type == "Publications"){
|
|
||||||
compatibilities = " and (datasourcecompatibilityid <> UNKNOWN) and (datasourcecompatibilityid <> openaire2.0_data)"
|
|
||||||
}
|
|
||||||
let url = link+"?query=(((deletedbyinference = false) AND (oaftype exact datasource)) "+((compatibilities && compatibilities.length > 0)?" "+
|
|
||||||
compatibilities+" ":"")+") "+
|
|
||||||
" and (datasourcesubject all "+'"'+keyword+'"'+") " ;
|
|
||||||
url += "&page="+(page-1)+"&size="+size+"&format=json";
|
|
||||||
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
|
||||||
//.map(res => <any> res.json())
|
|
||||||
.pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
getDataProvidersforEntityRegistry(datasourceId: string, page: number, size: number , properties:EnvProperties):any {
|
getDataProvidersforEntityRegistry(datasourceId: string, page: number, size: number , properties:EnvProperties):any {
|
||||||
let url = properties.searchResourcesAPIURL;
|
let url = properties.searchResourcesAPIURL;
|
||||||
var basicQuery = "(oaftype exact datasource) "
|
var basicQuery = "(oaftype exact datasource) "
|
||||||
|
@ -222,66 +93,6 @@ export class SearchDataprovidersService {
|
||||||
//.map(res => <any> res.json())
|
//.map(res => <any> res.json())
|
||||||
.pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
|
.pipe(map(res => [res['meta'].total, this.parseResults(res['results'])]));
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
searchDataprovidersCSV (params: string, refineParams:string, page: number, size: number):any {
|
|
||||||
|
|
||||||
let link = OpenaireProperties. getSearchAPIURLLast()+"datasources";
|
|
||||||
|
|
||||||
let url = link+"?";
|
|
||||||
if(params!= null && params != '' ) {
|
|
||||||
url += params;
|
|
||||||
}
|
|
||||||
if(refineParams!= null && refineParams != '' ) {
|
|
||||||
url += refineParams;
|
|
||||||
}
|
|
||||||
url += "&page="+(page-1)+"&size="+size+"&format=json";
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
|
||||||
.map(res => <any> res.json())
|
|
||||||
//.do(res => console.info(res))
|
|
||||||
|
|
||||||
.map(res => this.parseResultsCSV(res['results']));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
searchEntityRegistriesCSV (params: string,refineParams:string, page: number, size: number):any {
|
|
||||||
let url = properties.searchAPIURLLAst;
|
|
||||||
url += "?query=((oaftype exact datasource) and(datasourcetypeuiid = other))"
|
|
||||||
if(params!= null && params != '' ) {
|
|
||||||
url += params;
|
|
||||||
}
|
|
||||||
if(refineParams!= null && refineParams != '' ) {
|
|
||||||
url += refineParams;
|
|
||||||
}
|
|
||||||
url += "&page="+(page - 1)+"&size="+size+"&format=json";
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
|
||||||
.map(res => <any> res.json())
|
|
||||||
//.do(res => console.info(res))
|
|
||||||
|
|
||||||
.map(res => this.parseResultsCSV(res['results']));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
searchCompatibleDataprovidersCSV (params: string,refineParams:string, page: number, size: number):any {
|
|
||||||
let url = properties.searchAPIURLLAst;
|
|
||||||
url += "?query=((oaftype exact datasource) not(datasourcecompatibilityid = UNKNOWN) not(datasourcecompatibilityid = notCompatible) not(datasourcetypeuiid = other))"
|
|
||||||
if(params!= null && params != '' ) {
|
|
||||||
url += params;
|
|
||||||
}
|
|
||||||
if(refineParams!= null && refineParams != '' ) {
|
|
||||||
url += refineParams;
|
|
||||||
}
|
|
||||||
url += "&page="+(page - 1)+"&size="+size+"&format=json";
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
|
||||||
.map(res => <any> res.json())
|
|
||||||
//.do(res => console.info(res))
|
|
||||||
|
|
||||||
.map(res => this.parseResultsCSV(res['results']));
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
parseResults(data: any): SearchResult[] {
|
parseResults(data: any): SearchResult[] {
|
||||||
let results: SearchResult[] = [];
|
let results: SearchResult[] = [];
|
||||||
|
@ -319,7 +130,6 @@ export class SearchDataprovidersService {
|
||||||
}
|
}
|
||||||
|
|
||||||
let typeid: string = resData['datasourcetype'].classid;
|
let typeid: string = resData['datasourcetype'].classid;
|
||||||
//console.info(typeid);
|
|
||||||
if(typeid != "entityregistry" && typeid != "entityregistry::projects" && typeid != "entityregistry::repositories") {
|
if(typeid != "entityregistry" && typeid != "entityregistry::projects" && typeid != "entityregistry::repositories") {
|
||||||
|
|
||||||
if(resData.hasOwnProperty('accessinfopackage')) {
|
if(resData.hasOwnProperty('accessinfopackage')) {
|
||||||
|
@ -349,7 +159,6 @@ export class SearchDataprovidersService {
|
||||||
result['organizations'] = res[1];
|
result['organizations'] = res[1];
|
||||||
result['countries'] = res[0];
|
result['countries'] = res[0];
|
||||||
result['subjects'] = this.getDataproviderSubjects(resData);
|
result['subjects'] = this.getDataproviderSubjects(resData);
|
||||||
//console.log(result['subjects']);
|
|
||||||
|
|
||||||
if(resData['pid']) {
|
if(resData['pid']) {
|
||||||
result.identifiers = this.parsingFunctions.parseIdentifiers(resData['pid']);
|
result.identifiers = this.parsingFunctions.parseIdentifiers(resData['pid']);
|
||||||
|
@ -432,30 +241,9 @@ export class SearchDataprovidersService {
|
||||||
}
|
}
|
||||||
return [countries, organizations];
|
return [countries, organizations];
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
parseResultsCSV(data: any): any {
|
|
||||||
let results: any = [];
|
|
||||||
let length = Array.isArray(data) ? data.length : 1;
|
|
||||||
|
|
||||||
for(let i=0; i<length; i++) {
|
|
||||||
let resData = Array.isArray(data) ? data[i]['result']['metadata']['oaf:entity']['oaf:datasource'] : data['result']['metadata']['oaf:entity']['oaf:datasource'];
|
|
||||||
|
|
||||||
var result: any = [];
|
|
||||||
|
|
||||||
result.push(this.quote(resData.officialname));
|
|
||||||
result.push(this.quote(this.getDataproviderType(resData)));
|
|
||||||
result.push(this.quote(this.getDataproviderCountriesOrganizations(resData, true, false)[0]));
|
|
||||||
result.push(this.quote(this.getDataproviderCompatibility(resData)));
|
|
||||||
results.push(result);
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
numOfDataproviders(url: string, properties:EnvProperties):any {
|
numOfDataproviders(url: string, properties:EnvProperties):any {
|
||||||
//let url = OpenaireProperties. getSearchAPIURLLast()+params+(params.indexOf("?") == -1 ?"?":"&")+"format=json";
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||||
//.map(res => <any> res.json())
|
|
||||||
.pipe(map(res => res['total']));
|
.pipe(map(res => res['total']));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -491,29 +279,4 @@ export class SearchDataprovidersService {
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
||||||
.pipe(map(res => res['meta']['total']));
|
.pipe(map(res => res['meta']['total']));
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
private quote(word: any): string {
|
|
||||||
return '"'+word+'"';
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
getDataprovidersTableResults (queryType:string, properties:EnvProperties):any {
|
|
||||||
let size: number = 0;
|
|
||||||
let url: string= properties.searchAPIURLLAst;
|
|
||||||
if(queryType == "compatible"){
|
|
||||||
url += '?query=((oaftype exact datasource) not (datasourcecompatibilityid = UNKNOWN) not(datasourcecompatibilityid = notCompatible) not(datasourcetypeuiid = other) not(datasourcetypeuiid exact "pubsrepository::journal") not(datasourcetypeuiid exact "aggregator::pubsrepository::journals"))';
|
|
||||||
}else if(queryType=="registries"){
|
|
||||||
url += "?query=((oaftype exact datasource) and(datasourcetypeuiid = other))";
|
|
||||||
}else if(queryType=="journals"){
|
|
||||||
url += '?query=((oaftype exact datasource) not(datasourcecompatibilityid = UNKNOWN) not(datasourcecompatibilityid = notCompatible) and (datasourcetypeuiid exact "pubsrepository::journal" or datasourcetypeuiid exact "aggregator::pubsrepository::journals" ))';
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
url += "&page=0&size=0&format=json";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
|
||||||
//.map(res => <any> res.json())
|
|
||||||
.pipe(map(res => res['meta'].total));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ export class ConfigurationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
async isPageEnabledByStateAsync(properties: EnvProperties, portal: string, page_route: string) {
|
async isPageEnabledByStateAsync(properties: EnvProperties, portal: string, page_route: string) {
|
||||||
if (!this.promise || portal !== this.communityInformation.getValue().pid) {
|
if (!this.promise || (this.communityInformation && this.communityInformation.getValue() && portal !== this.communityInformation.getValue().pid)) {
|
||||||
this.initCommunityInformation(properties, portal);
|
this.initCommunityInformation(properties, portal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -249,64 +249,6 @@ export class FetchDataproviders {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public getResultsBySubjectsForDeposit(subject: string, type: string, page: number, size: number, properties: EnvProperties) {
|
|
||||||
//var errorCodes:ErrorCodes = new ErrorCodes();
|
|
||||||
|
|
||||||
this.searchUtils.status = this.errorCodes.LOADING;
|
|
||||||
this.results = [];
|
|
||||||
this.searchUtils.totalResults = 0;
|
|
||||||
this.loadPaging = false;
|
|
||||||
|
|
||||||
this.subscriptions.push(this._searchDataprovidersService.searchDataProvidersBySubjects(subject, type, page, size, properties).subscribe(
|
|
||||||
data => {
|
|
||||||
this.searchUtils.totalResults = data[0];
|
|
||||||
//console.info("search Dataproviders forDeposit: [subject:"+subject+", type:"+type+" ] [total results:"+this.searchUtils.totalResults+"]");
|
|
||||||
this.results = data[1];
|
|
||||||
|
|
||||||
//var errorCodes:ErrorCodes = new ErrorCodes();
|
|
||||||
this.searchUtils.status = this.errorCodes.DONE;
|
|
||||||
if (this.searchUtils.totalResults == 0) {
|
|
||||||
this.searchUtils.status = this.errorCodes.NONE;
|
|
||||||
}
|
|
||||||
if (this.searchUtils.status == this.errorCodes.DONE) {
|
|
||||||
// Page out of limit!!!
|
|
||||||
let totalPages: any = this.searchUtils.totalResults / (this.searchUtils.size);
|
|
||||||
if (!(Number.isInteger(totalPages))) {
|
|
||||||
totalPages = (parseInt(totalPages, 10) + 1);
|
|
||||||
}
|
|
||||||
if (totalPages < page) {
|
|
||||||
this.searchUtils.totalResults = 0;
|
|
||||||
this.searchUtils.status = this.errorCodes.OUT_OF_BOUND;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.loadPaging = true;
|
|
||||||
this.oldTotalResults = this.searchUtils.totalResults;
|
|
||||||
},
|
|
||||||
err => {
|
|
||||||
/*console.log(err);
|
|
||||||
//TODO check erros (service not available, bad request)
|
|
||||||
// if( ){
|
|
||||||
// this.searchUtils.status = ErrorCodes.ERROR;
|
|
||||||
// }
|
|
||||||
//var errorCodes:ErrorCodes = new ErrorCodes();
|
|
||||||
//this.searchUtils.status = errorCodes.ERROR;
|
|
||||||
if(err.status == '404') {
|
|
||||||
this.searchUtils.status = this.errorCodes.NOT_FOUND;
|
|
||||||
} else if(err.status == '500') {
|
|
||||||
this.searchUtils.status = this.errorCodes.ERROR;
|
|
||||||
} else {
|
|
||||||
this.searchUtils.status = this.errorCodes.NOT_AVAILABLE;
|
|
||||||
}*/
|
|
||||||
this.handleError("Error getting "+OpenaireEntities.DATASOURCES+" in share " + type + " by subject: " + subject, err);
|
|
||||||
this.searchUtils.status = this.errorMessages.getErrorCode(err.status);
|
|
||||||
|
|
||||||
this.loadPaging = true;
|
|
||||||
this.oldTotalResults = 0;
|
|
||||||
}
|
|
||||||
));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public getResultsForEntity(entity: string, id: string, page: number, size: number, properties: EnvProperties) {
|
public getResultsForEntity(entity: string, id: string, page: number, size: number, properties: EnvProperties) {
|
||||||
//var errorCodes:ErrorCodes = new ErrorCodes();
|
//var errorCodes:ErrorCodes = new ErrorCodes();
|
||||||
this.searchUtils.status = this.errorCodes.LOADING;
|
this.searchUtils.status = this.errorCodes.LOADING;
|
||||||
|
|
|
@ -106,9 +106,7 @@ export interface EnvProperties {
|
||||||
searchLinkToOrganizations?: string;
|
searchLinkToOrganizations?: string;
|
||||||
searchLinkToCompatibleDataProviders?: string;
|
searchLinkToCompatibleDataProviders?: string;
|
||||||
searchLinkToEntityRegistriesDataProviders?: string;
|
searchLinkToEntityRegistriesDataProviders?: string;
|
||||||
searchLinkToEntityRegistriesDataProvidersTable?: string;
|
|
||||||
searchLinkToJournals?: string;
|
searchLinkToJournals?: string;
|
||||||
searchLinkToJournalsTable?: string;
|
|
||||||
searchLinkToResults?: string;
|
searchLinkToResults?: string;
|
||||||
//Advanced Search for pages
|
//Advanced Search for pages
|
||||||
searchLinkToAdvancedPublications?: string;
|
searchLinkToAdvancedPublications?: string;
|
||||||
|
|
|
@ -607,9 +607,19 @@ export class SearchFields {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
public COMPATIBLE_DATAPROVIDER_FIELDS: string[] = ["datasourcetypename", "datasourcecompatibilityname"];
|
// public COMPATIBLE_DATAPROVIDER_FIELDS: string[] = ["datasourcetypename", "datasourcecompatibilityname"];
|
||||||
public ENTITY_REGISTRIES_FIELDS: string[] = ["datasourcetypename", "datasourcecompatibilityname"];
|
public COMPATIBLE_DATAPROVIDER_FIELDS: string[] = ["datasourcetypename", "datasourceodlanguages", "datasourceodcontenttypes",
|
||||||
public JOURNAL_FIELDS: string[] = ["datasourcetypename", "datasourcecompatibilityname"];
|
"datasourcecompatibilityname", "country", "collectedfromname","datasourcethematic",
|
||||||
|
"datasourcejurisdiction"];
|
||||||
|
// public ENTITY_REGISTRIES_FIELDS: string[] = ["datasourcetypename", "datasourcecompatibilityname"];
|
||||||
|
public ENTITY_REGISTRIES_FIELDS: string[] = ["datasourcetypename", "datasourceodlanguages", "datasourceodcontenttypes",
|
||||||
|
"datasourcecompatibilityname", "country", "collectedfromname","datasourcethematic",
|
||||||
|
"datasourcejurisdiction"];
|
||||||
|
// public JOURNAL_FIELDS: string[] = ["datasourcetypename", "datasourcecompatibilityname"];
|
||||||
|
public JOURNAL_FIELDS: string[] = ["datasourcetypename", "datasourceodlanguages", "datasourceodcontenttypes",
|
||||||
|
"datasourcecompatibilityname", "country", "collectedfromname","datasourcethematic",
|
||||||
|
"datasourcejurisdiction"];
|
||||||
|
|
||||||
|
|
||||||
//ORGANIZATION
|
//ORGANIZATION
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,7 @@
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<div>
|
<div>
|
||||||
<h2 class="uk-margin-remove uk-text-break uk-inline-block uk-h6">
|
<h2 class="uk-margin-remove uk-text-break uk-inline-block uk-h6">
|
||||||
<a *ngIf="!externalUrl && result.id && !(result.resultType == 'dataprovider' && result.compatibilityUNKNOWN && properties.adminToolsPortalType != 'eosc') "
|
<a *ngIf="!externalUrl && result.id" (click)="onClick()" [queryParams]="createParam()"
|
||||||
(click)="onClick()" [queryParams]="createParam()"
|
|
||||||
[routerLink]="url" class="uk-link uk-link-heading uk-width-expand">
|
[routerLink]="url" class="uk-link uk-link-heading uk-width-expand">
|
||||||
<div *ngIf="(result.title) || result.acronym">
|
<div *ngIf="(result.title) || result.acronym">
|
||||||
<span *ngIf="result.acronym">
|
<span *ngIf="result.acronym">
|
||||||
|
@ -52,8 +51,7 @@
|
||||||
[no title available]
|
[no title available]
|
||||||
</div>
|
</div>
|
||||||
</a>
|
</a>
|
||||||
<a *ngIf="externalUrl && result.id && !(result.resultType == 'dataprovider' && result.compatibilityUNKNOWN) "
|
<a *ngIf="externalUrl && result.id" (click)="onClick()"
|
||||||
(click)="onClick()"
|
|
||||||
target="_blank" [href]="externalUrl+result.id" class="custom-external uk-link uk-link-heading uk-width-expand">
|
target="_blank" [href]="externalUrl+result.id" class="custom-external uk-link uk-link-heading uk-width-expand">
|
||||||
<span *ngIf="(result.title) || result.acronym">
|
<span *ngIf="(result.title) || result.acronym">
|
||||||
<span *ngIf="result.acronym">
|
<span *ngIf="result.acronym">
|
||||||
|
@ -68,8 +66,7 @@
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<div *ngIf="!result.id || (result.resultType == 'dataprovider' && result.compatibilityUNKNOWN && properties.adminToolsPortalType != 'eosc')"
|
<div *ngIf="!result.id" class="uk-width-expand">
|
||||||
class="uk-width-expand">
|
|
||||||
<div *ngIf="(result.title) || result.acronym">
|
<div *ngIf="(result.title) || result.acronym">
|
||||||
<span *ngIf="result.acronym">
|
<span *ngIf="result.acronym">
|
||||||
{{result.acronym}}
|
{{result.acronym}}
|
||||||
|
@ -139,7 +136,7 @@
|
||||||
<span
|
<span
|
||||||
*ngIf="result.compatibility != undefined && result.compatibility != '' && result.compatibility == 'not available'
|
*ngIf="result.compatibility != undefined && result.compatibility != '' && result.compatibility == 'not available'
|
||||||
&& result.resultType != 'service'"
|
&& result.resultType != 'service'"
|
||||||
class="uk-label uk-label-danger" title="OpenAIRE Compatibility">
|
class="uk-label" [class.uk-label-danger]="deposit" title="OpenAIRE Compatibility">
|
||||||
Not yet registered <span *ngIf="properties.adminToolsPortalType == 'eosc'">in OpenAIRE</span>
|
Not yet registered <span *ngIf="properties.adminToolsPortalType == 'eosc'">in OpenAIRE</span>
|
||||||
</span>{{' '}}
|
</span>{{' '}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -32,6 +32,7 @@ export class ResultPreviewComponent implements OnInit, OnChanges {
|
||||||
public dataProviderUrl = properties.searchLinkToDataProvider.split('?')[0];
|
public dataProviderUrl = properties.searchLinkToDataProvider.split('?')[0];
|
||||||
@Input() showOrcid: boolean = true;
|
@Input() showOrcid: boolean = true;
|
||||||
@Input() showEnermaps: boolean = false;
|
@Input() showEnermaps: boolean = false;
|
||||||
|
@Input() deposit: boolean = false;
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
if(this.hasLink) {
|
if(this.hasLink) {
|
||||||
|
|
|
@ -11,6 +11,7 @@ export class ISVocabulariesService {
|
||||||
private vocabularies: Map<string, BehaviorSubject<AutoCompleteValue[]>> = new Map<string, BehaviorSubject<AutoCompleteValue[]>>();
|
private vocabularies: Map<string, BehaviorSubject<AutoCompleteValue[]>> = new Map<string, BehaviorSubject<AutoCompleteValue[]>>();
|
||||||
private provenanceActionVocabulary: BehaviorSubject<{}> = new BehaviorSubject(null);
|
private provenanceActionVocabulary: BehaviorSubject<{}> = new BehaviorSubject(null);
|
||||||
private subjectsVocabulary: BehaviorSubject<any> = new BehaviorSubject<any>(null);
|
private subjectsVocabulary: BehaviorSubject<any> = new BehaviorSubject<any>(null);
|
||||||
|
private relationsVocabulary: BehaviorSubject<any> = new BehaviorSubject<any>(null);
|
||||||
private subscriptions = [];
|
private subscriptions = [];
|
||||||
private vocabulariesPromises: Map<string, Promise<any>> = new Map<string, Promise<any>>();
|
private vocabulariesPromises: Map<string, Promise<any>> = new Map<string, Promise<any>>();
|
||||||
constructor(private http: HttpClient) {}
|
constructor(private http: HttpClient) {}
|
||||||
|
@ -259,6 +260,47 @@ export class ISVocabulariesService {
|
||||||
return subjectsVocabulary;
|
return subjectsVocabulary;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getRelationsVocabulary(properties: EnvProperties): Observable<any> {
|
||||||
|
let vocabulary = "dnet:relation_relClass.json";
|
||||||
|
return from(this.getRelationsVocabularyFromServiceAsync(vocabulary, properties));
|
||||||
|
}
|
||||||
|
|
||||||
|
async getRelationsVocabularyFromServiceAsync (vocabularyName: string, properties: EnvProperties): Promise<{}> {
|
||||||
|
if(!this.relationsVocabulary || !this.relationsVocabulary.getValue()) {
|
||||||
|
await new Promise<any>(resolve => {
|
||||||
|
this.subscriptions.push(this.getRelationsVocabularyFromService(vocabularyName, properties).subscribe(
|
||||||
|
vocabularyRes => {
|
||||||
|
this.relationsVocabulary.next(vocabularyRes);
|
||||||
|
resolve();
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
this.relationsVocabulary.next(null);
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return this.relationsVocabulary.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
getRelationsVocabularyFromService (vocabularyName: string, properties: EnvProperties): any {
|
||||||
|
let url = properties.vocabulariesAPI+vocabularyName;
|
||||||
|
|
||||||
|
return this.http.get((properties.useLongCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url)
|
||||||
|
.pipe(map(res => res['terms']))
|
||||||
|
.pipe(map(res => this.parseRelationsVocabulary(res)));
|
||||||
|
}
|
||||||
|
|
||||||
|
parseRelationsVocabulary(terms: any) {
|
||||||
|
var relationsVocabulary: {} = {};
|
||||||
|
for(let term of terms) {
|
||||||
|
if(term.code != "keyword") {
|
||||||
|
relationsVocabulary[term.code] = term.englishName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return relationsVocabulary;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private handleError(error: HttpErrorResponse) {
|
private handleError(error: HttpErrorResponse) {
|
||||||
// in a real world app, we may send the error to some remote logging infrastructure
|
// in a real world app, we may send the error to some remote logging infrastructure
|
||||||
|
|
Loading…
Reference in New Issue