Project

General

Profile

1
import {Component, Input, Output, EventEmitter} from '@angular/core';
2
import {Observable}       from 'rxjs';
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
    @Input() connectCommunityId:string
19
    public showAll:boolean = false;
20
    public _maxCharacters:number =28;
21

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

    
24
    @Output() modalChange = new EventEmitter();
25
    @Output() onFilterChange = new EventEmitter();
26
    keyword = "";
27
    sortBy = "num";
28

    
29

    
30
    public isOpen:boolean=false;
31

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

    
40
    constructor () {
41
    }
42

    
43
    ngOnInit() {
44

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

    
59

    
60
    filterKeywords(value){
61
      if(this.keyword.length > 0){
62
        if(value.toLowerCase().indexOf(this.keyword.toLowerCase()) ==-1){
63
          return false;
64
        }
65
      }
66
      return true;
67
    }
68
    filterChange(selected:boolean){
69
      //console.info("filter change: "+selected);
70
        if(selected){
71
            this.filter.countSelectedValues++;
72
            // this.reorderFilterValues();
73
        }else{
74
            this.filter.countSelectedValues--;
75
            // this.reorderFilterValues();
76
        }
77
        this.onFilterChange.emit({
78
            value: this.filter
79
          });
80
    }
81
    getSelectedValues(filter, sortBy:string = "num"):any{
82
      var selected = [];
83
      if(filter.countSelectedValues >0){
84
        for (var i=0; i < filter.values.length; i++){
85
          if(filter.values[i].selected){
86
            selected.push(filter.values[i]);
87
          }
88
        }
89
      }
90
      if(sortBy == "name"){
91

    
92
        selected.sort((n1,n2)=> {
93
          if (n1.name > n2.name) {
94
              return 1;
95
          }
96

    
97
          if (n1.name < n2.name) {
98
              return -1;
99
          }
100

    
101
          return 0;
102
        });
103
      }
104
      return selected;
105

    
106
    }
107
    getNotSelectedValues(filter, sortBy:string = "num"):any{
108
      var notSselected = [];
109
      //if(filter.countSelectedValues >0){
110
        for (var i=0; i < filter.values.length; i++){
111
          if(!filter.values[i].selected){
112
            notSselected.push(filter.values[i]);
113
          }
114
        }
115
      //}else {
116
      //  notSselected = filter.values;
117
      //}
118

    
119
      if(sortBy == "name"){
120

    
121
        notSselected.sort((n1,n2)=> {
122
          if (n1.name > n2.name) {
123
              return 1;
124
          }
125

    
126
          if (n1.name < n2.name) {
127
              return -1;
128
          }
129

    
130
          return 0;
131
        });
132
      }
133
      return notSselected;
134
    }
135
    // reorderFilterValues() {
136
    //     for(let value of this.filter.values) {
137
    //         if(value.selected) {
138
    //             let index: number = this.filter.values.indexOf(value);
139
    //             let selectedValue:Value = this.filter.values[index];
140
    //
141
    //             this.filter.values.splice(index, 1);
142
    //             this.filter.values.splice(0, 0, selectedValue);
143
    //         }
144
    //     }
145
    // }
146
//     sliceSelected() {
147
//         let values: Value[] = [];
148
//
149
//         for(let value of this.filter.values) {
150
//             if(value.selected) {
151
//                 let index: number = this.filter.values.indexOf(value);
152
//                 let selectedValue:Value = this.filter.values[index];
153
//
154
//                 this.filter.values.splice(index, 1);
155
//                 this.filter.values.splice(0, 0, selectedValue);
156
//             }
157
//         }
158

    
159

    
160
  // toggle() {
161
  //   this.toggleModal.emit({
162
  //     value: this.filter
163
  //   });
164
  // }
165

    
166

    
167
  open() {
168
    this.isOpen = true;
169
  }
170

    
171
  close() {
172
    this.isOpen = false;
173
  }
174

    
175
  // filterChange2(selected:boolean){
176
  //
177
  //   console.info("filter change2");
178
  //     if(selected){
179
  //         this.filter.countSelectedValues++;
180
  //         // this.reorderFilterValues();
181
  //     }else{
182
  //         this.filter.countSelectedValues--;
183
  //         // this.reorderFilterValues();
184
  //     }
185
  //     this.close();
186
  // }
187

    
188
}
(21-21/45)