(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.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.cdn = null; provider.collectionResources = null; provider.setResources = function(resources) { if (resources && Object.keys(resources).length > 0) { provider.allResources = provider.filteredResources = resources; provider.getSavedView(); } }; provider.setCollectionResources = function(collectionResources) { provider.collectionResources = collectionResources; }; provider.transformList = function(oldList) { var newData = []; _.each(oldList, function(resource) { var newRecord={}; newRecord['resourceType'] = provider.type; newRecord['deliverableType'] = 'book'; newRecord['metadata'] = resource; newRecord['categoryId'] = resource['categoryId']; newRecord['languageId'] = provider.languageId; newRecord['level'] = resource['level']; if (provider.type === constantValues.TYPE_TRADE_BOOK) { newRecord['metadata']['thumbnailSrc'] = provider.cdn + constantValues.OLD_RESOURCE_CARD_IMAGE_PATH + resource['id'] + '.gif'; } else { newRecord['metadata']['thumbnailSrc'] = provider.cdn + constantValues.NEW_RESOURCE_CARD_IMAGE_PATH + resource['id'] + '.png'; } newRecord['metadata']['isMultiLevel'] = resource['ml']; newRecord['metadata']['lexile'] = resource['lx']; newRecord['metadata']['genre1'] = resource['g1']; newRecord['metadata']['genre2'] = resource['g2']; newRecord['metadata']['orientation'] = resource['or'] == 'p' ? 'portrait' : 'landscape'; newRecord['resourceId'] = resource['id']; newData.push(newRecord); }); return newData; }; provider.setLeveledBookFilters = function(leveledBookFilters) { provider.leveledBookFilters = leveledBookFilters; }; provider.setFilters = function(filters) { provider.selectedFilters = filters; }; provider.buildPageOfResources = function() { var oldResources = provider.resources; provider.resources = []; provider.activeLevelBarPopoutLevel = null; var start = 0; var finish = provider.allResources.length; if (provider.selectedView === constantValues.LIST_VIEW && (provider.levelBarLevels === undefined || Object.keys(provider.levelBarLevels).length < 1)) { provider.selectedView = constantValues.GRID_VIEW; } if (provider.selectedView === constantValues.GRID_VIEW) { start = (provider.currentPage - 1) * constantValues.RESOURCES_PER_PAGE; finish = start + constantValues.RESOURCES_PER_PAGE; } var tempResources = provider.transformList(provider.filteredResources); tempResources = provider.buildCategorizedList(tempResources,start,finish); provider.clearOldImages(oldResources,tempResources); provider.resources = tempResources; }; provider.clearOldImages = function(oldList,newList) { oldList = provider.flattenList(oldList); newList = provider.flattenList(newList); for (var counter=0;counter < oldList.length;counter++) { if (newList[counter] === undefined) { break; } if (oldList[counter]['resourceId'] != newList[counter]['resourceId']) { $j("#resource-card-" + oldList[counter]['resourceId']).removeAttr('src'); } } }; provider.flattenList = function(resourceList) { if (resourceList == null) { return []; } var newList=[]; var keys = Object.keys(resourceList); _.each(keys, function(key) { _.each(resourceList[key], function(resource) { newList.push(resource); }); }); return newList; }; 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) { if (!languageId || isNaN(languageId)) { return; } provider.languageId = languageId; }; provider.setLevelBarLevels = function(levelBarLevels) { provider.levelBarLevels = levelBarLevels; }; provider.setCdn = function(cdn) { provider.cdn = cdn; }; 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 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); } function showLevelBar() { return provider.type !== constantValues.TYPE_DISTANCE_LEARNING; } function threeColumnShowMe() { return provider.type === constantValues.TYPE_LEVELED_BOOKS || provider.type === constantValues.TYPE_FICTION_SERIES || provider.type === constantValues.TYPE_DECODABLE_BOOK || provider.type === constantValues.TYPE_TRADE_BOOK || provider.type === constantValues.POETRY_NURSERY_SONG; } function isFiveAcross() { return provider.type === constantValues.TYPE_DISTANCE_LEARNING; } function useNewResourceCardFormat() { return provider.type !== constantValues.TYPE_TRADE_BOOK; } function getCollectionResources() { return provider.collectionResources; } function getCdn() { return provider.cdn; } return { useNewResourceCardFormat: useNewResourceCardFormat, getCdn: getCdn, getCollectionResources: getCollectionResources, threeColumnShowMe: threeColumnShowMe, isFiveAcross: isFiveAcross, 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, showLevelBar: showLevelBar, getView: getView, setView: setView, setSelectedSort: setSelectedSort, getSelectedSort: getSelectedSort, getLanguageId: getLanguageId, getLevelBarLevels: getLevelBarLevels, setPending: setPending, getPending: getPending, getActiveLevelBarPopoutLevel: getActiveLevelBarPopoutLevel, setActiveLevelBarPopoutLevel:setActiveLevelBarPopoutLevel, getCurrentPage: getCurrentPage, setCurrentPage: setCurrentPage, getType: getType } } }]); })();