+ {{(organization.shortName ? ('[' + organization.shortName + '] ') : '')}}{{organization.name}}
+
+
+ `
+})
+
+export class OrganizationTitleFormatterComponent {
+ @Input() organization: any;
+ public url: string;
+
+}
diff --git a/claims/claim-utils/service/claims.service.ts b/claims/claim-utils/service/claims.service.ts
index d7d46218..54208d7b 100644
--- a/claims/claim-utils/service/claims.service.ts
+++ b/claims/claim-utils/service/claims.service.ts
@@ -12,8 +12,8 @@ export class ClaimsService {
private getClaimRequest(size : number, page : number, url :string, fromCache:boolean):any {
return this.http.get(url, CustomOptions.getAuthOptionsWithBody());
}
- getClaims( size : number, page : number, keyword:string, sortby: string, descending: boolean, types: string, apiUrl:string):any {
- let url = apiUrl +"claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+(types.length>0?"&"+types:types);
+ getClaims( size : number, page : number, keyword:string, sortby: string, descending: boolean, types: string, apiUrl:string, mine:boolean):any {
+ let url = apiUrl +"claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+(types.length>0?"&"+types:types) + (mine?"&mine=true":"") + (mine?"&mine=true":"");
return this.getClaimRequest(size,page,url,true);
}
@@ -23,7 +23,7 @@ export class ClaimsService {
return this.getClaimRequest(size,page,url,false);
}
- getClaimsBycontext( size : number, page : number, contextId:string, keyword:string, sortby: string, descending: boolean, types: string , apiUrl:string):any {
+ getClaimsBycontext( size : number, page : number, contextId:string, keyword:string, sortby: string, descending: boolean, types: string , apiUrl:string, mine:boolean):any {
//console.info('ClaimsService: getClaims for context : '+contextId);
let url = apiUrl +"contexts/"+contextId+"/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+(types.length>0?"&"+types:types);
return this.getClaimRequest(size,page,url,true);
@@ -40,6 +40,10 @@ export class ClaimsService {
let url = apiUrl +"projects/"+projectId+"/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+(types.length>0?"&"+types:types);
return this.getClaimRequest(size,page,url,true);
}
+ getClaimsByOrganization( size : number, page : number, organizationId:string, keyword:string, sortby: string, descending: boolean, types: string, apiUrl:string, mine:boolean):any {
+ let url = apiUrl +"organizations/"+organizationId+"/claims"+"?offset="+(size*(page-1) + "&limit="+size)+"&keyword="+keyword+"&sortby="+sortby+"&descending="+descending+(types.length>0?"&"+types:types) + (mine?"&mine=true":"");
+ return this.getClaimRequest(size,page,url,true);
+ }
deleteClaimById(claimId:string , apiUrl:string):any{
//console.warn('Trying to delete claim with id : '+claimId);
diff --git a/claims/directLinking/directLinking.component.html b/claims/directLinking/directLinking.component.html
index e05bc3a3..f34e2c57 100644
--- a/claims/directLinking/directLinking.component.html
+++ b/claims/directLinking/directLinking.component.html
@@ -1,6 +1,6 @@
diff --git a/claims/directLinking/directLinking.component.ts b/claims/directLinking/directLinking.component.ts
index 70d46032..b74beb83 100644
--- a/claims/directLinking/directLinking.component.ts
+++ b/claims/directLinking/directLinking.component.ts
@@ -1,7 +1,7 @@
import {Component, Input, ViewChild} from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router';
import {EnvProperties} from '../../utils/properties/env-properties';
-import {ClaimEntity, ClaimProject, ShowOptions} from '../claim-utils/claimHelper.class';
+import {ClaimEntity, ClaimOrganization, ClaimProject, ShowOptions} from '../claim-utils/claimHelper.class';
import {EntitiesSearchService} from '../../utils/entitiesAutoComplete/entitySearch.service';
import {SearchResearchResultsService} from '../../services/searchResearchResults.service';
import {LinkingGenericComponent} from "../linking/linkingGeneric.component";
@@ -11,6 +11,7 @@ import {properties} from "../../../../environments/environment";
import {OpenaireEntities} from "../../utils/properties/searchFields";
import {StringUtils} from "../../utils/string-utils.class";
import {ClaimProjectsSearchFormComponent} from "../claim-utils/claimProjectSearchForm.component";
+import {ClaimsProperties} from "../claim-utils/claims.properties";
@Component({
@@ -24,18 +25,20 @@ export class DirectLinkingComponent {
// linkType: string = "project"; // link type (selected in home page) : project, context, software, etc
/* url Parameters for inline linking */
- id: string = null; //entity id
+ @Input() id: string = null; //entity id
type: string = null; // entity type (publication or dataset)
// linkTo: string = null; // entity type (project or context or entity)
// linkToEntities: string[] = [];
showOptions:ShowOptions = new ShowOptions();
- validEntityTypes = ["dataset", "publication", "software", "other", "project", "context"];
+ validEntityTypes = ["dataset", "publication", "software", "other", "project", "context", "organization"];
sources: ClaimEntity[] = [];
inlineEntity: ClaimEntity = null;
validInput: boolean = null;//'true;
properties: EnvProperties;
@Input() communityId: string = null;
localStoragePrefix: string = "";
+ @Input() organizationClaim: boolean = false;
+ @Input() claimsProperties:ClaimsProperties;
constructor(private _router: Router, private route: ActivatedRoute,private entitySearch:EntitiesSearchService,
private _searchResearchResultsService: SearchResearchResultsService) {}
subscriptions = [];
@@ -48,11 +51,18 @@ export class DirectLinkingComponent {
}
ngOnInit() {
this.properties = properties;
-
+ /* if(!this.claimsProperties){
+ this.claimsProperties = new ClaimsProperties();
+ }*/
this.subscriptions.push(this.route.queryParams.subscribe(params => {
- this.id = params['id'];
- this.type = params['type'];
- this.showOptions.linkTo = params['linkTo'];
+ if(this.organizationClaim){
+ this.type = "organization";
+ this.showOptions.linkTo = "result";
+ }else {
+ this.id = params['id'];
+ this.type = params['type'];
+ this.showOptions.linkTo = params['linkTo'];
+ }
if (this.type != null && this.showOptions.linkTo != null) {
this.type = (this.validEntityTypes.indexOf(this.type) != -1) ? this.type : 'publication';
this.showOptions.linkTo = (this.validEntityTypes.indexOf(this.showOptions.linkTo) != -1 || this.showOptions.linkTo == "result") ? this.showOptions.linkTo : 'project';
@@ -68,6 +78,8 @@ export class DirectLinkingComponent {
if (this.type == "project") {
// this.linkType = "project";
this.getProjectById(this.id);
+ } else if (this.type == "organization") {
+ this.getOrganizationById(this.id);
} else if (this.type == "publication") {
this.getResearchResultById("publication", this.id);
} else if (this.type == "dataset") {
@@ -81,7 +93,7 @@ export class DirectLinkingComponent {
}
//set which entities it is allowed to link to.
// add first the
- if(this.type == "project"){
+ if(this.type == "project" || this.type == "organization"){
this.showOptions.linkToEntities = ["result"];
this.showOptions.linkTo = "result";
}else{
@@ -95,24 +107,27 @@ export class DirectLinkingComponent {
this.showOptions.linkToEntities = ["result","project","context" ];
}
+ }
+
+ } else {
+ this.validInput = this.isValidInput(null);
+
}
- } else {
- this.validInput = this.isValidInput(null);
+ }));
- }
-
- }));
}
isValidInput(result: ClaimEntity) {
if (result == null) {
return false;
- } else if (this.type == "project" && this.showOptions.linkTo != "result") {
+ } else if (this.type == "organization" && !this.claimsProperties.ALLOW_ORGANIZATION_LINKING) {
+ return false;
+ } else if ((this.type == "project" || this.type == "organization") && this.showOptions.linkTo != "result") {
return false;
} else if (["dataset", "publication", "software", "other"].indexOf(this.type) != -1 && (["project", "context", "result"].indexOf(this.showOptions.linkTo) == -1)) {
return false;
- } else if (["project", "dataset", "publication", "software", "other"].indexOf(this.type) == -1) {
+ } else if (["project", "dataset", "publication", "software", "other", "organization"].indexOf(this.type) == -1) {
return false;
} else {
return true;
@@ -130,6 +145,17 @@ export class DirectLinkingComponent {
this.handleError("Error getting project by id: " + id, err);
}));
}
+ getOrganizationById(id: string) {
+ this.subscriptions.push(this.entitySearch.fetchByType(id,"organization", this.properties).subscribe(
+ data => {
+ this.createClaimEntity(data, "organization");
+ },
+ err => {
+ this.validInput = this.isValidInput(null);
+ //console.log("An error occured")
+ this.handleError("Error getting project by id: " + id, err);
+ }));
+ }
getResearchResultById(resultType: string, id: string) {
this.subscriptions.push(this._searchResearchResultsService.searchById(resultType, id, this.properties).subscribe(data => {
@@ -162,7 +188,17 @@ export class DirectLinkingComponent {
entity.project.jurisdiction = project.jurisdiction;
entity.project.startDate = project.startDate;
this.inlineEntity = entity;
- }else{
+ }else if(type =="organization"){
+ let organization = data[0];
+ let entity:ClaimEntity = new ClaimEntity();
+ entity.id = organization.id;
+ entity.type = "organization";
+ entity.title = organization.label;
+ entity.organization = new ClaimOrganization();
+ // entity.organization.url = properties.searchLinkToOrganization + entity.id;
+ entity.organization.name = organization.label;
+ this.inlineEntity = entity;
+ }else{
results = ClaimResultSearchFormComponent.openaire2ClaimResults(data, this.properties);
}
diff --git a/claims/linking/insertClaim/insertClaim.component.ts b/claims/linking/insertClaim/insertClaim.component.ts
index 0cf983e5..4aebe5f3 100644
--- a/claims/linking/insertClaim/insertClaim.component.ts
+++ b/claims/linking/insertClaim/insertClaim.component.ts
@@ -176,7 +176,7 @@ export class ClaimInsertComponent {
"id": entity.id,
"record": ClaimInsertComponent.createDirectClaim(entity, this.sources, idSuffix)
});
- } else if (this.inlineEntity) {
+ } else if (this.inlineEntity && this.inlineEntity.type != "organization") {
directclaims.push({
"id": entity.id,
"record": ClaimInsertComponent.createDirectClaim(entity, [this.inlineEntity], idSuffix)
@@ -193,6 +193,8 @@ export class ClaimInsertComponent {
claims.push(ClaimInsertComponent.createContextClaim(result, entity, user.email, dashboard, idSuffix));
} else if (entity.project) {
claims.push(ClaimInsertComponent.createProjectClaim(result, entity, user.email, dashboard, idSuffix));
+ /* } else if (entity.organization) {
+ claims.push(ClaimInsertComponent.createOrganizationClaim(result, entity, user.email, dashboard, idSuffix));*/
}
this.infoToLog.push([ result.title?result.title: result.id, entity.title?entity.title:entity.id]);
@@ -212,6 +214,10 @@ export class ClaimInsertComponent {
if (entity.result) {
claims.push(ClaimInsertComponent.createProjectClaim(entity, this.inlineEntity, user.email, dashboard, idSuffix));
}
+ } else if (this.inlineEntity.organization) {
+ if (entity.result) {
+ claims.push(ClaimInsertComponent.createOrganizationClaim(entity, this.inlineEntity, user.email, dashboard, idSuffix));
+ }
}
}
@@ -385,8 +391,13 @@ export class ClaimInsertComponent {
localStorage.removeItem(this.localStoragePrefix + "results");
localStorage.removeItem(this.localStoragePrefix + "claimsJob");
localStorage.removeItem(this.localStoragePrefix + "feedRecordsJob");
-
- this._router.navigate([this.properties.myClaimsLink], {queryParams: this.params});
+ if(this.properties.myClaimsLink && this.properties.myClaimsLink.indexOf(".") == -1) {
+ this._router.navigate([this.properties.myClaimsLink], {queryParams: this.params});
+ }else if(this.properties.myClaimsLink && this.properties.myClaimsLink.indexOf(".") != -1) {
+ this._router.navigate([this.properties.myClaimsLink], {relativeTo: this.route});
+ }else{
+ this._router.navigate(["/"]);
+ }
}
}
@@ -426,6 +437,23 @@ export class ClaimInsertComponent {
idSuffix : idSuffix
};
}
+ private static createOrganizationClaim(resultEntity: ClaimEntity, organizationEntity: ClaimEntity, user: any, dashboard:string, idSuffix:string): ClaimRecord2Insert {
+ return {
+ claimedBy: user,
+ sourceId: organizationEntity.id,
+ sourceType: "organization",
+ sourceCollectedFrom: "openaire",
+ sourceAccessRights: "OPEN",
+ sourceEmbargoEndDate: "",
+ targetId: resultEntity.id,
+ targetType: resultEntity.type,
+ targetCollectedFrom: resultEntity.result.source,
+ targetAccessRights: resultEntity.result.accessRights,
+ targetEmbargoEndDate: ClaimInsertComponent.getEmbargoEndDate(resultEntity),
+ claimedInDashboard : dashboard,
+ idSuffix : idSuffix
+ };
+ }
private static createResultClaim(inlineResult: ClaimEntity, resultEntity: ClaimEntity, user: string, dashboard:string, idSuffix:string): ClaimRecord2Insert {
diff --git a/claims/linking/linkingGeneric.component.html b/claims/linking/linkingGeneric.component.html
index 16cb04bf..625d75d0 100644
--- a/claims/linking/linkingGeneric.component.html
+++ b/claims/linking/linkingGeneric.component.html
@@ -67,18 +67,19 @@
[results]="results" [sources]="sources"
[localStoragePrefix]="localStoragePrefix" [inlineEntity]="inlineEntity"
[showOptions]="showOptions" [properties]=properties [pageContents]="pageContents"
- [defaultColors]="!communityId" [communityId]="communityId"
+ [defaultColors]="!communityId" [communityId]="communityId" [claimsProperties]="claimsProperties"
>
-
+
-
Link source to
+
Link source to
+
{{claimsProperties.INLINE_ENTITY.guideText}}
-
-
Source
+
+
{{claimsProperties.BASKET.source_title}}
-
+
-
Link source to 0">({{(results.length) | number}})
+
{{claimsProperties.BASKET.target_title}} 0">({{(results.length) | number}})
diff --git a/claims/linking/linkingGeneric.component.ts b/claims/linking/linkingGeneric.component.ts
index 31b76062..a7a18c6d 100644
--- a/claims/linking/linkingGeneric.component.ts
+++ b/claims/linking/linkingGeneric.component.ts
@@ -18,6 +18,7 @@ import {RouterHelper} from "../../utils/routerHelper.class";
import { Location } from '@angular/common';
import {LoginErrorCodes} from "../../login/utils/guardHelper.class";
import {UserManagementService} from "../../services/user-management.service";
+import {ClaimsProperties} from "../claim-utils/claims.properties";
@Component({
selector: 'linking-generic',
@@ -49,7 +50,7 @@ export class LinkingGenericComponent {
public pageContents = null;
@Input() breadcrumbs: Breadcrumb[] = [];
public routerHelper: RouterHelper = new RouterHelper();
-
+ @Input() claimsProperties:ClaimsProperties;
constructor (private _router: Router, private route: ActivatedRoute, private entitySearch:EntitiesSearchService,
private _meta: Meta, private _title: Title, private _piwikService:PiwikService,
private seoService: SEOService, private helper: HelperService, private cdr: ChangeDetectorRef,
@@ -58,6 +59,9 @@ export class LinkingGenericComponent {
subscriptions = [];
ngOnInit() {
+ /* if(!this.claimsProperties){
+ this.claimsProperties = new ClaimsProperties();
+ }*/
this.subscriptions.push(this.userManagementService.getUserInfo().subscribe(user => {
if (!user) {
this.saveStateAndRedirectLogin();
diff --git a/claims/linking/selected/ClaimEntityTitle.component.ts b/claims/linking/selected/ClaimEntityTitle.component.ts
index 12231e53..c432a266 100644
--- a/claims/linking/selected/ClaimEntityTitle.component.ts
+++ b/claims/linking/selected/ClaimEntityTitle.component.ts
@@ -12,6 +12,9 @@ import {ClaimEntity} from '../../claim-utils/claimHelper.class';
assignment_turned_in
+
+ account_balance
+
people
@@ -46,6 +49,9 @@ import {ClaimEntity} from '../../claim-utils/claimHelper.class';
+
+ {{sliceString(entity.title)}}
+
{{entity.context.community }} > {{entity.context.category}} >
diff --git a/claims/linking/selected/metadataPreview.component.html b/claims/linking/selected/metadataPreview.component.html
index a0723118..9a6dd093 100644
--- a/claims/linking/selected/metadataPreview.component.html
+++ b/claims/linking/selected/metadataPreview.component.html
@@ -6,15 +6,14 @@
-
+
-
+
-
SOURCES ({{sources.length + (inlineEntity ? 1 : 0) | number}})
+ {{claimsProperties.METADATA_PREVIEW.source_title}} ({{sources.length + (inlineEntity ? 1 : 0) | number}})
Edit
- sources
+ uk-icon="pencil" class="uk-margin-xsmall-right">{{claimsProperties.METADATA_PREVIEW.edit_source_title}}
-
-
LINK TO ({{results.length | number}})
+
+
{{claimsProperties.METADATA_PREVIEW.target_title}} ({{results.length | number}})
+
diff --git a/claims/linking/selected/metadataPreview.component.ts b/claims/linking/selected/metadataPreview.component.ts
index 8aedd081..cd2ce799 100644
--- a/claims/linking/selected/metadataPreview.component.ts
+++ b/claims/linking/selected/metadataPreview.component.ts
@@ -4,6 +4,7 @@ import {ClaimEntity, ClaimsErrorMessage, Message, ShowOptions} from '../../claim
import {EnvProperties} from "../../../utils/properties/env-properties";
import {Dates} from "../../../utils/string-utils.class";
import {HelperFunctions} from "../../../utils/HelperFunctions.class";
+import {ClaimsProperties} from "../../claim-utils/claims.properties";
@Component({
selector: 'metadata-preview',
@@ -28,6 +29,7 @@ export class MetadataPreviewComponent {
@ViewChild(AlertModal) alertApplyAll;
@Input() localStoragePrefix: string = "";
@Input() communityId:string= null;
+ @Input() claimsProperties:ClaimsProperties;
errors:ClaimsErrorMessage[] = [];
warnings:Message[] = [];
public commonAccessRights = "OPEN"; // for access rights- changes when user apply a change to every entity
diff --git a/claims/linking/selected/metadataPreview.module.ts b/claims/linking/selected/metadataPreview.module.ts
index 2c7fdb17..7e414381 100644
--- a/claims/linking/selected/metadataPreview.module.ts
+++ b/claims/linking/selected/metadataPreview.module.ts
@@ -11,16 +11,17 @@ import { MatInputModule } from '@angular/material/input';
import { MatSelectModule } from '@angular/material/select';
import {HelperModule} from "../../../utils/helper/helper.module";
import {SelectedPublicationsModule} from "./selectedResults.module";
+import {IconsModule} from "../../../utils/icons/icons.module";
@NgModule({
- imports: [
- SharedModule,
- AlertModalModule,
- ClaimEntitiesMetadataModule,
- InsertClaimsModule,
- MatDatepickerModule, MatNativeDateModule, MatFormFieldModule, MatInputModule, MatSelectModule,
- HelperModule, SelectedPublicationsModule
- ],
+ imports: [
+ SharedModule,
+ AlertModalModule,
+ ClaimEntitiesMetadataModule,
+ InsertClaimsModule,
+ MatDatepickerModule, MatNativeDateModule, MatFormFieldModule, MatInputModule, MatSelectModule,
+ HelperModule, SelectedPublicationsModule, IconsModule
+ ],
declarations: [MetadataPreviewComponent],
exports:[MetadataPreviewComponent]
})