Projet

Général

Profil

Révision 7547bb19

Ajouté par Assos Assos il y a environ 7 ans

Weekly update of contrib modules

Voir les différences:

drupal7/sites/all/modules/views_slideshow/contrib/views_slideshow_cycle/js/views_slideshow_cycle.js
1

  
2 1
/**
3 2
 *  @file
4 3
 *  A simple jQuery Cycle Div Slideshow Rotator.
......
24 23
            settings.processedAfter = 1;
25 24
            slideNum = (typeof settings.opts.startingSlide == 'undefined') ? 0 : settings.opts.startingSlide;
26 25
          }
26
          if (settings.pause_after_slideshow) {
27
            opts.counter += 1;
28
            if (opts.counter == settings.num_divs + 1) {
29
              opts.counter = 1;
30
              Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": settings.slideshowId, "force": true });
31
            }
32
          }
27 33
          Drupal.viewsSlideshow.action({ "action": 'transitionEnd', "slideshowID": settings.slideshowId, "slideNum": slideNum });
28 34
        }
29 35
        // Pager before function.
30 36
        var pager_before_fn = function(curr, next, opts) {
37
          $(document).trigger('drupal:views_slideshow_cycle:before', {
38
            curr: curr, next: next, opts: opts, settings: settings
39
          });
40

  
31 41
          var slideNum = opts.nextSlide;
32 42

  
33 43
          // Remember last slide.
......
60 70
          sync:settings.sync,
61 71
          random:settings.random,
62 72
          nowrap:settings.nowrap,
73
          pause_after_slideshow:settings.pause_after_slideshow,
74
          counter:0,
63 75
          after:pager_after_fn,
64 76
          before:pager_before_fn,
65 77
          cleartype:(settings.cleartype)? true : false,
......
120 132
            $('#views_slideshow_cycle_teaser_section_' + settings.vss_id).hover(mouseIn, mouseOut);
121 133
          }
122 134
        }
123
        
135

  
124 136
        // Play on hover.
125 137
        if (settings.play_on_hover) {
126 138
          var mouseIn = function() {
......
379 391
    }
380 392
  };
381 393

  
394
  /**
395
   * Views Slideshow swipe support.
396
   */
397
  Drupal.behaviors.viewsSlideshowSwipe = {
398
    attach: function (context) {
399
      var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0));
400
      if (isTouch === true && $('.views-slideshow-cycle-main-frame').length) {
401
        var $slider = $('.views-slideshow-cycle-main-frame'),
402
          opts = {
403
            start: {x: 0, y: 0},
404
            end: {x: 0, y: 0},
405
            hdiff: 0,
406
            vdiff: 0,
407
            length: 0,
408
            angle: null,
409
            direction: null,
410
          },
411
          optsReset = $.extend(true, {}, opts),
412
         H_THRESHOLD =  110, // roughly one inch effective resolution on ipad
413
         V_THRESHOLD = 50;
414
        $slider.data('bw', opts)
415
        .bind('touchstart.cycle', function (e) {
416
          var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
417
          if (e.originalEvent.touches.length == 1) {
418
            var data = $(this).data('bw');
419
            data.start.x = touch.pageX;
420
            data.start.y = touch.pageY;
421
            $(this).data('bw', data);
422
          }
423
        })
424
        .bind('touchend.cycle', function (e) {
425
          var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
426
          var data = $(this).data('bw');
427
          data.end.x = touch.pageX;
428
          data.end.y = touch.pageY;
429
          $(this).data('bw', data);
430
          if (data.start.x != 0 && data.start.y != 0) {
431
            data.vdiff = data.start.x - data.end.x;
432
            data.hdiff = data.end.y - data.start.y;
433
            if (Math.abs(data.vdiff) == data.start.x && Math.abs(data.hdiff) == data.start.y) {
434
              data.vdiff = 0;
435
              data.hdiff = 0;
436
            }
437
            var length = Math.round(Math.sqrt(Math.pow(data.vdiff,2) + Math.pow(data.hdiff,2)));
438
            var rads = Math.atan2(data.hdiff, data.vdiff);
439
            var angle = Math.round(rads*180/Math.PI);
440
            if (angle < 0) { angle = 360 - Math.abs(angle); }
441
            if (length > H_THRESHOLD && V_THRESHOLD > data.hdiff) {
442
              e.preventDefault();
443
              if (angle > 135 && angle < 225) {
444
                var cyopt = $slider.data('cycle.opts');
445
                if (cyopt.currSlide > 0) {
446
                  $slider.cycle((cyopt.currSlide - 1), 'scrollRight');
447
                }
448
                else {
449
                   $slider.cycle((cyopt.slideCount - 1), 'scrollRight');
450
                }
451
              }
452
              else if (angle > 315 || angle < 45) {
453
                $slider.cycle('next');
454
              }
455
            }
456
          }
457
          data = $.extend(true, {}, optsReset);
458
        });
459
      }
460
    }
461
  };
462

  
382 463
  Drupal.viewsSlideshowCycle = Drupal.viewsSlideshowCycle || {};
383 464

  
384 465
  // Cleanup the values of advanced options.

Formats disponibles : Unified diff