summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/ui
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/ui')
-rw-r--r--public/assets/javascripts/ui/builder/BuilderSettings.js44
-rw-r--r--public/assets/javascripts/ui/builder/BuilderView.js7
-rw-r--r--public/assets/javascripts/ui/site/LayoutsModal.js25
3 files changed, 54 insertions, 22 deletions
diff --git a/public/assets/javascripts/ui/builder/BuilderSettings.js b/public/assets/javascripts/ui/builder/BuilderSettings.js
index a7a0555..0eb5dfa 100644
--- a/public/assets/javascripts/ui/builder/BuilderSettings.js
+++ b/public/assets/javascripts/ui/builder/BuilderSettings.js
@@ -6,6 +6,7 @@ var BuilderSettings = FormView.extend({
updateAction: "/api/layouts/edit",
events: {
+ "keydown [name=name]": 'enterSubmit',
"click [data-role='save-layout']": 'save',
},
@@ -13,21 +14,36 @@ var BuilderSettings = FormView.extend({
this.parent = opt.parent
this.__super__.initialize.call(this)
+ this.$id = this.$("[name=_id]")
+ this.$csrf = this.$("[name=_csrf]")
this.$name = this.$("[name=name]")
- this.$newName = this.$("[name=new_name]")
this.$privacy = this.$("[name=privacy]")
},
load: function(data){
+ this.$id.val(data._id)
this.$name.val(data.name)
- this.$newName.val(data.name)
- this.$privacy.find("[value=" + data.privacy + "]").prop('checked', true);
+ this.$privacy.find("[value=" + data.privacy + "]").prop('checked', true)
+
+ console.log(data)
+ data.rooms && Rooms.deserialize(data.rooms)
+ data.startPosition && scene.camera.move(data.startPosition)
+
+ this.action = data.isNew ? this.createAction : this.updateAction
},
toggle: function(){
this.$el.toggleClass("active")
},
-
+
+ enterSubmit: function (e) {
+ e.stopPropagation()
+ var base = this
+ if (e.keyCode == 13) {
+ setTimeout(this.save.bind(this), 100)
+ }
+ },
+
validate: function(){
var errors = []
var name = this.$name.val()
@@ -52,15 +68,23 @@ var BuilderSettings = FormView.extend({
serialize: function(){
var fd = new FormData()
- fd.append("name", this.$name.val())
- fd.append("new_name", this.$newName.val())
- fd.append("privacy", this.$privacy.val())
- fd.append("rooms", Rooms.serialize())
- fd.append("startPosition", app.position(scene.camera))
+ fd.append( "_csrf", this.$csrf.val() )
+ fd.append( "_id", this.$id.val() )
+ fd.append( "name", this.$name.val() )
+ fd.append( "privacy", this.$privacy.val() )
+ fd.append( "rooms", JSON.stringify( Rooms.serialize() ) )
+ fd.append( "startPosition", JSON.stringify( app.position(scene.camera) ) )
+ fd.append( "thumbnail", dataUriToBlob(map.canvas.toDataURL()) )
return fd
},
- success: function(){
+ success: function(data){
+ console.log(data)
+ this.$id.val(data._id)
+ this.$name.val(data.name)
+ this.action = this.updateAction
+
+ window.history.pushState(null, document.title, "/builder/" + data.slug)
},
})
diff --git a/public/assets/javascripts/ui/builder/BuilderView.js b/public/assets/javascripts/ui/builder/BuilderView.js
index 9c0f236..33aface 100644
--- a/public/assets/javascripts/ui/builder/BuilderView.js
+++ b/public/assets/javascripts/ui/builder/BuilderView.js
@@ -14,11 +14,12 @@ var BuilderView = View.extend({
load: function(name){
if (! name || name == "new") {
- this.isNew = true
- this.ready({})
+ this.ready({ isNew: true, _id: "new", name: "" })
return
}
-
+
+ name = sanitize(name)
+
$.get(this.action + name, $.proxy(this.ready, this))
},
diff --git a/public/assets/javascripts/ui/site/LayoutsModal.js b/public/assets/javascripts/ui/site/LayoutsModal.js
index 2766a44..0a03878 100644
--- a/public/assets/javascripts/ui/site/LayoutsModal.js
+++ b/public/assets/javascripts/ui/site/LayoutsModal.js
@@ -1,21 +1,28 @@
var LayoutsIndex = View.extend({
- load: function(type){
- this.show()
+ initialize: function(){
+ this.$templates = this.$(".templates")
+ },
+ load: function(type){
+ this.$templates.children("span").remove()
+
$.get("/api/layouts", $.proxy(function(data){
- console.log(data)
+
data.forEach($.proxy(function(room){
var $span = $("<span>")
- $span.html(JSON.stringify(room))
- this.$(".templates").append($span)
+ // $span.html(JSON.stringify(room))
+ $span.data("slug", room.slug)
+ $span.css("background-image", "url(" + room.photo + ")")
+
+ this.$templates.append($span)
}, this))
+
this.show()
}, this))
}
-
})
@@ -30,10 +37,11 @@ var LayoutsModal = ModalView.extend(LayoutsIndex.prototype).extend({
toggleActive: function(e){
e.preventDefault()
this.$(".templates .active").removeClass("active")
- $(e.currentTarget).addClass("active")
+ var $layout = $(e.currentTarget)
+ $layout.addClass("active")
// actually do
- // window.location.pathname = "/builder/" + $(this).data("name")
+ window.location.pathname = "/builder/" + $layout.data("slug")
},
newBuilder: function(e){
@@ -44,7 +52,6 @@ var LayoutsModal = ModalView.extend(LayoutsIndex.prototype).extend({
})
-
var NewProjectModal = ModalView.extend(LayoutsIndex.prototype).extend({
el: ".mediaDrawer.newProject",