implement gestures

This commit is contained in:
r888888888
2017-09-23 13:14:49 -07:00
parent 43199eb188
commit 5ad18aef22
6 changed files with 81 additions and 18 deletions

View File

@@ -1,3 +1,4 @@
//= require hammer.min.js
//= require jquery-1.11.1.min.js
//= require jquery-ui-1.11.2.min.js
//= require jquery.hotkeys.js
@@ -5,6 +6,7 @@
//= require jquery-ui-autocomplete-custom.js
//= require jquery.storageapi.js
//= require jquery.dropdown.min.js
//= require jquery.hammer.js
//= require ugoira_player.js
//= require stupidtable.js
//= require rails.js

View File

@@ -13,6 +13,7 @@
if ($("#c-posts").length && $("#a-index").length) {
this.initialize_excerpt();
this.initialize_gestures();
}
if ($("#c-posts").length && $("#a-show").length) {
@@ -24,6 +25,7 @@
this.initialize_post_image_resize_to_window_link();
this.initialize_similar();
this.initialize_replace_image_dialog();
this.initialize_gestures();
if ((Danbooru.meta("always-resize-images") === "true") || ((Danbooru.Cookie.get("dm") != "1") && (window.innerWidth <= 660))) {
$("#image-resize-to-window-link").click();
@@ -35,6 +37,38 @@
}
}
Danbooru.Post.initialize_gestures = function() {
var hasNext = $("a[rel~=next]").length > 0;
var hasPrev = $("a[rel~=prev]").length > 0;
if (hasNext) {
$("body").hammer().bind("panleft", function(e) {
var percentage = 100 * e.gesture.deltaX / window.innerWidth;
$("body").css({"transition-duration": "0.1s", "transform": "translateX(" + percentage + "%)"});
});
}
if (hasPrev) {
$("body").hammer().bind("panright", function(e) {
var percentage = 100 * e.gesture.deltaX / window.innerWidth;
$("body").css({"transition-duration": "0.1s", "transform": "translateX(" + percentage + "%)"});
});
}
$("body").hammer().bind("panend", function(e) {
var percentage = e.gesture.deltaX / window.innerWidth;
if (hasPrev && percentage > 0.4) {
$("body").css({"transition-timing-function": "ease", "transition-duration": "0.3s", "opacity": "0", "transform": "translateX(150%)"});
Danbooru.Post.nav_prev(e);
} else if (hasNext && percentage < -0.4) {
$("body").css({"transition-timing-function": "ease", "transition-duration": "0.3s", "opacity": "0", "transform": "translateX(-150%)"});
Danbooru.Post.nav_next(e);
} else {
$("body").css({"transition-timing-function": "ease", "transition-duration": "0.5s", "transform": "none"});
}
});
}
Danbooru.Post.initialize_edit_dialog = function(e) {
$("#open-edit-dialog").button().show().click(function(e) {
$(window).scrollTop($("#image").offset().top);
@@ -133,8 +167,10 @@
if (href) {
location.href = href;
}
} else if ($(".paginator a[rel~=prev]").length) {
location.href = $("a[rel~=prev]").attr("href");
} else {
var href = $("#pool-nav a.active[rel=prev], #favgroup-nav a.active[rel=prev]").attr("href");
var href = $("#pool-nav a.active[rel~=prev], #favgroup-nav a.active[rel~=prev]").attr("href");
if (href) {
location.href = href;
}
@@ -147,8 +183,10 @@
if ($("#search-seq-nav").length) {
var href = $("#search-seq-nav a[rel~=next]").attr("href");
location.href = href;
} else if ($("a[rel~=next]").length) {
location.href = $("a[rel~=next]").attr("href");
} else {
var href = $("#pool-nav a.active[rel=next], #favgroup-nav a.active[rel=next]").attr("href");
var href = $("#pool-nav a.active[rel~=next], #favgroup-nav a.active[rel~=next]").attr("href");
if (href) {
location.href = href;
}

View File

@@ -48,7 +48,7 @@ end
combined_spammers.each do |uid|
unless Ban.where(user_id: uid).exists?
Ban.create(duration: 10000, reason: "Spam (automated ref f6147ace)", user_id: uid)
Ban.create!(duration: 10000, reason: "Spam (automated ref f6147ace)", user_id: uid)
puts "banned #{uid}"
sleep 1
end

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,33 @@
(function(factory) {
if (typeof define === 'function' && define.amd) {
define(['jquery', 'hammerjs'], factory);
} else if (typeof exports === 'object') {
factory(require('jquery'), require('hammerjs'));
} else {
factory(jQuery, Hammer);
}
}(function($, Hammer) {
function hammerify(el, options) {
var $el = $(el);
if(!$el.data("hammer")) {
$el.data("hammer", new Hammer($el[0], options));
}
}
$.fn.hammer = function(options) {
return this.each(function() {
hammerify(this, options);
});
};
// extend the emit method to also trigger jQuery events
Hammer.Manager.prototype.emit = (function(originalEmit) {
return function(type, data) {
originalEmit.call(this, type, data);
$(this.element).trigger({
type: type,
gesture: data
});
};
})(Hammer.Manager.prototype.emit);
}));

View File

@@ -1,8 +0,0 @@
/*! jQuery plugin for Hammer.JS - v1.1.0dev - 2014-04-11
* http://eightmedia.github.com/hammer.js
*
* Copyright (c) 2014 Jorik Tangelder <j.tangelder@gmail.com>;
* Licensed under the MIT license */
!function(a){"use strict";function b(a,b){Date.now||(Date.now=function(){return(new Date).getTime()}),a.utils.each(["on","off"],function(c){a.utils[c]=function(a,d,e){b(a)[c](d,function(a){var c=b.extend({},a.originalEvent,a);e.call(this,c)})}}),a.Instance.prototype.trigger=function(a,c){var d=b(this.element);return d.has(c.target).length&&(d=b(c.target)),d.trigger({type:a,gesture:c})},b.fn.hammer=function(c){return this.each(function(){var d=b(this),e=d.data("hammer");e?e&&c&&a.utils.extend(e.options,c):d.data("hammer",new a(this,c||{}))})}}"function"==typeof define&&define.amd?define(["hammerjs","jquery"],b):b(a.Hammer,a.jQuery||a.Zepto)}(window);
//# sourceMappingURL=jquery.hammer.min.map