Project

General

Profile

1
import {Component, Input, ViewChild} from '@angular/core';
2
import { ActivatedRoute} from '@angular/router';
3
import { Filter, Value} from '../searchUtils/searchHelperClasses.class';
4
import {SearchDataprovidersService} from '../../services/searchDataproviders.service';
5
import {SearchResult}     from '../../utils/entities/searchResult';
6
import {ErrorCodes} from '../../utils/properties/errorCodes';
7
import {SearchFields, FieldDetails} from '../../utils/properties/searchFields';
8
import {SearchPageTableViewComponent } from '../searchUtils/searchPageTableView.component';
9
import {SearchUtilsClass } from '../searchUtils/searchUtils.class';
10
import{EnvProperties} from '../../utils/properties/env-properties';
11

    
12
@Component({
13
    selector: 'search-entity-registries-table',
14
    template: `
15

    
16
    <search-page-table pageTitle="Registries/ Databases"
17
                       type="content providers" entityType="dataprovider" [(filters)] = "filters"
18
                       [(results)] = "results" [(searchUtils)] = "searchUtils"
19
                       [showResultCount]=false
20
                       [disableForms]="disableForms"
21
                       [searchViewLink]="'/search/entity-registries'"
22
                       searchFormClass="entityRegistriesTableSearchForm"
23
                       formPlaceholderText="Search for Registries/ Databases">
24
    </search-page-table>
25

    
26
    `
27

    
28
})
29
export class SearchEntityRegistriesTableComponent {
30
  private errorCodes: ErrorCodes;
31

    
32
  public results =[];
33
  public filters =[];
34
  public baseUrl:string;
35
  public searchUtils:SearchUtilsClass = new SearchUtilsClass();
36
  public sub: any; public subResults: any;
37
  public _location:Location;
38
  public searchFields:SearchFields = new SearchFields();
39
  public refineFields: string[] =  this.searchFields.ENTITY_REGISTRIES_FIELDS;
40
  public disableForms: boolean = false;
41
properties:EnvProperties;
42
  @ViewChild (SearchPageTableViewComponent) searchPage : SearchPageTableViewComponent ;
43

    
44
  constructor (private route: ActivatedRoute, private _searchDataprovidersService: SearchDataprovidersService ) {
45
    this.errorCodes = new ErrorCodes();
46
    this.searchUtils.status = this.errorCodes.LOADING;
47
  }
48

    
49
  public ngOnInit() {
50
    this.route.data
51
      .subscribe((data: { envSpecific: EnvProperties }) => {
52
        this.properties = data.envSpecific;
53
        this.baseUrl = data.envSpecific.searchLinkToEntityRegistriesDataProviders;
54

    
55
      });
56
    this.searchPage.refineFields = this.refineFields;
57
    this.sub =  this.route.queryParams.subscribe(params => {
58
      this.searchUtils.keyword = (params['keyword']?params['keyword']:'');
59
      //this.searchUtils.page = (params['page']=== undefined)?1:+params['page'];
60
      this.filters = this.createFilters();
61

    
62
      this.searchPage.getParametersFromUrl(params);
63
      this._getResults("", false, this.searchUtils.page);
64
    });
65
  }
66

    
67
  public ngOnDestroy() {
68
    if(this.sub){
69
      this.sub.unsubscribe();
70
    }
71
    if(this.subResults){
72
      this.subResults.unsubscribe();
73
    }  }
74
    private _getResults(parameters:string,refine:boolean, page: number){
75
      //var errorCodes:ErrorCodes = new ErrorCodes();
76
      this.searchUtils.status = this.errorCodes.LOADING;
77
      this.disableForms = true;
78
      this.results = [];
79
      this.searchUtils.totalResults = 0;
80

    
81
      let size: number = 0;
82
      this.subResults = this._searchDataprovidersService.searchEntityRegistriesTable(this.properties).subscribe(
83
          data => {
84
              size = data;
85
              if(size > 0) {
86
                this.subResults = this._searchDataprovidersService.searchEntityRegistries("",null, page, size, [],this.properties).subscribe(
87
                    data => {
88
                        this.searchUtils.totalResults = data[0];
89
                        console.info("search Entity Registries [total results:"+this.searchUtils.totalResults+"]");
90
                        this.results = data[1];
91
                        this.searchPage.checkSelectedFilters(this.filters);
92

    
93
                        //var errorCodes:ErrorCodes = new ErrorCodes();
94
                        this.searchUtils.status = this.errorCodes.DONE;
95
                        if(this.searchUtils.totalResults == 0 ){
96
                          this.searchUtils.status = this.errorCodes.NONE;
97
                        }
98
                        this.disableForms = false;
99
                        this.searchPage.triggerInitialLoad();
100
                        this.searchPage.transform(this.results);
101
                    },
102
                    err => {
103
                        console.log(err);
104
                         //TODO check erros (service not available, bad request)
105
                        // if( ){
106
                        //   this.searchUtils.status = ErrorCodes.ERROR;
107
                        // }
108
                        //var errorCodes:ErrorCodes = new ErrorCodes();
109
                        //this.searchUtils.status = errorCodes.ERROR;
110
                        if(err.status == '404') {
111
                          this.searchUtils.status = this.errorCodes.NOT_FOUND;
112
                        } else if(err.status == '500') {
113
                          this.searchUtils.status = this.errorCodes.ERROR;
114
                        } else {
115
                          this.searchUtils.status = this.errorCodes.NOT_AVAILABLE;
116
                        }
117

    
118
                        this.disableForms = false;
119

    
120
                    }
121
                );
122
              } else {
123
                this.searchPage.checkSelectedFilters(this.filters);
124

    
125
                //var errorCodes:ErrorCodes = new ErrorCodes();
126
                this.searchUtils.status = this.errorCodes.NONE;
127
                this.disableForms = false;
128
              }
129
          },
130
          err => {
131
              console.log(err);
132
               //TODO check erros (service not available, bad request)
133
              // if( ){
134
              //   this.searchUtils.status = ErrorCodes.ERROR;
135
              // }
136
              //var errorCodes:ErrorCodes = new ErrorCodes();
137
              //this.searchUtils.status = errorCodes.ERROR;
138
              if(err.status == '404') {
139
                this.searchUtils.status = this.errorCodes.NOT_FOUND;
140
              } else if(err.status == '500') {
141
                this.searchUtils.status = this.errorCodes.ERROR;
142
              } else {
143
                this.searchUtils.status = this.errorCodes.NOT_AVAILABLE;
144
              }
145
          }
146
      );
147
/*
148
       this.subResults = this._searchDataprovidersService.searchEntityRegistries(parameters,(refine)?this.searchPage.getRefineFieldsQuery():null, page, size, []).subscribe(
149
          data => {
150
              this.searchUtils.totalResults = data[0];
151
              console.info("search Entity Registries: [Parameters:"+parameters+" ]  [total results:"+this.searchUtils.totalResults+"]");
152
              this.results = data[1];
153
              this.searchPage.checkSelectedFilters(this.filters);
154
              this.searchPage.updateBaseUrlWithParameters(this.filters);
155
              var errorCodes:ErrorCodes = new ErrorCodes();
156
              this.searchUtils.status = errorCodes.DONE;
157
              if(this.searchUtils.totalResults == 0 ){
158
                this.searchUtils.status = errorCodes.NONE;
159
              }
160
              //this.searchPage.closeLoading();
161
              this.disableForms = false;
162

    
163
          },
164
          err => {
165
              console.log(err);
166
               //TODO check erros (service not available, bad request)
167
              // if( ){
168
              //   this.searchUtils.status = ErrorCodes.ERROR;
169
              // }
170
              var errorCodes:ErrorCodes = new ErrorCodes();
171
              this.searchUtils.status = errorCodes.ERROR;
172
              //this.searchPage.closeLoading();
173
              this.disableForms = false;
174

    
175
          }
176
      );
177
*/
178
    }
179
  private setFilters(){
180
    //TODO set filters from
181
  }
182

    
183

    
184
  private createFilters():Filter[] {
185
    var filter_names=["Type","Compatibility Level"];
186
    var filter_ids=["datasourcetypename","datasourcecompatibilityname"];
187
    var searchFields = new SearchFields();
188
    var filter_original_ids = searchFields.ENTITY_REGISTRIES_FIELDS;
189
    var value_names=[
190
      ["Funder database","Registry of repositories","Scholarly Comm. Infrastructure","Registry","Information Space","Web Source"],
191

    
192
      ["OpenAIRE Basic (DRIVER OA)","OpenAIRE 2.0 (EC funding)", "OpenAIRE 2.0+ (DRIVER OA, EC funding)", "OpenAIRE 3.0 (OA, funding)","OpenAIRE Data (funded, referenced datasets)"]];
193

    
194
    var value_original_ids=[
195
      ["Funder database","Registry of repositories","Scholarly Comm. Infrastructure","Registry","Information Space","Web Source"],
196
      //["entityregistry::projects","entityregistry::repositories","scholarcomminfra","entityregistry","infospace","websource"],
197
      //["driver","openaire2.0", "driver-openaire2.0", "openaire3.0","openaire2.0_data"]
198
    ["OpenAIRE Basic (DRIVER OA)","OpenAIRE 2.0 (EC funding)", "OpenAIRE 2.0+ (DRIVER OA, EC funding)", "OpenAIRE 3.0 (OA, funding)","OpenAIRE Data (funded, referenced datasets)"]];
199

    
200
    var filters: Filter[] =[];
201
    for(var i =0 ; i < filter_names.length;i++){
202
      var values:Value[] = [];
203
      for(var j =0 ; j < value_names[i].length;j++){
204
        var value:Value = {name: value_names[i][j], id: value_original_ids[i][j], number:j, selected:false}
205
        values.push(value);
206
      }
207
       var filter:Filter = {title: filter_names[i], filterId: filter_ids[i], originalFilterId:  filter_original_ids[i], values : values, countSelectedValues:0, "filterOperator": 'or' };
208
       filters.push(filter);
209
    }
210
    return filters;
211
    }
212
}
(7-7/12)