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

    
6
@Component({
7
    selector: 'search-filter',
8
    template: `
9

    
10
  <div *ngIf= "filter.values.length >0" class = "uk-accordion uk-animation-fade"  data-uk-accordion="{collapse: true, showfirst: true}">
11
        <h3  class="uk-accordion-title uk-margin-bottom-remove uk-margin-top">{{_formatTitle(filter.title,filter.values.length)}}
12
        </h3>
13
        <div data-wrapper="true" style="overflow:hidden;height:0;position:relative;" aria-expanded="false">
14
          <div class="uk-accordion-content searchFilterBoxValues ">
15
            <div *ngFor = "let value of getSelectedValues(filter)"  class = "uk-animation-fade">
16
               <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterChange(value.selected)" />
17
               <span title = "{{value.name}}"> {{_formatName(value)}}</span><span *ngIf = "showResultCount === true" > ({{value.number}})</span>
18
            </div>
19
            <div class="uk-grid-divider uk-margin-remove"></div>
20
            <div *ngFor = "let value of getNotSelectedValues(filter)" class = "uk-animation-fade">
21
               <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterChange(value.selected)" />
22
               <span title = "{{value.name}}"> {{_formatName(value)}}</span><span *ngIf = "showResultCount === true" > ({{value.number}})</span>
23
            </div>
24
           <!--div *ngFor = "let value of filter.values" >
25
              <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterChange(value.selected)" />
26
              <span title = "{{value.name}}"> {{_formatName(value)}}</span><span *ngIf = "showResultCount === true" > ({{value.number}})</span>
27
          </div-->
28
       </div>
29
      </div>
30
    </div>
31

    
32

    
33
    <!--div *ngIf="filter.countSelectedValues == 0 " class = "uk-accordion "  data-uk-accordion="{collapse: true, showfirst: false}">
34
            <h3  class="uk-accordion-title">{{_formatTitle(filter.title,filter.values.length)}}
35
            </h3>
36
            <div data-wrapper="true" style="overflow:hidden;height:0;position:relative;" aria-expanded="false">
37
              <div class="uk-accordion-content searchFilterBoxValues ">
38

    
39
               <div *ngFor = "let value of filter.values" >
40
                  <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterChange(value.selected)" />
41
                  <span title = "{{value.name}}"> {{_formatName(value)}}</span><span *ngIf = "showResultCount === true" > ({{value.number}})</span>
42
              </div>
43
           </div>
44
          </div>
45
        </div-->
46

    
47
    `
48
})
49

    
50
export class SearchFilterComponent {
51

    
52
    @Input() filter:Filter;
53
    @Input() showResultCount:boolean = true;
54
    public showAll:boolean = false;
55
    public _maxCharacters:number =28;
56

    
57

    
58
    constructor () {
59
    }
60

    
61
    ngOnInit() {
62

    
63
    }
64
    public _formatTitle(title,length){
65
      return (((title+" ("+length+")").length >this._maxCharacters)?(title.substring(0,(this._maxCharacters - (" ("+length+")").length - ('...').length))+"..."):title+" ("+length+")")
66
    }
67
    private _formatName(value){
68
      return (((value.name+" ("+value.number+")").length >this._maxCharacters)?(value.name.substring(0,(this._maxCharacters - (" ("+value.number+")").length - ('...').length))+"..."):value.name)
69
    }
70
    toggleShowAll(){
71
        this.showAll = !this.showAll;
72
        if(this.showAll == false) {
73
            this.reorderFilterValues();
74
        }
75
    }
76

    
77
    filterChange(selected:boolean){
78
        if(selected){
79
            this.filter.countSelectedValues++;
80
            // this.reorderFilterValues();
81
        }else{
82
            this.filter.countSelectedValues--;
83
            // this.reorderFilterValues();
84
        }
85

    
86
    }
87
    getSelectedValues(filter):any{
88
      var selected = [];
89
      if(filter.countSelectedValues >0){
90
        for (var i=0; i < filter.values.length; i++){
91
          if(filter.values[i].selected){
92
            selected.push(filter.values[i]);
93
          }
94
        }
95
      }
96
      return selected;
97

    
98
    }
99
    getNotSelectedValues(filter):any{
100
      var notSselected = [];
101
      if(filter.countSelectedValues >0){
102
        for (var i=0; i < filter.values.length; i++){
103
          if(!filter.values[i].selected){
104
            notSselected.push(filter.values[i]);
105
          }
106
        }
107
      }else {
108
        notSselected = filter.values;
109
      }
110
      return notSselected;
111
    }
112
    reorderFilterValues() {
113
        for(let value of this.filter.values) {
114
            if(value.selected) {
115
                let index: number = this.filter.values.indexOf(value);
116
                let selectedValue:Value = this.filter.values[index];
117

    
118
                this.filter.values.splice(index, 1);
119
                this.filter.values.splice(0, 0, selectedValue);
120
            }
121
        }
122
    }
123
//     sliceSelected() {
124
//         let values: Value[] = [];
125
//
126
//         for(let value of this.filter.values) {
127
//             if(value.selected) {
128
//                 let index: number = this.filter.values.indexOf(value);
129
//                 let selectedValue:Value = this.filter.values[index];
130
//
131
//                 this.filter.values.splice(index, 1);
132
//                 this.filter.values.splice(0, 0, selectedValue);
133
//             }
134
//         }
135
}
(10-10/20)