[develop | DONE | ADDED]: Added the option to claim works to ORCID without pids, but with OpenAIRE id.
1. myOrcidLinks.component.ts & orcid.service.ts: Added functionality for orcid claim with openaireId. 2. orcid-work.component.ts: Added functionality for orcid claim with openaireId & added (missing from previous commit) @Input() compactView to show or not the word "claim". 3. orcidWork.ts: Set openaireId (relcanId) as external-id with "external-id-type": "source-work-id". 4. newSearchPage.component.ts: Added field public isLoggedIn: boolean = false; and initialize it by calling userManagementService.getUserInfo(). 5. newSearchPage.component.html: In <search-result> set isLoggedIn parameter. 6. searchResult.component.ts: Added functionality for orcid claim with openaireId & Added field @Input() isLoggedIn: boolean = false; and replaced Session check. 7. result-preview.component.ts & result-preview.component.html: Removed checks to orcid claim only when there are pids.
This commit is contained in:
parent
7bb45fefa0
commit
7f7b08b7af
|
@ -206,7 +206,7 @@ export class MyOrcidLinksComponent {
|
||||||
this.subscriptions.push(this._orcidService.getPersonalDetails().subscribe(
|
this.subscriptions.push(this._orcidService.getPersonalDetails().subscribe(
|
||||||
details => {
|
details => {
|
||||||
let author: string = "";
|
let author: string = "";
|
||||||
console.log(details)
|
|
||||||
if(details && details['name']) {
|
if(details && details['name']) {
|
||||||
let name: string = details['name'];
|
let name: string = details['name'];
|
||||||
if(name['given-names'] && name['given-names']['value']) {
|
if(name['given-names'] && name['given-names']['value']) {
|
||||||
|
@ -303,10 +303,14 @@ console.log(details)
|
||||||
let works = this.works.slice(from, to);
|
let works = this.works.slice(from, to);
|
||||||
|
|
||||||
for(let work of works) {
|
for(let work of works) {
|
||||||
|
if(work['pids'] && work['pids'].length > 0) {
|
||||||
for (let pid of work['pids']) {
|
for (let pid of work['pids']) {
|
||||||
let identifier: Identifier = Identifier.getIdentifierFromString(pid, false);
|
let identifier: Identifier = Identifier.getIdentifierFromString(pid, false);
|
||||||
this.orcidQuery += (this.orcidQuery ? " or " : "") + ('(pid="' + StringUtils.URIEncode(identifier.id) + '")');
|
this.orcidQuery += (this.orcidQuery ? " or " : "") + ('(pid="' + StringUtils.URIEncode(identifier.id) + '")');
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
this.orcidQuery += (this.orcidQuery ? " or " : "") + ('(objIdentifier="' + StringUtils.URIEncode(work['openaireId']) + '")');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
this.showLoading = false;
|
this.showLoading = false;
|
||||||
this._getResults(works);
|
this._getResults(works);
|
||||||
|
@ -344,8 +348,8 @@ console.log(details)
|
||||||
let relatedResults = [];
|
let relatedResults = [];
|
||||||
this.currentResults.push({"work": work, "results" : relatedResults})
|
this.currentResults.push({"work": work, "results" : relatedResults})
|
||||||
results.forEach(result => {
|
results.forEach(result => {
|
||||||
let identifierValues: string[] = [].concat(...Array.from(result.identifiers.values()));
|
let identifierValues: string[] = result.identifiers ? [].concat(...Array.from(result.identifiers.values())) : [];
|
||||||
if(work['pids'].some(pid => identifierValues.includes(pid))) {
|
if((work['pids'] && work['pids'].some(pid => identifierValues.includes(pid))) || work['openaireId'] === result.relcanId) {
|
||||||
|
|
||||||
let index: number = resultsFound.get(identifierValues);
|
let index: number = resultsFound.get(identifierValues);
|
||||||
if(!index) {
|
if(!index) {
|
||||||
|
|
|
@ -24,7 +24,7 @@ declare var UIkit: any;
|
||||||
<span *ngIf="!putCodes || putCodes.length == 0"
|
<span *ngIf="!putCodes || putCodes.length == 0"
|
||||||
[ngClass]="isMobile && pageType == 'landing' ? ' uk-width-1-1' : ''"
|
[ngClass]="isMobile && pageType == 'landing' ? ' uk-width-1-1' : ''"
|
||||||
[attr.uk-tooltip]="isMobile? 'cls: uk-invisible' : 'pos: bottom; cls: uk-active uk-text-small uk-padding-small'"
|
[attr.uk-tooltip]="isMobile? 'cls: uk-invisible' : 'pos: bottom; cls: uk-active uk-text-small uk-padding-small'"
|
||||||
[title]="(noPids || !isLoggedIn) ? ((noPids) ? tooltipNoPid : tooltipNoLoggedInUser) : tooltipAdd">
|
[title]="!isLoggedIn ? tooltipNoLoggedInUser : tooltipAdd">
|
||||||
<span (click)="currentAction='add'; saveWorkPreparation();"
|
<span (click)="currentAction='add'; saveWorkPreparation();"
|
||||||
[class.uk-disabled]="isDisabled"
|
[class.uk-disabled]="isDisabled"
|
||||||
[class.clickable]="!isDisabled">
|
[class.clickable]="!isDisabled">
|
||||||
|
@ -32,21 +32,21 @@ declare var UIkit: any;
|
||||||
[ngClass]="isMobile && !(pageType == 'landing') ? 'uk-margin-left' : ''"
|
[ngClass]="isMobile && !(pageType == 'landing') ? 'uk-margin-left' : ''"
|
||||||
[class.uk-text-bolder]="!(isMobile && pageType == 'landing')"
|
[class.uk-text-bolder]="!(isMobile && pageType == 'landing')"
|
||||||
[class.uk-text-muted]="isDisabled">
|
[class.uk-text-muted]="isDisabled">
|
||||||
<icon *ngIf="!showLoading" [class.text-orcid]="properties.environment != 'beta' && !showLoading && isLoggedIn && (pids || identifiers?.size > 0)"
|
<icon *ngIf="!showLoading" [class.text-orcid]="properties.environment != 'beta' && !showLoading && isLoggedIn"
|
||||||
[class.uk-text-muted]="isDisabled"
|
[class.uk-text-muted]="isDisabled"
|
||||||
name="orcid_add" [ratio]="(isMobile && pageType == 'search') ? 0.7 : 1" visuallyHidden="add"></icon>
|
name="orcid_add" [ratio]="(isMobile && pageType == 'search') ? 0.7 : 1" visuallyHidden="add"></icon>
|
||||||
<span *ngIf="showLoading" class="uk-icon"><loading
|
<span *ngIf="showLoading" class="uk-icon"><loading
|
||||||
[top_margin]="false" [size]="'small'"></loading></span>
|
[top_margin]="false" [size]="'small'"></loading></span>
|
||||||
<span [ngClass]="(isMobile && pageType == 'landing') ? 'uk-margin-small-left' : 'uk-margin-xsmall-left'">Claim</span>
|
<span *ngIf="!compactView" [ngClass]="(isMobile && pageType == 'landing') ? 'uk-margin-small-left' : 'uk-margin-xsmall-left'">Claim</span>
|
||||||
</a>
|
</a>
|
||||||
<div *ngIf="isMobile && pageType == 'landing'" class="uk-margin-xsmall-top uk-padding uk-padding-remove-vertical uk-text-meta uk-text-xsmall"
|
<div *ngIf="isMobile && pageType == 'landing'" class="uk-margin-xsmall-top uk-padding uk-padding-remove-vertical uk-text-meta uk-text-xsmall"
|
||||||
[innerHTML]="(noPids || !isLoggedIn) ? ((noPids) ? tooltipNoPid : tooltipNoLoggedInUser) : tooltipAdd"></div>
|
[innerHTML]="!isLoggedIn ? tooltipNoLoggedInUser : tooltipAdd"></div>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span *ngIf="putCodes && putCodes.length > 0" [ngClass]="isMobile && pageType == 'landing' ? ' uk-width-1-1' : ''"
|
<span *ngIf="putCodes && putCodes.length > 0" [ngClass]="isMobile && pageType == 'landing' ? ' uk-width-1-1' : ''"
|
||||||
[attr.uk-tooltip]="isMobile? 'cls: uk-invisible' : 'pos: bottom; cls: uk-active uk-text-small uk-padding-small'"
|
[attr.uk-tooltip]="isMobile? 'cls: uk-invisible' : 'pos: bottom; cls: uk-active uk-text-small uk-padding-small'"
|
||||||
[title]="(noPids || !isLoggedIn) ? ((noPids) ? tooltipNoPid : tooltipNoLoggedInUser) : tooltipDelete">
|
[title]="!isLoggedIn ? tooltipNoLoggedInUser : tooltipDelete">
|
||||||
<span (click)="currentAction='delete'; deleteWorks();"
|
<span (click)="currentAction='delete'; deleteWorks();"
|
||||||
[class.uk-disabled]="isDisabled"
|
[class.uk-disabled]="isDisabled"
|
||||||
[class.clickable]="!isDisabled">
|
[class.clickable]="!isDisabled">
|
||||||
|
@ -54,15 +54,15 @@ declare var UIkit: any;
|
||||||
[ngClass]="isMobile && !(pageType == 'landing') ? 'uk-margin-left' : ''"
|
[ngClass]="isMobile && !(pageType == 'landing') ? 'uk-margin-left' : ''"
|
||||||
[class.uk-text-bolder]="!(isMobile && pageType == 'landing')"
|
[class.uk-text-bolder]="!(isMobile && pageType == 'landing')"
|
||||||
[class.uk-text-muted]="isDisabled">
|
[class.uk-text-muted]="isDisabled">
|
||||||
<icon *ngIf="!showLoading" [class.text-orcid]="!showLoading && isLoggedIn && (pids || identifiers?.size > 0)"
|
<icon *ngIf="!showLoading" [class.text-orcid]="!showLoading && isLoggedIn"
|
||||||
[class.uk-text-muted]="isDisabled"
|
[class.uk-text-muted]="isDisabled"
|
||||||
name="orcid_bin" [ratio]="(isMobile && pageType == 'search') ? 0.7 : 1" visuallyHidden="delete"></icon>
|
name="orcid_bin" [ratio]="(isMobile && pageType == 'search') ? 0.7 : 1" visuallyHidden="delete"></icon>
|
||||||
<span *ngIf="showLoading" class="uk-icon"><loading
|
<span *ngIf="showLoading" class="uk-icon"><loading
|
||||||
[top_margin]="false" [size]="'small'"></loading></span>
|
[top_margin]="false" [size]="'small'"></loading></span>
|
||||||
<span [ngClass]="(isMobile && pageType == 'landing') ? 'uk-margin-small-left' : 'uk-margin-xsmall-left'">Remove</span>
|
<span *ngIf="!compactView" [ngClass]="(isMobile && pageType == 'landing') ? 'uk-margin-small-left' : 'uk-margin-xsmall-left'">Remove</span>
|
||||||
</a>
|
</a>
|
||||||
<div *ngIf="isMobile && pageType == 'landing'" class="uk-margin-xsmall-top uk-padding uk-padding-remove-vertical uk-text-meta uk-text-xsmall"
|
<div *ngIf="isMobile && pageType == 'landing'" class="uk-margin-xsmall-top uk-padding uk-padding-remove-vertical uk-text-meta uk-text-xsmall"
|
||||||
[innerHTML]="(noPids || !isLoggedIn) ? ((noPids) ? tooltipNoPid : tooltipNoLoggedInUser) : tooltipDelete"></div>
|
[innerHTML]="!isLoggedIn ? tooltipNoLoggedInUser : tooltipDelete"></div>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
@ -192,8 +192,16 @@ declare var UIkit: any;
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="work['external-ids'] && work['external-ids']['external-id']" class="uk-margin-small-bottom">
|
<div *ngIf="(work['external-ids'] && work['external-ids']['external-id']) || openaireId" class="uk-margin-small-bottom">
|
||||||
<showIdentifiers [identifiers]="parseIdentifiers(work['external-ids']['external-id'])"></showIdentifiers>
|
<showIdentifiers [identifiers]="parseIdentifiers(work['external-ids']['external-id'])"></showIdentifiers>
|
||||||
|
<ng-container *ngIf="openaireId">
|
||||||
|
<span class="uk-text-meta uk-text-small uk-text-uppercase">Source-work-id: </span>
|
||||||
|
<span class="uk-margin-small-left">
|
||||||
|
<a [href]="openaireId.url" target="_blank" class="uk-display-inline-block custom-external">
|
||||||
|
{{openaireId.value}}
|
||||||
|
</a>
|
||||||
|
</span>
|
||||||
|
</ng-container>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div *ngIf="work['contributors'] && work['contributors']['contributor']">
|
<div *ngIf="work['contributors'] && work['contributors']['contributor']">
|
||||||
|
@ -300,6 +308,8 @@ export class OrcidWorkComponent {
|
||||||
//for myorcid links page
|
//for myorcid links page
|
||||||
@Input() showOnlyUpdateButton: boolean = false;
|
@Input() showOnlyUpdateButton: boolean = false;
|
||||||
@Input() showUpdateButton: boolean = true;
|
@Input() showUpdateButton: boolean = true;
|
||||||
|
@Input() compactView: boolean = false; // if true, do not show label for actions
|
||||||
|
|
||||||
public subscriptions: Subscription[] = [];
|
public subscriptions: Subscription[] = [];
|
||||||
@ViewChild('workModal') workModal;
|
@ViewChild('workModal') workModal;
|
||||||
// @ViewChild('saveWorkModal') saveWorkModal;
|
// @ViewChild('saveWorkModal') saveWorkModal;
|
||||||
|
@ -317,6 +327,7 @@ export class OrcidWorkComponent {
|
||||||
|
|
||||||
public works: any[] = [];
|
public works: any[] = [];
|
||||||
public orcidWorks: any[] = [];
|
public orcidWorks: any[] = [];
|
||||||
|
public openaireId: {value: string, url: string} = null;
|
||||||
public window: any;
|
public window: any;
|
||||||
|
|
||||||
public isLoggedIn: boolean = false;
|
public isLoggedIn: boolean = false;
|
||||||
|
@ -395,11 +406,15 @@ export class OrcidWorkComponent {
|
||||||
public parseIdentifiers(identifiers: ExternalIDV3_0[]): Map<string, string[]> {
|
public parseIdentifiers(identifiers: ExternalIDV3_0[]): Map<string, string[]> {
|
||||||
let identifiersMap: Map<string, string[]> = new Map<string, string[]>();
|
let identifiersMap: Map<string, string[]> = new Map<string, string[]>();
|
||||||
for (let identifier of identifiers) {
|
for (let identifier of identifiers) {
|
||||||
|
if(identifier['external-id-type'] == "source-work-id") {
|
||||||
|
this.openaireId = {value: identifier['external-id-value'], url: identifier['external-id-url'].value};
|
||||||
|
} else {
|
||||||
if (!identifiersMap.has(identifier['external-id-type'])) {
|
if (!identifiersMap.has(identifier['external-id-type'])) {
|
||||||
identifiersMap.set(identifier['external-id-type'], new Array<string>());
|
identifiersMap.set(identifier['external-id-type'], new Array<string>());
|
||||||
}
|
}
|
||||||
identifiersMap.get(identifier['external-id-type']).push(identifier['external-id-value']);
|
identifiersMap.get(identifier['external-id-type']).push(identifier['external-id-value']);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return identifiersMap;
|
return identifiersMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -442,7 +457,7 @@ export class OrcidWorkComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
private getPutCode() {
|
private getPutCode() {
|
||||||
this.subscriptions.push(this.orcidService.getPutCode(this.pids).subscribe(
|
this.subscriptions.push(this.orcidService.getPutCode(this.resultLandingInfo.relcanId, this.pids).subscribe(
|
||||||
putCodes => {
|
putCodes => {
|
||||||
this.putCodes = putCodes;
|
this.putCodes = putCodes;
|
||||||
this.cdr.markForCheck();
|
this.cdr.markForCheck();
|
||||||
|
@ -511,7 +526,7 @@ export class OrcidWorkComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
private saveWork() {
|
private saveWork() {
|
||||||
this.subscriptions.push(this.orcidService.saveWork(this.resultLandingInfo, this.pids).subscribe(
|
this.subscriptions.push(this.orcidService.saveWork(this.resultLandingInfo, this.resultLandingInfo.relcanId,this.pids).subscribe(
|
||||||
response => {
|
response => {
|
||||||
if(this.properties.logServiceUrl) {
|
if(this.properties.logServiceUrl) {
|
||||||
this.subscriptions.push(this._logService.logOrcidLink(this.properties, "added", this.resultLandingInfo.title, this.resultLandingInfo.identifiers.get('doi')[0]).subscribe(res => { }));
|
this.subscriptions.push(this._logService.logOrcidLink(this.properties, "added", this.resultLandingInfo.title, this.resultLandingInfo.identifiers.get('doi')[0]).subscribe(res => { }));
|
||||||
|
@ -564,7 +579,7 @@ export class OrcidWorkComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateWorkPreparation() {
|
private updateWorkPreparation() {
|
||||||
if (!Session.isLoggedIn()) {
|
if (!this.isLoggedIn) {
|
||||||
this._router.navigate(['/user-info'], {
|
this._router.navigate(['/user-info'], {
|
||||||
queryParams: {
|
queryParams: {
|
||||||
"errorCode": LoginErrorCodes.NOT_VALID,
|
"errorCode": LoginErrorCodes.NOT_VALID,
|
||||||
|
@ -590,7 +605,7 @@ export class OrcidWorkComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
private updateWork() {
|
private updateWork() {
|
||||||
this.subscriptions.push(this.orcidService.updateWork(this.resultLandingInfo, this.pids, this.putCodes[0]).subscribe(
|
this.subscriptions.push(this.orcidService.updateWork(this.resultLandingInfo, this.resultLandingInfo.relcanId, this.pids, this.putCodes[0]).subscribe(
|
||||||
response => {
|
response => {
|
||||||
if (response) {
|
if (response) {
|
||||||
this.updateDates[0] = response['last-modified-date'].value;
|
this.updateDates[0] = response['last-modified-date'].value;
|
||||||
|
@ -626,7 +641,8 @@ export class OrcidWorkComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
public getOrcidWorks() {
|
public getOrcidWorks() {
|
||||||
if (!Session.isLoggedIn()) {
|
this.openaireId = null;
|
||||||
|
if (!this.isLoggedIn) {
|
||||||
this._router.navigate(['/user-info'], {
|
this._router.navigate(['/user-info'], {
|
||||||
queryParams: {
|
queryParams: {
|
||||||
"errorCode": LoginErrorCodes.NOT_VALID,
|
"errorCode": LoginErrorCodes.NOT_VALID,
|
||||||
|
@ -668,7 +684,7 @@ export class OrcidWorkComponent {
|
||||||
|
|
||||||
|
|
||||||
public deleteWorks(confirmed: boolean = false) {
|
public deleteWorks(confirmed: boolean = false) {
|
||||||
if (!Session.isLoggedIn()) {
|
if (!this.isLoggedIn) {
|
||||||
this._router.navigate(['/user-info'], {
|
this._router.navigate(['/user-info'], {
|
||||||
queryParams: {
|
queryParams: {
|
||||||
"errorCode": LoginErrorCodes.NOT_VALID,
|
"errorCode": LoginErrorCodes.NOT_VALID,
|
||||||
|
@ -833,7 +849,7 @@ export class OrcidWorkComponent {
|
||||||
this.message += "There was an <span class='uk-text-bold'>error getting</span> work \"<span class='uk-text-bold'>" + this.resultTitle + "</span>\" from your ORCID record. <br> Please try again later.";
|
this.message += "There was an <span class='uk-text-bold'>error getting</span> work \"<span class='uk-text-bold'>" + this.resultTitle + "</span>\" from your ORCID record. <br> Please try again later.";
|
||||||
} else if (this.currentAction == "add") {
|
} else if (this.currentAction == "add") {
|
||||||
// this.message += "There was an <span class='uk-text-bold'>error adding</span> work with pids: <span class='uk-text-bold'>"+this.pids+"</span> to your ORCID record. <br> Please try again later.";
|
// this.message += "There was an <span class='uk-text-bold'>error adding</span> work with pids: <span class='uk-text-bold'>"+this.pids+"</span> to your ORCID record. <br> Please try again later.";
|
||||||
this.message += "There was an <span class='uk-text-bold'>error adding</span> work with pids: \"<span class='uk-text-bold'>" + this.pids + "</span>\" to your ORCID record. <br> Please try again later.";
|
this.message += "There was an <span class='uk-text-bold'>error adding</span> work with openaireId: \"<span class='uk-text-bold'>"+this.resultLandingInfo.relcanId+(this.pids?.length > 0 ? "</span>\" and pids: \"<span class='uk-text-bold'>" + this.pids : "") +"</span>\" to your ORCID record. <br> Please try again later.";
|
||||||
} else if (this.currentAction == "update") {
|
} else if (this.currentAction == "update") {
|
||||||
// this.message += "There was an <span class='uk-text-bold'>error updating</span> work with pids: <span class='uk-text-bold'>"+this.pids+"</span> to your ORCID record. <br> Please try again later.";
|
// this.message += "There was an <span class='uk-text-bold'>error updating</span> work with pids: <span class='uk-text-bold'>"+this.pids+"</span> to your ORCID record. <br> Please try again later.";
|
||||||
this.message += "There was an <span class='uk-text-bold'>error updating</span> work \"<span class='uk-text-bold'>" + this.resultTitle + "</span>\" to your ORCID record. <br> Please try again later.";
|
this.message += "There was an <span class='uk-text-bold'>error updating</span> work \"<span class='uk-text-bold'>" + this.resultTitle + "</span>\" to your ORCID record. <br> Please try again later.";
|
||||||
|
@ -877,7 +893,7 @@ export class OrcidWorkComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
get isDisabled() {
|
get isDisabled() {
|
||||||
return (this.properties.environment == 'beta' || this.showLoading || !this.isLoggedIn || (!this.pids && (!this.identifiers || this.identifiers.size == 0)));
|
return (this.properties.environment == 'beta' || this.showLoading || !this.isLoggedIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
get noPids() {
|
get noPids() {
|
||||||
|
|
|
@ -11,19 +11,21 @@ import {ConnectHelper} from "../connect/connectHelper";
|
||||||
export class OrcidService {
|
export class OrcidService {
|
||||||
constructor(private http: HttpClient) {}
|
constructor(private http: HttpClient) {}
|
||||||
|
|
||||||
getPutCode(pids: string) {
|
getPutCode(openaireId: string, pids: string) {
|
||||||
let url: string = properties.orcidAPIURL+"local/put-code?pids="+pids;
|
let url: string = properties.orcidAPIURL+"local/put-code?openaireId="+openaireId+(pids ? ("&pids="+pids) : "");
|
||||||
return this.http.get<string[]>(url, CustomOptions.registryOptions());
|
return this.http.get<string[]>(url, CustomOptions.registryOptions());
|
||||||
}
|
}
|
||||||
|
|
||||||
getPutCodes(pids: string[][]) {
|
getPutCodes(openaireIds: string[], pids: string[][]) {
|
||||||
let url: string = properties.orcidAPIURL+"local/put-codes";
|
let url: string = properties.orcidAPIURL+"local/put-codes";
|
||||||
return this.http.post<string[][]>(url, JSON.stringify(pids), CustomOptions.registryOptions());
|
let map = {"pids": pids, "openaireIds": openaireIds};
|
||||||
|
return this.http.post<string[][]>(url, JSON.stringify(map), CustomOptions.registryOptions());
|
||||||
}
|
}
|
||||||
|
|
||||||
getLocalWorksByPids(pids: string[][]) {
|
getLocalWorksByPids(openaireIds: string[], pids: string[][]) {
|
||||||
let url: string = properties.orcidAPIURL+"local/works";
|
let url: string = properties.orcidAPIURL+"local/works";
|
||||||
return this.http.post<string[][]>(url, JSON.stringify(pids), CustomOptions.registryOptions());
|
let map = {"pids": pids, "openaireIds": openaireIds};
|
||||||
|
return this.http.post<string[][]>(url, JSON.stringify(map), CustomOptions.registryOptions());
|
||||||
}
|
}
|
||||||
|
|
||||||
getToken(code: string) {
|
getToken(code: string) {
|
||||||
|
@ -47,14 +49,15 @@ export class OrcidService {
|
||||||
return this.http.get(url, CustomOptions.registryOptions());
|
return this.http.get(url, CustomOptions.registryOptions());
|
||||||
}
|
}
|
||||||
|
|
||||||
saveWork(resultLandingInfo: ResultLandingInfo, pids: string) {
|
saveWork(resultLandingInfo: ResultLandingInfo, openaireId: string, pids: string) {
|
||||||
let work = WorkV3_0.resultLandingInfoConvert(resultLandingInfo, null);
|
let work = WorkV3_0.resultLandingInfoConvert(resultLandingInfo, null);
|
||||||
let portalId: string = ConnectHelper.getCommunityFromDomain(properties.domain);
|
let portalId: string = ConnectHelper.getCommunityFromDomain(properties.domain);
|
||||||
// if dashboard format changes, check in API the metrics service ("calculateMetrics" method) for orcid KPIs
|
// if dashboard format changes, check in API the metrics service ("calculateMetrics" method) for orcid KPIs
|
||||||
let dashboard: string = properties.environment + "_" + properties.dashboard + (portalId? "_" + portalId : "");
|
let dashboard: string = properties.environment + "_" + properties.dashboard + (portalId? "_" + portalId : "");
|
||||||
let result = {
|
let result = {
|
||||||
"dashboard": dashboard,
|
"dashboard": dashboard,
|
||||||
"pids": pids.split(","),
|
"openaireId": openaireId,
|
||||||
|
"pids": pids? pids.split(",") : [],
|
||||||
"work": work
|
"work": work
|
||||||
};
|
};
|
||||||
let url: string = properties.orcidAPIURL+"orcid/work/save";
|
let url: string = properties.orcidAPIURL+"orcid/work/save";
|
||||||
|
@ -93,10 +96,11 @@ export class OrcidService {
|
||||||
// return this.http.post(url, JSON.stringify(work), CustomOptions.registryOptions())
|
// return this.http.post(url, JSON.stringify(work), CustomOptions.registryOptions())
|
||||||
// .pipe(map(res => work));
|
// .pipe(map(res => work));
|
||||||
// }
|
// }
|
||||||
updateWork(resultLandingInfo: ResultLandingInfo, pids: string, putCode: string) {
|
updateWork(resultLandingInfo: ResultLandingInfo, openaireId: string, pids: string, putCode: string) {
|
||||||
let work = WorkV3_0.resultLandingInfoConvert(resultLandingInfo, putCode);
|
let work = WorkV3_0.resultLandingInfoConvert(resultLandingInfo, putCode);
|
||||||
let result = {
|
let result = {
|
||||||
"pids": pids.split(","),
|
"openaireId": openaireId,
|
||||||
|
"pids": pids ? pids.split(",") : [],
|
||||||
"work": work
|
"work": work
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -154,6 +154,15 @@ export class WorkV3_0 {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}))
|
}))
|
||||||
|
} else {
|
||||||
|
work['external-ids'] = { 'external-id': [{
|
||||||
|
"external-id-type": "source-work-id",
|
||||||
|
"external-id-value": resultLandingInfo.relcanId,
|
||||||
|
"external-id-relationship": "self",
|
||||||
|
"external-id-url": {
|
||||||
|
"value": "https://explore.openaire.eu/search/"+resultLandingInfo.resultType+"?id="+resultLandingInfo.relcanId
|
||||||
|
},
|
||||||
|
}] };
|
||||||
}
|
}
|
||||||
|
|
||||||
// url (UrlV3_0, optional),
|
// url (UrlV3_0, optional),
|
||||||
|
|
|
@ -409,7 +409,8 @@
|
||||||
[status]=searchUtils.status
|
[status]=searchUtils.status
|
||||||
[type]="entityType"
|
[type]="entityType"
|
||||||
[showLoading]="true" [properties]=properties
|
[showLoading]="true" [properties]=properties
|
||||||
[compactView]="compactView">
|
[compactView]="compactView"
|
||||||
|
[isLoggedIn]="isLoggedIn">
|
||||||
</search-result>
|
</search-result>
|
||||||
<deposit-result *ngIf="usedBy == 'deposit'"
|
<deposit-result *ngIf="usedBy == 'deposit'"
|
||||||
[results]="results"
|
[results]="results"
|
||||||
|
|
|
@ -37,6 +37,7 @@ import {IndexInfoService} from "../../utils/indexInfo.service";
|
||||||
import {Background} from "../../utils/background-utils";
|
import {Background} from "../../utils/background-utils";
|
||||||
import {LayoutService} from "../../dashboard/sharedComponents/sidebar/layout.service";
|
import {LayoutService} from "../../dashboard/sharedComponents/sidebar/layout.service";
|
||||||
import {Platform} from "@angular/cdk/platform";
|
import {Platform} from "@angular/cdk/platform";
|
||||||
|
import {UserManagementService} from "../../services/user-management.service";
|
||||||
|
|
||||||
export interface SearchForm extends Background {}
|
export interface SearchForm extends Background {}
|
||||||
|
|
||||||
|
@ -165,6 +166,8 @@ export class NewSearchPageComponent implements OnInit, OnDestroy, OnChanges {
|
||||||
searchTerm: string = null;
|
searchTerm: string = null;
|
||||||
advancedSearchTerms: number = 0;
|
advancedSearchTerms: number = 0;
|
||||||
|
|
||||||
|
public isLoggedIn: boolean = false;
|
||||||
|
|
||||||
@Input() hasCompactView: boolean = false; // if true, show buttons for compact view
|
@Input() hasCompactView: boolean = false; // if true, show buttons for compact view
|
||||||
public compactView: boolean = false; // if true, show less info (e.g. hide description) on each result
|
public compactView: boolean = false; // if true, show less info (e.g. hide description) on each result
|
||||||
|
|
||||||
|
@ -180,11 +183,22 @@ export class NewSearchPageComponent implements OnInit, OnDestroy, OnChanges {
|
||||||
private helper: HelperService,
|
private helper: HelperService,
|
||||||
private layoutService: LayoutService,
|
private layoutService: LayoutService,
|
||||||
@Inject(PLATFORM_ID) private platform: any,
|
@Inject(PLATFORM_ID) private platform: any,
|
||||||
private cdr: ChangeDetectorRef, private indexInfoService: IndexInfoService) {
|
private cdr: ChangeDetectorRef, private indexInfoService: IndexInfoService,
|
||||||
|
private userManagementService: UserManagementService) {
|
||||||
this.isServer = isPlatformServer(this.platform);
|
this.isServer = isPlatformServer(this.platform);
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
|
||||||
|
if (user) {
|
||||||
|
this.isLoggedIn = true;
|
||||||
|
} else {
|
||||||
|
this.isLoggedIn = false;
|
||||||
|
}
|
||||||
|
}, error => {
|
||||||
|
this.isLoggedIn = false;
|
||||||
|
}));
|
||||||
|
|
||||||
if(properties.adminToolsPortalType !== "explore") {
|
if(properties.adminToolsPortalType !== "explore") {
|
||||||
//this.getDivContents();
|
//this.getDivContents();
|
||||||
this.getPageContents();
|
this.getPageContents();
|
||||||
|
|
|
@ -26,6 +26,8 @@ export class SearchResultComponent implements OnInit, OnChanges {
|
||||||
@Input() showEnermaps: boolean;
|
@Input() showEnermaps: boolean;
|
||||||
@Input() compactView: boolean = false; // if true, show less info (e.g. hide description) on each result
|
@Input() compactView: boolean = false; // if true, show less info (e.g. hide description) on each result
|
||||||
|
|
||||||
|
@Input() isLoggedIn: boolean = false;
|
||||||
|
|
||||||
public isMobile: boolean = false;
|
public isMobile: boolean = false;
|
||||||
private subscriptions: any[] = [];
|
private subscriptions: any[] = [];
|
||||||
|
|
||||||
|
@ -60,25 +62,30 @@ export class SearchResultComponent implements OnInit, OnChanges {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((properties.adminToolsPortalType == "explore" || properties.adminToolsPortalType == "community" || properties.adminToolsPortalType == "aggregator" || properties.dashboard == "irish")
|
if ((properties.adminToolsPortalType == "explore" || properties.adminToolsPortalType == "community" || properties.adminToolsPortalType == "aggregator" || properties.dashboard == "irish")
|
||||||
&& Session.isLoggedIn() && this.results && this.results.length > 0
|
&& this.isLoggedIn && this.results && this.results.length > 0
|
||||||
&& (this.type == "result" || this.type == "publication" || this.type == "dataset" || this.type == "software" || this.type == "other")
|
&& (this.type == "result" || this.type == "publication" || this.type == "dataset" || this.type == "software" || this.type == "other")
|
||||||
) {
|
) {
|
||||||
this.subscriptions.push(this.orcidService.getPutCodes(this.previewResults.map(
|
this.subscriptions.push(this.orcidService.getPutCodes(
|
||||||
|
this.previewResults.map(previewResult => {return previewResult.relcanId}),
|
||||||
|
this.previewResults.map(
|
||||||
previewResult => {
|
previewResult => {
|
||||||
if (previewResult.identifiers) {
|
if (previewResult.identifiers) {
|
||||||
let pidsArray: string[] = [];
|
let pidsArray: string[] = null;
|
||||||
|
if(previewResult.identifiers?.size > 0) {
|
||||||
|
pidsArray = [];
|
||||||
for (let key of Array.from(previewResult.identifiers.keys())) {
|
for (let key of Array.from(previewResult.identifiers.keys())) {
|
||||||
pidsArray = pidsArray.concat(previewResult.identifiers.get(key));
|
pidsArray = pidsArray.concat(previewResult.identifiers.get(key));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return pidsArray;//.join();
|
return pidsArray;//.join();
|
||||||
}
|
}
|
||||||
})).subscribe(
|
})).subscribe(
|
||||||
putCodes => {
|
putCodes => {
|
||||||
for (let i = 0; i < this.previewResults.length; i++) {
|
for (let i = 0; i < this.previewResults.length; i++) {
|
||||||
if (this.previewResults[i].identifiers) {
|
//if (this.previewResults[i].identifiers) {
|
||||||
this.previewResults[i].orcidPutCodes = putCodes[i];
|
this.previewResults[i].orcidPutCodes = putCodes[i];
|
||||||
// console.debug(i, this.previewResults[i].orcidPutCodes);
|
// console.debug(i, this.previewResults[i].orcidPutCodes);
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
this.previewResults = JSON.parse(JSON.stringify(this.previewResults, this.replacer), this.reviver);
|
this.previewResults = JSON.parse(JSON.stringify(this.previewResults, this.replacer), this.reviver);
|
||||||
}, error => {
|
}, error => {
|
||||||
|
|
|
@ -193,7 +193,7 @@
|
||||||
[url]="properties.domain + properties.baseLink + url + '?' + urlParam + '=' + result.id"
|
[url]="properties.domain + properties.baseLink + url + '?' + urlParam + '=' + result.id"
|
||||||
[showTooltip]="false" [compactView]="compactView">
|
[showTooltip]="false" [compactView]="compactView">
|
||||||
<span *ngIf="orcid">
|
<span *ngIf="orcid">
|
||||||
<orcid-work *ngIf="showOrcid && result.identifiers && result.identifiers.size > 0"
|
<orcid-work *ngIf="showOrcid"
|
||||||
[resultId]="result.relcanId" [resultTitle]="result.title"
|
[resultId]="result.relcanId" [resultTitle]="result.title"
|
||||||
[type]="result.resultType" [pageType]="'search'"
|
[type]="result.resultType" [pageType]="'search'"
|
||||||
[putCodes]="result.orcidPutCodes" [givenPutCode]="true" [identifiers]="result.identifiers"
|
[putCodes]="result.orcidPutCodes" [givenPutCode]="true" [identifiers]="result.identifiers"
|
||||||
|
@ -339,7 +339,7 @@
|
||||||
[isMobile]="isMobile"
|
[isMobile]="isMobile"
|
||||||
[showTooltip]="false">
|
[showTooltip]="false">
|
||||||
<span *ngIf="orcid">
|
<span *ngIf="orcid">
|
||||||
<orcid-work *ngIf="showOrcid && result.identifiers && result.identifiers.size > 0"
|
<orcid-work *ngIf="showOrcid"
|
||||||
[resultId]="result.relcanId" [resultTitle]="result.title"
|
[resultId]="result.relcanId" [resultTitle]="result.title"
|
||||||
[type]="result.resultType" [pageType]="'search'"
|
[type]="result.resultType" [pageType]="'search'"
|
||||||
[putCodes]="result.orcidPutCodes" [givenPutCode]="true" [identifiers]="result.identifiers"
|
[putCodes]="result.orcidPutCodes" [givenPutCode]="true" [identifiers]="result.identifiers"
|
||||||
|
|
|
@ -129,7 +129,7 @@ export class ResultPreviewComponent implements OnInit, OnChanges {
|
||||||
this.share = true;
|
this.share = true;
|
||||||
this.cite = true;
|
this.cite = true;
|
||||||
this.orcid = (this.properties.adminToolsPortalType == 'explore' || this.properties.adminToolsPortalType == 'community' || this.properties.adminToolsPortalType == 'aggregator' || this.properties.dashboard == 'irish') &&
|
this.orcid = (this.properties.adminToolsPortalType == 'explore' || this.properties.adminToolsPortalType == 'community' || this.properties.adminToolsPortalType == 'aggregator' || this.properties.dashboard == 'irish') &&
|
||||||
this.showOrcid && this.result.identifiers && this.result.identifiers.size > 0;
|
this.showOrcid;
|
||||||
}
|
}
|
||||||
|
|
||||||
projectActions() {
|
projectActions() {
|
||||||
|
|
Loading…
Reference in New Issue