Project

General

Profile

1 61381 k.triantaf
import {Component, Input, Output, EventEmitter} from '@angular/core';
2
import { RangeFilter } from './rangeFilterHelperClasses.class';
3
import { Dates } from "../string-utils.class";
4
import {ActivatedRoute, Router} from "@angular/router";
5
import {Filter, Value} from "../../searchPages/searchUtils/searchHelperClasses.class";
6
import {properties} from "../../../../environments/environment";
7
8
@Component({
9
  selector: 'range-filter',
10
  templateUrl: 'rangeFilter.component.html'
11
})
12
13
export class RangeFilterComponent {
14
15
  @Input() filter:RangeFilter;
16
  @Input() isDisabled:boolean = false;
17
  @Input() showQuickButtons:boolean = true;
18
  public _maxCharacters:number =28;
19
  public focusedInput: string = "";
20
  @Input() yearMin: number = Dates.yearMin;
21
  @Input() yearMax: number = Dates.yearMax;
22
  @Input() mandatoryRange:boolean = false;
23
  public currentYear: number = Dates.currentYear;
24
25
  @Output() onFilterChange = new EventEmitter();
26
  @Input() actionRoute:boolean = false;
27
  queryParams = {};
28
  constructor(private _router: Router, private route: ActivatedRoute) {}
29
30
  ngOnInit() {
31
    this.route.queryParams.subscribe(params => {
32
      this.queryParams = Object.assign({}, params);
33
    });
34
  }
35
36
  public _formatTitle(title){
37
    return ((title.length > this._maxCharacters)?(title.substring(0,(this._maxCharacters - ('...').length))+"..."):title);
38
  }
39
40
  yearChanged(yearsSelected: number = null){
41
    if(yearsSelected != null) {
42
      this.filter.selectedFromValue = (this.currentYear - yearsSelected) + "";
43
      this.filter.selectedToValue = this.currentYear + "";
44
    }
45
    this.onFilterChange.emit({
46
      value: this.filter
47
    });
48
  }
49
50
  clearFilter() {
51
    this.filter.selectedFromValue = null;
52
    this.filter.selectedToValue = null;
53
    this.onFilterChange.emit({
54
      value: this.filter
55
    });
56
  }
57
58
  getFilterName(value){
59
    let name = value.name +" ("+ value.number.format()+")";
60
    return name;
61
  }
62
63
  stringToNum(value: string): number {
64
    return +(value);
65
  }
66
  getFilterUrl(year:number, selected:boolean){
67
    return properties.baseLink + (this._router.url.indexOf('year=range') == -1 ? this._router.url: (this._router.url.split("year=range"+this.filter.selectedFromValue+':'+this.filter.selectedToValue).join(''))) + (selected ? '' : (this._router.url.indexOf('?')!=-1?'&':'?') +'year=range'+(this.currentYear - year) + ':'+ this.currentYear);
68
  }
69
  getRoute(){
70
    return properties.baseLink + this._router.url.split("?")[0];
71
  }
72
  getParams(year:number, selected:boolean){
73
    let params = Object.assign({}, this.queryParams);
74
    if(!selected){
75
      params['year'] = 'range'+(this.currentYear - year) + ':'+ this.currentYear;
76
    }else{
77
      delete params['year'];
78
    }
79
80
    delete params['page'];
81
    return params;
82
  }
83
}