Skip to content

Instantly share code, notes, and snippets.

@stovak
Created November 7, 2011 01:48

Revisions

  1. stovak revised this gist Nov 8, 2011. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion gistfile1.js
    Original file line number Diff line number Diff line change
    @@ -35,7 +35,9 @@ if ( Drupal.settings.isTouchDevice() ) {
    h = parseInt(self.original.x - self.changed.x), v = parseInt(self.original.y - self.changed.y);
    if (h !== 0) { self.direction.x = (h < 0) ? "right":"left"; }
    if (v !== 0) { self.direction.y = (v < 0) ? "up": "down"; }
    jQuery(self).trigger("swipe");
    if ((h+v) != 0) {
    jQuery(self).trigger("swipe");
    }
    },
    handleTouchEnd: function(evt) {
    self = Drupal.behaviors.jQueryMobileSlideShowTouchAdvance;
  2. stovak revised this gist Nov 7, 2011. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion gistfile1.js
    Original file line number Diff line number Diff line change
    @@ -40,7 +40,7 @@ if ( Drupal.settings.isTouchDevice() ) {
    handleTouchEnd: function(evt) {
    self = Drupal.behaviors.jQueryMobileSlideShowTouchAdvance;
    evt.target.removeEventListener("touchmove", self.handleTouchMove);
    evt.target.removeEventListener("touchmove", self.handleTouchEnd);
    evt.target.removeEventListener("touchend", self.handleTouchEnd);
    self.fired = false;
    },
    handleSwipe: function(evt) {
  3. stovak revised this gist Nov 7, 2011. 1 changed file with 2 additions and 3 deletions.
    5 changes: 2 additions & 3 deletions gistfile1.js
    Original file line number Diff line number Diff line change
    @@ -1,9 +1,8 @@

    if ( Drupal.settings.isTouchDevice = function() {
    Drupal.settings.isTouchDevice = function() {
    return "ontouchstart" in window;
    }

    upal.settings.isTouchDevice() ) {
    if ( Drupal.settings.isTouchDevice() ) {
    Drupal.behaviors.jQueryMobileSlideShowTouchAdvance = {
    attach: function(context, settings) {
    self = Drupal.behaviors.jQueryMobileSlideShowTouchAdvance;
  4. stovak revised this gist Nov 7, 2011. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion gistfile1.js
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,9 @@

    if ( Drupal.settings.isTouchDevice = function() {
    return "ontouchstart" in window;
    }

    if ( Drupal.settings.isTouchDevice() ) {
    upal.settings.isTouchDevice() ) {
    Drupal.behaviors.jQueryMobileSlideShowTouchAdvance = {
    attach: function(context, settings) {
    self = Drupal.behaviors.jQueryMobileSlideShowTouchAdvance;
  5. stovak created this gist Nov 7, 2011.
    52 changes: 52 additions & 0 deletions gistfile1.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,52 @@


    if ( Drupal.settings.isTouchDevice() ) {
    Drupal.behaviors.jQueryMobileSlideShowTouchAdvance = {
    attach: function(context, settings) {
    self = Drupal.behaviors.jQueryMobileSlideShowTouchAdvance;
    jQuery.each(jQuery(".views_slideshow_cycle_main.viewsSlideshowCycle-processed"), function(idx, value) {
    value.addEventListener("touchstart", self.handleTouchStart);
    jQuery(value).addClass("views-slideshow-mobile-processed");
    })
    jQuery(self).bind("swipe", self.handleSwipe);
    },
    detach: function() { }, original: { x: 0, y: 0},
    changed: { x: 0, y: 0}, direction: { x: "", y: "" }, fired: false,
    handleTouchStart: function(evt) {
    self = Drupal.behaviors.jQueryMobileSlideShowTouchAdvance;
    if (evt.touches) {
    if (evt.targetTouches.length != 1) { return false; } // don't respond to gestures
    if (evt.touches.length) { evt.preventDefault(); evt.stopPropagation() }
    self.original = { x: evt.touches[0].clientX, y: evt.touches[0].clientY }
    self.target = jQuery(this).attr("id").replace("views_slideshow_cycle_main_", "");
    Drupal.viewsSlideshow.action({ "action": "pause", "slideshowID": self.target });
    evt.target.addEventListener("touchmove", self.handleTouchMove);
    evt.target.addEventListener("touchend", self.handleTouchEnd);
    }
    },
    handleTouchMove: function(evt) {
    self = Drupal.behaviors.jQueryMobileSlideShowTouchAdvance;
    self.changed = {
    x: (evt.touches.length) ? evt.touches[0].clientX: evt.changedTouches[0].clientX,
    y: (evt.touches.length) ? evt.touches[0].clientY: evt.changedTouches[0].clientY
    };
    h = parseInt(self.original.x - self.changed.x), v = parseInt(self.original.y - self.changed.y);
    if (h !== 0) { self.direction.x = (h < 0) ? "right":"left"; }
    if (v !== 0) { self.direction.y = (v < 0) ? "up": "down"; }
    jQuery(self).trigger("swipe");
    },
    handleTouchEnd: function(evt) {
    self = Drupal.behaviors.jQueryMobileSlideShowTouchAdvance;
    evt.target.removeEventListener("touchmove", self.handleTouchMove);
    evt.target.removeEventListener("touchmove", self.handleTouchEnd);
    self.fired = false;
    },
    handleSwipe: function(evt) {
    self = Drupal.behaviors.jQueryMobileSlideShowTouchAdvance;
    if (evt != undefined && self.fired == false) {
    Drupal.viewsSlideshow.action({ "action": (self.direction.x == "left")?"nextSlide":"previousSlide", "slideshowID": self.target });
    self.fired = true; //only fire advance once per touch
    }
    }
    }
    }