181 lines
6.6 KiB
TypeScript
181 lines
6.6 KiB
TypeScript
import {Component, Input,Output, ElementRef, EventEmitter} from '@angular/core';
|
|
import {JSONP_PROVIDERS} from '@angular/http';
|
|
import {Observable} from 'rxjs/Observable';
|
|
import { RouteParams, ROUTER_DIRECTIVES} from '@angular/router-deprecated';
|
|
import {OpenaireProjectsService} from '../../services/openaireProjects.service';
|
|
|
|
|
|
@Component({
|
|
selector: 'claim-projects',
|
|
template: `
|
|
<div class="container" >
|
|
|
|
<h3>Select Funder:</h3>
|
|
<!-- <select [(ngModel)]="selectedFunderId" (ngModelChange)="funderChanged()" >
|
|
<option [ngValue]="'0'">Funder:</option>
|
|
<option *ngFor="let funder of funders" [ngValue]="funder.field.field[1]['@value_original']">{{funder.field.field[1]['@value']}}</option>
|
|
</select> -->
|
|
<div class="dropdown">
|
|
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
|
|
{{selectedFunderName}}
|
|
<span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
|
|
<li (click)="funderChanged('0','Select funder:')"><a >Select funder:</a></li>
|
|
<li *ngFor="let funder of funders" (click)="funderChanged(funder.field.field[1]['@value_original'],funder.field.field[1]['@value'])" ><a >{{funder.field.field[1]['@value']}}</a></li>
|
|
|
|
</ul>
|
|
</div>
|
|
<h4>Select projects:</h4>
|
|
<input id="community" type="text" class="validate filter-input" [(ngModel)]=query (keyup)=filter() >
|
|
<div class="suggestions" *ngIf="filteredList.length > 0">
|
|
<ul class="list-group" >
|
|
<li *ngFor=" let item of filteredList" class="list-group-item" >
|
|
<a (click)="select(item)">{{item.field[0]['@value']}} - {{item.field[1]['@value']}}- {{item.field[3]['@value']}}</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div class="selections" *ngIf="selectedProjects.length > 0">
|
|
<label for="selecteditems">Selected: </label>
|
|
<ul id ="selecteditems" class="nav nav-pills" >
|
|
<li *ngFor="let item of selectedProjects" role="presentation" (click)="remove(item)">{{item.projectId}} - {{item.projectAcronym}} - {{item.projectName}} <span class="badge">X</span>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<!--<select [(ngModel)]="selectedCategory" (ngModelChange)="categoryChanged()" >
|
|
<option [ngValue]="'0'">Category:</option>
|
|
<option *ngFor="let category of categories" [ngValue]="category.id">{{category.label}}</option>
|
|
</select>
|
|
<h4>Select concepts:</h4>
|
|
<input id="community" type="text" class="validate filter-input" [(ngModel)]=query (keyup)=filter() >
|
|
<div class="suggestions" *ngIf="filteredList.length > 0">
|
|
<ul class="list-group" *ngFor=" let item of filteredList" >
|
|
<li class="list-group-item" >
|
|
<a (click)="select(item)">{{item.label}}</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div class="selections" *ngIf="selectedProjects.length > 0">
|
|
<label for="selecteditems">Selected: </label>
|
|
<ul id ="selecteditems" class="nav nav-pills" *ngFor="let item of selectedProjects" >
|
|
<li role="presentation" (click)="remove(item)">{{item.concept.label}} <span class="badge">X</span>
|
|
</li>
|
|
</ul>
|
|
</div>-->
|
|
</div>
|
|
`,
|
|
providers:[ OpenaireProjectsService ]
|
|
|
|
})
|
|
export class ClaimProjectsComponent {
|
|
ngOnInit() {
|
|
console.info("Claim projects - init ....");
|
|
this.getFunders();
|
|
|
|
}
|
|
public query = '';
|
|
public filteredList = [];
|
|
@Input() public selectedProjects=[] ;
|
|
public elementRef;
|
|
@Output() projectsChange = new EventEmitter();
|
|
|
|
public funders:string[];
|
|
@Input() public selectedFunderId:string ="0";
|
|
selectedFunderName:string ="Select funder:";
|
|
@Output() cselectedFunderChange = new EventEmitter();
|
|
|
|
public projects:string[];
|
|
|
|
|
|
constructor(private _projectService: OpenaireProjectsService,myElement: ElementRef) {
|
|
this.elementRef = myElement;
|
|
}
|
|
|
|
filter() {
|
|
if(this.selectedFunderId != '0' && this.query !== "" && this.query.length >= 3 ){
|
|
this._projectService.searchForProjects(this.query, this.selectedFunderId).subscribe(
|
|
data => {
|
|
this.filteredList = data;
|
|
},
|
|
err => console.error(err)
|
|
);
|
|
}
|
|
|
|
// if (this.query !== ""){
|
|
// this.filteredList = this.concepts.filter(function(el){
|
|
// return el.label.toLowerCase().indexOf(this.query.toLowerCase()) > -1;
|
|
// }.bind(this));
|
|
// }else{
|
|
// this.filteredList = [];
|
|
// }
|
|
}
|
|
|
|
select(item){
|
|
this.query = "";
|
|
this.filteredList = [];
|
|
var index:number =this.selectedProjects.indexOf(item);
|
|
if (index == -1) {
|
|
//{{item.field[0]['@value']}} - {{item.field[1]['@value']}}
|
|
var project= { funderId: this.selectedFunderId, projectId: item.field[0]['@value'], projectName: item.field[3]['@value'] , projectAcronym: item.field[1]['@value'] };
|
|
this.selectedProjects.push(project);
|
|
this.projectsChange.emit({
|
|
value: this.selectedProjects
|
|
});
|
|
}
|
|
|
|
}
|
|
remove(item){
|
|
var index:number =this.selectedProjects.indexOf(item);
|
|
if (index > -1) {
|
|
this.selectedProjects.splice(index, 1);
|
|
}
|
|
this.projectsChange.emit({
|
|
value: this.selectedProjects
|
|
});
|
|
}
|
|
handleClick(event){
|
|
var clickedComponent = event.target;
|
|
var inside = false;
|
|
do {
|
|
if (clickedComponent === this.elementRef.nativeElement) {
|
|
inside = true;
|
|
}
|
|
clickedComponent = clickedComponent.parentNode;
|
|
} while (clickedComponent);
|
|
if(!inside){
|
|
this.filteredList = [];
|
|
}
|
|
}
|
|
getFunders () {
|
|
console.info("Getting Funders....");
|
|
this._projectService.getFunders().subscribe(
|
|
data => {
|
|
this.funders = data;
|
|
},
|
|
err => console.error(err)
|
|
);
|
|
}
|
|
|
|
getProjects () {
|
|
if(this.selectedFunderId != '0'){
|
|
// this._contextService.getConcepts(this.selectedCategory, "").subscribe(
|
|
// data => {
|
|
// this.concepts = data.concept;
|
|
//
|
|
// },
|
|
// err => console.error(err)
|
|
// );
|
|
}
|
|
}
|
|
funderChanged(funderId:string, funderName:string){
|
|
this.selectedFunderId = funderId;
|
|
this.selectedFunderName = funderName;
|
|
console.info("Selected funder:"+this.selectedFunderId+ ' name:'+funderName );
|
|
this.selectedProjects = [];
|
|
}
|
|
// categoryChanged(){
|
|
// this.getConcepts();
|
|
// }
|
|
|
|
}
|