Project

General

Profile

1
import {Component, ViewEncapsulation, ComponentRef, ElementRef, Input, EventEmitter, Output} from '@angular/core';
2
// import { DynamicComponentLoader} from '@angular/core';
3

    
4
import {Open} from '../../utils/modal/open.component';
5
import { Filter} from './searchHelperClasses.class';
6

    
7
@Component({
8
  selector: 'modal-search-filter',
9
  template: `
10
  <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">
11
    <div class="uk-modal-dialog uk-modal-body">
12
      <button type="button" class="uk-modal-close-default" uk-close (click)="close()"></button>
13

    
14

    
15
      <h3  class="uk-margin-bottom-remove uk-margin-top">
16
        {{filter.title}}
17
      </h3>
18

    
19
      <div class="uk-accordion-content searchFilterBoxValues ">
20
        <div *ngFor = "let value of getSelectedValues(filter)"  class = "uk-animation-fade filterItem">
21

    
22
           <span class="filterName"><div title = "{{value.name}}">
23
           <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterModalChange(value.selected)">
24
           {{value.name}} </div></span>
25
           <span class="filterNumber" *ngIf = "showResultCount === true" >  ({{value.number}})</span>
26
        </div>
27
        <hr *ngIf="getSelectedValues(filter).length > 0 && getNotSelectedValues(filter).length > 0" class="uk-grid-divider uk-margin-remove">
28
        <div *ngFor = "let value of getNotSelectedValues(filter)" class = "uk-animation-fade filterItem">
29
           <span class="filterName"><div title = "{{value.name}}">
30
           <input [(ngModel)]="value.selected" type="checkbox" (ngModelChange)="filterModalChange(value.selected)">
31
           {{value.name}} </div></span>
32
           <span class="filterNumber" *ngIf = "showResultCount === true" >  ({{value.number}})</span>
33
        </div>
34
      </div>
35
    </div>
36
  </div>
37

    
38
  `,
39
  encapsulation: ViewEncapsulation.None,
40
})
41
/**
42
  * API to an open search filter window.
43
  */
44
export class SearchFilterModalComponent{
45
  @Input() filter: Filter;
46
  @Input() showResultCount:boolean = true;
47
  @Output() modalChange = new EventEmitter();
48

    
49
  public isOpen:boolean=false;
50

    
51
  constructor( public _elementRef: ElementRef){}
52

    
53
  filterModalChange(selected:boolean) {
54
    console.info("Modal Changed");
55
    this.filterChange(selected);
56
    this.modalChange.emit({
57
      value: selected
58
    });
59
    this.close();
60
  }
61
  filterChange(selected:boolean){
62
      if(selected){
63
          this.filter.countSelectedValues++;
64
          // this.reorderFilterValues();
65
      }else{
66
          this.filter.countSelectedValues--;
67
          // this.reorderFilterValues();
68
      }
69
  }
70
  getSelectedValues(filter):any{
71
    var selected = [];
72
    if(filter.countSelectedValues >0){
73
      for (var i=0; i < filter.values.length; i++){
74
        if(filter.values[i].selected){
75
          selected.push(filter.values[i]);
76
        }
77
      }
78
    }
79
    return selected;
80

    
81
  }
82
  getNotSelectedValues(filter):any{
83
    var notSselected = [];
84
    if(filter.countSelectedValues >0){
85
      for (var i=0; i < filter.values.length; i++){
86
        if(!filter.values[i].selected){
87
          notSselected.push(filter.values[i]);
88
        }
89
      }
90
    }else {
91
      notSselected = filter.values;
92
    }
93
    return notSselected;
94
  }
95

    
96
  open() {
97
    this.isOpen = true;
98
  }
99

    
100
  close() {
101
    this.isOpen = false;
102
  }
103

    
104
}
(18-18/36)