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.countSelectedValues>0 " class = "uk-accordion "  data-uk-accordion="{collapse: true, showfirst: true}">
11
        <h3  class="uk-accordion-title">{{_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

    
16
           <div *ngFor = "let value of filter.values" >
17
              <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterChange(value.selected)" />
18
              <span title = "{{value.name}}"> {{_formatName(value)}}</span><span *ngIf = "showResultCount === true" > ({{value.number}})</span>
19
          </div>
20
       </div>
21
      </div>
22
    </div>
23

    
24

    
25
    <div *ngIf="filter.countSelectedValues == 0 " class = "uk-accordion "  data-uk-accordion="{collapse: true, showfirst: false}">
26
            <h3  class="uk-accordion-title">{{_formatTitle(filter.title,filter.values.length)}}
27
            </h3>
28
            <div data-wrapper="true" style="overflow:hidden;height:0;position:relative;" aria-expanded="false">
29
              <div class="uk-accordion-content searchFilterBoxValues ">
30

    
31
               <div *ngFor = "let value of filter.values" >
32
                  <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterChange(value.selected)" />
33
                  <span title = "{{value.name}}"> {{_formatName(value)}}</span><span *ngIf = "showResultCount === true" > ({{value.number}})</span>
34
              </div>
35
           </div>
36
          </div>
37
        </div>
38

    
39
    `
40
})
41

    
42
export class SearchFilterComponent {
43

    
44
    @Input() filter:Filter;
45
    @Input() showResultCount:boolean = true;
46
    public showAll:boolean = false;
47
    public _maxCharacters:number =30;
48

    
49

    
50
    constructor () {
51
    }
52

    
53
    ngOnInit() {
54

    
55
    }
56
    public _formatTitle(title,length){
57
      return (((title+" ("+length+")").length >this._maxCharacters)?(title.substring(0,(this._maxCharacters - (" ("+length+")").length - ('...').length))+"..."):title+" ("+length+")")
58
    }
59
    private _formatName(value){
60
      return (((value.name+" ("+value.number+")").length >this._maxCharacters)?(value.name.substring(0,(this._maxCharacters - (" ("+value.number+")").length - ('...').length))+"..."):value.name)
61
    }
62
    toggleShowAll(){
63
        this.showAll = !this.showAll;
64
        if(this.showAll == false) {
65
            this.reorderFilterValues();
66
        }
67
    }
68

    
69
    filterChange(selected:boolean){
70
        if(selected){
71
            this.filter.countSelectedValues++;
72
            this.reorderFilterValues();
73
        }else{
74
            this.filter.countSelectedValues--;
75
            this.reorderFilterValues();
76
        }
77

    
78
    }
79

    
80
    reorderFilterValues() {
81
        for(let value of this.filter.values) {
82
            if(value.selected) {
83
                let index: number = this.filter.values.indexOf(value);
84
                let selectedValue:Value = this.filter.values[index];
85

    
86
                this.filter.values.splice(index, 1);
87
                this.filter.values.splice(0, 0, selectedValue);
88
            }
89
        }
90
    }
91
//     sliceSelected() {
92
//         let values: Value[] = [];
93
//
94
//         for(let value of this.filter.values) {
95
//             if(value.selected) {
96
//                 let index: number = this.filter.values.indexOf(value);
97
//                 let selectedValue:Value = this.filter.values[index];
98
//
99
//                 this.filter.values.splice(index, 1);
100
//                 this.filter.values.splice(0, 0, selectedValue);
101
//             }
102
//         }
103
}
(4-4/10)