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: `
View all {{fetchProjects.searchUtils.totalResultsNoFilters | number}} results
` }) 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); } }