(function() { "use strict"; angular.module('shared') .component('showMeOnly', { templateUrl: '/shared/js/angular/book-grid/show-me-only.html', controller: 'showMeOnlyController' }) .controller('showMeOnlyController', ['messageHandler','ResourceList','_','constantValues','resourceSorting','resourceFilter','$sce', function showMeOnlyController(messageHandler,ResourceList,_,constantValues,resourceSorting,resourceFilter,$sce) { var ctrl = this; var resourceCollectionsForSelectedGrade = []; var showMeOnlyKey = 'show-' + ResourceList.getType(); ctrl.availableSortOptions = null; ctrl.selectedFilters = {}; ctrl.trustAsHtml = $sce.trustAsHtml; ctrl.$onInit = function() { ctrl.availableSortOptions = []; ctrl.availableSortOptions.push(constantValues.SORT_OPTIONS[0]); ctrl.availableSortOptions.push(constantValues.SORT_OPTIONS[1]); switch (ResourceList.getType()) { case constantValues.TYPE_FICTION_SERIES: case constantValues.TYPE_AUTHENTIC_SPANISH: ctrl.availableSortOptions[0]['name'] = 'Level A to Z'; ctrl.availableSortOptions[1]['name'] = 'Level Z to A'; break; case constantValues.TYPE_DECODABLE_BOOK: ctrl.availableSortOptions[0]['name'] = 'Lesson Low to High'; ctrl.availableSortOptions[1]['name'] = 'Lesson High to Low'; break; case constantValues.TYPE_SYMBOL_BOOKS: case constantValues.TYPE_READ_ALOUD: ctrl.availableSortOptions[0]['name'] = 'Sequence Low to High'; ctrl.availableSortOptions[1]['name'] = 'Sequence High to Low'; break; case constantValues.TYPE_CLASSIC_BOOKS: ctrl.availableSortOptions[0]['name'] = 'Part Low to High'; ctrl.availableSortOptions[1]['name'] = 'Part High to Low'; break; } getShowMeOnlyFilters(); if (ctrl.useTabs() && !ctrl.anyFilters()) { ctrl.clickedTab(ctrl.getLevelBarLevelKeys()[0]); } }; ctrl.tabIsActive = function(level) { return ctrl.selectedFilters[level] === true; }; ctrl.clickedTab = function(level) { ctrl.selectedFilters = {}; ctrl.selectedFilters[level] = true; ctrl.checkedBox(); resourceCollectionsForSelectedGrade = getResourceCollectionsForCurrentGrade(); }; ctrl.selectedSort = function(newSort) { if (newSort) { resourceSorting.setSelectedSort(newSort.key); } var foundSort = null; if (resourceSorting.getSelectedSort()) { foundSort = _.find(ctrl.availableSortOptions, function(oneSort) { return oneSort.key === resourceSorting.getSelectedSort(); }); } return foundSort ? foundSort : ctrl.availableSortOptions[0]; }; ctrl.useTabs = function() { return ResourceList.getType() === constantValues.TYPE_COMPLEX_NONFICTION_SERIES || ResourceList.getType() === constantValues.TYPE_AUTHENTIC_SPANISH; }; ctrl.displayShowMeOnlyBox = function() { return ctrl.getLevelBarLevelKeys().length > 1; }; ctrl.checkboxTitle = function(level) { var levelObject = ctrl.getLevelBarLevel(level); return ctrl.useTabs() || levelObject['altTitle'] == null ? levelObject['title'] : levelObject['altTitle']; }; 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.columnClass = function(index) { switch (ResourceList.getType()) { case constantValues.TYPE_LEVELED_BOOKS: case constantValues.TYPE_FICTION_SERIES: case constantValues.TYPE_DECODABLE_BOOK: case constantValues.TYPE_TRADE_BOOK: case constantValues.POETRY_NURSERY_SONG: return 'box-33'; case constantValues.TYPE_SYMBOL_BOOKS: return index % 2 === 0 ? 'box-35' : 'box-65' ; } return 'box-25'; }; ctrl.getLevelBarLevel = function(key) { return ResourceList.getLevelBarLevels()[key]; }; ctrl.getLevelBarLevelKeys = function() { return Object.keys(ResourceList.getLevelBarLevels()); }; ctrl.getFilteredBooksCount = function() { return ResourceList.getFilteredBooksCount(); }; ctrl.getAllBooksCount = function() { return ResourceList.getAllBooksCount(); }; function buildFilterList() { var filterList = []; _.each(Object.keys(ctrl.selectedFilters), function(filterKey) { if (ctrl.selectedFilters[filterKey] === true) { filterList.push(filterKey); } }); return filterList; } function clearSession() { try { sessionStorage.removeItem(showMeOnlyKey); } catch (err) { console.log(err); } } function saveShowMeOnlyFilters(showMeOnlyData) { try { clearSession(); if (showMeOnlyData && showMeOnlyData.length > 0) { sessionStorage.setItem(showMeOnlyKey,JSON.stringify(showMeOnlyData)); } } catch (err) { console.log(err); } } function getShowMeOnlyFilters() { try { var savedLevels = sessionStorage.getItem(showMeOnlyKey); if (savedLevels == undefined || savedLevels == null || savedLevels.length < 1) { return; } savedLevels = JSON.parse(savedLevels); var newSavedLevels = []; var existingLevels = Object.keys(ResourceList.getLevelBarLevels()); _.each(savedLevels, function(level) { if (existingLevels.indexOf(level) >= 0) { newSavedLevels[level] = true; } }); ctrl.selectedFilters = newSavedLevels; var filters = buildFilterList(); resourceFilter.setShowMeOnlyFilters(filters); } catch (err) { console.log(err); } } ctrl.checkedBox = function() { var filters = buildFilterList(); resourceFilter.setShowMeOnlyFilters(filters); saveShowMeOnlyFilters(filters); }; ctrl.anyFilters = function() { return buildFilterList().length > 0; }; ctrl.clearAllFilters = function() { clearSession(); ctrl.selectedFilters = {}; resourceFilter.setShowMeOnlyFilters(buildFilterList()); }; ctrl.anyCollectionResources = function() { return ResourceList.getCollectionResources() !== null && Object.keys(ResourceList.getCollectionResources()).length > 0; }; function getResourceCollectionsForCurrentGrade() { var filterList = buildFilterList(); if (filterList.length < 1) { return []; } if (ResourceList.getCollectionResources() === undefined || ResourceList.getCollectionResources() === null) { return null; } return ResourceList.getCollectionResources()[filterList[0]]; } ctrl.resourceTypes = function() { return Object.keys(resourceCollectionsForSelectedGrade); }; ctrl.resourceTypeThumbnailUrl = function(resourceType) { var firstId = resourceCollectionsForSelectedGrade[resourceType][0]['id']; return ResourceList.getCdn() + constantValues.RESOURCE_COLLECTION_IMAGE_PATH + firstId + ".gif"; }; ctrl.resources = function(resourceType) { return resourceCollectionsForSelectedGrade[resourceType]; }; ctrl.hasMultiple = function(resourceType) { return resourceCollectionsForSelectedGrade[resourceType].length > 1; }; ctrl.isTeachingTip = function(resourceType) { return resourceType.toLowerCase() === 'teaching tips'; }; }]); }());