Révision 7547bb19
Ajouté par Assos Assos il y a environ 7 ans
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
Weekly update of contrib modules