From 9c64ae99904386fbcad039a1888fc985d60d49a2 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 29 Sep 2014 15:32:32 -0400 Subject: report wall positions with api --- server/lib/api/index.js | 1 + server/lib/api/rooms.js | 72 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 server/lib/api/rooms.js (limited to 'server/lib/api') diff --git a/server/lib/api/index.js b/server/lib/api/index.js index ad86daa..11e13fc 100644 --- a/server/lib/api/index.js +++ b/server/lib/api/index.js @@ -6,6 +6,7 @@ var api = { media: require('./media'), profile: require('./profile'), projects: require('./projects'), + rooms: require('./rooms'), collaborator: require('./collaborator'), } diff --git a/server/lib/api/rooms.js b/server/lib/api/rooms.js new file mode 100644 index 0000000..f0e991d --- /dev/null +++ b/server/lib/api/rooms.js @@ -0,0 +1,72 @@ +var vec = require("../../../public/assets/javascripts/rectangles/models/vec2.js") +var Rect = require("../../../public/assets/javascripts/rectangles/models/rect.js") +var Room = require("../../../public/assets/javascripts/rectangles/models/room.js") +var Rooms = require("../../../public/assets/javascripts/rectangles/engine/rooms/_rooms.js") +var Clipper = require("../../../public/assets/javascripts/rectangles/engine/rooms/clipper.js") +var Builder = require("../../../public/assets/javascripts/rectangles/engine/rooms/builder.js") +var Grouper = require("../../../public/assets/javascripts/rectangles/engine/rooms/grouper.js") +var Walls = require("../../../public/assets/javascripts/rectangles/engine/rooms/_walls.js") + +/* jshint node: true */ + +var _ = require('lodash'), + util = require('../util'), + upload = require('../upload'), + config = require('../../../config.json'), + Project = require('../schemas/Project'); + +var rooms = module.exports = { + show: function(req, res){ + Project.findOne({ slug: req.params.slug }, function(err, doc){ + if (! doc) { res.json({ status: 404 }); return } + doc = doc.toObject() + + doc.rooms.forEach(function(data){ + var rect = new Rect(data.rect.x[0], data.rect.y[0], data.rect.x[1], data.rect.y[1]) + var room = new Room({ + id: data.id, + rect: rect, + height: data.height + }) + Rooms.add(room) + }) + Rooms.clipper.solve_rects() + Rooms.builder.build() + + var walls = [], mx_walls = [], mx_floor = [], mx_ceiling = [] + var collections = Rooms.grouper.collect() + Rooms.grouper.cull(collections) + Rooms.grouper.group(walls, collections, FRONT) + Rooms.grouper.group(walls, collections, BACK) + Rooms.grouper.group(walls, collections, LEFT) + Rooms.grouper.group(walls, collections, RIGHT) + walls.forEach(function(wall){ + wall.mx.forEach(function(mx){ + var data = mx.report() + data.id = wall.id + mx_walls.push(data) + }) + }) + + doc.mx_walls = mx_walls + doc.mx_floor = mx_floor + doc.mx_ceiling = mx_ceiling + + Rooms.forEach(function(room){ + room.mx_floor.forEach(function(mx){ + mx_floor.push( mx.report() ) + }) + room.mx_ceiling.forEach(function(mx){ + mx_ceiling.push( mx.report() ) + }) + }) + + // Walls.deserialize(doc.walls) +// data.media && Scenery.deserialize(data.media) + + res.json(doc) + return + + }) + } +} -- cgit v1.2.3-70-g09d2 From f80ca0ef62785cf72176598b695a1a291dd38e91 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 29 Sep 2014 16:47:34 -0400 Subject: fix error in color picker --- public/assets/javascripts/ui/editor/LightControl.js | 6 +++--- public/assets/javascripts/ui/site/LayoutsModal.js | 2 +- server/lib/api/rooms.js | 5 ----- views/projects/layouts-modal.ejs | 5 +---- 4 files changed, 5 insertions(+), 13 deletions(-) (limited to 'server/lib/api') diff --git a/public/assets/javascripts/ui/editor/LightControl.js b/public/assets/javascripts/ui/editor/LightControl.js index d975180..96f6942 100644 --- a/public/assets/javascripts/ui/editor/LightControl.js +++ b/public/assets/javascripts/ui/editor/LightControl.js @@ -247,11 +247,11 @@ var LabColorPicker = function (parent, w, h) { var var_G = ( RGB[1] / 255 ) // G from 0 to 255 var var_B = ( RGB[2] / 255 ) // B from 0 to 255 - if ( var_R > 0.04045 ) var_R = ( ( var_R + 0.055 ) / 1.055 ) ^ 2.4 + if ( var_R > 0.04045 ) var_R = Math.pow( ( var_R + 0.055 ) / 1.055, 2.4) else var_R = var_R / 12.92 - if ( var_G > 0.04045 ) var_G = ( ( var_G + 0.055 ) / 1.055 ) ^ 2.4 + if ( var_G > 0.04045 ) var_G = Math.pow( ( var_G + 0.055 ) / 1.055, 2.4) else var_G = var_G / 12.92 - if ( var_B > 0.04045 ) var_B = ( ( var_B + 0.055 ) / 1.055 ) ^ 2.4 + if ( var_B > 0.04045 ) var_B = Math.pow( ( var_B + 0.055 ) / 1.055, 2.4) else var_B = var_B / 12.92 var_R = var_R * 100 diff --git a/public/assets/javascripts/ui/site/LayoutsModal.js b/public/assets/javascripts/ui/site/LayoutsModal.js index f109ec3..bfc3dec 100644 --- a/public/assets/javascripts/ui/site/LayoutsModal.js +++ b/public/assets/javascripts/ui/site/LayoutsModal.js @@ -57,7 +57,7 @@ var ProjectsModal = ModalView.extend(LayoutsIndex.prototype).extend({ this.$(".templates .active").removeClass("active") var $layout = $(e.currentTarget) $layout.addClass("active") - + // actually do window.location.pathname = "/project/" + $layout.data("slug") + "/edit" }, diff --git a/server/lib/api/rooms.js b/server/lib/api/rooms.js index f0e991d..c044309 100644 --- a/server/lib/api/rooms.js +++ b/server/lib/api/rooms.js @@ -61,12 +61,7 @@ var rooms = module.exports = { }) }) - // Walls.deserialize(doc.walls) -// data.media && Scenery.deserialize(data.media) - res.json(doc) - return - }) } } diff --git a/views/projects/layouts-modal.ejs b/views/projects/layouts-modal.ejs index 97f1e61..34dc9af 100644 --- a/views/projects/layouts-modal.ejs +++ b/views/projects/layouts-modal.ejs @@ -33,14 +33,11 @@ X
+

Choose Room Template

-

Choose Room Template

There are no room layouts available. Please create a new one.
-
- -
-- cgit v1.2.3-70-g09d2 From 4a0717d5f8aa0ff3378ff589b106cd35c0586367 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Mon, 29 Sep 2014 19:31:25 -0400 Subject: outline walls on builder --- .../assets/javascripts/rectangles/engine/map/ui_editor.js | 1 - .../assets/javascripts/rectangles/engine/rooms/_walls.js | 14 ++++++++++++++ .../assets/javascripts/rectangles/engine/rooms/builder.js | 3 ++- public/assets/javascripts/ui/builder/BuilderInfo.js | 1 + public/assets/javascripts/ui/builder/BuilderSettings.js | 7 ++++++- public/assets/javascripts/ui/builder/BuilderView.js | 5 +++++ public/assets/javascripts/ui/site/LayoutsModal.js | 1 + public/assets/stylesheets/app.css | 1 + server/lib/api/projects.js | 8 ++++---- 9 files changed, 34 insertions(+), 7 deletions(-) (limited to 'server/lib/api') diff --git a/public/assets/javascripts/rectangles/engine/map/ui_editor.js b/public/assets/javascripts/rectangles/engine/map/ui_editor.js index 9a557b9..f9334e6 100644 --- a/public/assets/javascripts/rectangles/engine/map/ui_editor.js +++ b/public/assets/javascripts/rectangles/engine/map/ui_editor.js @@ -38,7 +38,6 @@ Map.UI.Editor = function(map){ cursor.quantize(1/map.zoom) map.center.a = cursor.x.a map.center.b = -cursor.y.a - console.log(map.center+"") cursor.x.b = cursor.x.a cursor.y.b = cursor.y.a base.mouse.down = false diff --git a/public/assets/javascripts/rectangles/engine/rooms/_walls.js b/public/assets/javascripts/rectangles/engine/rooms/_walls.js index f9eb9b7..82ccb87 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/_walls.js +++ b/public/assets/javascripts/rectangles/engine/rooms/_walls.js @@ -88,6 +88,20 @@ }) }, + base.paint = function(){ + var wallColor = rgba_string(Walls.colors.wall, app.defaults.wallOpacity) + var outlineColor = rgb_string(Walls.colors.outline) + var floorColor = rgb_string(Walls.colors.floor) + var ceilingColor = rgb_string(Walls.colors.ceiling) + Walls.forEach(function(wall){ + wall.outline(wallColor, outlineColor) + }) + Rooms.forEach(function(room){ + room.setFloorColor(floorColor) + room.setCeilingColor(ceilingColor) + }) + } + base.setColor = { wall: function(rgb){ diff --git a/public/assets/javascripts/rectangles/engine/rooms/builder.js b/public/assets/javascripts/rectangles/engine/rooms/builder.js index f0935d4..6a89158 100644 --- a/public/assets/javascripts/rectangles/engine/rooms/builder.js +++ b/public/assets/javascripts/rectangles/engine/rooms/builder.js @@ -44,9 +44,10 @@ base.clear() base.build() Rooms.grouper.build() + app.tube("rooms-built") } } - + base.build = function (){ Rooms.regions.forEach(function(region){ this.build_walls(region).forEach(function(el){ diff --git a/public/assets/javascripts/ui/builder/BuilderInfo.js b/public/assets/javascripts/ui/builder/BuilderInfo.js index 2fffdba..e6b7e97 100644 --- a/public/assets/javascripts/ui/builder/BuilderInfo.js +++ b/public/assets/javascripts/ui/builder/BuilderInfo.js @@ -55,6 +55,7 @@ var BuilderInfo = View.extend({ this.$height.unitVal( room.height ) this.$x.unitVal( room.rect.x.a ) this.$y.unitVal( room.rect.y.a ) + this.show() }, destroy: function(room){ diff --git a/public/assets/javascripts/ui/builder/BuilderSettings.js b/public/assets/javascripts/ui/builder/BuilderSettings.js index 796c398..94eed29 100644 --- a/public/assets/javascripts/ui/builder/BuilderSettings.js +++ b/public/assets/javascripts/ui/builder/BuilderSettings.js @@ -9,7 +9,7 @@ var BuilderSettings = FormView.extend({ events: { "keydown": 'stopPropagation', "keydown [name=name]": 'enterSubmit', - "click [data-role='save-layout']": 'save', + "click [data-role='save-layout']": 'clickSave', "click [data-role='clone-layout']": 'clone', "click [data-role='clear-layout']": 'clear', "click [data-role='destroy-layout']": 'destroy', @@ -118,6 +118,11 @@ var BuilderSettings = FormView.extend({ fd.append( "thumbnail", dataUriToBlob(map.canvas.toDataURL()) ) return fd }, + + clickSave: function(){ + this.toggle(false) + this.save() + }, success: function(data){ this.$id.val(data._id) diff --git a/public/assets/javascripts/ui/builder/BuilderView.js b/public/assets/javascripts/ui/builder/BuilderView.js index a89111f..81dce52 100644 --- a/public/assets/javascripts/ui/builder/BuilderView.js +++ b/public/assets/javascripts/ui/builder/BuilderView.js @@ -12,6 +12,11 @@ var BuilderView = View.extend({ this.toolbar = new BuilderToolbar ({ parent: this }) this.settings = new BuilderSettings ({ parent: this }) this.lightControl = new LightControl ({ parent: this }) + + app.on("rooms-built", function(){ + Walls.paint() + }) + }, load: function(name){ diff --git a/public/assets/javascripts/ui/site/LayoutsModal.js b/public/assets/javascripts/ui/site/LayoutsModal.js index 1bfc6cb..2449465 100644 --- a/public/assets/javascripts/ui/site/LayoutsModal.js +++ b/public/assets/javascripts/ui/site/LayoutsModal.js @@ -29,6 +29,7 @@ var LayoutsIndex = View.extend({ this.$templates.append($span) }.bind(this)) + console.log(this.$templates.html()) this.show() } diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index 39f9f1a..ebc21a8 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -482,6 +482,7 @@ iframe.embed { .templates { overflow: auto; max-height: 80%; + width: 100%; } .no-templates { display: none; diff --git a/server/lib/api/projects.js b/server/lib/api/projects.js index da41b48..61a6e10 100644 --- a/server/lib/api/projects.js +++ b/server/lib/api/projects.js @@ -21,10 +21,10 @@ var projects = { } else { var name = util.sanitize(req.params.slug) - if (name == "new") { - name = "" - } - res.json({ _id: "new", name: name, isNew: true }) + Project.count({}, function(err, count){ + name = "Project #" + (count || 0) + res.json({ _id: "new", name: name, isNew: true }) + }) } }) }, -- cgit v1.2.3-70-g09d2