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'; import {ResultPreview} from "../../utils/result-preview/result-preview"; import {SearchResult} from "../../utils/entities/searchResult"; import {AlertModal} from "../../utils/modal/alert"; @Component({ selector: 'projectsInModal', template: `
Filter by Funder:
` }) export class ProjectsInModalComponent { @Input() fetchProjects: FetchProjects; @Input() organizationId: string = ""; @Input() properties: EnvProperties; @Input() modal: AlertModal; 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.searchLinkToAdvancedProjects;//+"?organization="+this.organizationId+"or=and";; if (this.fetchProjects.searchUtils.totalResults > 0) { this.search(false, ""); } } } public getResultPreview(result: SearchResult): ResultPreview { return ResultPreview.searchResultConvert(result, 'project'); } 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) { 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); } }