"use strict"; angular.module("vocabulary") .component("checkBoxFilter", { templateUrl: "/js/redesign-angular/premadeLessons/premadeFilters/check-box-filter.html", controller: "CheckBoxFilterController", bindings: { levels : "<", resources: "<", filterField: "<", onFilterChanged: "&" } }) .controller("CheckBoxFilterController", [ function(){ var ctrl = this; this.$onInit = init; ctrl.allAreFalse = true; function init(){ ctrl.levels.forEach(function(level){ level['checked'] = false; }); ctrl.onFilterChanged({ $event: { filteredResources: ctrl.resources } }); } function meetsFilterLevels(filterLevelToCheck){ var isInSet = false; for(var i = 0; i < ctrl.levels.length; i++){ var level = ctrl.levels[i]; if(level.topicId == filterLevelToCheck && level.checked){ isInSet = true; break; } } return isInSet; } ctrl.updateLevels = function(checkedLevel){ ctrl.levels.forEach(function(level){ if(level.topicId === checkedLevel.topicId){ level.checked = !level.checked; } }); ctrl.allAreFalse = ctrl.levels.every(function (level) { return level['checked'] === false; }); var filteredResources = []; if(ctrl.allAreFalse){ filteredResources = ctrl.resources; }else { for (var i = 0; i < ctrl.resources.length; i++) { var resource = ctrl.resources[i]; var field = resource[ctrl.filterField]; if (meetsFilterLevels(field)) { filteredResources.push(resource); } } } ctrl.onFilterChanged({ $event: { filteredResources: filteredResources } }); }; } ]);