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/_router.js4
-rw-r--r--public/assets/javascripts/ui/blueprint/BlueprintEditor.js148
-rw-r--r--public/assets/javascripts/ui/blueprint/BlueprintScaler.js6
-rw-r--r--public/assets/javascripts/ui/blueprint/BlueprintToolbar.js69
-rw-r--r--public/assets/javascripts/ui/blueprint/BlueprintUploader.js (renamed from public/assets/javascripts/ui/blueprint/BlueprintUpload.js)12
-rw-r--r--public/assets/javascripts/ui/blueprint/BlueprintView.js30
6 files changed, 159 insertions, 110 deletions
diff --git a/public/assets/javascripts/ui/_router.js b/public/assets/javascripts/ui/_router.js
index 177e86f..e5e46e5 100644
--- a/public/assets/javascripts/ui/_router.js
+++ b/public/assets/javascripts/ui/_router.js
@@ -92,7 +92,9 @@ var SiteRouter = Router.extend({
})
}
- $("body").removeClass("loading")
+ setTimeout(function(){
+ $("body").removeClass("loading")
+ }, 200)
},
layoutEditor: function(e, name){
diff --git a/public/assets/javascripts/ui/blueprint/BlueprintEditor.js b/public/assets/javascripts/ui/blueprint/BlueprintEditor.js
index c781495..545de7b 100644
--- a/public/assets/javascripts/ui/blueprint/BlueprintEditor.js
+++ b/public/assets/javascripts/ui/blueprint/BlueprintEditor.js
@@ -7,22 +7,6 @@ var BlueprintEditor = View.extend(AnimatedView.prototype).extend({
initialize: function(opt){
this.parent = opt.parent
-
- map = new Map ({
- type: "ortho",
- el: document.querySelector("#orthographic"),
- width: window.innerWidth/2,
- height: window.innerHeight,
- zoom: -2,
- zoom_min: -6.2,
- zoom_max: 1,
- })
- map.ui.add_tool("arrow", new ArrowTool)
- map.ui.add_tool("polyline", new PolylineTool)
- map.ui.add_tool("ortho-polyline", new OrthoPolylineTool)
- map.ui.add_tool("eraser", new EraserTool)
- map.ui.add_tool("position", new PositionTool)
- map.ui.placing = false
/*
$(window).resize(function(){
@@ -33,36 +17,62 @@ var BlueprintEditor = View.extend(AnimatedView.prototype).extend({
})
*/
- var PerspectiveToolbar = new Toolbar (".persp-hud")
- PerspectiveToolbar.add("orbit-mode", function(){
- controls.toggle(true)
- movements.lock()
- })
- PerspectiveToolbar.add("keyboard-mode", function(){
- controls.toggle(false)
- movements.unlock()
- movements.gravity(true)
- cam.rotationX = 0
- cam.rotationY = -cam.rotationY
- cam.x = 0
- cam.y = viewHeight + 100
- cam.z = 0
- })
+ scene = new MX.Scene().addTo("#perspective")
+ scene.camera.radius = 20
+ cam = scene.camera
+
+ scene.width = window.innerWidth/2
+ scene.height = window.innerHeight
+ scene.perspective = window.innerHeight
+
+ movements = new MX.Movements(cam, viewHeight)
+ movements.init()
+ movements.lock()
- var OrthographicToolbar = new Toolbar (".ortho-hud")
- OrthographicToolbar.add("arrow-mode", function(){
- map.ui.set_tool("arrow")
+ app.on("move", function(pos){
+ cam.x = pos.x
+ cam.y = pos.y
+ cam.z = pos.z
})
- OrthographicToolbar.add("polyline-mode", function(){
- map.ui.set_tool("polyline")
+
+ var floorplan = this.floorplan = new MX.Image({
+ backface: true,
})
- OrthographicToolbar.add("ortho-polyline-mode", function(){
- map.ui.set_tool("ortho-polyline")
+ scene.add(this.floorplan)
+
+ // recenter perspective view by rightclicking map
+ this.floorplan.el.addEventListener("contextmenu", function(e){
+ e.preventDefault()
+ var offset = offsetFromPoint(e, this)
+ var x = (offset.left - 0.5) * floorplan.width * floorplan.scale
+ var z = (offset.top - 0.5) * floorplan.height * floorplan.scale
+ controls.opt.center.x = -x
+ controls.opt.center.y = 0
+ controls.opt.center.z = -z
+ }, true)
+
+ scene.update()
+
+ controls = new MX.OrbitCamera({
+ el: scene.el,
+ radius: 3000,
+ radiusRange: [ 10, 10000 ],
+ rotationX: PI/4,
+ rotationY: PI/2,
})
- OrthographicToolbar.add("eraser-mode", function(){
- map.ui.set_tool("eraser")
+ controls.init()
+ },
+
+ loadFloorplan: function(media){
+ console.log(media)
+ this.floorplan.load({
+ media: media,
+ keepImage: true,
+ rotationX: -PI/2,
+ rotationY: PI,
+ scale: media.scale,
})
- OrthographicToolbar.pick("ortho-polyline-mode")
+ this.startAnimating()
},
animate: function(t, dt){
@@ -75,7 +85,7 @@ var BlueprintEditor = View.extend(AnimatedView.prototype).extend({
map.draw.ctx.save()
map.draw.translate()
- floorplan.draw(map.draw.ctx, true)
+ this.floorplan.draw(map.draw.ctx, true)
map.draw.coords()
@@ -99,57 +109,3 @@ var BlueprintEditor = View.extend(AnimatedView.prototype).extend({
},
})
-
-function build () {
- scene = new MX.Scene().addTo("#perspective")
- scene.camera.radius = 20
-
- viewHeight = 100
-
- scene.width = window.innerWidth/2
- scene.height = window.innerHeight
- scene.perspective = window.innerHeight
-
- cam = scene.camera
- movements = new MX.Movements(cam, viewHeight)
- movements.init()
- movements.lock()
- movements.velocity(8)
- app.on("move", function(pos){
- cam.x = pos.x
- cam.y = pos.y
- cam.z = pos.z
- })
-
- floorplan = new MX.Image({
- src: "https://s3.amazonaws.com/luckyplop/fbf4295da80f1f66c5e4a248f2ea3e1ce7a22c3d.jpg",
- keepImage: true,
- rotationX: -PI/2,
- rotationY: PI,
- })
- scene.add(floorplan)
-
- // recenter perspective view by rightclicking map
- floorplan.el.addEventListener("contextmenu", function(e){
- e.preventDefault()
- var offset = offsetFromPoint(e, this)
- var x = (offset.left - 0.5) * floorplan.width * floorplan.scale
- var z = (offset.top - 0.5) * floorplan.height * floorplan.scale
- controls.opt.center.x = -x
- controls.opt.center.y = 0
- controls.opt.center.z = -z
- }, true)
-
- scene.update()
-
- controls = new MX.OrbitCamera({
- el: scene.el,
- radius: 3000,
- radiusRange: [ 10, 10000 ],
- rotationX: PI/4,
- rotationY: PI/2,
- })
- controls.init()
-
- animate(0)
-}
diff --git a/public/assets/javascripts/ui/blueprint/BlueprintScaler.js b/public/assets/javascripts/ui/blueprint/BlueprintScaler.js
index 741f4fb..ff26c8e 100644
--- a/public/assets/javascripts/ui/blueprint/BlueprintScaler.js
+++ b/public/assets/javascripts/ui/blueprint/BlueprintScaler.js
@@ -7,7 +7,7 @@ var BlueprintScaler = ModalFormView.extend(AnimatedView.prototype).extend({
events: {
"change [name=blueprint-dimensions]": "changeDimensions",
"change [name=blueprint-units]": "changeUnits",
- "click .uploadNewBlueprint": "showBlueprintUpload",
+ "click .uploadNewBlueprint": "showUploader",
},
initialize: function(opt){
@@ -38,8 +38,8 @@ var BlueprintScaler = ModalFormView.extend(AnimatedView.prototype).extend({
this.floorplan = new MX.Image ()
},
- showBlueprintUpload: function(){
- this.parent.blueprintUpload.show()
+ showUploader: function(){
+ this.parent.uploader.show()
},
pick: function(media){
diff --git a/public/assets/javascripts/ui/blueprint/BlueprintToolbar.js b/public/assets/javascripts/ui/blueprint/BlueprintToolbar.js
new file mode 100644
index 0000000..69288f6
--- /dev/null
+++ b/public/assets/javascripts/ui/blueprint/BlueprintToolbar.js
@@ -0,0 +1,69 @@
+var BlueprintToolbar = View.extend({
+
+ el: "#blueprintToolbar",
+
+ events: {
+ "click [data-role=toggle-orbit-mode]": 'toggleOrbitMode',
+ "click [data-role=arrow-mode]": 'arrowMode',
+ "click [data-role=polyline-mode]": 'polylineMode',
+ "click [data-role=ortho-polyline-mode]": 'orthoPolylineMode',
+ "click [data-role=eraser-mode]": 'eraserMode',
+ },
+
+ initialize: function(opt){
+ this.parent = opt.parent
+
+ this.$modes = this.$('.mode')
+ this.$arrowMode = this.$('[data-role=arrow-mode]')
+ this.$polylineMode = this.$('[data-role=polyline-mode]')
+ this.$orthoPolylineMode = this.$('[data-role=ortho-polyline-mode]')
+ this.$eraserMode = this.$('[data-role=eraser-mode]')
+
+ this.orthoPolylineMode()
+ },
+
+ orbiting: true,
+ toggleOrbitMode: function(){
+ this.orbiting = ! this.orbiting
+ if (this.orbiting) {
+ controls.toggle(true)
+ movements.lock()
+ }
+ else {
+ controls.toggle(false)
+ movements.unlock()
+ movements.gravity(true)
+ cam.rotationX = 0
+ cam.rotationY = -cam.rotationY
+ cam.x = 0
+ cam.y = viewHeight
+ cam.z = 0
+ }
+ },
+
+ setActiveMode: function( $el ) {
+ this.$modes.removeClass('active')
+ $el.addClass('active')
+ },
+
+ arrowMode: function(){
+ this.setActiveMode( this.$arrowMode )
+ this.parent.map.ui.set_tool("arrow")
+ },
+
+ polylineMode: function(){
+ this.setActiveMode( this.$polylineMode )
+ this.parent.map.ui.set_tool("polyline")
+ },
+
+ orthoPolylineMode: function(){
+ this.setActiveMode( this.$orthoPolylineMode )
+ this.parent.map.ui.set_tool("ortho-polyline")
+ },
+
+ eraserMode: function(){
+ this.setActiveMode( this.$eraserMode )
+ this.parent.map.ui.set_tool("eraser")
+ },
+
+}) \ No newline at end of file
diff --git a/public/assets/javascripts/ui/blueprint/BlueprintUpload.js b/public/assets/javascripts/ui/blueprint/BlueprintUploader.js
index 498575a..aeb7d9c 100644
--- a/public/assets/javascripts/ui/blueprint/BlueprintUpload.js
+++ b/public/assets/javascripts/ui/blueprint/BlueprintUploader.js
@@ -1,6 +1,6 @@
-var BlueprintUpload = UploadView.extend({
- el: ".blueprintUpload",
+var BlueprintUploader = UploadView.extend({
+ el: ".blueprintUploader",
mediaTag: "blueprint",
createAction: "/api/media/new",
@@ -23,8 +23,6 @@ var BlueprintUpload = UploadView.extend({
this.$url = this.$(".url")
this.$blueprints = this.$(".blueprints")
-
- this.load()
},
loaded: false,
@@ -38,7 +36,7 @@ var BlueprintUpload = UploadView.extend({
this.$blueprints.show()
data.forEach(this.append.bind(this))
this.hide()
- this.parent.blueprintScaler.pick(data[0])
+ this.parent.scaler.pick(data[0])
}
else {
this.show()
@@ -49,7 +47,7 @@ var BlueprintUpload = UploadView.extend({
var $el = $(e.currentTarget)
var media = $el.data("media")
this.hide()
- this.parent.blueprintScaler.pick(media)
+ this.parent.scaler.pick(media)
},
destroy: function(e){
@@ -106,7 +104,7 @@ var BlueprintUpload = UploadView.extend({
this.$blueprints.show()
this.append(media)
this.hide()
- this.parent.blueprintScaler.pick(media)
+ this.parent.scaler.pick(media)
},
append: function(media){
diff --git a/public/assets/javascripts/ui/blueprint/BlueprintView.js b/public/assets/javascripts/ui/blueprint/BlueprintView.js
index 0a06fda..cf627d9 100644
--- a/public/assets/javascripts/ui/blueprint/BlueprintView.js
+++ b/public/assets/javascripts/ui/blueprint/BlueprintView.js
@@ -9,17 +9,20 @@ var BlueprintView = View.extend({
initialize: function(){
// this.info = new BuilderInfo ({ parent: this })
-// this.toolbar = new BuilderToolbar ({ parent: this })
// this.settings = new BuilderSettings ({ parent: this })
// this.colorControl = new ColorControl ({ parent: this })
// this.cursor = new HelpCursor({ parent: this })
- this.blueprintUpload = new BlueprintUpload ({ parent: this })
- this.blueprintScaler = new BlueprintScaler ({ parent: this })
+ this.map = this.buildMap()
+ this.editor = new BlueprintEditor ({ parent: this })
+ this.toolbar = new BlueprintToolbar ({ parent: this })
+ this.uploader = new BlueprintUploader ({ parent: this })
+ this.scaler = new BlueprintScaler ({ parent: this })
},
load: function(name){
if (! name || name == "new") {
// this.ready({ isNew: true, _id: "new", name: "" })
+ this.uploader.load()
return
}
@@ -28,6 +31,26 @@ var BlueprintView = View.extend({
$.get(this.action + name, this.ready.bind(this))
},
+ buildMap: function(){
+ // i forget if this has to be global
+ map = new Map ({
+ type: "ortho",
+ el: document.querySelector("#orthographic"),
+ width: window.innerWidth/2,
+ height: window.innerHeight,
+ zoom: -2,
+ zoom_min: -6.2,
+ zoom_max: 1,
+ })
+ map.ui.add_tool("arrow", new ArrowTool)
+ map.ui.add_tool("polyline", new PolylineTool)
+ map.ui.add_tool("ortho-polyline", new OrthoPolylineTool)
+ map.ui.add_tool("eraser", new EraserTool)
+ map.ui.add_tool("position", new PositionTool)
+ map.ui.placing = false
+ return map
+ },
+
ready: function(data){
// this.settings.load(data)
// this.info.load(data)
@@ -37,6 +60,7 @@ var BlueprintView = View.extend({
},
useFloorplan: function(media){
+ this.editor.loadFloorplan(media)
},
pickWall: function(wall, pos){