(function(){ "use strict"; angular.module('shared') .provider('ResourceList', ['constantValues','languageConstants', function ResourceListProvider(constantValues,languageConstants) { var provider = this; provider.razPlus = 'y'; provider.allBooksCount = 0; provider.selectedReadingLevels = null; provider.showMeOnlyFilters = null; provider.type = null; provider.selectedView = constantValues.GRID_VIEW; provider.selectedSort = constantValues.SORT_OPTIONS[0]['key']; provider.languageId = languageConstants.ENGLISH_LANGUAGE_ID; provider.levelBarLevels = null; provider.pending = false; provider.activeLevelBarPopoutLevel = null; provider.lastItemId = 0; provider.currentPage = 1; provider.allResources = []; provider.resources = []; // one page of resources provider.filteredResources = []; // allResources filtered by reading level and filter check boxes provider.viewKey = 'resource-card-view'; provider.showMeOnlyKey = 'resource-card-show-me-only'; provider.leveledBookFilters = null; provider.selectedFilters = null; provider.$get = ['_',ResourceListProvider]; provider.setResources = function(resources) { if (resources && Object.keys(resources).length > 0) { provider.allResources = provider.filteredResources = resources; provider.getSavedView(); } }; provider.setLeveledBookFilters = function(leveledBookFilters) { provider.leveledBookFilters = leveledBookFilters; }; provider.setFilters = function(filters) { provider.selectedFilters = filters; }; provider.buildPageOfResources = function() { provider.resources = []; provider.activeLevelBarPopoutLevel = null; var start = 0; var finish = provider.allResources.length; if (provider.selectedView === constantValues.GRID_VIEW) { start = (provider.currentPage - 1) * constantValues.RESOURCES_PER_PAGE; finish = start + constantValues.RESOURCES_PER_PAGE; } provider.resources = provider.buildCategorizedList(provider.filteredResources,start,finish); if (Object.keys(provider.resources).length > 0) { var lastLevel = Object.keys(provider.resources)[Object.keys(provider.resources).length - 1]; var lastLevelList = provider.resources[lastLevel]; provider.lastItemId = lastLevelList[lastLevelList.length - 1]['id']; } }; provider.buildCategorizedList = function(list,start,finish) { var lastCategory = null; var results = []; for (var counter = start;counter < finish && counter < list.length;counter++) { var resource = list[counter]; if (lastCategory !== resource['categoryId']) { lastCategory = resource['categoryId']; results[lastCategory] = []; } results[lastCategory].push(resource); } return results; }; provider.getSavedView = function() { provider.selectedView = sessionStorage.getItem(provider.viewKey); provider.selectedView = provider.selectedView == null ? constantValues.GRID_VIEW : provider.selectedView; }; provider.setReadingLevels = function(readingLevels) { provider.selectedReadingLevels = readingLevels; }; provider.setShowMeOnlyFilters = function(showMeOnlyData) { provider.showMeOnlyFilters = showMeOnlyData; }; provider.setAllBooksCount = function(allBooksCount) { provider.allBooksCount = allBooksCount; }; provider.setType = function(type) { provider.type = type; }; provider.setLanguageId = function(languageId) { provider.languageId = languageId; }; provider.setLevelBarLevels = function(levelBarLevels) { provider.levelBarLevels = levelBarLevels; }; function ResourceListProvider( _) { function getResources() { return provider.resources; } function setShowMeOnlyFilters(showMeOnlyData) { provider.setShowMeOnlyFilters(showMeOnlyData); }; function setReadingLevels(readingLevels) { provider.setReadingLevels(readingLevels); }; function setFilters(filters) { provider.selectedFilters = filters; } function setSelectedSort(sort) { provider.selectedSort = sort; provider.buildPageOfResources(); } function getSelectedSort() { return provider.selectedSort; } function setView(view) { if (provider.selectedView == view) { return; } sessionStorage.removeItem(provider.viewKey); sessionStorage.setItem(provider.viewKey,view); provider.selectedView = view; provider.buildPageOfResources(); } function setCurrentPage(page) { provider.currentPage = page; provider.buildPageOfResources(); } function getFilteredBooksCount() { return provider.filteredResources.length; } function getAllBooksCount() { return provider.allBooksCount; } function getView() { return provider.selectedView; } function getLanguageId() { return provider.languageId; } function getLevelBarLevels() { return provider.levelBarLevels; } function setPending(pending) { provider.pending = pending; } function getPending() { return provider.pending; } function getActiveLevelBarPopoutLevel() { return provider.activeLevelBarPopoutLevel; } function setActiveLevelBarPopoutLevel(level) { provider.activeLevelBarPopoutLevel = level; } function getLastItemId() { return provider.lastItemId; } function getCurrentPage() { return provider.currentPage; } function getType() { return provider.type; } function getReadingLevels() { return provider.selectedReadingLevels; } function getFilters() { return provider.selectedFilters; } function getRazPlus() { return provider.razPlus; } function setRazPlus(razPlus) { provider.razPlus = razPlus; } function getLeveledBookFilters() { return provider.leveledBookFilters; } function setAllResources(allResources) { provider.allResources = allResources; } function getAllResources() { return provider.allResources; } function setFilteredResources(filteredResources) { provider.filteredResources = filteredResources; } function getFilteredResources() { return provider.filteredResources; } function buildCategorizedList(list,start,finish) { return provider.buildCategorizedList(list,start,finish); } return { buildCategorizedList: buildCategorizedList, setAllResources: setAllResources, getAllResources: getAllResources, setFilteredResources:setFilteredResources, getFilteredResources:getFilteredResources, getLeveledBookFilters: getLeveledBookFilters, getRazPlus: getRazPlus, setRazPlus:setRazPlus, setShowMeOnlyFilters: setShowMeOnlyFilters, getResources: getResources, setReadingLevels: setReadingLevels, getReadingLevels: getReadingLevels, getFilteredBooksCount: getFilteredBooksCount, getAllBooksCount: getAllBooksCount, setFilters: setFilters, getFilters: getFilters, getView: getView, setView: setView, setSelectedSort: setSelectedSort, getSelectedSort: getSelectedSort, getLanguageId: getLanguageId, getLevelBarLevels: getLevelBarLevels, setPending: setPending, getPending: getPending, getActiveLevelBarPopoutLevel: getActiveLevelBarPopoutLevel, setActiveLevelBarPopoutLevel:setActiveLevelBarPopoutLevel, getLastItemId: getLastItemId, getCurrentPage: getCurrentPage, setCurrentPage: setCurrentPage, getType: getType } } }]); })();