diff options
Diffstat (limited to 'server/lib/api')
| -rw-r--r-- | server/lib/api/index.js | 1 | ||||
| -rw-r--r-- | server/lib/api/projects.js | 8 | ||||
| -rw-r--r-- | server/lib/api/rooms.js | 67 |
3 files changed, 72 insertions, 4 deletions
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/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 }) + }) } }) }, diff --git a/server/lib/api/rooms.js b/server/lib/api/rooms.js new file mode 100644 index 0000000..c044309 --- /dev/null +++ b/server/lib/api/rooms.js @@ -0,0 +1,67 @@ +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() ) + }) + }) + + res.json(doc) + }) + } +} |
