summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-06-10 18:21:28 -0400
committerJules Laplace <jules@okfoc.us>2014-06-10 18:21:28 -0400
commitb231af3e38b8f066f18031fd69b0fdb30a5e244a (patch)
treeb2d83dd7dddee517fa00d16911e98f9ca20dff42
parent08421d8921fcc9842ea70d2e5c6439d1154e6d73 (diff)
stub in layout editing apis
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/_rooms.js1
-rw-r--r--public/assets/javascripts/rectangles/util/colors.js2
-rw-r--r--server/index.js24
-rw-r--r--server/lib/api.js65
-rw-r--r--server/lib/schemas/Documentation.js1
-rw-r--r--server/lib/schemas/Layout.js2
6 files changed, 81 insertions, 14 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
index ce1fae7..a51edb9 100644
--- a/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
+++ b/public/assets/javascripts/rectangles/engine/rooms/_rooms.js
@@ -74,7 +74,6 @@ var Rooms = new function(){
while (1) {
ss = s + (id++)
if (! (ss in base.list)) {
- console.log(ss)
return ss
}
}
diff --git a/public/assets/javascripts/rectangles/util/colors.js b/public/assets/javascripts/rectangles/util/colors.js
index d970b0b..58553b1 100644
--- a/public/assets/javascripts/rectangles/util/colors.js
+++ b/public/assets/javascripts/rectangles/util/colors.js
@@ -44,7 +44,7 @@
var select = document.querySelector("#palette")
select && select.addEventListener("change", function(){
colors = color_palettes[select.value]
- Rooms.list.forEach(function(room){
+ Rooms.forEach(function(room){
room.walls.forEach(function(wall){
wall.randomize_colors()
})
diff --git a/server/index.js b/server/index.js
index 21a1859..9fe8edf 100644
--- a/server/index.js
+++ b/server/index.js
@@ -18,10 +18,8 @@ var http = require('http'),
path = require('path'),
mongoose = require('mongoose');
-// var io = websocket.listen(config.socketPort)
-
var app = express()
-var SessionStore
+var server
var DATABASE_URI = process.env.MONGOLAB_URI || ('mongodb://' + config.hostName + '/vvalls')
//
@@ -36,7 +34,6 @@ site.ready = function(){
auth.init()
site.setup()
site.route()
- site.listen()
}
site.setup = function(){
@@ -71,6 +68,12 @@ site.setup = function(){
// app.all('*', middleware.enableCORS);
app.all('*', middleware.ensureLocals);
+ server = http.createServer(app)
+ server.listen(app.get('port'), function () {
+ console.log('Express server listening on port ' + app.get('port'));
+ });
+
+ // var io = websocket.listen(server)
// auth.initSockets(io, SessionStore)
}
@@ -108,13 +111,16 @@ site.route = function () {
app.use('/builder', middleware.ensureAuthenticated)
app.get('/builder', views.builder)
app.get('/builder/:name', views.builder)
-}
-site.listen = function(){
- http.createServer(app).listen(app.get('port'), function () {
- console.log('Express server listening on port ' + app.get('port'));
- });
+ app.get('/api/layout', middleware.ensureAuthenticated, api.layout.index)
+ app.get('/api/layout/show', middleware.ensureAuthenticated, api.layout.show)
+ app.post('/api/layout/new', middleware.ensureAuthenticated, api.layout.create)
+ app.post('/api/layout/edit', middleware.ensureAuthenticated, api.layout.update)
+ app.delete('/api/layout/destroy', middleware.ensureAuthenticated, api.layout.destroy)
+
+
}
+
site.init()
diff --git a/server/lib/api.js b/server/lib/api.js
index b89b6ae..2d35f50 100644
--- a/server/lib/api.js
+++ b/server/lib/api.js
@@ -9,7 +9,8 @@ var passport = require('passport'),
upload = require('./upload'),
config = require('../../config.json'),
User = require('./schemas/User'),
- Documentation = require('./schemas/Documentation');
+ Documentation = require('./schemas/Documentation'),
+ Layout = require('./schemas/Layout');
var api = {
@@ -122,6 +123,68 @@ var api = {
res.json({ status: "OK" })
})
}
+ },
+
+ layout: {
+ index: function(req, res){
+ Layout.find({}, function(err, docs){
+ res.json(docs)
+ })
+ },
+
+ show: function(req, res){
+ Layout.findOne({ name: req.query.name }, function(err, doc){
+ if (doc) {
+ res.json(doc)
+ }
+ else {
+ var name = util.sanitize(req.query.name)
+ if (name == "new") {
+ name = ""
+ }
+ res.json({ name: name, isNew: true })
+ }
+ })
+ },
+
+ create: function(req, res){
+ var data = util.cleanQuery(req.body)
+ data.name = util.sanitize(data.new_name)
+ data.displayName = util.sanitize(data.displayName)
+ delete data.new_name
+ new Layout(data).save(function(err, doc){
+ if (err || ! doc) { return res.json({ error: err }) }
+ res.json(doc)
+ })
+ },
+
+ update: function(req, res){
+ var data = util.cleanQuery(req.body)
+ if (data.name == "new") {
+ return api.docs.create(req, res)
+ }
+ Layout.findOne({ name: data.name }, function(err, doc){
+ if (err || ! doc) { return res.json({ error: err }) }
+ data.name = data.new_name
+ delete data.new_name
+ _.extend(doc, data)
+ doc.save(function(err, doc){
+ if (err || ! doc) { return res.json({ error: err }) }
+ res.json(doc)
+ })
+ })
+ },
+
+ destroy: function(req, res){
+ var name = util.sanitize(req.body.name)
+ if (! name || ! name.length) {
+ res.json({ error: 404 })
+ return
+ }
+ Layout.remove({ name: name }, function(err){
+ res.json({ status: "OK" })
+ })
+ },
}
}
diff --git a/server/lib/schemas/Documentation.js b/server/lib/schemas/Documentation.js
index 0381e0b..482f609 100644
--- a/server/lib/schemas/Documentation.js
+++ b/server/lib/schemas/Documentation.js
@@ -1,6 +1,5 @@
/* jshint node: true */
-
var mongoose = require('mongoose'),
uniqueValidator = require('mongoose-unique-validator'),
_ = require('lodash'),
diff --git a/server/lib/schemas/Layout.js b/server/lib/schemas/Layout.js
index 48cd85e..f818ed2 100644
--- a/server/lib/schemas/Layout.js
+++ b/server/lib/schemas/Layout.js
@@ -27,7 +27,7 @@ var LayoutSchema = new mongoose.Schema({
type: String,
default: ""
},
- rooms: [Schema.Types.Mixed],
+ rooms: [mongoose.Schema.Types.Mixed],
user_id: { type: mongoose.Schema.ObjectId, index: true },
created_at: { type: Date },
updated_at: { type: Date },