(function() { "use strict"; angular.module("shared") .service("resourceFilter", ["ResourceList","constantValues","messageHandler","$http", function (ResourceList,constantValues,messageHandler,$http) { var readingLevelKey = 'resource-card-reading-levels'; var showMeOnlyKey = 'resource-card-show-me-only'; if (ResourceList.getType() == constantValues.TYPE_LEVELED_BOOKS) { getSavedReadingLevels(); } function getSavedReadingLevels() { var savedLevels = sessionStorage.getItem(readingLevelKey); _.each(ResourceList.getReadingLevels(), function (oneLevel) { oneLevel['active'] = savedLevels == null || savedLevels.length < 1; }); if (savedLevels == null || savedLevels.length < 1) { return; } savedLevels = JSON.parse(savedLevels); var newReadingLevels = []; _.each(savedLevels, function (oneLevel) { var foundLevel = ResourceList.getLevelBarLevels()[oneLevel]; foundLevel['active'] = true; newReadingLevels.push(foundLevel); }); setReadingLevels(newReadingLevels); } function saveReadingLevels(readingLevels) { sessionStorage.removeItem(readingLevelKey); if (readingLevels) { var levels = []; _.each(readingLevels, function (oneLevel) { levels.push(oneLevel['level']); }); sessionStorage.setItem(readingLevelKey,JSON.stringify(levels)); } } function saveShowMeOnlyFilters(showMeOnlyData) { sessionStorage.removeItem(showMeOnlyKey); if (showMeOnlyData && showMeOnlyData.length > 0) { sessionStorage.setItem(showMeOnlyKey,JSON.stringify(showMeOnlyData)); } } function setShowMeOnlyFilters(showMeOnlyData) { ResourceList.setShowMeOnlyFilters(showMeOnlyData); showMeOnlyData = !showMeOnlyData ? [] : showMeOnlyData; var newShowMeOnlyData = _.filter(showMeOnlyData, function(level) { return level !== 'fiction' && level !== 'nonfiction' && level !== 'with-instructional-resources'; }); var filteredResources = ResourceList.getAllResources(); if (newShowMeOnlyData.length > 0) { filteredResources = _.filter(ResourceList.getAllResources(), function(resource) { var fLevel = _.find(newShowMeOnlyData, function(level) { return level == resource['categoryId']; }); return fLevel !== undefined; }); } filteredResources = applyFictionNonfictionFilter(showMeOnlyData,filteredResources); filteredResources = applyInstructionalResourcesFilter(showMeOnlyData,filteredResources); ResourceList.setFilteredResources(filteredResources); ResourceList.setCurrentPage(1); } function applyFictionNonfictionFilter(showMeOnlyData,filteredResources) { var newShowMeOnlyData = _.filter(showMeOnlyData, function(level) { return level === 'fiction' || level === 'nonfiction'; }); if (newShowMeOnlyData.length === 1) { filteredResources = _.filter(filteredResources, function(resource) { return resource['genre2'] && resource['genre2'].toLowerCase() === newShowMeOnlyData[0]; }); } return filteredResources; } function applyInstructionalResourcesFilter(showMeOnlyData,filteredResources) { var newShowMeOnlyData = _.filter(showMeOnlyData, function(level) { return level === 'with-instructional-resources'; }); if (newShowMeOnlyData.length === 1) { filteredResources = _.filter(filteredResources, function(resource) { return resource['m'] && resource['m'] === 'wir'; }); } return filteredResources; } // leveled book filters function setFilters(filters) { console.log('read'); var config = {}; config['razPlus'] = ResourceList.getRazPlus(); config['type'] = ResourceList.getType(); config['sortingMap'] = ResourceList.getSelectedSort(); config['filters'] = filters; config['languageId'] = ResourceList.getLanguageId(); $http.post("/api/resourcelist", config) .then(function(response) { ResourceList.setAllResources(response.data); setFilteredResources(ResourceList.getReadingLevels()); ResourceList.setFilters(filters); ResourceList.setCurrentPage(1); }) .catch(function(reason) { console.log(reason); messageHandler.publishError('There was a problem processing your request.'); }); } function setReadingLevels(readingLevels) { saveReadingLevels(readingLevels); ResourceList.setReadingLevels(readingLevels); setFilteredResources(readingLevels); ResourceList.setCurrentPage(1); } function setFilteredResources(readingLevels) { if (readingLevels == null || readingLevels.length < 1) { ResourceList.setFilteredResources(ResourceList.getAllResources()); } else { var filteredResources = _.filter(ResourceList.getAllResources(), function(resource) { var fLevel = _.find(readingLevels, function(level) { return level['level'] === resource['level']; }); return fLevel !== undefined; }); ResourceList.setFilteredResources(filteredResources); } } return { setReadingLevels: setReadingLevels, setFilters: setFilters, setShowMeOnlyFilters: setShowMeOnlyFilters }; }]); }());