Mercurial > hg > rr-repo
diff sites/all/modules/flexslider_views_slideshow/js/flexslider_views_slideshow.js @ 2:b74b41bb73f0
-- Google analytics module
author | danieleb <danielebarchiesi@me.com> |
---|---|
date | Thu, 22 Aug 2013 17:22:54 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sites/all/modules/flexslider_views_slideshow/js/flexslider_views_slideshow.js Thu Aug 22 17:22:54 2013 +0100 @@ -0,0 +1,125 @@ +(function ($) { + // @todo convert to use Drupal.behaviors + // @todo add configuration options + + // Register callback to save references to flexslider instances. Allows + // Views Slideshow controls to affect the slider + function flexslider_views_slideshow_register(fullId, slider) { + Drupal.flexsliderViewsSlideshow.active = Drupal.flexsliderViewsSlideshow.active || {}; + Drupal.flexsliderViewsSlideshow.active[fullId] = slider; + } + + Drupal.behaviors.flexsliderViewsSlideshow = { + attach: function (context) { + $('.flexslider_views_slideshow_main:not(.flexslider_views_slideshow-processed)', context).addClass('flexslider_views_slideshow-processed').each(function() { + // Get the ID of the slideshow + var fullId = '#' + $(this).attr('id'); + + // Create settings container + var settings = Drupal.settings.flexslider_views_slideshow[fullId]; + + //console.log(settings); + + // @todo map the settings from the form to their javascript equivalents + settings.targetId = fullId; + + settings.loaded = false; + + // Assign default settings + // @todo update the list of options to match the new set + settings.opts = { + // v2.x options + namespace:settings.namespace, + selector:settings.selector, + easing:settings.easing, + direction:settings.direction, + reverse:settings.reverse, + smoothHeight:settings.smoothHeight, + startAt:settings.startAt, + animationSpeed:settings.animationSpeed, + initDelay:settings.initDelay, + useCSS:settings.useCSS, + touch:settings.touch, + video:settings.video, + keyboard:settings.keyboard, + multipleKeyboard:settings.multipleKeyboard, + mousewheel:settings.mousewheel, + controlsContainer:settings.controlsContainer, + sync:settings.sync, + asNavFor:settings.asNavFor, + itemWidth:settings.itemWidth, + itemMargin:settings.itemMargin, + minItems:settings.minItems, + maxItems:settings.maxItems, + move:settings.move, + // v1.x options + animation:settings.animation, + slideshow:settings.slideshow, + slideshowSpeed:settings.slideshowSpeed, + directionNav:settings.directionNav, + controlNav:settings.controlNav, + prevText:settings.prevText, + nextText:settings.nextText, + pausePlay:settings.pausePlay, + pauseText:settings.pauseText, + playText:settings.playText, + randomize:settings.randomize, + animationLoop:settings.animationLoop, + pauseOnAction:settings.pauseOnAction, + pauseOnHover:settings.pauseOnHover, + manualControls:settings.manualControls, + start: function(slider) { + flexslider_views_slideshow_register(fullId, slider); + } + // @todo register other callbacks + }; + + Drupal.flexsliderViewsSlideshow.load(fullId); + }); + } + }; + + + // Initialize the flexslider object + Drupal.flexsliderViewsSlideshow = Drupal.flexsliderViewsSlideshow || {}; + + // Load mapping from Views Slideshow to FlexSlider + Drupal.flexsliderViewsSlideshow.load = function(fullId) { + var settings = Drupal.settings.flexslider_views_slideshow[fullId]; + + // Ensure the slider isn't already loaded + if (!settings.loaded) { + $(settings.targetId + " .flexslider").flexslider(settings.opts); + settings.loaded = true; + } + } + + // Pause mapping from Views Slideshow to FlexSlider + Drupal.flexsliderViewsSlideshow.pause = function (options) { + Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].pause(); + Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].manualPause = true; + } + + // Play mapping from Views Slideshow to FlexSlider + Drupal.flexsliderViewsSlideshow.play = function (options) { + console.log(Drupal.flexsliderViewsSlideshow); + Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].resume(); + Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].manualPause = false; + } + + Drupal.flexsliderViewsSlideshow.nextSlide = function (options) { + var target = Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].getTarget('next'); + + if (Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].canAdvance(target)) { + Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].flexAnimate(target, Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].vars.pauseOnAction); + } + } + Drupal.flexsliderViewsSlideshow.previousSlide = function (options) { + var target = Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].getTarget('prev'); + + if (Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].canAdvance(target)) { + Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].flexAnimate(target, Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].vars.pauseOnAction); + } + } + // @todo add support for jquery mobile page init +})(jQuery); \ No newline at end of file