summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/ui/blueprint/BlueprintUpload.js
blob: fd3a6595b4455aa6013c6d96f142f297b75ea557 (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
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
116
117
118
119
120
121
122
var BlueprintUploadView = UploadView.extend({
	el: ".blueprintUpload",
	
	mediaTag: "blueprint",
	createAction: "/api/media/new",
	uploadAction: "/api/media/upload",
	listAction: "/api/media/user",
	destroyAction: "/api/media/destroy",

	events: {
		"mousedown": 'stopPropagation',
    "change .url": "enterUrl",
    "keydown .url": "enterSetUrl",
    
    "click .blueprint": "choose",
    "change [name=blueprint-dimensions]": "changeDimensions",
    "change [name=blueprint-units]": "changeUnits",
    "click #saveBlueprint": "save",
  },
	
	initialize: function(opt){
	  this.parent = opt.parent
	  this.__super__.initialize.call(this)

    this.$url = this.$(".url")

    this.$blueprintMap = this.$("#blueprintMap")
    this.$blueprintDimensionsRapper = this.$("#blueprintDimensions")
    this.$dimensions = this.$("[name=blueprint-dimensions]")
    this.$units = this.$("[name=blueprint-units]")
    this.$save = this.$("#saveBlueprint")
    
    this.map = new Map ({ type: 'ortho' })
    
    this.load()
	},
	
  loaded: false,
	load: function(){
		$.get(this.listAction, { tag: this.mediaTag }, this.populate.bind(this))
	},

	populate: function(data){
		this.loaded = true
		if (data && data.length) {
		  data.forEach(this.append.bind(this))
		  this.$(".txt").hide()
		}
		else {
		  this.$(".txt").show()
		}
	},
	
	append: function(media){
	  var $el = $("<div>")
	  $el.data("id", media._id)
	  $el.addClass("blueprint")
	  this.$blueprints.append($el)
	},
	
	pick: function(e){
	  var $el = $(e.currentTarget)
	  // load map with it
	},
  
	destroy: function(_id, cb){
		$.ajax({
			type: "delete",
			url: this.destroyAction,
			data: { _id: _id, _csrf: $("[name=_csrf]").val() }
		}).complete(cb || function(){})
	},
	
	show: function(){
    this.toggle(true)
	},
	hide: function(){
		this.toggle(false)
	},
	toggle: function (state) {
    this.$el.toggleClass("active", state)
	},

	addUrl: function (url){
		Parser.loadImage(url, function(media){
			if (! media) return
			media._csrf = $("[name=_csrf]").val()
			media.tag = this.mediaTag
			
			var request = $.ajax({
				type: "post",
				url: this.createAction,
				data: media,
			})
			request.done(this.add.bind(this))
			
		}.bind(this))
	},
  enterUrl: function(){
  	var url = this.$url.sanitize()
  	this.addUrl(url)
  	this.$url.val("")
  },
	enterSetUrl: function (e) {
		e.stopPropagation()
		if (e.keyCode == 13) {
			setTimeout(this.enterUrl.bind(this), 100)
		}
	},
	
	add: function(media){
	  this.append(media)
	},
	changeDimensions: function(){
	},
	changeUnits: function(){
	},
	save: function(){
	},

})