diff options
Diffstat (limited to 'public/assets/javascripts/ui')
| -rw-r--r-- | public/assets/javascripts/ui/builder/BuilderSettings.js | 44 | ||||
| -rw-r--r-- | public/assets/javascripts/ui/builder/BuilderView.js | 7 | ||||
| -rw-r--r-- | public/assets/javascripts/ui/site/LayoutsModal.js | 25 |
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", |
