summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/ui
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/ui')
-rw-r--r--public/assets/javascripts/ui/blueprint/BlueprintScaler.js91
-rw-r--r--public/assets/javascripts/ui/blueprint/BlueprintView.js3
2 files changed, 88 insertions, 6 deletions
diff --git a/public/assets/javascripts/ui/blueprint/BlueprintScaler.js b/public/assets/javascripts/ui/blueprint/BlueprintScaler.js
index a81c89b..addf9a9 100644
--- a/public/assets/javascripts/ui/blueprint/BlueprintScaler.js
+++ b/public/assets/javascripts/ui/blueprint/BlueprintScaler.js
@@ -1,10 +1,13 @@
-var BlueprintScaler = ModalView.extend({
+var BlueprintScaler = ModalFormView.extend({
el: ".blueprintScaler",
+ method: "/api/media/scale",
+
events: {
"change [name=blueprint-dimensions]": "changeDimensions",
"change [name=blueprint-units]": "changeUnits",
+ "click .uploadNewBlueprint": "showBlueprintUpload",
"click #saveBlueprint": "save",
},
@@ -12,6 +15,7 @@ var BlueprintScaler = ModalView.extend({
this.$blueprintMap = this.$("#blueprintMap")
this.$blueprintDimensionsRapper = this.$("#blueprintDimensions")
this.$dimensions = this.$("[name=blueprint-dimensions]")
+ this.$pixels = this.$("[name=blueprint-pixels]")
this.$units = this.$("[name=blueprint-units]")
this.$save = this.$("#saveBlueprint")
@@ -24,23 +28,40 @@ var BlueprintScaler = ModalView.extend({
zoom_min: -6.2,
zoom_max: 1,
})
- map.ui.add_tool("arrow", new ArrowTool)
- map.ui.add_tool("position", new PositionTool)
- map.ui.set_tool("position")
+ this.lineTool = new LineTool
+ map.ui.add_tool("line", this.lineTool)
+ map.ui.set_tool("line")
scene = scene || { camera: { x: 0, y: 0, z: 0 } }
this.floorplan = new MX.Image ()
- this.animate()
+ this.animating = false
+ },
+
+ showBlueprintUpload: function(){
+ this.parent.blueprintUpload.show()
},
pick: function(media){
+ this.media = media
+
+ if (!! media.scale) {
+ this.parent.useFloorplan(media)
+ }
+
this.floorplan.load({ media: media, keepImage: true })
+
+ if (! this.animating) {
+ this.animating = true
+ this.animate()
+ }
},
animate: function(t){
requestAnimationFrame(this.animate.bind(this))
+
+ if (! this.animating) return
var dt = t - this.last_t
this.last_t = t
@@ -53,6 +74,27 @@ var BlueprintScaler = ModalView.extend({
this.map.draw.translate()
this.floorplan.draw(this.map.draw.ctx, true)
+
+ this.map.draw.ctx.strokeStyle = "#f00"
+ this.map.draw.ctx.lineWidth = 2/map.zoom
+ switch (this.lineTool.line.length) {
+ case 1:
+ this.map.draw.line(
+ this.lineTool.line[0].a,
+ this.lineTool.line[0].b,
+ this.lineTool.cursor.x.a,
+ this.lineTool.cursor.y.a
+ )
+ break
+ case 2:
+ this.map.draw.line(
+ this.lineTool.line[0].a,
+ this.lineTool.line[0].b,
+ this.lineTool.line[1].a,
+ this.lineTool.line[1].b
+ )
+ break
+ }
this.map.draw.coords()
@@ -62,10 +104,47 @@ var BlueprintScaler = ModalView.extend({
},
changeDimensions: function(){
+ app.units = this.$units.val()
+ this.$dimensions.unitVal()
},
changeUnits: function(){
+ app.units = this.$units.val()
+ this.$dimensions.resetUnitVal()
+ },
+ lineLength: function(){
+ if (this.lineTool.line.length !== 2) return 0
+ var line = this.lineTool.line
+ return dist( line[0].a, line[0].b, line[1].a, line[1].b )
+ }
+
+ validate: function(){
+ var val = this.$dimensions.unitVal()
+ var errors = []
+ if (! this.lineLength()) {
+ errors.push("no line")
+ alert("Please click two corners of a wall and then specify how long it is in feet or meters.")
+ }
+ else if (val == 0) {
+ errors.push("no measurement")
+ alert("Please tell us how long the wall is in feet or meters.")
+ }
+ return errors
},
- save: function(){
+
+ showErrors: function(){},
+
+ serialize: function(){
+ var fd = new FormData()
+ fd.append( "_id", this.media._id)
+ fd.append( "units", this.$units.val() )
+ fd.append( "scale", this.$dimensions.unitVal() / this.lineLength() )
+ fd.append( "_csrf", $("[name=_csrf]").val())
+ return fd
+ },
+
+ success: function(){
+ this.animating = false
+ this.parent.useFloorplan(media)
},
})
diff --git a/public/assets/javascripts/ui/blueprint/BlueprintView.js b/public/assets/javascripts/ui/blueprint/BlueprintView.js
index a803f12..6b204e5 100644
--- a/public/assets/javascripts/ui/blueprint/BlueprintView.js
+++ b/public/assets/javascripts/ui/blueprint/BlueprintView.js
@@ -33,6 +33,9 @@ var BlueprintView = View.extend({
hideExtras: function(){
},
+
+ useFloorplan: function(media){
+ },
pickWall: function(wall, pos){
},