Project

General

Profile

1
import {Component, Input, Output, EventEmitter} from '@angular/core';
2
import {Observable}       from 'rxjs/Observable';
3

    
4
import { Filter, Value} from './searchHelperClasses.class';
5
import {Open} from '../../utils/modal/open.component';
6

    
7
@Component({
8
    selector: 'search-filter',
9
    templateUrl: 'searchFilter.component.html'
10
})
11

    
12
export class SearchFilterComponent {
13

    
14
    @Input() filter:Filter;
15
    @Input() showResultCount:boolean = true;
16
    @Input() isDisabled:boolean = false;
17
    @Input() addShowMore:boolean = true;
18

    
19
    public showAll:boolean = false;
20
    public _maxCharacters:number =28;
21

    
22
    @Output() toggleModal = new EventEmitter();
23

    
24
    @Output() modalChange = new EventEmitter();
25

    
26

    
27
    public isOpen:boolean=false;
28

    
29
    filterModalChange() {
30
      console.info("Modal Changed");
31
      this.modalChange.emit({
32
        value: true
33
      });
34
      //this.close();
35
    }
36

    
37
    constructor () {
38
    }
39

    
40
    ngOnInit() {
41

    
42
    }
43
    public _formatTitle(title,length){
44
      return (((title+" ("+length+")").length >this._maxCharacters)?(title.substring(0,(this._maxCharacters - (" ("+length+")").length - ('...').length))+"..."):title+" ("+((length >= 99)?length+"+":length)+")")
45
    }
46
    private _formatName(value){
47
      return value.name;//(((value.name+" ("+value.number+")").length >this._maxCharacters)?(value.name.substring(0,(this._maxCharacters - (" ("+value.number+")").length - ('...').length))+"..."):value.name)
48
    }
49
    toggleShowAll(){
50
        this.showAll = !this.showAll;
51
        if(this.showAll == false) {
52
            this.reorderFilterValues();
53
        }
54
    }
55

    
56
    filterChange(selected:boolean){
57
      console.info("filter change: "+selected);
58
        if(selected){
59
            this.filter.countSelectedValues++;
60
            // this.reorderFilterValues();
61
        }else{
62
            this.filter.countSelectedValues--;
63
            // this.reorderFilterValues();
64
        }
65
    }
66
    getSelectedValues(filter):any{
67
      var selected = [];
68
      if(filter.countSelectedValues >0){
69
        for (var i=0; i < filter.values.length; i++){
70
          if(filter.values[i].selected){
71
            selected.push(filter.values[i]);
72
          }
73
        }
74
      }
75
      return selected;
76

    
77
    }
78
    getNotSelectedValues(filter):any{
79
      var notSselected = [];
80
      if(filter.countSelectedValues >0){
81
        for (var i=0; i < filter.values.length; i++){
82
          if(!filter.values[i].selected){
83
            notSselected.push(filter.values[i]);
84
          }
85
        }
86
      }else {
87
        notSselected = filter.values;
88
      }
89
      return notSselected;
90
    }
91
    reorderFilterValues() {
92
        for(let value of this.filter.values) {
93
            if(value.selected) {
94
                let index: number = this.filter.values.indexOf(value);
95
                let selectedValue:Value = this.filter.values[index];
96

    
97
                this.filter.values.splice(index, 1);
98
                this.filter.values.splice(0, 0, selectedValue);
99
            }
100
        }
101
    }
102
//     sliceSelected() {
103
//         let values: Value[] = [];
104
//
105
//         for(let value of this.filter.values) {
106
//             if(value.selected) {
107
//                 let index: number = this.filter.values.indexOf(value);
108
//                 let selectedValue:Value = this.filter.values[index];
109
//
110
//                 this.filter.values.splice(index, 1);
111
//                 this.filter.values.splice(0, 0, selectedValue);
112
//             }
113
//         }
114

    
115

    
116
  toggle() {
117
    this.toggleModal.emit({
118
      value: this.filter
119
    });
120
  }
121

    
122

    
123
  open() {
124
    this.isOpen = true;
125
  }
126

    
127
  close() {
128
    this.isOpen = false;
129
  }
130

    
131
  filterChange2(selected:boolean){
132

    
133
    console.info("filter change2");
134
      if(selected){
135
          this.filter.countSelectedValues++;
136
          // this.reorderFilterValues();
137
      }else{
138
          this.filter.countSelectedValues--;
139
          // this.reorderFilterValues();
140
      }
141
      this.close();
142
  }
143

    
144
}
(16-16/36)