import {Component, Input} from '@angular/core';
import {ActivatedRoute} from '@angular/router';
import { FetchProjects } from '../../utils/fetchEntitiesClasses/fetchProjects.class';
import { SearchProjectsService } from '../../services/searchProjects.service';
import {ErrorCodes} from '../../utils/properties/errorCodes';
import {StringUtils} from '../../utils/string-utils.class';
import {RouterHelper} from '../../utils/routerHelper.class';
import{EnvProperties} from '../../utils/properties/env-properties';
@Component({
selector: 'searchingProjectsTab',
template: `
fetchProjects.searchUtils.size">
`
})
export class SearchingProjectsTabComponent {
@Input() fetchProjects : FetchProjects;
@Input() organizationId:string = "";
@Input() properties:EnvProperties;
public page :number = 1;
public size :number = 10;
public linkToSearchProjects: string;
public routerHelper:RouterHelper = new RouterHelper();
public errorCodes:ErrorCodes = new ErrorCodes();
private filterQuery:string = "";
constructor (private route: ActivatedRoute,
private _searchProjectsService: SearchProjectsService) {
}
ngOnInit() {
if(this.organizationId) {
this.linkToSearchProjects = this.properties.searchLinkToAdvancedPublications;//+"?organization="+this.organizationId+"or=and";;
if(this.fetchProjects.searchUtils.totalResults > 0) {
this.search(false,"");
}
}
}
private search(refine:boolean, filterQuery:string){
var refineFields:string [] = ["funder"];
this.fetchProjects.getResultsForOrganizations(this.organizationId, filterQuery, this.page, this.size,(refine)?refineFields:[], this.properties);
}
public pageChange($event) {
this.page=$event.value;
this.search(false, this.filterQuery);
}
public filterChange($event) {
console.log("Filter Changed");
this.updateFilters();
//this.search(true, this.filterQuery);
this.search(false, this.filterQuery);
}
private updateFilters (){
this.filterQuery = "";
for (let filter of this.fetchProjects.filters){
var filterLimits="";
for (let value of filter.values){
if(value.selected == true){
//filterLimits+=((filterLimits.length == 0)?'':',') +'"'+ StringUtils.URIEncode(value.id)+'"';
filterLimits+=((filterLimits.length == 0)?'':' or ')+filter.filterId+' exact ';
filterLimits+='"'+ StringUtils.URIEncode(value.id)+'"';
}
}
if(filterLimits.length > 0){
//this.filterQuery+=' and '+filter.filterId + ' exact '+ filterLimits + ' ';
this.filterQuery+=' and ( ' + filterLimits + ' ) ';
}
}
console.log("Filter Changed"+this.filterQuery);
}
}