Project

General

Profile

1 44380 argiro.kok
import {Component, Input, ViewChild} from '@angular/core';
2
import {Observable}       from 'rxjs/Observable';
3
import { Router, ActivatedRoute} from '@angular/router';
4
import {Filter, Value,AdvancedField} from '../searchUtils/searchHelperClasses.class';
5
import {SearchProjectsService} from '../../services/searchProjects.service';
6
import {SearchResult}     from '../../utils/entities/searchResult';
7
import {OpenaireProperties, ErrorCodes} from '../../utils/properties/openaireProperties';
8
import {AdvancedSearchPageComponent} from '../searchUtils/advancedSearchPage.component';
9
import {SearchFields} from '../../utils/properties/searchFields';
10 44587 argiro.kok
import {SearchUtilsClass } from '../searchUtils/searchUtils.class';
11 44380 argiro.kok
12
@Component({
13
    selector: 'advanced-search-projects',
14
    template: `
15 44384 argiro.kok
    <advanced-search-page pageTitle="Advanced Search Projects" entityType="project"
16 44726 argiro.kok
                 [(results)] = "results"
17
                 [(searchUtils)] = "searchUtils"
18 44380 argiro.kok
                 [(fieldIds)]="fieldIds" [(fieldIdsMap)]="fieldIdsMap"   [(selectedFields)]="selectedFields"
19
                 (queryChange)="queryChanged($event)">
20
    </advanced-search-page>
21
22
    `
23
 })
24
25
export class AdvancedSearchProjectsComponent {
26 44826 argiro.kok
  public results =[];
27
  public filters =[];
28 44587 argiro.kok
29 44826 argiro.kok
  public searchUtils:SearchUtilsClass = new SearchUtilsClass();
30 44380 argiro.kok
31 44826 argiro.kok
   public searchFields:SearchFields = new SearchFields();
32 44380 argiro.kok
33 44846 argiro.kok
  public fieldIds:  string[] = this.searchFields.PROJECT_ADVANCED_FIELDS;
34
  public fieldIdsMap = this.searchFields.PROJECT_FIELDS;
35 44826 argiro.kok
  public selectedFields:AdvancedField[] =  [];
36
37 44380 argiro.kok
  @ViewChild (AdvancedSearchPageComponent) searchPage : AdvancedSearchPageComponent ;
38
39
40
  constructor (private route: ActivatedRoute, private _searchProjectsService: SearchProjectsService ) {
41
42
    this.results =[];
43
    var errorCodes:ErrorCodes = new ErrorCodes();
44 44726 argiro.kok
    this.searchUtils.status =errorCodes.LOADING;
45
    this.searchUtils.baseUrl = OpenaireProperties.searchLinkToAdvancedProjects;
46 44380 argiro.kok
47
48
49
  }
50
  ngOnInit() {
51
    var errorCodes:ErrorCodes = new ErrorCodes();
52 44726 argiro.kok
    this.searchUtils.status =errorCodes.LOADING;
53 44380 argiro.kok
   this.sub =  this.route.queryParams.subscribe(params => {
54
      let page = (params['page']=== undefined)?1:+params['page'];
55 44587 argiro.kok
      this.searchUtils.page = ( page <= 0 ) ? 1 : page;
56 44380 argiro.kok
      this.searchPage.fieldIds = this.fieldIds;
57
      this.searchPage.selectedFields = this.selectedFields;
58
      this.searchPage.fieldIdsMap = this.fieldIdsMap;
59
      this.searchPage.getSelectedFiltersFromUrl(params);
60 44587 argiro.kok
      this.getResults(this.searchPage.createQueryParameters(),  this.searchUtils.page, this.searchUtils.size);
61 44380 argiro.kok
62
    });
63
  }
64
  ngOnDestroy() {
65
    this.sub.unsubscribe();
66
  }
67
  sub: any;
68
  public getResults(parameters:string, page: number, size: number){
69
    var errorCodes:ErrorCodes = new ErrorCodes();
70 44587 argiro.kok
    this.searchUtils.status = errorCodes.LOADING;
71 44380 argiro.kok
    console.info("Advanced Search Publications: Execute search query "+parameters);
72 44726 argiro.kok
     this._searchProjectsService.advancedSearchProjects(parameters,  page, size).subscribe(
73 44380 argiro.kok
        data => {
74 44726 argiro.kok
            this.searchUtils.totalResults = data[0];
75
            console.info("Advanced Search Projects total="+this.searchUtils.totalResults);
76 44380 argiro.kok
            this.results = data[1];
77
            this.searchPage.updateBaseUrlWithParameters();
78
            var errorCodes:ErrorCodes = new ErrorCodes();
79 44587 argiro.kok
             this.searchUtils.status = errorCodes.DONE;
80 44726 argiro.kok
            if(this.searchUtils.totalResults == 0 ){
81 44587 argiro.kok
              this.searchUtils.status = errorCodes.NONE;
82 44380 argiro.kok
            }
83
        },
84
        err => {
85 44907 argiro.kok
            console.log(err);
86 44380 argiro.kok
            console.info("error");
87
            //TODO check erros (service not available, bad request)
88
            // if( ){
89 44587 argiro.kok
            //   this.searchUtils.status = errorCodes.ERROR;
90 44380 argiro.kok
            // }
91
            var errorCodes:ErrorCodes = new ErrorCodes();
92 44587 argiro.kok
            this.searchUtils.status = errorCodes.NOT_AVAILABLE;
93 44380 argiro.kok
        }
94
    );
95
  }
96
  private setFilters(){
97
    //TODO set filters from
98
  }
99
100 44826 argiro.kok
  public queryChanged($event) {
101 44380 argiro.kok
    var parameters = $event.value;
102 44587 argiro.kok
    this.getResults(parameters, this.searchUtils.page,this.searchUtils.size);
103 44380 argiro.kok
    console.info("queryChanged: Execute search query "+parameters);
104
105
  }
106
107
108
}