summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_rooms.js13
-rw-r--r--public/assets/javascripts/rectangles/models/room.js4
-rw-r--r--public/assets/javascripts/ui/editor/EditorSettings.js15
-rw-r--r--public/assets/javascripts/ui/editor/EditorView.js2
-rw-r--r--server/index.js2
-rw-r--r--server/lib/api/blueprint.js15
6 files changed, 42 insertions, 9 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
index d4281ad..5c9945c 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
@@ -127,14 +127,16 @@
Rooms.rebuild(walls_data)
}
- base.deserializeFromShapes = function(shapes_data, walls_data) {
+ base.deserializeFromShapes = function(data, walls_data) {
+ walls_data = walls_data || Walls.serialize()
base.shapesMode = true
window.viewHeight = data.viewHeight || app.defaults.viewHeight
window.wallHeight = data.wallHeight || app.defaults.wallHeight
$(".units").val( data.units )
shapes.deserialize( data.shapes )
- shapes.build()
+ // shapes.build()
+ var regions = RegionList.build()
regions.forEach(function(region){
var room = new Room({
@@ -142,12 +144,17 @@
regions: [region],
height: wallHeight,
})
+
room.sides = region.sides
region.id = Rooms.uid("room_")
Rooms.list[ region.id ] = room
- Rooms.builder.build(region)
+ var mx_walls = Rooms.builder.build_walls(region)
room.mx_floor = Rooms.builder.make_floor(room, region)
room.mx_ceiling = Rooms.builder.make_ceiling(room, region)
+
+ mx_walls.forEach(function(mx){ scene.add(mx) })
+ scene.add(room.mx_floor)
+ scene.add(room.mx_ceiling)
})
Rooms.grouper.build()
diff --git a/public/assets/javascripts/rectangles/models/room.js b/public/assets/javascripts/rectangles/models/room.js
index 26bf055..0ef76e4 100644
--- a/public/assets/javascripts/rectangles/models/room.js
+++ b/public/assets/javascripts/rectangles/models/room.js
@@ -35,6 +35,10 @@
this.height = opt.height || 200
this.focused = false
+
+ this.mx_walls = []
+ this.mx_floor = []
+ this.mx_ceiling = []
}
Room.prototype.copy = function(){
diff --git a/public/assets/javascripts/ui/editor/EditorSettings.js b/public/assets/javascripts/ui/editor/EditorSettings.js
index 000852e..83bc8b7 100644
--- a/public/assets/javascripts/ui/editor/EditorSettings.js
+++ b/public/assets/javascripts/ui/editor/EditorSettings.js
@@ -41,11 +41,11 @@ var EditorSettings = FormView.extend({
this.action = data.isNew ? this.createAction : this.updateAction
this.parent.data = data
- if (data.rooms) {
- Rooms.deserialize(data.rooms, data.walls)
+ if (data.shapes) {
+ Rooms.deserializeFromShapes(data, data.walls)
}
- else if (data.shapes) {
- Rooms.deserializeFromShapes(data.shapes, data.walls)
+ else if (data.rooms) {
+ Rooms.deserialize(data.rooms, data.walls)
}
if (data.startPosition) {
scene.camera.move(data.startPosition)
@@ -194,7 +194,12 @@ var EditorSettings = FormView.extend({
fd.append( "description", this.$description.val() )
fd.append( "privacy", this.$privacy.filter(":checked").val() == "private" )
fd.append( "viewHeight", window.viewHeight )
- fd.append( "rooms", JSON.stringify( Rooms.serialize() ) )
+ if (Rooms.shapesMode) {
+ fd.append( "shapes", JSON.stringify( shapes.serialize() ) )
+ }
+ else {
+ fd.append( "rooms", JSON.stringify( Rooms.serialize() ) )
+ }
fd.append( "walls", JSON.stringify( Walls.serialize() ) )
fd.append( "colors", JSON.stringify( Walls.colors ) )
fd.append( "media", JSON.stringify( Scenery.serialize() ) )
diff --git a/public/assets/javascripts/ui/editor/EditorView.js b/public/assets/javascripts/ui/editor/EditorView.js
index 879c963..c05b373 100644
--- a/public/assets/javascripts/ui/editor/EditorView.js
+++ b/public/assets/javascripts/ui/editor/EditorView.js
@@ -2,7 +2,7 @@
var EditorView = View.extend({
el: "#editorView",
- blueprintAction: "/api/blueprint/",
+ blueprintAction: "/api/blueprint/user/",
projectAction: "/api/project/",
layoutAction: "/api/layout/",
diff --git a/server/index.js b/server/index.js
index 7143da2..224aa86 100644
--- a/server/index.js
+++ b/server/index.js
@@ -138,6 +138,7 @@ site.route = function () {
app.get('/project', middleware.ensureAuthenticated, views.modal)
app.get('/project/new', middleware.ensureAuthenticated, views.modal)
app.get('/project/new/:layout', middleware.ensureAuthenticated, views.editor_new)
+ app.get('/project/blueprint/:layout', middleware.ensureAuthenticated, views.editor_new)
app.get('/project/:slug', middleware.ensureProject, middleware.ensureIsCollaborator, views.reader)
app.get('/project/:slug/view', middleware.ensureProject, middleware.ensureIsCollaborator, views.reader)
app.get('/project/:slug/edit', middleware.ensureProject, middleware.ensureIsCollaborator, views.editor)
@@ -163,6 +164,7 @@ site.route = function () {
app.post('/api/blueprint/new', middleware.ensureAuthenticated, api.blueprint.create)
app.post('/api/blueprint/upload', middleware.ensureAuthenticated, api.blueprint.upload)
+ app.get('/api/blueprint/user/:slug', middleware.ensureAuthenticated, api.blueprint.show)
app.get('/api/blueprint/user', middleware.ensureAuthenticated, api.blueprint.user)
app.post('/api/blueprint/scale', middleware.ensureAuthenticated, api.blueprint.scale)
app.post('/api/blueprint/edit', middleware.ensureAuthenticated, api.blueprint.update)
diff --git a/server/lib/api/blueprint.js b/server/lib/api/blueprint.js
index 222b466..e780b92 100644
--- a/server/lib/api/blueprint.js
+++ b/server/lib/api/blueprint.js
@@ -25,6 +25,21 @@ var blueprint = {
})
},
+ show: function(req, res){
+ Blueprint.findOne({ slug: req.params.slug }, function(err, doc){
+ if (doc) {
+ res.json(doc)
+ return
+ }
+ else {
+ Project.count({}, function(err, count){
+ var name = "Project #" + (count || 0)
+ res.json({ _id: "new", name: name, isNew: true })
+ })
+ }
+ })
+ },
+
create: function(req, res){
var data = util.cleanQuery(req.body)
data.user_id = req.user._id