(function() { "use strict"; angular.module("raz") .component('resourceSlider', { templateUrl: '/js/angular/resource-slider/resource-slider.html', controller: 'resourceSlider', bindings: { resourceCollectionInfo: '<', sliderId: '@' } }) .controller('resourceSlider', [ function() { var ctrl = this; var didInit = false; var resourcesPerSlider = 5; var currentSlider = 0; ctrl.sliderResources = []; ctrl.sliderWidth = 0; ctrl.sliderContainerWidth = 0; ctrl.$onInit = function() { resetVariables(); initSliderInfo(); didInit = true; }; ctrl.$onChanges = function() { if (didInit) { resetVariables(); initSliderInfo(); } }; ctrl.slidePrevious = function() { if (ctrl.totalResourceSliders <= 1) { return; } if (currentSlider == 0) { currentSlider = ctrl.totalResourceSliders - 1; //need to go forward to 'last' } else { --currentSlider; } doSlideAnim(); }; ctrl.slideNext = function() { if (ctrl.totalResourceSliders <= 1) { return; } if (currentSlider == (ctrl.totalResourceSliders - 1)) { //need to go backward to first currentSlider = 0; } else { ++currentSlider; } doSlideAnim(); }; ctrl.getPopoverPosition = function(index) { if ((index == 3) || (index == 4)){ return 'left'; } else { return 'right'; } }; var resetVariables = function() { ctrl.resourceCount = ctrl.resourceCollectionInfo['count']; ctrl.totalResourceSliders = Math.ceil(ctrl.resourceCount / resourcesPerSlider); ctrl.sliderResources = []; currentSlider = 0; }; var initSliderInfo = function() { ctrl.sliderWidth = angular.element(".bookGridApp").css('width'); ctrl.sliderContainerWidth = parseInt(ctrl.sliderWidth) * ctrl.totalResourceSliders + 'px'; for (var sliderNumber = 0; sliderNumber < ctrl.totalResourceSliders; sliderNumber++) { ctrl.sliderResources[sliderNumber] = fillSlider(sliderNumber); } }; var fillSlider = function(sliderNumber) { var tempArray = []; for (var i = 0; i < resourcesPerSlider; i++) { var index = resourcesPerSlider * sliderNumber + i; if (index < ctrl.resourceCount) { tempArray[i] = ctrl.resourceCollectionInfo['resourceInfo'][index]; } else { break; } } return tempArray; }; var doSlideAnim = function() { var sliderId = '#sliderContainer' + ctrl.sliderId; angular.element(sliderId).animate({ left: -(currentSlider * parseInt(ctrl.sliderWidth)) +'px' }, 750); } }]); })();