Production release May 2024 [EXPLORE] #40
|
@ -1,6 +1,7 @@
|
||||||
//Classes used in linking / inlinelinking when selecting an entity
|
//Classes used in linking / inlinelinking when selecting an entity
|
||||||
import {HelperFunctions} from "../../utils/HelperFunctions.class";
|
import {HelperFunctions} from "../../utils/HelperFunctions.class";
|
||||||
import {OpenaireEntities} from "../../utils/properties/searchFields";
|
import {OpenaireEntities} from "../../utils/properties/searchFields";
|
||||||
|
import {ClaimsProperties} from "./claims.properties";
|
||||||
|
|
||||||
export class ClaimResult {
|
export class ClaimResult {
|
||||||
public source: string;
|
public source: string;
|
||||||
|
@ -189,17 +190,18 @@ export class ShowOptions {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
initSelectOptions(){
|
initSelectOptions(claimProperties:ClaimsProperties){
|
||||||
let options =[];
|
let options =[];
|
||||||
if(this.linkToEntities.indexOf('result')!=-1){
|
if(this.linkToEntities.indexOf('result')!=-1){
|
||||||
options.push({value: 'result',label: OpenaireEntities.RESULTS})
|
options.push({value: 'result',label: OpenaireEntities.RESULTS})
|
||||||
}
|
}
|
||||||
if(this.linkToEntities.indexOf('project')!=-1){
|
if(this.linkToEntities.indexOf('project')!=-1){
|
||||||
options.push({value: 'project',label: OpenaireEntities.PROJECTS})
|
options.push({value: 'project',label: claimProperties.SELECT_ENTITIES.projects})
|
||||||
}
|
}
|
||||||
if(this.linkToEntities.indexOf('context')!=-1){
|
if(this.linkToEntities.indexOf('context')!=-1){
|
||||||
options.push({value: 'context',label: OpenaireEntities.COMMUNITIES})
|
options.push({value: 'context',label: OpenaireEntities.COMMUNITIES})
|
||||||
}
|
}
|
||||||
this.selectOptions = options;
|
this.selectOptions = options;
|
||||||
|
console.log(options, claimProperties.SELECT_ENTITIES.projects)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,69 +1,25 @@
|
||||||
<div class="uk-width-xlarge@l uk-width-large" [ngClass]="centerAlign ? 'uk-align-center':''">
|
<div class="uk-width-xlarge@l uk-width-large" [ngClass]="centerAlign ? 'uk-align-center':''">
|
||||||
<advanced-search-input (searchEmitter)="search(page,size)">
|
<advanced-search-input (searchEmitter)="search(page,size)">
|
||||||
<div input type="select" [(value)]="showOptions.show" placeholder="Type" hint="Select..."
|
<div input type="select" [(value)]="showOptions.show" placeholder="Type" hint="Select..."
|
||||||
[options]="showOptions.selectOptions" class="uk-width-2-5"></div>
|
[options]="showOptions.selectOptions" class="uk-width-auto "></div>
|
||||||
<div class="uk-width-expand" input type="text" [(value)]="keyword" [searchable]="true" placeholder="Entities to link"
|
<div *ngIf="funderOptions && funderOptions.length > 0" input type="select" [(value)]="selectedFunder" placeholder="Funder" hint="Select Funder..."
|
||||||
[hint]="'Search for ' + openaireEntities.PROJECTS + '...'" tooltip="true"></div>
|
[options]="funderOptions" class="uk-width-expand" (valueChange)="funderChanged($event)"></div>
|
||||||
|
<div *ngIf="selectedFunder && selectedFunder.number > 1" class="uk-width-expand" input type="text" [(value)]="keyword" [searchable]="true" placeholder="Projects to link"
|
||||||
|
[hint]="'Search for ' + openaireEntities.PROJECTS + '...'" tooltip="true" [disabled]="!selectedFunder"></div>
|
||||||
</advanced-search-input>
|
</advanced-search-input>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="!showResults">
|
<div *ngIf=" openaireResultsStatus != errorCodes.LOADING && !isNoProjectFunder && this.selectedFunder && openaireResults.length == 0">
|
||||||
<div class="uk-text-center uk-text-large uk-text-meta uk-margin-large-top">No {{openaireEntities.PROJECT.toLowerCase()}} results yet... <br>Start
|
<div class="uk-text-center uk-text-large uk-text-meta uk-margin-large-top">No {{openaireEntities.PROJECT.toLowerCase()}} results yet... <br>Start
|
||||||
searching for {{openaireEntities.PROJECTS.toLowerCase()}} to add them in the Basket
|
searching for {{openaireEntities.PROJECTS.toLowerCase()}} to add them in the Basket
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="showResults" class="uk-margin-top">
|
<div *ngIf=" openaireResultsStatus != errorCodes.LOADING && this.funderOptions.length > 1 && !this.selectedFunder">
|
||||||
|
<div class="uk-text-center uk-text-large uk-text-meta uk-margin-large-top">Select funder to proceed
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="uk-margin-top">
|
||||||
<div class="uk-grid" uk-grid>
|
<div class="uk-grid" uk-grid>
|
||||||
<div class="search-filters uk-width-1-1">
|
<div *ngIf="!isNoProjectFunder && openaireResultsStatus != errorCodes.LOADING && openaireResultsNum > 1 " class="search-filters uk-width-1-1">
|
||||||
<!--<div *ngIf="countFilters()>0 && openaireResultsNum > 0" class="uk-grid uk-flex uk-flex-bottom">
|
|
||||||
<div class="uk-grid">
|
|
||||||
<h6 class="uk-text-bold">Filters</h6>
|
|
||||||
<a *ngIf="countFilters()>1" (click)="clearFilters()"
|
|
||||||
[class]="((openaireResultsStatus ==
|
|
||||||
errorCodes.LOADING)?'uk-disabled uk-link-muted':'')+' portal-link '">
|
|
||||||
Clear All
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div *ngIf="countFilters()>0" class="uk-grid uk-grid-small uk-text-small uk-margin-small-top " uk-grid>
|
|
||||||
<ng-container *ngFor="let filter of rangeFilters " >
|
|
||||||
<ng-container *ngIf = "filter.selectedFromAndToValues">
|
|
||||||
<span [title]="'Remove '+ filter.selectedFromAndToValues" (click) = "removeRangeFilter(filter) " >
|
|
||||||
<span class="selectedFilterLabel ">
|
|
||||||
<a [class]="((openaireResultsStatus ==
|
|
||||||
errorCodes.LOADING)?' uk-disabled':' ')+' uk-link-text '">
|
|
||||||
<span class=" clickable" aria-hidden="true">
|
|
||||||
<span class="uk-icon">
|
|
||||||
<svg width="16" height="16" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="close" ratio="0.8"><path fill="none" stroke="#000" stroke-width="1.6" d="M16,16 L4,4"></path><path fill="none" stroke="#000" stroke-width="1.6" d="M16,4 L4,16"></path></svg>
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
<span class="uk-margin-small-left">{{filter.selectedFromAndToValues}}</span>
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</ng-container>
|
|
||||||
</ng-container>
|
|
||||||
|
|
||||||
<ng-container *ngFor="let filter of filters " >
|
|
||||||
<ng-container *ngIf = "filter.countSelectedValues > 0">
|
|
||||||
<span *ngFor="let value of getSelectedValues(filter); let i = index; let end = last; "
|
|
||||||
[title]="'Remove '+value.name" (click) = "removeFilter(value, filter) " >
|
|
||||||
<!– if no grid on the div above, remove it and move class 'selectedFilterLabel' on top span –>
|
|
||||||
<span class="selectedFilterLabel ">
|
|
||||||
<a [class]="((openaireResultsStatus ==
|
|
||||||
errorCodes.LOADING)?' uk-disabled':' ')+' uk-link-text '">
|
|
||||||
<span class=" clickable" aria-hidden="true">
|
|
||||||
<span class="uk-icon">
|
|
||||||
<svg width="16" height="16" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" icon="close" ratio="0.8"><path fill="none" stroke="#000" stroke-width="1.6" d="M16,16 L4,4"></path><path fill="none" stroke="#000" stroke-width="1.6" d="M16,4 L4,16"></path></svg>
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
<span class="uk-margin-small-left" [innerHtml]="(value.name.length > 34)?value.name.substring(0,34)+'...':value.name"></span>
|
|
||||||
</a>
|
|
||||||
</span>
|
|
||||||
</span>
|
|
||||||
</ng-container>
|
|
||||||
</ng-container>
|
|
||||||
</div>
|
|
||||||
</div>-->
|
|
||||||
<!-- <ng-container *ngIf="openaireResultsNum > 0">-->
|
|
||||||
<div class="uk-grid uk-grid-small" uk-grid>
|
<div class="uk-grid uk-grid-small" uk-grid>
|
||||||
<ng-container *ngFor="let filter of rangeFilters">
|
<ng-container *ngFor="let filter of rangeFilters">
|
||||||
<div>
|
<div>
|
||||||
|
@ -104,9 +60,12 @@
|
||||||
role="alert">Service not available
|
role="alert">Service not available
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="openaireResultsStatus == errorCodes.LOADING" class="uk-animation-fade uk-margin-top uk-width-1-1"
|
<div *ngIf="openaireResultsStatus == errorCodes.LOADING" class="uk-animation-fade uk-margin-top uk-width-1-1"
|
||||||
role="alert"><span class="loading-gif uk-align-center"></span></div>
|
role="alert">
|
||||||
|
<loading></loading>
|
||||||
|
</div>
|
||||||
<claim-results [localStoragePrefix]="localStoragePrefix" [results]=openaireResults
|
<claim-results [localStoragePrefix]="localStoragePrefix" [results]=openaireResults
|
||||||
[selectedResults]=selectedProjects [basketLimit]="basketLimit"></claim-results>
|
[selectedResults]=selectedProjects [basketLimit]="basketLimit"></claim-results>
|
||||||
|
<div *ngIf="isNoProjectFunder && openaireResultsStatus != errorCodes.LOADING " class="uk-alert uk-alert-default"><span class=" uk-text-bold">{{selectedFunder.name}}</span> has no projects. Proceed to next step. </div>
|
||||||
<div *ngIf="openaireResultsNum != null && openaireResultsNum > 0 && openaireResultsStatus != errorCodes.LOADING " class="uk-flex uk-flex-center ">
|
<div *ngIf="openaireResultsNum != null && openaireResultsNum > 0 && openaireResultsStatus != errorCodes.LOADING " class="uk-flex uk-flex-center ">
|
||||||
<paging-no-load [currentPage]="openaireResultsPage"
|
<paging-no-load [currentPage]="openaireResultsPage"
|
||||||
[totalResults]="openaireResultsNum" [term]="keyword"
|
[totalResults]="openaireResultsNum" [term]="keyword"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import {Component, ElementRef, EventEmitter, Input, Output} from '@angular/core';
|
import {Component, ElementRef, EventEmitter, Input, Output, ViewChild} from '@angular/core';
|
||||||
import {SearchProjectsService} from '../../services/searchProjects.service';
|
import {SearchProjectsService} from '../../services/searchProjects.service';
|
||||||
import {ProjectService} from '../../landingPages/project/project.service';
|
import {ProjectService} from '../../landingPages/project/project.service';
|
||||||
import {ClaimEntity, ClaimProject} from './claimHelper.class';
|
import {ClaimEntity, ClaimProject} from './claimHelper.class';
|
||||||
|
@ -10,6 +10,8 @@ import {RangeFilter} from "../../utils/rangeFilter/rangeFilterHelperClasses.clas
|
||||||
import {OpenaireEntities, SearchFields} from "../../utils/properties/searchFields";
|
import {OpenaireEntities, SearchFields} from "../../utils/properties/searchFields";
|
||||||
import {NewSearchPageComponent} from "../../searchPages/searchUtils/newSearchPage.component";
|
import {NewSearchPageComponent} from "../../searchPages/searchUtils/newSearchPage.component";
|
||||||
import {Subscriber} from "rxjs";
|
import {Subscriber} from "rxjs";
|
||||||
|
import { properties } from 'src/environments/environment';
|
||||||
|
import {error} from "protractor";
|
||||||
|
|
||||||
declare var UIkit:any;
|
declare var UIkit:any;
|
||||||
|
|
||||||
|
@ -26,12 +28,11 @@ export class ClaimProjectsSearchFormComponent {
|
||||||
public elementRef;
|
public elementRef;
|
||||||
|
|
||||||
@Output() projectSelected = new EventEmitter();
|
@Output() projectSelected = new EventEmitter();
|
||||||
@Input() public properties:EnvProperties;
|
public properties:EnvProperties = properties;
|
||||||
@Input() public inlineClaim:boolean=false;
|
@Input() public inlineClaim:boolean=false;
|
||||||
@Input() localStoragePrefix:string = "";
|
@Input() localStoragePrefix:string = "";
|
||||||
@Input() basketLimit;
|
@Input() basketLimit;
|
||||||
@Input() showOptions;
|
@Input() showOptions;
|
||||||
|
|
||||||
public errorCodes:ErrorCodes = new ErrorCodes();
|
public errorCodes:ErrorCodes = new ErrorCodes();
|
||||||
public projects:string[];
|
public projects:string[];
|
||||||
public warningMessage = "";
|
public warningMessage = "";
|
||||||
|
@ -53,29 +54,61 @@ export class ClaimProjectsSearchFormComponent {
|
||||||
public rangeFields:string[][] = this.searchFields.PROJECT_RANGE_FIELDS;
|
public rangeFields:string[][] = this.searchFields.PROJECT_RANGE_FIELDS;
|
||||||
openaireEntities = OpenaireEntities;
|
openaireEntities = OpenaireEntities;
|
||||||
sub;
|
sub;
|
||||||
|
|
||||||
|
selectedFunder = null;
|
||||||
|
funderOptions = [];
|
||||||
|
isNoProjectFunder = false;
|
||||||
|
|
||||||
constructor(private _service: ProjectService, private _projectService: SearchProjectsService, myElement: ElementRef) {
|
constructor(private _service: ProjectService, private _projectService: SearchProjectsService, myElement: ElementRef) {
|
||||||
this.elementRef = myElement;
|
this.elementRef = myElement;
|
||||||
this.rangeFilters = RangeFilter.parse(this.rangeFields,"project");
|
this.rangeFilters = RangeFilter.parse(this.rangeFields,"project");
|
||||||
|
this.getFunders();
|
||||||
}
|
}
|
||||||
ngOnDestroy() {
|
ngOnDestroy() {
|
||||||
if (this.sub instanceof Subscriber) {
|
if (this.sub instanceof Subscriber) {
|
||||||
this.sub.unsubscribe();
|
this.sub.unsubscribe();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
getFunders(){
|
||||||
|
this.openaireResultsStatus = this.errorCodes.LOADING;
|
||||||
|
this.showResults = true;
|
||||||
|
this.sub = this._projectService.advancedSearchProjects("", 1, 0, this.properties,
|
||||||
|
this.refineFieldsQuery, this.refineFields, "&type=projects&sf=funder").subscribe(
|
||||||
|
data => {
|
||||||
|
for(let v of data[2][0].values){
|
||||||
|
let option = {value : v, label: v.name};
|
||||||
|
this.funderOptions.push(option);
|
||||||
|
}
|
||||||
|
this.openaireResultsStatus = this.errorCodes.DONE;
|
||||||
|
}, error =>{
|
||||||
|
this.openaireResultsStatus = this.errorCodes.ERROR;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
funderChanged(value){
|
||||||
|
this.keyword = ""
|
||||||
|
this.selectedFunder = value;
|
||||||
|
this.isNoProjectFunder = this.selectedFunder && this.selectedFunder.number == 1;
|
||||||
|
this.openaireResults = [];
|
||||||
|
if(this.isNoProjectFunder){
|
||||||
|
this.showResults = true;
|
||||||
|
this.search(1,1);
|
||||||
|
}else{
|
||||||
|
this.openaireResults = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
search(page,size) {
|
search(page,size) {
|
||||||
if (this.keyword.length == 0) {
|
/* if (this.keyword.length == 0) {
|
||||||
this.showResults = false;
|
this.showResults = false;
|
||||||
return;
|
return;
|
||||||
}
|
}*/
|
||||||
this.showResults = true;
|
this.showResults = true;
|
||||||
this.openaireResults = [];
|
this.openaireResults = [];
|
||||||
this.openaireResultsStatus = this.errorCodes.LOADING;
|
this.openaireResultsStatus = this.errorCodes.LOADING;
|
||||||
this.prevFilters = this.filters;
|
this.prevFilters = this.filters;
|
||||||
|
|
||||||
//searchProjects (params: string, refineParams:string, page: number, size: number, refineFields:string[] , properties:EnvProperties ):any {
|
//searchProjects (params: string, refineParams:string, page: number, size: number, refineFields:string[] , properties:EnvProperties ):any {
|
||||||
this.sub = this._projectService.advancedSearchProjects(this.createOpenaireQueryParams(), page, size, this.properties, (page == 1) ? this.refineFieldsQuery : null, (page == 1) ? this.refineFields : [], this.createOpenaireRefineQuery()).subscribe(
|
this.sub = this._projectService.advancedSearchProjects(this.createOpenaireQueryParams(), page, size, this.properties, null, [], this.createOpenaireRefineQuery()).subscribe(
|
||||||
// this.sub = this._projectService.searchProjects(this.createOpenaireQueryParams(),(page==1)? this.refineFieldsQuery:null, page, size, (page==1)?this.refineFields:[], this.properties).subscribe(
|
// this.sub = this._projectService.searchProjects(this.createOpenaireQueryParams(),(page==1)? this.refineFieldsQuery:null, page, size, (page==1)?this.refineFields:[], this.properties).subscribe(
|
||||||
data => {
|
data => {
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
|
@ -91,6 +124,9 @@ export class ClaimProjectsSearchFormComponent {
|
||||||
this.openaireResultsStatus = this.errorCodes.NONE;
|
this.openaireResultsStatus = this.errorCodes.NONE;
|
||||||
this.filters = this.checkSelectedFilters([], this.prevFilters);
|
this.filters = this.checkSelectedFilters([], this.prevFilters);
|
||||||
}
|
}
|
||||||
|
/* if(this.isNoProjectFunder && this.claimResultsComponent){
|
||||||
|
this.claimResultsComponent.add(this.openaireResults[0])
|
||||||
|
}*/
|
||||||
} else {
|
} else {
|
||||||
this.openaireResultsStatus = this.errorCodes.ERROR;
|
this.openaireResultsStatus = this.errorCodes.ERROR;
|
||||||
}
|
}
|
||||||
|
@ -102,77 +138,14 @@ export class ClaimProjectsSearchFormComponent {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
// select(entity){
|
remove(item){
|
||||||
// if(this.selectedProjects.length > 50){
|
|
||||||
// UIkit.notification({
|
|
||||||
// message : 'Your basket exceeds the number of allowed projects (50)',
|
|
||||||
// status : 'warning',
|
|
||||||
// timeout : 1500,
|
|
||||||
// pos : 'top-center'
|
|
||||||
// });
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// this.query = "";
|
|
||||||
// // this.searchTermStream.next(this.query); //clear
|
|
||||||
// entity = entity.value;
|
|
||||||
// // var project: ClaimProject = new ClaimProject();
|
|
||||||
// // project.funderId = entity.funderId;
|
|
||||||
// // project.funderName = entity.funderName;
|
|
||||||
// // project.id = entity.id;
|
|
||||||
// // project.projectName = entity.projectName;
|
|
||||||
// // project.projectAcronym = entity.projectAcronym;
|
|
||||||
// // project.startDate = entity.startDate;
|
|
||||||
// // project.endDate = entity.endDate;
|
|
||||||
// // project.code = entity.code;
|
|
||||||
// // project.jurisdiction = entity.jurisdiction;
|
|
||||||
// // project.fundingLevel0 = entity.fundingLevel0;
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// var index:number =this.selectedProjects.indexOf(entity);
|
|
||||||
// var found:boolean = false;
|
|
||||||
// this.warningMessage = "";
|
|
||||||
//
|
|
||||||
// for (var _i = 0; _i < this.selectedProjects.length; _i++) {
|
|
||||||
// let project = this.selectedProjects[_i];
|
|
||||||
// if(entity.id == project.id){
|
|
||||||
// found=true;
|
|
||||||
// this.warningMessage = "Project already in your basket";
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (!found) {
|
|
||||||
// this.selectedProjects.push(entity);
|
|
||||||
// if(this.selectedProjects != null){
|
|
||||||
// localStorage.setItem(this.localStoragePrefix + "projects", JSON.stringify(this.selectedProjects));
|
|
||||||
// }
|
|
||||||
// this.projectSelected.emit({
|
|
||||||
// value: true
|
|
||||||
// });
|
|
||||||
//
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
/* static showItem(item):string{
|
|
||||||
return ((item.field[1]['@value'])?item.field[1]['@value']+" - ":"" ) + item.field[3]['@value'];
|
|
||||||
}*/
|
|
||||||
remove(item){
|
|
||||||
let index:number =this.selectedProjects.indexOf(item);
|
let index:number =this.selectedProjects.indexOf(item);
|
||||||
if (index > -1) {
|
if (index > -1) {
|
||||||
this.selectedProjects.splice(index, 1);
|
this.selectedProjects.splice(index, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
/* handleClick(event){
|
static openaire2ClaimEntity(items, properties:EnvProperties){
|
||||||
var clickedComponent = event.target;
|
|
||||||
var inside = false;
|
|
||||||
do {
|
|
||||||
if (clickedComponent === this.elementRef.nativeElement) {
|
|
||||||
inside = true;
|
|
||||||
}
|
|
||||||
clickedComponent = clickedComponent.parentNode;
|
|
||||||
} while (clickedComponent);
|
|
||||||
|
|
||||||
}*/
|
|
||||||
static openaire2ClaimEntity(items, properties:EnvProperties){
|
|
||||||
const projects: ClaimEntity[] = [];
|
const projects: ClaimEntity[] = [];
|
||||||
for(const item of items){
|
for(const item of items){
|
||||||
const entity: ClaimEntity = new ClaimEntity();
|
const entity: ClaimEntity = new ClaimEntity();
|
||||||
|
@ -237,6 +210,9 @@ export class ClaimProjectsSearchFormComponent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(this.isNoProjectFunder){
|
||||||
|
allFqs += "&fq=" + StringUtils.URIEncode( "funder exact " + (StringUtils.quote(this.selectedFunder.id))); ;
|
||||||
|
}
|
||||||
for (let i = 0; i < this.rangeFilters.length; i++) {
|
for (let i = 0; i < this.rangeFilters.length; i++) {
|
||||||
let filter = this.rangeFilters[i];
|
let filter = this.rangeFilters[i];
|
||||||
//selectedFromValue, selectedToValue, equalityOp, equalityOpFrom, equalityOpTo, filterOp ){
|
//selectedFromValue, selectedToValue, equalityOp, equalityOpFrom, equalityOpTo, filterOp ){
|
||||||
|
|
|
@ -17,14 +17,15 @@ import {RangeFilterModule} from "../../utils/rangeFilter/rangeFilter.module";
|
||||||
import {AdvancedSearchInputModule} from "../../sharedComponents/advanced-search-input/advanced-search-input.module";
|
import {AdvancedSearchInputModule} from "../../sharedComponents/advanced-search-input/advanced-search-input.module";
|
||||||
import {InputModule} from "../../sharedComponents/input/input.module";
|
import {InputModule} from "../../sharedComponents/input/input.module";
|
||||||
import {DropdownFilterModule} from "../../utils/dropdown-filter/dropdown-filter.module";
|
import {DropdownFilterModule} from "../../utils/dropdown-filter/dropdown-filter.module";
|
||||||
|
import {LoadingModule} from "../../utils/loading/loading.module";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
SharedModule, CommonModule,
|
SharedModule, CommonModule,
|
||||||
// LoadingModalModule,
|
// LoadingModalModule,
|
||||||
ProjectServiceModule, ProjectsServiceModule, EntitiesAutocompleteModule, HelperModule,
|
ProjectServiceModule, ProjectsServiceModule, EntitiesAutocompleteModule, HelperModule,
|
||||||
PagingModule, SearchFilterModule, ClaimResultsModule, RangeFilterModule, AdvancedSearchInputModule, InputModule, DropdownFilterModule
|
PagingModule, SearchFilterModule, ClaimResultsModule, RangeFilterModule, AdvancedSearchInputModule, InputModule, DropdownFilterModule, LoadingModule
|
||||||
],
|
],
|
||||||
providers:[
|
providers:[
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
|
|
|
@ -51,7 +51,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="crossrefStatus === errorCodes.LOADING" class="uk-animation-fade uk-margin-top uk-width-1-1"
|
<div *ngIf="crossrefStatus === errorCodes.LOADING" class="uk-animation-fade uk-margin-top uk-width-1-1"
|
||||||
role="alert"><span class="loading-gif uk-align-center"></span></div>
|
role="alert">
|
||||||
|
<loading></loading>
|
||||||
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
<claim-results [localStoragePrefix]=localStoragePrefix [results]=crossrefResults
|
<claim-results [localStoragePrefix]=localStoragePrefix [results]=crossrefResults
|
||||||
|
@ -114,7 +116,7 @@
|
||||||
|
|
||||||
<div *ngIf="openaireResultsStatus === errorCodes.LOADING"
|
<div *ngIf="openaireResultsStatus === errorCodes.LOADING"
|
||||||
class="uk-animation-fade uk-margin-top uk-width-1-1"
|
class="uk-animation-fade uk-margin-top uk-width-1-1"
|
||||||
role="alert"><span class="loading-gif uk-align-center">Loading...</span></div>
|
role="alert"><loading></loading></div>
|
||||||
<claim-results [localStoragePrefix]=localStoragePrefix
|
<claim-results [localStoragePrefix]=localStoragePrefix
|
||||||
[results]=openaireResults [selectedResults]=selectedResults [basketLimit]="basketLimit"></claim-results>
|
[results]=openaireResults [selectedResults]=selectedResults [basketLimit]="basketLimit"></claim-results>
|
||||||
<div class="uk-flex uk-flex-center" *ngIf=" openaireResultsStatus != errorCodes.LOADING && openaireResultsNum != null && openaireResultsNum > 0" >
|
<div class="uk-flex uk-flex-center" *ngIf=" openaireResultsStatus != errorCodes.LOADING && openaireResultsNum != null && openaireResultsNum > 0" >
|
||||||
|
@ -177,7 +179,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="orcidStatus == errorCodes.LOADING" class="uk-animation-fade uk-margin-top uk-width-1-1" role="alert">
|
<div *ngIf="orcidStatus == errorCodes.LOADING" class="uk-animation-fade uk-margin-top uk-width-1-1" role="alert">
|
||||||
<span class="loading-gif uk-align-center"></span></div>
|
<loading></loading></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="activeTab == 'datacite'" id="datacite" class="uk-animation-fade">
|
<div *ngIf="activeTab == 'datacite'" id="datacite" class="uk-animation-fade">
|
||||||
|
@ -190,7 +192,7 @@
|
||||||
<div class="uk-margin-top">
|
<div class="uk-margin-top">
|
||||||
|
|
||||||
<div *ngIf="dataciteStatus == errorCodes.LOADING" class="uk-animation-fade uk-margin-top uk-width-1-1"
|
<div *ngIf="dataciteStatus == errorCodes.LOADING" class="uk-animation-fade uk-margin-top uk-width-1-1"
|
||||||
role="alert"><span class="loading-gif uk-align-center"></span></div>
|
role="alert"><loading></loading></div>
|
||||||
<div>
|
<div>
|
||||||
<claim-results [localStoragePrefix]=localStoragePrefix *ngIf="dataciteResults.length > 0 "
|
<claim-results [localStoragePrefix]=localStoragePrefix *ngIf="dataciteResults.length > 0 "
|
||||||
[results]=dataciteResults [selectedResults]=selectedResults [basketLimit]="basketLimit"></claim-results>
|
[results]=dataciteResults [selectedResults]=selectedResults [basketLimit]="basketLimit"></claim-results>
|
||||||
|
|
|
@ -22,10 +22,11 @@ import {AdvancedSearchInputModule} from "../../sharedComponents/advanced-search-
|
||||||
import {InputModule} from "../../sharedComponents/input/input.module";
|
import {InputModule} from "../../sharedComponents/input/input.module";
|
||||||
import {SearchInputModule} from "../../sharedComponents/search-input/search-input.module";
|
import {SearchInputModule} from "../../sharedComponents/search-input/search-input.module";
|
||||||
import {DropdownFilterModule} from "../../utils/dropdown-filter/dropdown-filter.module";
|
import {DropdownFilterModule} from "../../utils/dropdown-filter/dropdown-filter.module";
|
||||||
|
import {LoadingModule} from "../../utils/loading/loading.module";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [SharedModule, CommonModule, SearchResearchResultsServiceModule, PagingModule, SearchCrossrefServiceModule,
|
imports: [SharedModule, CommonModule, SearchResearchResultsServiceModule, PagingModule, SearchCrossrefServiceModule,
|
||||||
SearchDataciteServiceModule, HelperModule, SearchFilterModule, ClaimResultsModule, MatSelectModule, QuickSelectionsModule, RangeFilterModule, ClaimProjectsSearchFormModule, AdvancedSearchInputModule, InputModule, SearchInputModule, DropdownFilterModule],
|
SearchDataciteServiceModule, HelperModule, SearchFilterModule, ClaimResultsModule, MatSelectModule, QuickSelectionsModule, RangeFilterModule, ClaimProjectsSearchFormModule, AdvancedSearchInputModule, InputModule, SearchInputModule, DropdownFilterModule, LoadingModule],
|
||||||
providers:[
|
providers:[
|
||||||
SearchOrcidService
|
SearchOrcidService
|
||||||
],
|
],
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
export class ClaimsProperties{
|
export class ClaimsProperties{
|
||||||
ALLOW_ORGANIZATION_LINKING:boolean = false;
|
ALLOW_ORGANIZATION_LINKING:boolean = false;
|
||||||
|
SELECT_ENTITIES = {
|
||||||
|
projects:"Funding"
|
||||||
|
}
|
||||||
INLINE_ENTITY = {
|
INLINE_ENTITY = {
|
||||||
show: true,
|
show: true,
|
||||||
guideText : null
|
guideText : null
|
||||||
|
|
|
@ -42,7 +42,7 @@ export class LinkingGenericComponent {
|
||||||
// show linkToEntities /values: result, project, context
|
// show linkToEntities /values: result, project, context
|
||||||
|
|
||||||
@Input() sources:ClaimEntity[] =[];
|
@Input() sources:ClaimEntity[] =[];
|
||||||
properties:EnvProperties;
|
properties:EnvProperties = properties;
|
||||||
public openaireEntities = OpenaireEntities;
|
public openaireEntities = OpenaireEntities;
|
||||||
@Input() localStoragePrefix:string = "linking_";
|
@Input() localStoragePrefix:string = "linking_";
|
||||||
url=null;
|
url=null;
|
||||||
|
@ -72,14 +72,13 @@ export class LinkingGenericComponent {
|
||||||
this.breadcrumbs.push({name: "Link", route: null});
|
this.breadcrumbs.push({name: "Link", route: null});
|
||||||
}
|
}
|
||||||
this.showOptions.show = 'source';
|
this.showOptions.show = 'source';
|
||||||
this.showOptions.initSelectOptions();
|
this.showOptions.initSelectOptions(this.claimsProperties);
|
||||||
if(this.inlineEntity){
|
if(this.inlineEntity){
|
||||||
this.showOptions.showLinkTo();
|
this.showOptions.showLinkTo();
|
||||||
// this.showOptions.basketShowLinksTo = true;
|
// this.showOptions.basketShowLinksTo = true;
|
||||||
this.showOptions.show = this.showOptions.linkTo;
|
this.showOptions.show = this.showOptions.linkTo;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.properties = properties;
|
|
||||||
this.url = this.properties.domain + this.properties.baseLink+this._router.url;
|
this.url = this.properties.domain + this.properties.baseLink+this._router.url;
|
||||||
|
|
||||||
var description = "Linking is a functionality provided by OpenAIRE, in order to link research results with a project, a research community or other research results.";
|
var description = "Linking is a functionality provided by OpenAIRE, in order to link research results with a project, a research community or other research results.";
|
||||||
|
|
|
@ -3,13 +3,21 @@ import {SharedModule} from '../../../../openaireLibrary/shared/shared.module';
|
||||||
import {ClaimEntityTitleComponent} from "./ClaimEntityTitle.component";
|
import {ClaimEntityTitleComponent} from "./ClaimEntityTitle.component";
|
||||||
import {ClaimEntityResultMetadataComponent} from "./ClaimEntityResultMetadata.component";
|
import {ClaimEntityResultMetadataComponent} from "./ClaimEntityResultMetadata.component";
|
||||||
import {ClaimEntityProjectMetadataComponent} from "./ClaimEntityProjectMetadata.component";
|
import {ClaimEntityProjectMetadataComponent} from "./ClaimEntityProjectMetadata.component";
|
||||||
|
import {IconsService} from "../../../utils/icons/icons.service";
|
||||||
|
import {coins} from "../../../utils/icons/icons";
|
||||||
|
import {IconsModule} from "../../../utils/icons/icons.module";
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
SharedModule
|
SharedModule,
|
||||||
|
IconsModule
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
ClaimEntityTitleComponent, ClaimEntityResultMetadataComponent, ClaimEntityProjectMetadataComponent
|
ClaimEntityTitleComponent, ClaimEntityResultMetadataComponent, ClaimEntityProjectMetadataComponent
|
||||||
], exports:[ ClaimEntityTitleComponent, ClaimEntityResultMetadataComponent, ClaimEntityProjectMetadataComponent]
|
], exports:[ ClaimEntityTitleComponent, ClaimEntityResultMetadataComponent, ClaimEntityProjectMetadataComponent]
|
||||||
})
|
})
|
||||||
export class ClaimEntitiesMetadataModule { }
|
export class ClaimEntitiesMetadataModule {
|
||||||
|
constructor(private _iconsService:IconsService) {
|
||||||
|
this._iconsService.registerIcons([coins])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -8,20 +8,28 @@ import {ClaimEntity} from '../../claim-utils/claimHelper.class';
|
||||||
<div *ngIf="!shortVersion" class="claim-entity-metadata uk-flex-inline uk-flex-wrap uk-text-xsmall uk-text-emphasis"
|
<div *ngIf="!shortVersion" class="claim-entity-metadata uk-flex-inline uk-flex-wrap uk-text-xsmall uk-text-emphasis"
|
||||||
[class.uk-margin-xsmall-top]="!shortVersion">
|
[class.uk-margin-xsmall-top]="!shortVersion">
|
||||||
<span class="uk-text-capitalize">
|
<span class="uk-text-capitalize">
|
||||||
{{entity.type}}
|
{{entity.type == 'project' && entity.project.code == 'unidentified'?'funder':entity.type}}
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="entity.project.startDate || entity.project.endDate">
|
<span *ngIf="entity.project.startDate || entity.project.endDate">
|
||||||
{{(entity.project.startDate) ? entity.project.startDate : 'Unknown'}}{{'-' + ((entity.project.endDate) ? entity.project.endDate : 'Unknown')}}
|
{{(entity.project.startDate) ? entity.project.startDate : 'Unknown'}}{{'-' + ((entity.project.endDate) ? entity.project.endDate : 'Unknown')}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-text-small uk-flex uk-flex-wrap" [style.grid-gap]="shortVersion?'10px':'20px'"
|
<div *ngIf="shortVersion && entity.type == 'project' && entity.project.code == 'unidentified'" class="claim-entity-metadata uk-flex-inline uk-flex-wrap uk-text-xsmall uk-text-emphasis"
|
||||||
|
[class.uk-margin-xsmall-top]="!shortVersion">
|
||||||
|
<span class="uk-text-capitalize">
|
||||||
|
funder
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div *ngIf="entity.project.code!='unidentified'" class="uk-text-small uk-flex uk-flex-wrap" [style.grid-gap]="shortVersion?'0px':'10px'"
|
||||||
[class.uk-margin-small-top]="!shortVersion">
|
[class.uk-margin-small-top]="!shortVersion">
|
||||||
<div *ngIf="entity.project.funderName || entity.project.funderShortname">
|
<div *ngIf="entity.project.code">
|
||||||
<span class="uk-text-meta">Funder: </span>{{entity.project.funderName?entity.project.funderName:entity.project.funderShortname}}
|
|
||||||
</div>
|
|
||||||
<div *ngIf="entity.project.code && entity.project.code!='unidentified'">
|
|
||||||
<span class="uk-text-meta">Project Code: </span>{{entity.project.code}}
|
<span class="uk-text-meta">Project Code: </span>{{entity.project.code}}
|
||||||
</div>
|
</div>
|
||||||
|
<div *ngIf="entity.project.funderName || entity.project.funderShortname">
|
||||||
|
<span class="uk-text-meta">Funding: </span>{{entity.project.funderName?entity.project.funderName:entity.project.funderShortname}}
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
`,
|
`,
|
||||||
|
|
|
@ -5,19 +5,18 @@ import {ClaimEntity} from '../../claim-utils/claimHelper.class';
|
||||||
selector: 'claim-title',
|
selector: 'claim-title',
|
||||||
template: `
|
template: `
|
||||||
<div class="uk-grid uk-flex uk-flex-middle">
|
<div class="uk-grid uk-flex uk-flex-middle">
|
||||||
<span *ngIf="showIcon" class="uk-flex">
|
<span *ngIf="showIcon" class="uk-flex uk-margin-xsmall-right">
|
||||||
<span *ngIf="entity.result" class="material-icons uk-text-small uk-text-meta">
|
<icon *ngIf="entity.result" class=" uk-text-small uk-text-meta" name="insert_drive_file">
|
||||||
insert_drive_file
|
|
||||||
</span>
|
</icon>
|
||||||
<span *ngIf="entity.project" class="material-icons uk-text-small uk-text-meta">
|
<icon *ngIf="entity.project && entity.project.code !='unidentified'" class=" uk-text-small uk-text-meta" name="assignment_turned_in">
|
||||||
assignment_turned_in
|
</icon>
|
||||||
</span>
|
<icon *ngIf="entity.project && entity.project.code =='unidentified'" class="uk-text-small uk-text-meta" name="coins" [ratio]="1.4">
|
||||||
<span *ngIf="entity.organization" class="material-icons uk-text-small uk-text-meta">
|
</icon>
|
||||||
account_balance
|
<icon *ngIf="entity.organization" class=" uk-text-small uk-text-meta" name="account_balance">
|
||||||
</span>
|
</icon>
|
||||||
<span *ngIf="entity.type=='community'" class="material-icons uk-text-small uk-text-meta" style="margin-right: 2px;">
|
<icon *ngIf="entity.type=='community'" class=" uk-text-small uk-text-meta" style="margin-right: 2px;" name="people">
|
||||||
people
|
</icon>
|
||||||
</span>
|
|
||||||
</span>
|
</span>
|
||||||
<div class="uk-width-expand multi-line-ellipsis lines-3" style="word-break: break-word;"
|
<div class="uk-width-expand multi-line-ellipsis lines-3" style="word-break: break-word;"
|
||||||
[class.uk-padding-remove-left]="showIcon" [class.uk-text-truncate]="shortVersion">
|
[class.uk-padding-remove-left]="showIcon" [class.uk-text-truncate]="shortVersion">
|
||||||
|
@ -30,7 +29,15 @@ import {ClaimEntity} from '../../claim-utils/claimHelper.class';
|
||||||
<span *ngIf="(entity.result && !entity.result.url)">
|
<span *ngIf="(entity.result && !entity.result.url)">
|
||||||
{{entity.title ? sliceString(entity.title) : '[No title available]'}}
|
{{entity.title ? sliceString(entity.title) : '[No title available]'}}
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="entity.type=='project' && entity.project">
|
<span *ngIf="entity.type=='project' && entity.project && entity.project.code =='unidentified'">
|
||||||
|
<span *ngIf="!shortVersion">
|
||||||
|
{{(entity.project.funderShortname ? '[' + entity.project.funderShortname + '] ' : '') + entity.project.funderName}}
|
||||||
|
</span>
|
||||||
|
<span *ngIf="shortVersion">
|
||||||
|
{{sliceString(entity.project.funderName)}}
|
||||||
|
</span>
|
||||||
|
</span>
|
||||||
|
<span *ngIf="entity.type=='project' && entity.project && entity.project.code!='unidentified'">
|
||||||
<a *ngIf="entity.project && entity.project.url" target="_blank" [href]="entity.project.url"
|
<a *ngIf="entity.project && entity.project.url" target="_blank" [href]="entity.project.url"
|
||||||
class="uk-link uk-text-decoration-none uk-width-expand">
|
class="uk-link uk-text-decoration-none uk-width-expand">
|
||||||
<span *ngIf="!shortVersion">
|
<span *ngIf="!shortVersion">
|
||||||
|
|
Loading…
Reference in New Issue