summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/ui/builder/BuilderSettings.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/ui/builder/BuilderSettings.js')
-rw-r--r--public/assets/javascripts/ui/builder/BuilderSettings.js58
1 files changed, 52 insertions, 6 deletions
diff --git a/public/assets/javascripts/ui/builder/BuilderSettings.js b/public/assets/javascripts/ui/builder/BuilderSettings.js
index 004c1c4..a7a0555 100644
--- a/public/assets/javascripts/ui/builder/BuilderSettings.js
+++ b/public/assets/javascripts/ui/builder/BuilderSettings.js
@@ -1,20 +1,66 @@
-var BuilderSettings = View.extend({
+var BuilderSettings = FormView.extend({
el: "#builderSettings",
+
+ createAction: "/api/layouts/new",
+ updateAction: "/api/layouts/edit",
events: {
+ "click [data-role='save-layout']": 'save',
+ },
+
+ initialize: function(opt){
+ this.parent = opt.parent
+ this.__super__.initialize.call(this)
+
+ this.$name = this.$("[name=name]")
+ this.$newName = this.$("[name=new_name]")
+ this.$privacy = this.$("[name=privacy]")
},
- initialize: function(){
+ load: function(data){
+ this.$name.val(data.name)
+ this.$newName.val(data.name)
+ this.$privacy.find("[value=" + data.privacy + "]").prop('checked', true);
},
toggle: function(){
this.$el.toggleClass("active")
},
- save: function(){
- var data = Rooms.serialize()
- console.log(data)
- }
+ validate: function(){
+ var errors = []
+ var name = this.$name.val()
+ if (! name || ! name.length) {
+ errors.push("Layout needs a name.")
+ }
+ if (Rooms.count() == 0) {
+ errors.push("Please add some rooms by drawing boxes.")
+ }
+ return errors
+ },
+
+ showErrors: function(errors){
+ var $errors = $("<span>")
+ errors.forEach(function(err){
+ var $row = $("<div>")
+ $row.html(err)
+ $errors.append( $row )
+ })
+ ErrorModal.alert($errors)
+ },
+
+ 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))
+ return fd
+ },
+
+ success: function(){
+ },
})