Code coverage report for src/filters/simple-filter/filter-component.js

Statements: 40% (8 / 20)      Branches: 0% (0 / 10)      Functions: 33.33% (2 / 6)      Lines: 40% (8 / 20)      Ignored: none     

All files » src/filters/simple-filter/ » filter-component.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 591               12   12   12             1       1       1       1                                                      
angular.module('patternfly.filters').component('pfFilter', {
  bindings: {
    config: '='
  },
  templateUrl: 'filters/simple-filter/filter.html',
  controller: function () {
    'use strict';
 
    var ctrl = this;
 
    ctrl.$onInit = function () {
 
      angular.extend(ctrl,
        {
          addFilter: addFilter
        }
      );
    };
 
    function filterExists (filter) {
      return angular.isDefined(_.find(ctrl.config.appliedFilters, {title: filter.title, value: filter.value}));
    }
 
    function findDuplicateComplexSelect (item) {
      return item.value.filterCategory;
    }
 
    function enforceSingleSelect (filter) {
      _.remove(ctrl.config.appliedFilters, {title: filter.title});
    }
 
    function addFilter (field, value) {
      var newFilter = {
        id: field.id,
        title: field.title,
        type: field.filterType,
        value: value
      };
 
      if (!filterExists(newFilter)) {
 
        if (newFilter.type === 'select') {
          enforceSingleSelect(newFilter);
        }
 
        if (field.filterType === 'complex-select' && !field.filterMultiselect) {
          _.remove(ctrl.config.appliedFilters, findDuplicateComplexSelect);
        }
 
        ctrl.config.appliedFilters.push(newFilter);
 
        if (ctrl.config.onFilterChange) {
          ctrl.config.onFilterChange(ctrl.config.appliedFilters);
        }
      }
    }
  }
});