Compare commits

...

2 Commits

Author SHA1 Message Date
Konstantina Galouni c7817731f0 Merge remote-tracking branch 'origin/develop' into develop 2024-04-12 11:19:33 +03:00
Konstantina Galouni 438075f8df [develop | DONE | FIXED]: Fixes on search projects for claims.
1. searchProjects.service.ts: Parse funder name if funder shortname is not available.
2. claimProjectSearchForm.component.ts:
   a. [BUG FIX] Set filter.countAllValues = filter.values.length; to show filter values without extra "view all" call
   b. [BUG FIX] Call projectService.advancedSearchProjects instead of projectService.searchProjects to get projects (/resources2 instead of /projects) to get 100 first values by default in facets.
2024-04-12 11:19:17 +03:00
2 changed files with 53 additions and 47 deletions

View File

@ -65,35 +65,36 @@ export class ClaimProjectsSearchFormComponent {
} }
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.searchProjects(this.createOpenaireQueryParams(),(page==1)? this.refineFieldsQuery:null, page, size, (page==1)?this.refineFields:[], this.properties).subscribe( 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.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) {
this.openaireResultsPage=page; this.openaireResultsPage = page;
this.openaireResultsNum = data[0]; this.openaireResultsNum = data[0];
this.openaireResults =ClaimProjectsSearchFormComponent.openaire2ClaimEntity(data[1], this.properties); this.openaireResults = ClaimProjectsSearchFormComponent.openaire2ClaimEntity(data[1], this.properties);
if(data[2] && data[2].length > 0){ if (data[2] && data[2].length > 0) {
this.filters = this.checkSelectedFilters( data[2], this.prevFilters); this.filters = this.checkSelectedFilters(data[2], this.prevFilters);
}
this.openaireResultsStatus = this.errorCodes.DONE;
if(this.openaireResultsNum == 0){
this.openaireResultsStatus = this.errorCodes.NONE;
this.filters = this.checkSelectedFilters( [], this.prevFilters);
}
}else {
this.openaireResultsStatus = this.errorCodes.ERROR;
} }
},
this.openaireResultsStatus = this.errorCodes.DONE;
if (this.openaireResultsNum == 0) {
this.openaireResultsStatus = this.errorCodes.NONE;
this.filters = this.checkSelectedFilters([], this.prevFilters);
}
} else {
this.openaireResultsStatus = this.errorCodes.ERROR;
}
},
err => { err => {
this.openaireResultsStatus = this.errorCodes.ERROR; this.openaireResultsStatus = this.errorCodes.ERROR;
//console.log(err.status); //console.log(err.status);
@ -202,12 +203,16 @@ export class ClaimProjectsSearchFormComponent {
} }
createOpenaireQueryParams():string { createOpenaireQueryParams(): string {
let query = ""; let query = "";
if(this.keyword.length > 0){ if (this.keyword.length > 0) {
query += "q=" + StringUtils.quote(StringUtils.URIEncode(this.keyword)); // query += "q=" + StringUtils.quote(StringUtils.URIEncode(this.keyword));
query += StringUtils.quote(StringUtils.URIEncode(this.keyword));
} }
return query;
}
createOpenaireRefineQuery(): string {
/*if(this.startYear.length > 0 ){ /*if(this.startYear.length > 0 ){
query+='&fq=projectstartyear exact \"'+this.startYear+'\"' query+='&fq=projectstartyear exact \"'+this.startYear+'\"'
} }
@ -215,30 +220,30 @@ export class ClaimProjectsSearchFormComponent {
query+='&fq=projectendyear exact \"'+this.endYear+'\"' query+='&fq=projectendyear exact \"'+this.endYear+'\"'
}*/ }*/
let allFqs = ""; let allFqs = "";
for (let filter of this.filters){ for (let filter of this.filters) {
if(filter.countSelectedValues > 0){ if (filter.countSelectedValues > 0) {
let count_selected=0; let count_selected = 0;
let fq = ""; let fq = "";
for (let value of filter.values){ for (let value of filter.values) {
if(value.selected == true){ if (value.selected == true) {
count_selected++; count_selected++;
fq+=(fq.length > 0 ? " " + filter.filterOperator + " ":"" ) + filter.filterId + " exact " + (StringUtils.quote(value.id)); fq += (fq.length > 0 ? " " + filter.filterOperator + " " : "") + filter.filterId + " exact " + (StringUtils.quote(value.id));
} }
} }
if(count_selected > 0){ if (count_selected > 0) {
fq="&fq="+StringUtils.URIEncode(fq); fq = "&fq=" + StringUtils.URIEncode(fq);
allFqs += fq; allFqs += fq;
} }
} }
} }
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 ){
allFqs+= NewSearchPageComponent.createRangeFilterQuery(this.rangeFields[i],filter.selectedFromValue, filter.selectedToValue, " within ", ">=" ,"<=", "and" ) allFqs += NewSearchPageComponent.createRangeFilterQuery(this.rangeFields[i], filter.selectedFromValue, filter.selectedToValue, " within ", ">=", "<=", "and")
} }
return query+allFqs; return allFqs + "&type=projects";
} }
public yearChanged() { public yearChanged() {
this.search(this.page, this.size); this.search(this.page, this.size);
@ -273,20 +278,21 @@ export class ClaimProjectsSearchFormComponent {
} }
} }
filter.countAllValues = filter.values.length;
} }
if(filters.length == 0 ){ if(filters.length == 0 ){
for(let j=0; j< prevFilters.length ; j++){ for(let j=0; j< prevFilters.length ; j++) {
let filter = Object.assign({}, prevFilters[j]); let filter = Object.assign({}, prevFilters[j]);
filter.values = []; filter.values = [];
for(let filterValue of prevFilters[j].values) { for (let filterValue of prevFilters[j].values) {
if(filterValue.selected){ if (filterValue.selected) {
filterValue.number = 0; filterValue.number = 0;
filter.values.push(filterValue); filter.values.push(filterValue);
}
}
filters.push(filter)
} }
}
filter.countAllValues = filter.values.length;
filters.push(filter)
}
} }
return filters; return filters;
} }

View File

@ -230,7 +230,7 @@ export class SearchProjectsService {
for(let z=0; z<fundingLength; z++) { for(let z=0; z<fundingLength; z++) {
let fundingData = Array.isArray(resData['fundingtree']) ? resData['fundingtree'][z] : resData['fundingtree']; let fundingData = Array.isArray(resData['fundingtree']) ? resData['fundingtree'][z] : resData['fundingtree'];
if(fundingData.hasOwnProperty("funder")) { if(fundingData.hasOwnProperty("funder")) {
result['funderShortname'] = fundingData['funder'].shortname; result['funderShortname'] = fundingData['funder'].shortname ? fundingData['funder'].shortname : fundingData['funder'].name;
result['funderId'] = fundingData['funder'].id; result['funderId'] = fundingData['funder'].id;
result['jurisdiction'] = (fundingData['funder']['id']['jurisdiction'] )?fundingData['funder']['id']['jurisdiction']:""; result['jurisdiction'] = (fundingData['funder']['id']['jurisdiction'] )?fundingData['funder']['id']['jurisdiction']:"";