diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/index.js | 1 | ||||
| -rw-r--r-- | server/lib/api/index.js | 1 | ||||
| -rw-r--r-- | server/lib/api/rooms.js | 72 |
3 files changed, 74 insertions, 0 deletions
diff --git a/server/index.js b/server/index.js index 7112bde..f6636dd 100644 --- a/server/index.js +++ b/server/index.js @@ -134,6 +134,7 @@ site.route = function () { app.get('/api/project', middleware.ensureAuthenticated, api.projects.index) app.get('/api/project/:slug', api.projects.show) + app.get('/api/rooms/:slug', api.rooms.show) app.post('/api/project/new', middleware.ensureAuthenticated, api.projects.create) app.post('/api/project/edit', middleware.ensureAuthenticated, api.projects.update) app.delete('/api/project/destroy', middleware.ensureAuthenticated, api.projects.destroy) 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 + + }) + } +} |
