1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
var NavView = View.extend({
el: "body",
events: {
"click .prev": "prev",
"click .next": "next",
"touchstart .prev": "prev",
"touchstart .next": "next",
"touchstart .link": "link",
"click .refresh": "refresh",
"click .random": "random",
},
initialize: function(){
this.id = -1
this.$pip = this.$("#pip")
this.$pip_img = this.$("#pip img")
this.$image = this.$("#luckyimage")
$(window).on("keydown", this.keydown.bind(this))
$(document).ajaxError(function(){
this.fetching = false
}.bind(this))
window.onpopstate = function(event) {
this.display(event.state)
}.bind(this)
if (window.location.pathname.indexOf("/p/") !== -1) {
var id = window.location.pathname.split("/")[2]
this.fetch(id)
}
else {
this.latest()
}
$(".prev").on("touchstart", function(){
console.log("<<<<<PREV")
})
$(".prev").on("click", function(){
console.log("<<<<<CLICKPREV")
})
},
keydown: function(e){
if (e.shiftKey || e.metaKey || e.ctrlKey || e.altKey) { return }
switch (e.keyCode) {
case 37: // left
this.prev()
break
case 39: // right
this.next()
break
case 38: // up
this.random()
break
case 40: // down
this.latest()
break
}
},
latest: function(){
if (this.fetching) return
this.fetch("latest")
this.onLatest = true
},
prev: function(){
if (this.fetching) return
if (this.id - 1 < 1) { return }
this.fetch(this.id-1)
},
next: function(){
if (this.fetching) return
if (this.onLatest || this.id < 1) { return }
this.fetch(this.id+1)
},
random: function(){
if (this.fetching) return
this.fetch("random")
},
fetch: function(id){
this.fetching = true
this.onLatest = false
$.get("/get/" + id, function(data){
this.fetching = false
this.display(data)
history.pushState(data, document.title, "/p/" + data.id)
}.bind(this))
},
display: function(data){
if (! data || ! data.id) {
this.onLatest = true
return
}
this.data = data
this.id = data.id
if (is_desktop) {
this.$pip.attr("href", data.url)
this.$pip_img.attr("src", "")
setTimeout(function(){ this.$pip_img.attr("src", data.url) }.bind(this))
}
this.$image.css("background-image", "url(" + data.url + ")")
},
link: function(){
window.open(this.data.url, "_blank")
},
})
|