(function() { "use strict"; angular .module("shared") .component('addButton', { templateUrl: '/shared/js/angular/file-cabinet/add-button.html', controller: 'AddButton', bindings: { bookid: '<', languageid: '<', enclosed: '<', resourcetype: '<', showasbutton: '<', smallbutton: '<', worksheettype: '<', worksheetsubtypeid: '<', phonicslessonid: '<' } }) .controller('AddButton', ['fileCabinetRibbonService', 'folderService', 'messageHandler','folders', 'FileCabinetConstants', function AddButton(fileCabinetRibbonService, folderService, messageHandler, folders, FileCabinetConstants) { var ctrl = this; ctrl.buttonSizes = { xSmall : 'btn-xs', small : 'btn-sm', large : 'btn-lg' }; ctrl.buttonDisabled = function() { return folderHasResource(); }; ctrl.getButtonClass = function() { var className = ctrl.smallbutton == 1 ? ctrl.buttonSizes.small : ctrl.buttonSizes.large; className = checkForXSmallSize(className); if (ctrl.buttonDisabled()) { className += ' btn-confirm'; } return className; }; ctrl.sendAddResourceRequest = function () { try { var languageIDFromTabs = ctrl.languageid; if ($j('.bookTabs .active') != null && $j('.bookTabs .active').attr('data-language-id') != null) { languageIDFromTabs = $j('.bookTabs .active').attr('data-language-id'); } if ($j('#isSpanishOnly') != null && $j('#isSpanishOnly').attr('data-language-id') != null) { languageIDFromTabs = $j('#isSpanishOnly').attr('data-language-id'); } fileCabinetRibbonService.setIsBusy(true); var addToFolderName = fileCabinetRibbonService.getCurrentFolderObj().name; var folderID = fileCabinetRibbonService.getCurrentFolderObj().id; var resourceId = ctrl.bookid; folderService.addResourceToFolder(folderID, addToFolderName, resourceId, ctrl.resourcetype, languageIDFromTabs, ctrl.worksheettype, ctrl.worksheetsubtypeid, ctrl.phonicslessonid, folders.getIsLiteracyEditor()) .then(function success(response) { var folderObj = response.folder; var addedResource = response.resource; var thumbnailInfo = {}; thumbnailInfo.alt = addedResource.imgAlt; thumbnailInfo.orientation = addedResource.imgOrientation; thumbnailInfo.showThumbnail = false; thumbnailInfo.src = addedResource.imgSrc; var resourceToAdd = { resourcetype: ctrl.resourcetype, folderName: folderObj.name, folderObj: folderObj, isRkBook: 'false', bookId: ctrl.bookid, languageId: languageIDFromTabs, thumbnailInfo: thumbnailInfo, worksheettype: ctrl.worksheettype, worksheetsubtypeid: ctrl.worksheetsubtypeid, phonicslessonid: ctrl.phonicslessonid }; resourceToAdd.groupId = addedResource.group_id; resourceToAdd.typeId = addedResource.rtype; resourceToAdd.id = addedResource.id; if (fileCabinetRibbonService.ribbonActive()) { messageHandler.publishSuccess('Resource added to file cabinet.'); } fileCabinetRibbonService.emitEventToFileCabinetRibbonScope("fileCabinetRibbon.update", resourceToAdd); }) .catch(function failure(reason) { console.log(reason); messageHandler.publishError('Could not add resource to folder. This resource may have already been added to this folder.'); }); } catch(err) { messageHandler.publishError('Could not add resource to folder.'); } finally { fileCabinetRibbonService.setIsBusy(false); } }; // TODO look here for how this works with SAZ to fade out button var folderHasResource = function() { var resources = fileCabinetRibbonService.currentResources(); if (resources == null || resources.length < 1) { return false; } var languageIDFromTabs = ctrl.languageid; if ($j('.bookTabs .active') != null && $j('.bookTabs .active').attr('data-language-id') != null) { languageIDFromTabs = $j('.bookTabs .active').attr('data-language-id'); } for (var counter = 0; counter < resources.length; ++counter) { var resource = resources[counter]; var id1 = ctrl.bookid; var id2 = resource.groupId; var lan1 = languageIDFromTabs == null || languageIDFromTabs === 0 ? 1 : languageIDFromTabs; var lan2 = resource.languageId == null || resource.languageId === 0 ? 1 : resource.languageId; if (folders.isScienceSubject()) { lan1 = languageIDFromTabs == null || languageIDFromTabs === 0 ? 0 : languageIDFromTabs; lan2 = resource.languageId == null || resource.languageId === 0 ? 0 : resource.languageId; } if (parseInt(lan1) === parseInt(lan2)) { if (parseInt(id1) === parseInt(id2)) { if (ctrl.showasbutton === 0 && ctrl.resourcetype !== 'project-based-learning-pack' && ctrl.resourcetype !== 'summer-school-pack') { if (resource.resourcetype) { if (isResource(resource)) { return true; } } if (resource.links && resource.links.length > 0) { for (var c = 0; c < resource.links.length; c++) { var link = resource.links[c]; if (isLinkResource(link)) { return true; } } } } else { return true; } } else if (resource.resourceIDs) { for (var childCounter = 0; childCounter < resource.resourceIDs.length; ++childCounter) { var childResource = resource.resourceIDs[childCounter]; if (childResource.raz_book_id && parseInt(id1) === parseInt(childResource.raz_book_id)) { return true; } } } } } return false; }; var isResource = function(resource) { if (resource.worksheetsubtypeid !== null) { return ( ctrl.resourcetype === resource.resourcetype && ctrl.worksheetsubtypeid === resource.worksheetsubtypeid && ctrl.worksheettype === resource.worksheettype ); } else { return ctrl.resourcetype === resource.resourcetype; } }; var isLinkResource = function(link) { if (link.worksheet_subtype_id !== null) { return ( ctrl.resourcetype === link.resource_type && ctrl.worksheetsubtypeid === link.worksheet_subtype_id && ctrl.worksheettype === link.worksheet_type ); } else { return ctrl.resourcetype === link.resource_type; } }; function checkForXSmallSize(currentSize) { if (ctrl.resourcetype === FileCabinetConstants.ISL_PACK_OPTION) { return ctrl.buttonSizes.xSmall; } return currentSize; } } ]); }());