[Library | new-theme]: Allow also ?pid url parameter in datasource landing | Fixes in newSearchPage for service filters.
1. dataProvider.component.ts: [Bug fix] Allow also ?pid url parameter, query accordingly and set canonicalUrl to use it in seoService and scema2jsonld. 2. dataProvider.component.html: Set canonicalUrl into URL of <schema2jsonld> | Use <landing-header> instead of <showTitle>. 3. dataProvider.service.ts: Set url for querying a datasource by pid (if ?pid in landing url param) and parse also the whole record, the objIdentifier and the relcanId. 4. landing-header.component.ts: Added @Input() isSticky: boolean = false; to set less margins when sticky. 5. resultLanding.component.html: Use <landing-header> instead of <showTitle>. 6. resultLanding.component.ts: Use renamed Identifier.getResultPIDFromIdentifiers --> Identifier.getPIDFromIdentifiers. 7. metrics.service.ts: Removed console.log. 8. searchDataproviders.service.ts: Added parsing for relcanId. 9. dataProviderInfo.ts: Added relcanId, objIdentifier, record. 10. result-preview.component.ts: Use renamed Identifier.getResultPIDFromIdentifiers --> Identifier.getPIDFromIdentifiers. 11. string-utils.class.ts: Renamed Identifier.getResultPIDFromIdentifiers --> Identifier.getPIDFromIdentifiers. 12. [SITEMAPS] extractUrlsFromSearch.ts: Use renamed Identifier.getResultPIDFromIdentifiers --> Identifier.getPIDFromIdentifiers. 13. newSearchPage.component.ts: [Bug fix] a. entityType for datasources is "dataprovider". b. Added service filter options only when entityType == "service".
This commit is contained in:
parent
135638ad63
commit
95549185d9
|
@ -75,7 +75,7 @@
|
||||||
<div [attr.style]="'margin-top: '+(graph_height? 'calc(40px + 20px - '+graph_height+'px)': '40px')">
|
<div [attr.style]="'margin-top: '+(graph_height? 'calc(40px + 20px - '+graph_height+'px)': '40px')">
|
||||||
<!-- schema.org-->
|
<!-- schema.org-->
|
||||||
<schema2jsonld [data]=dataProviderInfo
|
<schema2jsonld [data]=dataProviderInfo
|
||||||
[URL]="properties.domain+ properties.baseLink + linkToLandingPage +datasourceId"
|
[URL]="canonicalUrl"
|
||||||
type="datasource"
|
type="datasource"
|
||||||
[otherURL]="(dataProviderInfo.provenance)?provenanceUrls:null"></schema2jsonld>
|
[otherURL]="(dataProviderInfo.provenance)?provenanceUrls:null"></schema2jsonld>
|
||||||
<helper *ngIf="pageContents && pageContents['top'] && pageContents['top'].length > 0"
|
<helper *ngIf="pageContents && pageContents['top'] && pageContents['top'].length > 0"
|
||||||
|
@ -139,7 +139,14 @@
|
||||||
uk-sticky="bottom: true; media: @m" [attr.offset]="offset"
|
uk-sticky="bottom: true; media: @m" [attr.offset]="offset"
|
||||||
cls-active="active">
|
cls-active="active">
|
||||||
<div class="uk-padding uk-padding-remove-horizontal uk-padding-remove-bottom">
|
<div class="uk-padding uk-padding-remove-horizontal uk-padding-remove-bottom">
|
||||||
<showTitle *ngIf="stickyHeader" [titleName]="dataProviderInfo.title.name" classNames="uk-margin-remove-bottom" class="uk-visible@m"></showTitle>
|
<landing-header *ngIf="stickyHeader" class="uk-visible@m"
|
||||||
|
[properties]="properties" [title]="dataProviderInfo.title.name"
|
||||||
|
[subTitle]="(dataProviderInfo.officialName
|
||||||
|
&& dataProviderInfo.title.name !== dataProviderInfo.officialName)?dataProviderInfo.officialName:null"
|
||||||
|
[types]="dataProviderInfo.type ? [dataProviderInfo.type] : null"
|
||||||
|
isSticky="true">
|
||||||
|
</landing-header>
|
||||||
|
<!-- <showTitle *ngIf="stickyHeader" [titleName]="dataProviderInfo.title.name" classNames="uk-margin-remove-bottom" class="uk-visible@m"></showTitle>-->
|
||||||
<my-tabs (selectedActiveTab)="onSelectActiveTab($event)" [offsetForSticky]="offset" [(isSticky)]="stickyHeader">
|
<my-tabs (selectedActiveTab)="onSelectActiveTab($event)" [offsetForSticky]="offset" [(isSticky)]="stickyHeader">
|
||||||
<my-tab [tabTitle]="'Summary'" [tabId]="'summary'" [active]="true"></my-tab>
|
<my-tab [tabTitle]="'Summary'" [tabId]="'summary'" [active]="true"></my-tab>
|
||||||
<my-tab *ngIf="fetchProjects.searchUtils.totalResults > 0"
|
<my-tab *ngIf="fetchProjects.searchUtils.totalResults > 0"
|
||||||
|
|
|
@ -20,7 +20,7 @@ import {SEOService} from '../../sharedComponents/SEO/SEO.service';
|
||||||
import {HelperFunctions} from "../../utils/HelperFunctions.class";
|
import {HelperFunctions} from "../../utils/HelperFunctions.class";
|
||||||
import {HelperService} from "../../utils/helper/helper.service";
|
import {HelperService} from "../../utils/helper/helper.service";
|
||||||
import {Location} from "@angular/common";
|
import {Location} from "@angular/common";
|
||||||
import {StringUtils} from "../../utils/string-utils.class";
|
import {Identifier, StringUtils} from "../../utils/string-utils.class";
|
||||||
import {SearchResult} from "../../utils/entities/searchResult";
|
import {SearchResult} from "../../utils/entities/searchResult";
|
||||||
import {ResultPreview} from "../../utils/result-preview/result-preview";
|
import {ResultPreview} from "../../utils/result-preview/result-preview";
|
||||||
import {IndexInfoService} from "../../utils/indexInfo.service";
|
import {IndexInfoService} from "../../utils/indexInfo.service";
|
||||||
|
@ -44,11 +44,13 @@ export class DataProviderComponent {
|
||||||
@Input() communityId = null;
|
@Input() communityId = null;
|
||||||
public dataProviderInfo: DataProviderInfo;
|
public dataProviderInfo: DataProviderInfo;
|
||||||
public datasourceId: string;
|
public datasourceId: string;
|
||||||
|
public identifier: Identifier = null;
|
||||||
public provenanceUrls: string[] = null;
|
public provenanceUrls: string[] = null;
|
||||||
|
|
||||||
// Links for SEO
|
// Links for SEO
|
||||||
public linkToLandingPage: string = null;
|
public linkToLandingPage: string = null;
|
||||||
public linkToSearchPage: string = null;
|
public linkToSearchPage: string = null;
|
||||||
|
public canonicalUrl: string = null;
|
||||||
|
|
||||||
// Message variables
|
// Message variables
|
||||||
public warningMessage = "";
|
public warningMessage = "";
|
||||||
|
@ -186,8 +188,11 @@ export class DataProviderComponent {
|
||||||
this.datasourceId = data['serviceId'];
|
this.datasourceId = data['serviceId'];
|
||||||
this.typeQueryPathParam = "services";
|
this.typeQueryPathParam = "services";
|
||||||
this.initMetaAndLinks("service");
|
this.initMetaAndLinks("service");
|
||||||
|
} else if (data["pid"]) {
|
||||||
|
this.identifier = Identifier.getIdentifierFromString(decodeURIComponent(data["pid"]), false);
|
||||||
|
this.initMetaAndLinks(this.type);
|
||||||
}
|
}
|
||||||
if (this.datasourceId && StringUtils.isOpenAIREID(this.datasourceId)) {
|
if (this.datasourceId && StringUtils.isOpenAIREID(this.datasourceId) || (this.identifier)) {
|
||||||
this.initializeValues();
|
this.initializeValues();
|
||||||
this.getDataProviderInfo(this.datasourceId);
|
this.getDataProviderInfo(this.datasourceId);
|
||||||
} else {
|
} else {
|
||||||
|
@ -319,14 +324,20 @@ export class DataProviderComponent {
|
||||||
this.provenanceUrls = null;
|
this.provenanceUrls = null;
|
||||||
|
|
||||||
this.showTabs = false;
|
this.showTabs = false;
|
||||||
if (this.datasourceId == null || this.datasourceId == '') {
|
if ((this.datasourceId == null || this.datasourceId == '') && this.identifier == null) {
|
||||||
this.showLoading = false;
|
this.showLoading = false;
|
||||||
this.warningMessage = "No valid "+this.getTypeName()+" id";
|
this.warningMessage = "No valid "+this.getTypeName()+" id";
|
||||||
} else {
|
} else {
|
||||||
this.subscriptions.push(this._dataproviderService.getDataproviderInfo(this.datasourceId, this.properties, this.typeQueryPathParam).subscribe(
|
this.subscriptions.push(this._dataproviderService.getDataproviderInfo(this.datasourceId, this.identifier, this.properties, this.typeQueryPathParam).subscribe(
|
||||||
data => {
|
data => {
|
||||||
this.dataProviderInfo = data;
|
this.dataProviderInfo = data;
|
||||||
this.getProvenanceUrls();
|
this.getProvenanceUrls();
|
||||||
|
this.datasourceId = this.dataProviderInfo.objIdentifier;
|
||||||
|
let pid:Identifier = Identifier.getPIDFromIdentifiers(this.dataProviderInfo.identifiers);
|
||||||
|
this.canonicalUrl = this.properties.domain+ properties.baseLink + ( pid ? (this.linkToLandingPage.split("?")[0] + "?pid=" + encodeURIComponent(pid.id)):
|
||||||
|
(this.linkToLandingPage + this.dataProviderInfo.relcanId));
|
||||||
|
this.seoService.createLinkForCanonicalURL(this.canonicalUrl);
|
||||||
|
this.updateUrl(this.canonicalUrl);
|
||||||
this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url);
|
this.seoService.createLinkForCanonicalURL(this.properties.domain +this.properties.baseLink + this._router.url);
|
||||||
if (typeof document !== 'undefined') {
|
if (typeof document !== 'undefined') {
|
||||||
this.getDataProviderAggregationStatus(this.dataProviderInfo.originalId);
|
this.getDataProviderAggregationStatus(this.dataProviderInfo.originalId);
|
||||||
|
@ -352,7 +363,7 @@ export class DataProviderComponent {
|
||||||
},
|
},
|
||||||
err => {
|
err => {
|
||||||
//console.log(err);
|
//console.log(err);
|
||||||
this.handleError("Error getting "+this.openaireEntities.DATASOURCE+" for id: " + this.datasourceId, err);
|
this.handleError("Error getting " + this.type + " for " + (this.datasourceId ? ("id: " + this.datasourceId) : ("pid: " + this.identifier.id + " ("+this.identifier.class+")")), err);
|
||||||
if (err.status == 404) {
|
if (err.status == 404) {
|
||||||
this._router.navigate([this.properties.errorLink], {
|
this._router.navigate([this.properties.errorLink], {
|
||||||
queryParams: {
|
queryParams: {
|
||||||
|
|
|
@ -6,6 +6,8 @@ import{EnvProperties} from '../../utils/properties/env-properties';
|
||||||
import {map} from "rxjs/operators";
|
import {map} from "rxjs/operators";
|
||||||
import {ParsingFunctions} from "../landing-utils/parsingFunctions.class";
|
import {ParsingFunctions} from "../landing-utils/parsingFunctions.class";
|
||||||
import {OpenaireEntities} from "../../utils/properties/searchFields";
|
import {OpenaireEntities} from "../../utils/properties/searchFields";
|
||||||
|
import {Identifier} from "../../utils/string-utils.class";
|
||||||
|
import {properties} from "../../../../environments/environment";
|
||||||
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
@ -18,24 +20,46 @@ export class DataProviderService {
|
||||||
dataProviderInfo: DataProviderInfo;
|
dataProviderInfo: DataProviderInfo;
|
||||||
public parsingFunctions: ParsingFunctions;
|
public parsingFunctions: ParsingFunctions;
|
||||||
|
|
||||||
getDataproviderInfo (id: string, properties:EnvProperties, typePathParam: string):any {
|
private buildDatasourceLandingInfoUrl(id: string, identifier: Identifier, typePathParam: string): string {
|
||||||
let url = properties.searchAPIURLLAst + typePathParam+ '/' +id +"?format=json";
|
if (id) {
|
||||||
let key = url;
|
return properties.searchAPIURLLAst + typePathParam + "/" + id + '?format=json';
|
||||||
|
} else if (identifier) {
|
||||||
return this.http.get((properties.useCache)? (properties.cacheUrl+encodeURIComponent(url)): url)
|
return properties.searchAPIURLLAst + "resources2?pid="+encodeURIComponent(identifier.id) + "&pidtype=" + identifier.class + "&type="+typePathParam+"&format=json";
|
||||||
//.map(res => <any> res.json())
|
|
||||||
.pipe(map(res => res['result']['metadata']['oaf:entity']))
|
|
||||||
.pipe(map(res => [res['oaf:datasource'],
|
|
||||||
res['oaf:datasource']['datasourcetype'],
|
|
||||||
res['oaf:datasource']['openairecompatibility'],
|
|
||||||
res['oaf:datasource']['collectedfrom'],
|
|
||||||
res['oaf:datasource']['accessinfopackage'],
|
|
||||||
res['oaf:datasource']['rels']['rel'],
|
|
||||||
res['oaf:datasource']['journal'] //6
|
|
||||||
]))
|
|
||||||
.pipe(map(res => this.parseDataProviderInfo(res)));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getDataproviderInfo (id: string, identifier: Identifier, properties: EnvProperties, typePathParam: string): any {
|
||||||
|
let url: string = this.buildDatasourceLandingInfoUrl(id, identifier, typePathParam);
|
||||||
|
let finalUrl: string = (properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url;
|
||||||
|
return this.http.get(finalUrl)
|
||||||
|
.pipe(map(res => {
|
||||||
|
if(!id && identifier) {
|
||||||
|
if(!res['results'] || res['results'].length == 0) {
|
||||||
|
throw new HttpErrorResponse({
|
||||||
|
status: 404,
|
||||||
|
statusText: "Not found",
|
||||||
|
url: finalUrl,
|
||||||
|
error: "Http failure response for "+finalUrl+": 404 Not Found"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return res['results'][0];
|
||||||
|
} else {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
.pipe(map(res => [res['result']['metadata']['oaf:entity'], res]))
|
||||||
|
.pipe(map(res => [
|
||||||
|
res[0]['oaf:datasource'], // 0
|
||||||
|
res[0]['oaf:datasource']['datasourcetype'], // 1
|
||||||
|
res[0]['oaf:datasource']['openairecompatibility'], // 2
|
||||||
|
res[0]['oaf:datasource']['collectedfrom'], // 3
|
||||||
|
res[0]['oaf:datasource']['accessinfopackage'], // 4
|
||||||
|
res[0]['oaf:datasource']['rels']['rel'], // 5
|
||||||
|
res[0]['oaf:datasource']['journal'], // 6
|
||||||
|
res[1] // 7
|
||||||
|
]))
|
||||||
|
.pipe(map(res => this.parseDataProviderInfo(res)));
|
||||||
|
}
|
||||||
|
|
||||||
getDataproviderAggregationStatus(original_id: string, properties:EnvProperties):any {
|
getDataproviderAggregationStatus(original_id: string, properties:EnvProperties):any {
|
||||||
//let headers = new Headers({'Content-Type': 'application/json', 'accept': 'application/json'});
|
//let headers = new Headers({'Content-Type': 'application/json', 'accept': 'application/json'});
|
||||||
|
@ -109,6 +133,10 @@ export class DataProviderService {
|
||||||
parseDataProviderInfo (data: any):any {
|
parseDataProviderInfo (data: any):any {
|
||||||
this.dataProviderInfo = new DataProviderInfo();
|
this.dataProviderInfo = new DataProviderInfo();
|
||||||
|
|
||||||
|
this.dataProviderInfo.record = data[7];
|
||||||
|
this.dataProviderInfo.objIdentifier = data[7]["result"]["header"]["dri:objIdentifier"];
|
||||||
|
this.dataProviderInfo.relcanId = ParsingFunctions.parseRelCanonicalId(this.dataProviderInfo.record, "datasource");
|
||||||
|
|
||||||
if(data[0] != null) {
|
if(data[0] != null) {
|
||||||
this.dataProviderInfo.title = {"name": (data[0].englishname)?data[0].englishname: data[0].officialname, "url": data[0].websiteurl};
|
this.dataProviderInfo.title = {"name": (data[0].englishname)?data[0].englishname: data[0].officialname, "url": data[0].websiteurl};
|
||||||
this.dataProviderInfo.officialName = data[0].officialname;
|
this.dataProviderInfo.officialName = data[0].officialname;
|
||||||
|
|
|
@ -6,7 +6,7 @@ import {AlertModal} from "../../../utils/modal/alert";
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'landing-header',
|
selector: 'landing-header',
|
||||||
template: `
|
template: `
|
||||||
<div class="title-section uk-margin-bottom" [ngClass]="titleClass">
|
<div class="title-section" [class.uk-margin-bottom]="!isSticky" [ngClass]="titleClass">
|
||||||
<div class="uk-text-small">
|
<div class="uk-text-small">
|
||||||
<span *ngIf="entityType" class="uk-text-capitalize uk-text-small">
|
<span *ngIf="entityType" class="uk-text-capitalize uk-text-small">
|
||||||
{{entityType}}
|
{{entityType}}
|
||||||
|
@ -49,7 +49,7 @@ import {AlertModal} from "../../../utils/modal/alert";
|
||||||
class="uk-text-primary">Under curation</span>
|
class="uk-text-primary">Under curation</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-margin-medium-bottom">
|
<div [class]="isSticky ? 'uk-margon-bottom' : 'uk-margin-medium-bottom'">
|
||||||
<showTitle [titleName]="title" classNames="uk-margin-remove-bottom"></showTitle>
|
<showTitle [titleName]="title" classNames="uk-margin-remove-bottom"></showTitle>
|
||||||
<div *ngIf="subTitle">
|
<div *ngIf="subTitle">
|
||||||
<span class="uk-text-meta uk-text-small" [innerHTML]="subTitle"></span>
|
<span class="uk-text-meta uk-text-small" [innerHTML]="subTitle"></span>
|
||||||
|
@ -78,6 +78,7 @@ export class LandingHeaderComponent {
|
||||||
@Input() modal: AlertModal;
|
@Input() modal: AlertModal;
|
||||||
@Input() titleClass: string = null;
|
@Input() titleClass: string = null;
|
||||||
@Input() isTitleH1:boolean =true;
|
@Input() isTitleH1:boolean =true;
|
||||||
|
@Input() isSticky: boolean = false;
|
||||||
public removeUnknown(array: string[], type: boolean = false): string[] {
|
public removeUnknown(array: string[], type: boolean = false): string[] {
|
||||||
if (type) {
|
if (type) {
|
||||||
return this.removeDuplicates(array).filter(value => value.toLowerCase() !== 'unknown');
|
return this.removeDuplicates(array).filter(value => value.toLowerCase() !== 'unknown');
|
||||||
|
|
|
@ -173,7 +173,16 @@
|
||||||
uk-sticky="bottom: true; media: @m" [attr.offset]="offset"
|
uk-sticky="bottom: true; media: @m" [attr.offset]="offset"
|
||||||
cls-active="active">
|
cls-active="active">
|
||||||
<div class="uk-padding uk-padding-remove-horizontal uk-padding-remove-bottom">
|
<div class="uk-padding uk-padding-remove-horizontal uk-padding-remove-bottom">
|
||||||
<showTitle *ngIf="stickyHeader" [titleName]="resultLandingInfo.title" classNames="uk-margin-remove-bottom" class="uk-visible@m"></showTitle>
|
<landing-header *ngIf="stickyHeader" class="uk-visible@m"
|
||||||
|
[properties]="properties" [title]="resultLandingInfo.title"
|
||||||
|
[subTitle]="resultLandingInfo.subtitle"
|
||||||
|
[authors]="resultLandingInfo.authors"
|
||||||
|
[underCuration]="resultLandingInfo.underCurationMessage"
|
||||||
|
[entityType]="getTypeName()" [types]="resultLandingInfo.types"
|
||||||
|
[year]="resultLandingInfo.date" [embargoEndDate]="resultLandingInfo.embargoEndDate"
|
||||||
|
isSticky="true">
|
||||||
|
</landing-header>
|
||||||
|
<!-- <showTitle *ngIf="stickyHeader" [titleName]="resultLandingInfo.title" classNames="uk-margin-remove-bottom" class="uk-visible@m"></showTitle>-->
|
||||||
<my-tabs (selectedActiveTab)="onSelectActiveTab($event)" [offsetForSticky]="offset" [(isSticky)]="stickyHeader">
|
<my-tabs (selectedActiveTab)="onSelectActiveTab($event)" [offsetForSticky]="offset" [(isSticky)]="stickyHeader">
|
||||||
<my-tab tabTitle="Summary" [tabId]="'summary'" [active]="true"></my-tab>
|
<my-tab tabTitle="Summary" [tabId]="'summary'" [active]="true"></my-tab>
|
||||||
<my-tab *ngIf="resultLandingInfo.references && resultLandingInfo.references.length > 0"
|
<my-tab *ngIf="resultLandingInfo.references && resultLandingInfo.references.length > 0"
|
||||||
|
|
|
@ -450,7 +450,7 @@ export class ResultLandingComponent {
|
||||||
this.viewsFrameUrl = this.properties.statisticsFrameNewAPIURL + 'chart?json=' + encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly views","type":"column","query":{"name":"usagestats.results.views.monthly", "parameters":["' + this.id + '"], "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.viewsFrameUrl = this.properties.statisticsFrameNewAPIURL + 'chart?json=' + encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly views","type":"column","query":{"name":"usagestats.results.views.monthly", "parameters":["' + this.id + '"], "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=' +
|
this.downloadsFrameUrl = this.properties.statisticsFrameNewAPIURL + 'chart?json=' +
|
||||||
encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly downloads","type":"column","query":{"name":"usagestats.results.downloads.monthly", "parameters":["' + this.id + '"], "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":""}}}');
|
encodeURIComponent('{"library":"HighCharts","chartDescription":{"queries":[{"name":"Monthly downloads","type":"column","query":{"name":"usagestats.results.downloads.monthly", "parameters":["' + this.id + '"], "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":""}}}');
|
||||||
let pid:Identifier = Identifier.getResultPIDFromIdentifiers(this.resultLandingInfo.identifiers);
|
let pid:Identifier = Identifier.getPIDFromIdentifiers(this.resultLandingInfo.identifiers);
|
||||||
if (this.type == "result") { // no type was specified - update URL based this.resultLandingInfo.resultType
|
if (this.type == "result") { // no type was specified - update URL based this.resultLandingInfo.resultType
|
||||||
this.updateUrlWithType(pid);
|
this.updateUrlWithType(pid);
|
||||||
}
|
}
|
||||||
|
|
|
@ -957,7 +957,7 @@ export class NewSearchPageComponent {
|
||||||
let params = "";
|
let params = "";
|
||||||
let doisParams = "";
|
let doisParams = "";
|
||||||
var DOIs: Identifier[] = Identifier.getIdentifiersFromString(value);
|
var DOIs: Identifier[] = Identifier.getIdentifiersFromString(value);
|
||||||
if ((entityType == 'publication' || entityType == 'dataset' || entityType == 'software' || entityType == 'other' || entityType == "result" || entityType == "datasource" || entityType == "service")) {
|
if ((entityType == 'publication' || entityType == 'dataset' || entityType == 'software' || entityType == 'other' || entityType == "result" || entityType == "dataprovider" || entityType == "service")) {
|
||||||
for (let identifier of DOIs) {
|
for (let identifier of DOIs) {
|
||||||
// console.log(identifier)
|
// console.log(identifier)
|
||||||
// pidclassid exact \"doi\" and pid exact \"10.1016/j.nima.2015.11.134\"
|
// pidclassid exact \"doi\" and pid exact \"10.1016/j.nima.2015.11.134\"
|
||||||
|
@ -1374,7 +1374,7 @@ export class NewSearchPageComponent {
|
||||||
(
|
(
|
||||||
(this.entityType == 'publication' || this.entityType == 'dataset' || this.entityType == 'software' || this.entityType == 'other' || this.entityType == "result")
|
(this.entityType == 'publication' || this.entityType == 'dataset' || this.entityType == 'software' || this.entityType == 'other' || this.entityType == "result")
|
||||||
||
|
||
|
||||||
(this.entityType == "datasource" || this.entityType == "service")
|
(this.entityType == "service")
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
let values = [];
|
let values = [];
|
||||||
|
@ -1504,7 +1504,7 @@ export class NewSearchPageComponent {
|
||||||
let options = null;
|
let options = null;
|
||||||
if ((this.entityType == 'publication' || this.entityType == 'dataset' || this.entityType == 'software' || this.entityType == 'other' || this.entityType == "result")) {
|
if ((this.entityType == 'publication' || this.entityType == 'dataset' || this.entityType == 'software' || this.entityType == 'other' || this.entityType == "result")) {
|
||||||
options = this.resultTypeOptions;
|
options = this.resultTypeOptions;
|
||||||
} else if (this.entityType == "datasource" || this.entityType == "service") {
|
} else if (this.entityType == "service") {
|
||||||
options = this.serviceTypeOptions;
|
options = this.serviceTypeOptions;
|
||||||
}
|
}
|
||||||
if (options) {
|
if (options) {
|
||||||
|
|
|
@ -78,7 +78,6 @@ export class MetricsService {
|
||||||
}catch(e){
|
}catch(e){
|
||||||
console.error(e)
|
console.error(e)
|
||||||
}
|
}
|
||||||
console.log(map)
|
|
||||||
return map;
|
return map;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -301,6 +301,11 @@ export class SearchDataprovidersService {
|
||||||
//result['title'].url = OpenaireProperties.getsearchLinkToDataProvider();
|
//result['title'].url = OpenaireProperties.getsearchLinkToDataProvider();
|
||||||
//result['title'].url += Array.isArray(data) ? data[i]['result']['header']['dri:objIdentifier'] : data['result']['header']['dri:objIdentifier'];
|
//result['title'].url += Array.isArray(data) ? data[i]['result']['header']['dri:objIdentifier'] : data['result']['header']['dri:objIdentifier'];
|
||||||
result['id'] = Array.isArray(data) ? data[i]['result']['header']['dri:objIdentifier'] : data['result']['header']['dri:objIdentifier'];
|
result['id'] = Array.isArray(data) ? data[i]['result']['header']['dri:objIdentifier'] : data['result']['header']['dri:objIdentifier'];
|
||||||
|
let canId = ParsingFunctions.parseRelCanonicalId(Array.isArray(data) ? data[i] : data, "datasource");
|
||||||
|
if (canId) {
|
||||||
|
result['id'] = canId;
|
||||||
|
}
|
||||||
|
result['relcanId'] = result['id'];
|
||||||
|
|
||||||
result['type'] = this.getDataproviderType(resData);
|
result['type'] = this.getDataproviderType(resData);
|
||||||
if (resData['eosctype']) {
|
if (resData['eosctype']) {
|
||||||
|
|
|
@ -13,6 +13,9 @@ export class DataproviderProvenance {
|
||||||
}
|
}
|
||||||
|
|
||||||
export class DataProviderInfo {
|
export class DataProviderInfo {
|
||||||
|
relcanId;
|
||||||
|
objIdentifier: string;
|
||||||
|
record;
|
||||||
title: { "name": string, "url": string };
|
title: { "name": string, "url": string };
|
||||||
officialName: string;
|
officialName: string;
|
||||||
type: string;
|
type: string;
|
||||||
|
|
|
@ -99,7 +99,7 @@ export class ResultPreviewComponent implements OnInit, OnChanges {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getPID() {
|
getPID() {
|
||||||
return Identifier.getResultPIDFromIdentifiers(this.result.identifiers);
|
return Identifier.getPIDFromIdentifiers(this.result.identifiers);
|
||||||
}
|
}
|
||||||
|
|
||||||
public initBeforeTitle() {
|
public initBeforeTitle() {
|
||||||
|
|
|
@ -207,8 +207,8 @@ export class Identifier {
|
||||||
return (strict?null:{"class": "doi", "id": pid});
|
return (strict?null:{"class": "doi", "id": pid});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getResultPIDFromIdentifiers(identifiers: Map<string, string[]>): Identifier {
|
public static getPIDFromIdentifiers(identifiers: Map<string, string[]>): Identifier {
|
||||||
let classes:string [] = ["doi", "handle", "pmc", "pmid"];
|
let classes:string [] = ["doi", "handle", "pmc", "pmid", "re3data"];
|
||||||
if(identifiers) {
|
if(identifiers) {
|
||||||
for (let cl of classes){
|
for (let cl of classes){
|
||||||
if(identifiers.get(cl)){
|
if(identifiers.get(cl)){
|
||||||
|
|
Loading…
Reference in New Issue