Project

General

Profile

1 61381 k.triantaf
import {Component, ViewEncapsulation, ComponentRef, ElementRef, Input, EventEmitter, Output} from '@angular/core';
2
import { Filter} from './searchHelperClasses.class';
3
4
@Component({
5
  selector: 'modal-search-filter',
6
  template: `
7
  <div *ngIf="filter!=undefined" [class]="(!isOpen)?'uk-modal ':'uk-modal uk-open uk-animation-fade'" uk-modal  [open]="!isOpen" id="modal-{{filter.filterId}}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
8
    <div class="uk-modal-dialog uk-modal-body">
9
      <button type="button" class="uk-modal-close-default" uk-close (click)="close()"></button>
10
11
12
      <h3  class="uk-margin-bottom-remove uk-margin-top">
13
        {{filter.title}}
14
      </h3>
15
16
      <div class="uk-accordion-content searchFilterBoxValues ">
17
        <div *ngFor = "let value of getSelectedValues(filter)"  class = "uk-animation-fade filterItem">
18
19
           <span class="filterName"><div title = "{{value.name}}">
20
           <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterModalChange(value.selected)">
21
           {{value.name}} </div></span>
22
           <span class="filterNumber" *ngIf = "showResultCount === true" >  ({{value.number | number}})</span>
23
        </div>
24
        <hr *ngIf="getSelectedValues(filter).length > 0 && getNotSelectedValues(filter).length > 0" class="uk-grid-divider uk-margin-remove">
25
        <div *ngFor = "let value of getNotSelectedValues(filter)" class = "uk-animation-fade filterItem">
26
           <span class="filterName"><div title = "{{value.name}}">
27
           <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterModalChange(value.selected)">
28
           {{value.name}} </div></span>
29
           <span class="filterNumber" *ngIf = "showResultCount === true" >  ({{value.number}})</span>
30
        </div>
31
      </div>
32
    </div>
33
  </div>
34
35
  `,
36
  encapsulation: ViewEncapsulation.None,
37
})
38
/**
39
  * API to an open search filter window.
40
  */
41
export class SearchFilterModalComponent{
42
  @Input() filter: Filter;
43
  @Input() showResultCount:boolean = true;
44
  @Output() modalChange = new EventEmitter();
45
46
  public isOpen:boolean=false;
47
48
  constructor( public _elementRef: ElementRef){}
49
50
  filterModalChange(selected:boolean) {
51
    //console.info("Modal Changed");
52
    this.filterChange(selected);
53
    this.modalChange.emit({
54
      value: selected
55
    });
56
    this.close();
57
  }
58
  filterChange(selected:boolean){
59
      if(selected){
60
          this.filter.countSelectedValues++;
61
          // this.reorderFilterValues();
62
      }else{
63
          this.filter.countSelectedValues--;
64
          // this.reorderFilterValues();
65
      }
66
  }
67
  getSelectedValues(filter):any{
68
    var selected = [];
69
    if(filter.countSelectedValues >0){
70
      for (var i=0; i < filter.values.length; i++){
71
        if(filter.values[i].selected){
72
          selected.push(filter.values[i]);
73
        }
74
      }
75
    }
76
    return selected;
77
78
  }
79
  getNotSelectedValues(filter):any{
80
    var notSselected = [];
81
    if(filter.countSelectedValues >0){
82
      for (var i=0; i < filter.values.length; i++){
83
        if(!filter.values[i].selected){
84
          notSselected.push(filter.values[i]);
85
        }
86
      }
87
    }else {
88
      notSselected = filter.values;
89
    }
90
    return notSselected;
91
  }
92
93
  open() {
94
    this.isOpen = true;
95
  }
96
97
  close() {
98
    this.isOpen = false;
99
  }
100
101
}