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
    <h4>{{filter.title}}</h4>
10
    <p *ngFor = "let value of filter.values.slice(0,5)" >
11
        <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterChange(value.selected)" />
12
        <span title = "{{value.name}}"> {{_formatName(value)}}</span><span *ngIf = "showResultCount === true" > ({{value.number}})</span>
13
    </p>
14

    
15
    <a *ngIf = "!showAll && filter.values.length > 5" (click)="toggleShowAll()" > More</a>
16
    <span *ngIf = "filter.values.length > 5 && showAll" >
17
        <p *ngFor = "let value of filter.values.slice(5)" >
18
            <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterChange(value.selected)"  />
19
            <span  title = "{{value.name}}">  {{_formatName(value)}}</span><span *ngIf = "showResultCount === true" > ({{value.number}}) </span>
20
        </p>
21
        <a (click)="toggleShowAll()" > Less</a>
22
    </span>
23

    
24
    `
25
})
26

    
27
export class SearchFilterComponent {
28
    // @Input() title;
29
    // @Input() filterId;
30
    // @Input() values; //array[] " name, id, number, selected"
31
    // @Input() countSelectedValues:number = 0; //array[] " name, id, number, selected"
32
    //@Output() change  = new EventEmitter();
33
    @Input() test:{value:number} ;
34
    @Input() filter:Filter;
35
    @Input() showResultCount:boolean = true;
36
    private showAll:boolean = false;
37
    private _maxCharacters:number =30;
38

    
39
    constructor () {
40
// var str=(((value.name+" ("+value.number+")").length >_maxCharacters)?(value.name.substring(0,(_maxCharacters - (" ("+value.number+")").length - ('...').length))):value.name);
41
    }
42

    
43
    ngOnInit() {
44

    
45
    }
46

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

    
57
    filterChange(selected:boolean){
58
        if(selected){
59
            this.filter.countSelectedValues++;
60
        }else{
61
            this.filter.countSelectedValues--;
62
        }
63

    
64
        //this.change.emit({
65
        //value: true
66
        //});
67
    }
68

    
69
    reorderFilterValues() {
70
        let values: Value[] = [];
71

    
72
        for(let value of this.filter.values) {
73
            if(value.selected) {
74
                let index: number = this.filter.values.indexOf(value);
75
                let selectedValue:Value = this.filter.values[index];
76

    
77
                this.filter.values.splice(index, 1);
78
                this.filter.values.splice(0, 0, selectedValue);
79
            }
80
        }
81
    }
82
}
(3-3/8)