(function () { "use strict"; angular .module('shared') .component('bookPopout', { templateUrl: '/shared/js/angular/book-grid/book-popout.html', controller: 'BookPopout', bindings: { site : '@', fromSearchResults : '@' } }) .controller('BookPopout', BookPopoutCtrl); BookPopoutCtrl.$inject = [ '$scope', '$sce', '$element', 'MessageBox', 'bookTipInfoService', 'fileCabinetRibbonService', 'folderService', 'assignTargetedResource', 'folderListItemAmbassador', 'ResourcePopout' ]; function BookPopoutCtrl($scope, $sce, $element, MessageBox, bookTipInfoService, fileCabinetRibbonService, folderService, assignTargetedResource, folderListItemAmbassador, ResourcePopout) { var ctrl = this; var selectedFolder = null; ctrl.constants = { CAREER_FILES_MATERIAL_TYPE_ID: '5', UNIT_NONFICTION_BOOK_MATERIAL_TYPE_ID : '9', QUICK_READS_MATERIAL_TYPE_ID: '10', SCIENCE_VIDEOS_MATERIAL_TYPE_ID: '36', SCIENCE_DIAGRAMS_MATERIAL_TYPE_ID: '63', I_FILES_MATERIAL_TYPE_ID: '66', MYSTERY_FILES_MATERIAL_TYPE_ID: '67', FOCUS_BOOKS_MATERIAL_TYPE_ID: '71', ISL_MATERIAL_TYPE_ID : '93' }; ctrl.lastSavedFolderID = 0; ctrl.bookTipInfo = {}; ctrl.bookPopoutTargetSelector = '.bookPopout'; ctrl.mouseLeaveTargetSelector = (ctrl.fromSearchResults) ? 'div.photo' : ctrl.bookPopoutTargetSelector; ctrl.digitalResourcesAssignable = true; ctrl.currentResourceAdded = false; ctrl.showAssignButton = showAssignButton; ctrl.assign = assign; /* Lifecycle Hooks */ ctrl.$onInit = function () { ctrl.$bookGridContainer = $j('.bookGridApp').parent().parent(); ctrl.resourcePopout = new ResourcePopout( ctrl.$bookGridContainer, ctrl.bookPopoutTargetSelector, ctrl.mouseLeaveTargetSelector, ctrl.getDisplayInfo, ctrl.closePopout, $element, ctrl.fromSearchResults, 'book-popout' ); $j(document).off('bookGridUpdate', 'book-popout'); $j(document).on('bookGridUpdate', 'book-popout', function(){ ctrl.resourcePopout.enableEventTriggers(); ctrl.resourcePopout.overrideLinkClickForTouch(); ctrl.resourcePopout.closeIfClickedOutsidePopout(); return false; }); if(typeof popUpTagName !== 'undefined') { popUpTagName = 'book-popout'; } if (fileCabinetRibbonService.ribbonActive()) { selectedFolder = fileCabinetRibbonService.currentFolder(); } $element.hide(); folderListItemAmbassador.registerOnSelectedFolderListItemChanged($scope, onSelectedFolderListItemChanged); }; ctrl.$postLink = function () { ctrl.resourcePopout.enableEventTriggers(); ctrl.resourcePopout.overrideLinkClickForTouch(); ctrl.resourcePopout.closeIfClickedOutsidePopout(); }; /* Functions for the popout */ ctrl.closePopout = function () { $element.hide(); ctrl.showAddToSection(false); if (!ctrl.resourcePopout.popoutState.eventsEnabled) { ctrl.resourcePopout.enableEventTriggers(); } }; ctrl.getDisplayInfo = function() { var currentPopoutTarget = ctrl.resourcePopout.currentPopoutTarget; if (fileCabinetRibbonService.ribbonActive()) { ctrl.currentResourceAdded = fileCabinetRibbonService.bookAddedToFileCabinetRibbon(currentPopoutTarget.dataQueryMap.id); } return bookTipInfoService.fetchBookTipInfo(ctrl.site, currentPopoutTarget.dataQueryString) .then(function success(response) { ctrl.bookTipInfo = response.data; ctrl.touchDeviceLinks = response.data.touchDeviceLinks; ctrl.digitalResourcesAssignable = !!response.data.digitalResourcesAssignable; if (ctrl.isRazSite()) { ctrl.bookTipInfo.languageId = ctrl.resourcePopout.currentPopoutTarget.dataQueryMap.language_id || 1; } else if (ctrl.isSazSite()) { ctrl.bookTipInfo.languageId = ctrl.resourcePopout.currentPopoutTarget.dataQueryMap.language_id || 0; } else { ctrl.bookTipInfo.languageId = null; } ctrl.bookTipInfo.summary = $sce.trustAsHtml(ctrl.bookTipInfo.summary+''); return true; }) }; ctrl.getResourceType = function() { var resourceType = []; if (ctrl.bookTipInfo.categoryDisplayName) { resourceType.push(ctrl.bookTipInfo.categoryDisplayName); } return $sce.trustAsHtml(resourceType.join()); }; ctrl.getResourceLevel = function() { var resourceLevel = []; if (ctrl.bookTipInfo.levelIndicatorMsg) { resourceLevel.push(ctrl.bookTipInfo.levelIndicatorMsg); } if (ctrl.bookTipInfo.multilevelBookMsg) { resourceLevel.push(ctrl.bookTipInfo.multilevelBookMsg); } if (ctrl.bookTipInfo.lexile != null) { resourceLevel.push('Lexile ' + ctrl.bookTipInfo.lexile); } return $sce.trustAsHtml(resourceLevel.join('|')); }; ctrl.getMetadataString = function () { var stringElements = []; if (ctrl.bookTipInfo.bookTypeInfo) { stringElements.push(ctrl.bookTipInfo.bookTypeInfo); } return $sce.trustAsHtml(stringElements.join()); }; /* Functions for the file cabinet and adding to folders */ var _showAddToSection = false; ctrl.initAddToSection = function () { ctrl.counter = 0; ctrl.resourcePopout.disableEventTriggers(); ctrl.showAddToSection(true); }; ctrl.showAddToSection = function (showSection) { if (showSection !== undefined) { _showAddToSection = showSection; } return _showAddToSection; }; ctrl.addResourceButtonEnabled = function () { return !!selectedFolder && selectedFolder.isChecked; }; ctrl.sendAddResourceRequest = function() { var resourceToAdd = { folderName : null, folderObj : selectedFolder, isRkBook : ctrl.bookTipInfo['rkBookId'] !== undefined, bookId : ctrl.bookTipInfo['bookId'] || ctrl.bookTipInfo['rkBookId'], materialId : ctrl.bookTipInfo['materialId'] || null, languageId : ctrl.bookTipInfo.languageId }; var resourceType = parseInt(resourceToAdd.bookId) > 0 ? folderService.getResourceTypes().LANDINGPAGE : folderService.getResourceTypes().SAZ_MATERIAL; if (ctrl.bookTipInfo['typeId'] === ctrl.constants.ISL_MATERIAL_TYPE_ID) { resourceToAdd.bookId = ctrl.bookTipInfo['unitId']; resourceType = folderService.getResourceTypes().ISL_PACK; } fileCabinetRibbonService.addToFileCabinet(resourceToAdd, resourceType) .then(function success(response) { var folderObj = response.folder; var addedResource = response.resource; resourceToAdd.thumbnailInfo = { src: addedResource.imgSrc, alt: addedResource.titleText, orientation: addedResource.imageOrientation }; resourceToAdd.folderObj = resourceToAdd.folderObj || folderObj; resourceToAdd.groupId = addedResource.group_id; resourceToAdd.typeId = addedResource.rtype; resourceToAdd.id = addedResource.id; resourceToAdd.languageId = addedResource.book_language_id || addedResource.non_book_language_id; resourceToAdd.assignable = addedResource.assignable; setLastPopoutFolderId(folderObj.id); ctrl.updateFileCabinetRibbon(resourceToAdd); }).catch(function failure(reason) { console.log(reason); var failureMsg = "There was a problem. This resource may already be in this folder."; displayAlertMsg(failureMsg); if (resourceToAdd.folderObj) { ctrl.activateRibbonForFolder(resourceToAdd.folderObj); } }); ctrl.closePopout(); }; ctrl.updateFileCabinetRibbon = function (resourceToAddInfo) { fileCabinetRibbonService.emitEventToFileCabinetRibbonScope("fileCabinetRibbon.update", resourceToAddInfo); ctrl.currentResourceAdded = fileCabinetRibbonService.bookAddedToFileCabinetRibbon(ctrl.resourcePopout.currentPopoutTarget.dataQueryMap.id); }; ctrl.activateRibbonForFolder = function (folderObj) { fileCabinetRibbonService.emitEventToFileCabinetRibbonScope("fileCabinetRibbon.activate", folderObj); }; ctrl.showAddButton = function () { if (fileCabinetRibbonService.ribbonActive()) { ctrl.showAddToSection(false); return true; } else { return false; } }; ctrl.onClickAddButton = function() { if (!ctrl.currentResourceAdded){ ctrl.sendAddResourceRequest(); } }; ctrl.isRazSite = function() { return ( typeof ctrl.site === 'undefined' || ctrl.site === '' || ctrl.site === null || ctrl.site === 'raz' ); }; ctrl.isSazSite = function() { return ctrl.site === 'saz'; }; /************** START *****************/ /** SCIENCE FUNCTIONS **/ ctrl.getSazResourceId = function() { switch (ctrl.bookTipInfo['typeId']) { case ctrl.constants.CAREER_FILES_MATERIAL_TYPE_ID: case ctrl.constants.QUICK_READS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_VIDEOS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_DIAGRAMS_MATERIAL_TYPE_ID: case ctrl.constants.I_FILES_MATERIAL_TYPE_ID: case ctrl.constants.MYSTERY_FILES_MATERIAL_TYPE_ID: case ctrl.constants.FOCUS_BOOKS_MATERIAL_TYPE_ID: return ctrl.bookTipInfo['rkResourceId']; case ctrl.constants.UNIT_NONFICTION_BOOK_MATERIAL_TYPE_ID: case ctrl.constants.ISL_MATERIAL_TYPE_ID: default: return null; } }; ctrl.getSazUnitId = function() { switch (ctrl.bookTipInfo['typeId']) { case ctrl.constants.UNIT_NONFICTION_BOOK_MATERIAL_TYPE_ID: case ctrl.constants.ISL_MATERIAL_TYPE_ID: return ctrl.bookTipInfo['unitId']; case ctrl.constants.CAREER_FILES_MATERIAL_TYPE_ID: case ctrl.constants.QUICK_READS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_VIDEOS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_DIAGRAMS_MATERIAL_TYPE_ID: case ctrl.constants.I_FILES_MATERIAL_TYPE_ID: case ctrl.constants.MYSTERY_FILES_MATERIAL_TYPE_ID: case ctrl.constants.FOCUS_BOOKS_MATERIAL_TYPE_ID: default: return null; } }; ctrl.getSazMaterialTypeId = function() { switch (ctrl.bookTipInfo['typeId']) { case ctrl.constants.UNIT_NONFICTION_BOOK_MATERIAL_TYPE_ID: case ctrl.constants.ISL_MATERIAL_TYPE_ID: return ctrl.bookTipInfo['typeId']; case ctrl.constants.CAREER_FILES_MATERIAL_TYPE_ID: case ctrl.constants.QUICK_READS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_VIDEOS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_DIAGRAMS_MATERIAL_TYPE_ID: case ctrl.constants.I_FILES_MATERIAL_TYPE_ID: case ctrl.constants.MYSTERY_FILES_MATERIAL_TYPE_ID: case ctrl.constants.FOCUS_BOOKS_MATERIAL_TYPE_ID: default: return null; } }; ctrl.getSazLanguageId = function() { switch (ctrl.bookTipInfo['typeId']) { case ctrl.constants.UNIT_NONFICTION_BOOK_MATERIAL_TYPE_ID: case ctrl.constants.QUICK_READS_MATERIAL_TYPE_ID: if (ctrl.bookTipInfo['languageId']) { return ctrl.bookTipInfo['languageId'] } else { return null; } case ctrl.constants.CAREER_FILES_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_VIDEOS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_DIAGRAMS_MATERIAL_TYPE_ID: case ctrl.constants.I_FILES_MATERIAL_TYPE_ID: case ctrl.constants.MYSTERY_FILES_MATERIAL_TYPE_ID: case ctrl.constants.FOCUS_BOOKS_MATERIAL_TYPE_ID: case ctrl.constants.ISL_MATERIAL_TYPE_ID: default: return null; } }; ctrl.getSazScienceCategoryId = function() { switch (ctrl.bookTipInfo['typeId']) { case ctrl.constants.CAREER_FILES_MATERIAL_TYPE_ID: case ctrl.constants.UNIT_NONFICTION_BOOK_MATERIAL_TYPE_ID: case ctrl.constants.QUICK_READS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_VIDEOS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_DIAGRAMS_MATERIAL_TYPE_ID: case ctrl.constants.I_FILES_MATERIAL_TYPE_ID: case ctrl.constants.MYSTERY_FILES_MATERIAL_TYPE_ID: case ctrl.constants.FOCUS_BOOKS_MATERIAL_TYPE_ID: case ctrl.constants.ISL_MATERIAL_TYPE_ID: default: return null; } }; ctrl.getSazMinimumMaterialId = function() { switch (ctrl.bookTipInfo['typeId']) { case ctrl.constants.UNIT_NONFICTION_BOOK_MATERIAL_TYPE_ID: case ctrl.constants.QUICK_READS_MATERIAL_TYPE_ID: if (ctrl.bookTipInfo['minimumMaterialId']) { return ctrl.bookTipInfo['minimumMaterialId']; } else { return null; } case ctrl.constants.CAREER_FILES_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_VIDEOS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_DIAGRAMS_MATERIAL_TYPE_ID: case ctrl.constants.I_FILES_MATERIAL_TYPE_ID: case ctrl.constants.MYSTERY_FILES_MATERIAL_TYPE_ID: case ctrl.constants.FOCUS_BOOKS_MATERIAL_TYPE_ID: case ctrl.constants.ISL_MATERIAL_TYPE_ID: default: return null; } }; ctrl.getSazOrientation = function() { switch (ctrl.bookTipInfo['typeId']) { case ctrl.constants.CAREER_FILES_MATERIAL_TYPE_ID: case ctrl.constants.QUICK_READS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_VIDEOS_MATERIAL_TYPE_ID: case ctrl.constants.SCIENCE_DIAGRAMS_MATERIAL_TYPE_ID: case ctrl.constants.I_FILES_MATERIAL_TYPE_ID: case ctrl.constants.MYSTERY_FILES_MATERIAL_TYPE_ID: case ctrl.constants.ISL_MATERIAL_TYPE_ID: return ctrl.bookTipInfo['orientation']; case ctrl.constants.FOCUS_BOOKS_MATERIAL_TYPE_ID: case ctrl.constants.UNIT_NONFICTION_BOOK_MATERIAL_TYPE_ID: default: return null; } }; /** SCIENCE FUNCTIONS **/ /************** END *****************/ ctrl.htmlToPlaintext = function(text) { return text ? String(text).replace(/<[^>]+>/gm, '') : ''; }; function setLastPopoutFolderId(folderId) { var id = folderId != null && folderId != null ? folderId : -1; if (id === ctrl.lastSavedFolderID) { return; } ctrl.lastSavedFolderID = id; folderService.setLastPopoutFolderID({folder_id:id}).then( function (response) { //console.log('Save last folder id ' + id); }, function (reason) { console.log('Could not set last folder id.'); console.log(reason); } ); } function displayAlertMsg(alertMsg) { MessageBox.show({ message: alertMsg, responses: [{ label: 'OK' }] }) } function onSelectedFolderListItemChanged() { var selectedFolderListItem = folderListItemAmbassador.getSelectedFolderListItem(); selectedFolder = selectedFolderListItem && !selectedFolderListItem.locked ? selectedFolderListItem : null; } function showAssignButton() { return ctrl.digitalResourcesAssignable && ctrl.bookTipInfo && ctrl.bookTipInfo.authorized; } function assign() { assignTargetedResource.show(ctrl.bookTipInfo.bookAssignInfo.assignAction, ctrl.bookTipInfo.bookAssignInfo.kids_book_id, ctrl.bookTipInfo.bookAssignInfo.languageId, ctrl.bookTipInfo.bookAssignInfo.bookroomCollectionId, ctrl.bookTipInfo.title) } } })();