(function() { "use strict"; angular.module('shared') .component('packTipPopout', { templateUrl: '/shared/js/angular/book-grid/pack-tip-popout.html', controller: 'PackTipPopout', bindings: { packPath: '@' } }) .controller('PackTipPopout', ['$scope', '$element', '$q', 'packTip', 'packTipProvider', 'fileCabinetRibbonService', 'folderService', 'MessageBox', 'siteInfoProvider', 'loggedInProvider', 'onEllPageProvider', 'hasEllProvider', 'assignTargetedResource', 'folderListItemAmbassador', 'ResourcePopout', function PackTipPopout($scope, $element, $q, packTip, packTipProvider, fileCabinetRibbonService, folderService, MessageBox, siteInfoProvider, loggedInProvider, onEllPageProvider, hasEllProvider, assignTargetedResource, folderListItemAmbassador, ResourcePopout) { var ctrl = this; var selectedFolder = null; ctrl.isLoggedIn = loggedInProvider.isLoggedIn; ctrl.isRazPlus = siteInfoProvider.isRazPlus; ctrl.onEllPage = onEllPageProvider.onEllPage; ctrl.hasEll = hasEllProvider.hasEll; ctrl.packTip = packTip; ctrl.showForTouch = false; ctrl.currentResourceAdded = false; ctrl.lastSavedFolderID = 0; ctrl.bookPopoutTargetSelector = '.pack-popout'; ctrl.digitalResourcesAssignable = true; ctrl.showAssignButton = showAssignButton; ctrl.showFileCabinetAddToButton = showFileCabinetAddToButton; ctrl.assign = assign; /* Lifecycle Hooks */ ctrl.$onInit = function() { ctrl.$bookGridContainer = $j('#bookGridApp').parent().parent(); ctrl.resourcePopout = new ResourcePopout(ctrl.$bookGridContainer, ctrl.bookPopoutTargetSelector , ctrl.bookPopoutTargetSelector, ctrl.getDisplayInfo, ctrl.closePopout, $element, false, 'pack-tip-popout'); $j(document).off('bookGridUpdate', 'pack-tip-popout'); $j(document).on('bookGridUpdate', 'pack-tip-popout', function(){ ctrl.resourcePopout.enableEventTriggers(); ctrl.resourcePopout.overrideLinkClickForTouch(); ctrl.resourcePopout.closeIfClickedOutsidePopout(); }); if(typeof popUpTagName !== 'undefined') popUpTagName = 'pack-tip-popout'; if (fileCabinetRibbonService.ribbonActive()) { selectedFolder = fileCabinetRibbonService.currentFolder(); } $element.hide(); ctrl.packTip.setPackData(packTipProvider); 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() { ctrl.tipId = ctrl.resourcePopout.currentPopoutTarget.dataQueryMap.id; if (fileCabinetRibbonService.ribbonActive()) { ctrl.currentResourceAdded = fileCabinetRibbonService.bookAddedToFileCabinetRibbon(ctrl.tipId); } return $q.resolve(true); }; /* Functions for the file cabinet and adding to folders */ 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); } ); } 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.sendAddResourceRequest = function() { var resourceToAdd = { folderName: null, folderObj: selectedFolder, isRkBook: 'false', bookId: ctrl.tipId, languageId: 1 }; fileCabinetRibbonService.addToFileCabinet(resourceToAdd, folderService.getResourceTypes().ELL_VOCABULARY_POWER_PACK) .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) { 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.tipId); }; ctrl.activateRibbonForFolder = function (folderObj) { fileCabinetRibbonService.emitEventToFileCabinetRibbonScope("fileCabinetRibbon.activate", folderObj); }; ctrl.addResourceButtonEnabled = function () { return !!selectedFolder && selectedFolder.isChecked; }; function displayAlertMsg(alertMsg) { MessageBox.show({ message: alertMsg, responses: [{ label: 'OK' }] }) } ctrl.showAddButton = function () { if (fileCabinetRibbonService.ribbonActive()) { ctrl.showAddToSection(false); return true; } else { return false; } }; ctrl.onClickAddButton = function() { if (!ctrl.currentResourceAdded){ ctrl.sendAddResourceRequest(); } }; function checkAuthorizedForEll() { if (ctrl.onEllPage) { return ctrl.hasEll; } return true; } function showAssignButton() { return ctrl.isRazPlus && ctrl.isLoggedIn && checkAuthorizedForEll(); } function assign() { assignTargetedResource.show("getVppIds", ctrl.tipId, 1, 27, ctrl.packTip.getName(ctrl.tipId)) } function showFileCabinetAddToButton() { return ctrl.isLoggedIn && checkAuthorizedForEll(); } function onSelectedFolderListItemChanged() { var selectedFolderListItem = folderListItemAmbassador.getSelectedFolderListItem(); selectedFolder = selectedFolderListItem && !selectedFolderListItem.locked ? selectedFolderListItem : null; } }] ); }());