(function() { "use strict"; angular.module('shared') .component('bookFilter', { templateUrl: '/shared/js/angular/book-grid/book-filter.html', controller: 'bookFilterController' }) .controller('bookFilterController', ['messageHandler','ResourceList','_','FeatureCheck','constantValues','resourceSorting','resourceFilter', function bookFilterController(messageHandler,ResourceList,_,FeatureCheck,constantValues,resourceSorting,resourceFilter) { var ctrl = this; ctrl.selectedFilters = {}; ctrl.$onInit = function() { if (ResourceList.getFilters()) { _.each(ResourceList.getFilters(),function(filterName) { ctrl.selectedFilters[filterName] = true; }); } }; ctrl.selectedSort = function (newSort) { if (newSort) { resourceSorting.setSelectedSort(newSort.key); } var foundSort = null; if (resourceSorting.getSelectedSort()) { foundSort = _.find(constantValues.SORT_OPTIONS, function(oneSort) { return oneSort.key === resourceSorting.getSelectedSort(); }); } return foundSort ? foundSort : constantValues.SORT_OPTIONS[0]; }; ctrl.setView = function(view) { if (view === constantValues.LIST_VIEW) { ResourceList.setView(constantValues.LIST_VIEW); } else { ResourceList.setView(constantValues.GRID_VIEW); } }; ctrl.isGridView = function() { return ResourceList.getView() === constantValues.GRID_VIEW; }; ctrl.isListView = function() { return ResourceList.getView() === constantValues.LIST_VIEW; }; ctrl.getFilteredBooksCount = function() { return ResourceList.getFilteredBooksCount(); }; ctrl.getAllBooksCount = function() { return ResourceList.getAllBooksCount(); }; ctrl.ariaChecked = function(filterName) { return ctrl.selectedFilters[filterName] ? true : false; }; ctrl.getLeveledBookFiltersKeys = function() { return Object.keys(ResourceList.getLeveledBookFilters()); }; ctrl.getCheckboxText = function(filterKey) { return ResourceList.getLeveledBookFilters()[filterKey]; }; ctrl.checkedBox = function() { var newFilters = []; _.each(Object.keys(ctrl.selectedFilters),function(keyName) { if (ctrl.selectedFilters[keyName]) { newFilters.push(keyName); } }); resourceFilter.setFilters(newFilters); }; ctrl.anyFilters = function() { return (ResourceList.getFilters() && ResourceList.getFilters().length > 0) || (ResourceList.getReadingLevels() && ResourceList.getReadingLevels().length > 0); }; ctrl.clearAllFilters = function() { resourceFilter.setReadingLevels(null); if (ResourceList.getFilters() && ResourceList.getFilters().length > 0) { resourceFilter.setFilters(null); ctrl.selectedFilters = {}; } }; ctrl.getSortOptions = function() { return constantValues.SORT_OPTIONS; }; }]); }());