X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Flocmare%2Fform.js.coffee;h=54b22da5deb9b02780c32a54b95c3c33944505a2;hb=4aee0b91a00feddf4b1fcd2ff3e7247efc06f451;hp=33bc7c212bf24aaf6b1252341718e98524c4c51f;hpb=6b12a345e25cadadaf2a4cc15b8f4967193d6afb;p=pettanr%2Fpettanr.git diff --git a/app/assets/javascripts/locmare/form.js.coffee b/app/assets/javascripts/locmare/form.js.coffee index 33bc7c21..54b22da5 100644 --- a/app/assets/javascripts/locmare/form.js.coffee +++ b/app/assets/javascripts/locmare/form.js.coffee @@ -42,6 +42,9 @@ class Locmare.FormBase extends Backbone.View image_dir: () -> '/images/' + quit: () -> + null + class Locmare.Form extends Locmare.FormBase @factory: (options) -> @@ -146,6 +149,7 @@ class Locmare.Form extends Locmare.FormBase post: () -> _.each @fields, (field) => + field.fold() if field.is_extend() @item.set(field.field_name, field.val()) @item.unset('id') # isNew use flag that id attr set @trigger('http_post', @item.create_url(), this) @@ -153,17 +157,15 @@ class Locmare.Form extends Locmare.FormBase put: () -> _.each @fields, (field) => + field.fold() if field.is_extend() @item.set(field.field_name, field.val()) @trigger('http_post', @item.update_url(), this) return false - save: (attrs = null, options = null) -> + save: () -> @listenTo(@item, 'save:success', @success) @listenTo(@item, 'save:fail', @fail) - if attrs - @item.save(attrs, options) - else - @item.save() + @item.save() success: (model, response) -> @trigger('success', model, response) @@ -171,13 +173,6 @@ class Locmare.Form extends Locmare.FormBase fail: (model, response) -> @trigger('fail', response) - valid: () -> - window.router.navigate('/' + @item.table_name() + '/' + Pettanr.to_s(@item.get('id')), true) - return false - - invalid: () -> - alert('invalid') - save_data: () -> @item.my_class().child_models() attrs = {} @@ -202,6 +197,7 @@ class Locmare.ExtendForm extends Locmare.FormBase @parent = options.parent @field_name = options.field_name super(options) + @listenTo(@item, 'input', @input) @field = new Locmare.FormModule.Field({ form: @parent, field_name: @field_name, @@ -212,6 +208,7 @@ class Locmare.ExtendForm extends Locmare.FormBase render: () -> this.$el.html('') + this.$el.append(@label.render().el) if not @label.hidden() @div_fields = new Locmare.FormModule.Fields({ fields: @fields }) @@ -221,6 +218,21 @@ class Locmare.ExtendForm extends Locmare.FormBase refresh: () -> @field.refresh() + input: (field) -> + a = {} + a[@field_name] = @val() + @parent.item.set(a, {silent: true}) + @parent.item.trigger('input:' + @field_name + ':' + field) + @parent.item.trigger('input:' + @field_name) + @parent.item.trigger('input') + + fold: () -> + _.each @fields, (field) => + @item.set(field.field_name, field.val()) + + val: () -> + JSON.stringify(@item.attributes) + init_fields: () -> _.each @manifest.field_names, (field_name) => field_manifest = @manifest.fields[field_name] @@ -234,6 +246,9 @@ class Locmare.ExtendForm extends Locmare.FormBase # parent is field @parent.form_field_name(@field_name) + '[' + extend_field_name + ']' + is_extend: () -> + true + class Locmare.FormModule class Locmare.FormModule.Fields extends Backbone.View tagName: 'div'