summaryrefslogtreecommitdiff
path: root/public/assets/js/drag.js
blob: 8ef86c22d40ad9cbaa5bcc02a7c1cc14f75508c6 (plain)
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
var DragView = UploadView.extend({

  el: "body",

  uploadAction: "/p/upload",

  selfDrag: false,

  events: {
    'dragover': 'dragover',
    'dragstart': 'dragstart',
    'drop': 'handleDrop',
    'change .file': 'handleFileSelect',
  },

  drop: function(){
    $("#droparea").hide()
    $("#loading").show()
  },

  dragover: function(e){
    e.stopPropagation()
    e.preventDefault()
    if (this.selfDrag) {
      $("#droparea").hide()
    }
    else {
      $("#droparea").show()
    }
  },

  // set if we're dragging an image from the page, versus from another window
  dragstart: function(e){
    this.selfDrag = true
  },

  handleDrop: function(e){
    var base = this
    e.stopPropagation()
    e.preventDefault()

    e = e.originalEvent

    if (e.dataTransfer && ! this.selfDrag) {
      if (e.dataTransfer.files.length) {
        this.handleFileSelect(e)
      }
    }
    else {
      this.handleFileSelect(e)
    }
    this.selfDrag = false
    this.drop()
  },

  add: function(data){
    $("#loading").hide()
    app.view.display(data)
    history.pushState(data, document.title, "/p/" + data.id)
  },

})