import {Component, Input,Output, ElementRef, EventEmitter, ViewChild} from '@angular/core'; import {Observable} from 'rxjs/Observable'; import {SearchProjectsService} from '../../services/searchProjects.service'; import {ProjectService} from '../../landingPages/project/project.service'; // import {ModalLoading} from '../../utils/modal/loading.component'; import { Subject } from 'rxjs/Subject'; import {ClaimProject} from './claimEntities.class'; declare var UIkit:any; import{EnvProperties} from '../../utils/properties/env-properties'; @Component({ selector: 'claim-projects-search-form', template: `
Search for projects
` }) export class ClaimProjectsSearchFormComponent { ngOnInit() { this.getFunders(); } // @ViewChild (ModalLoading) loading : ModalLoading ; // @Input() public inline: boolean = false ; // for claimed started from landing pages public query = ''; @Input() public selectedProjects=[] ; public elementRef; public funders:string[]; public selectedFunderId:string ="0"; selectedFunderName:string ="Select funder:"; @Output() projectSelected = new EventEmitter(); @Input() public properties:EnvProperties; @Input() public inlineClaim:boolean=false; @Input() localStoragePrefix:string = ""; public projects:string[]; public warningMessage = ""; public infoMessage = ""; // public searchTermStream = new Subject(); // filtered: Observable<{}> = this.searchTermStream // .debounceTime(300).distinctUntilChanged() // .switchMap((term: string) => this._projectService.searchForProjectsObs(term, this.selectedFunderId)); public tries:number = 0 ; public keywordlimit = 3; constructor(private _service: ProjectService, private _projectService: SearchProjectsService, myElement: ElementRef) { this.elementRef = myElement; } // search() { // console.info("heeere "+this.query ); // this.infoMessage = ""; // // this.filtered = []; // if(this.query == ""){ // this.tries = 0; // this.warningMessage = ""; // } else if(this.query && this.query.length < this.keywordlimit){ // this.tries++; // if(this.tries == this.keywordlimit -1 ){ // this.warningMessage = "Type at least " + this.keywordlimit + " characters"; // this.tries = 0; // } // }else{ // console.info("doo the search "+this.query ); // // this.tries = 0; // this.warningMessage = ""; // this.searchTermStream.next(this.query); // // } // // } select(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 item = item.value; var project: ClaimProject = new ClaimProject(); project.funderId = (this.selectedFunderId=="0")?item.funderId:this.selectedFunderId; project.funderName = (this.selectedFunderId=="0")?item.funderName:this.selectedFunderName; project.projectId = item.id; project.projectName = item.projectName; project.projectAcronym = item.projectAcronym; project.startDate = item.startDate; project.endDate = item.endDate; project.code = item.code; project.jurisdiction = item.jurisdiction; project.fundingLevel0 = item.fundingLevel0; console.log(item); // this._service.getProjectDates(project.projectId).subscribe( // data => { // project.startDate = data.startDate; // project.endDate = data.endDate; // }, // err => console.log(err) // ); var index:number =this.selectedProjects.indexOf(project); var found:boolean = false; this.warningMessage = ""; for (var _i = 0; _i < this.selectedProjects.length; _i++) { let item = this.selectedProjects[_i]; if(item.projectId == project.projectId){ found=true; this.warningMessage = "Project already in your basket"; } } if (!found) { this.selectedProjects.push(project); if(this.selectedProjects != null){ localStorage.setItem(this.localStoragePrefix + "projects", JSON.stringify(this.selectedProjects)); } this.projectSelected.emit({ value: true }); UIkit.notification({ message : 'A new project added in the basket.', status : 'primary', timeout : 1500, pos : 'top-center' }); }else{ UIkit.notification({ message : 'The project is already in your basket.', status : 'warning', timeout : 1500, pos : 'top-center' }); } } showItem(item):string{ return ((item.field[1]['@value'])?item.field[1]['@value']+" - ":"" ) + item.field[3]['@value']; } remove(item){ var index:number =this.selectedProjects.indexOf(item); if (index > -1) { this.selectedProjects.splice(index, 1); } } handleClick(event){ var clickedComponent = event.target; var inside = false; do { if (clickedComponent === this.elementRef.nativeElement) { inside = true; } clickedComponent = clickedComponent.parentNode; } while (clickedComponent); } getFunders () { console.info("Getting Funders...."); this._projectService.getFunders(this.properties).subscribe( data => { this.funders = data[1]; console.log("this.funders"); }, err => console.log(err) ); } getProjects () { if(this.selectedFunderId != '0'){ } } funderChanged(funderId:string, funderName:string){ this.selectedFunderId = funderId; this.selectedFunderName = funderName; console.info("Selected funder:"+this.selectedFunderId+ ' name:'+funderName ); } }