X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Flocmare%2Fbucket.js.coffee;h=374da056a15aed032ab11927ea74cceb4770b2f4;hb=036f1b63ac8fb061da5658f9a98e4e1669729173;hp=6d3fec006af578cf3eb5199129eb06cc61fca2c0;hpb=b6289ebd47279820bd7238bf106ec5440b6832fe;p=pettanr%2Fpettanr.git diff --git a/app/assets/javascripts/locmare/bucket.js.coffee b/app/assets/javascripts/locmare/bucket.js.coffee index 6d3fec00..374da056 100644 --- a/app/assets/javascripts/locmare/bucket.js.coffee +++ b/app/assets/javascripts/locmare/bucket.js.coffee @@ -1,63 +1,26 @@ -# form_name_with_sub_form -# item: editing item -# mounted: true/false -# submit: string / 'submit' -# operators: -class Locmare.FormBase extends Backbone.View - tagName: 'div' - - initialize: (options) -> - @form_name_with_sub_form = options.form_name_with_sub_form - @item = options.item - @mounted = options.mounted - @submit = options.submit - @operators = options.operators - if /\./.test(form_name_with_sub_form) - @sub_form_names = form_name_with_sub_form.split('.') - @form_name = @sub_form_names.last - @root_form_name = @sub_form_names.shift - else - @sub_form_names = [] - @form_name = @form_name_with_sub_form - @root_form_name = @form_name - @manifest = LocalManifest.manifest().forms[@form_name] - @fields = {} - - fold_extend_settings: (params) -> - @item.my_class().fold_extend_settings params[@item.item_name()] - - sub_form_name: () -> - r = _.map @sub_form_names, (name) -> - '[' + name + '_attributes' + ']' - r.join() - - form_field_name: (field_name) -> - @root_form_name + @sub_form_name() + '[' + field_name + ']' - - image_dir: () -> - '/images/' - class Locmare.Bucket extends Backbone.View + tagName: 'form' - @factory: (options) -> - @bucket_name = options.bucket_name - @item = options.item - @mounted = options.mounted - @submit = options.submit - @operators = options.operators - + @factory: (bucket_or_form_name, item, mounted, submit, operators) -> bucket = LocalManifest.manifest().buckets[bucket_or_form_name] - c = if bucket and bucket.has_member - Locmare.Bucket + if bucket and bucket.has_member() + new Locmare.Bucket({ + bucket_name: bucket_or_form_name, + item: item, + mounted: mounted, + submit: submit, + operators: operators, + action: '/' + item.table_name() + '/' + Pettanr.to_s(item.get('id')) + }) else - Locmare.Form - new c({ - bucket_or_form_name, - item, - mounted, - submit, - operators - }) + Locmare.Form.factory({ + form_name: bucket_or_form_name, + item: item, + mounted: mounted, + submit: submit, + operators: operators, + action: '/' + item.table_name() + '/' + Pettanr.to_s(item.get('id')) + }) initialize: (options) -> @bucket_name = options.bucket_name @@ -71,42 +34,59 @@ class Locmare.Bucket extends Backbone.View @form_fields = [] @forms = {} @forms[@item.item_name()] = new Locmare.Form({ - @item.item_name, @item, @mounted, false, @operators + form_name: @item.item_name(), + item: @item, + mounted: @mounted, + submit: false, + operators: @operators }) - @init_forms(@item.item_name, @manifest, @item) + @init_forms(@item.item_name(), @manifest, @item) @init_fields() + render: () -> + this.$el.html('') + @div_fields = new Locmare.FormModule.Fields({ + fields: @form_fields + }) + this.$el.append(@div_fields.render().el) + this + fold_extend_settings: (params) -> - @item.class.fold_extend_settings params[@item.item_name] - self.members_fold_extend_settings @item, params[@item.item_name], @manifest + @item.my_class().fold_extend_settings params[@item.item_name()] + @members_fold_extend_settings @item, params[@item.item_name()], @manifest members_fold_extend_settings: (fold_item, attr, man) -> - man.members.each do |member_name, member_manifest| - member_item = fold_item.__send__ member_name - member_item.class.fold_extend_settings attr[member_name + '_attributes'] - self.members_fold_extend_settings member_item, attr[member_name + '_attributes'], member_manifest - - each_field: () -> - @form_fields.each do |form_field| - yield form_field.field_name, form_field + _.each man.members, (member_manifest, member_name) => + member_item = fold_item[member_name]() + member_item.my_class().fold_extend_settings attr[member_name + '_attributes'] + @members_fold_extend_settings member_item, attr[member_name + '_attributes'], member_manifest push_form: (key, form_name, item) -> init_forms: (key, man, item) -> - man.members.each do |member_name, member_manifest| + _.each man.members, (member_manifest, member_name) => form_name = member_name # write exchange function if you want - member_item = item.__send__(form_name) + member_item = item.get(form_name) new_key = key + '.' + form_name - @forms[new_key] = Locmare::Form.new new_key, member_item, @mounted, false, @operators - self.init_forms new_key, member_manifest, member_item + @forms[new_key] = new Locmare.Form({ + form_name: new_key, + item: member_item, + mounted: @mounted, + submit: false, + operators: @operators + }) + @init_forms(new_key, member_manifest, member_item) init_fields: () -> - @manifest.form_field_names.each do |form_field_name| - r = form_field_name.form_name.blank? ? '' : '.' + form_field_name.form_name - key = @item.item_name + r + _.each @manifest.form_field_names, (form_field_name) => + r = if Pettanr.is_blank(form_field_name.form_name) + '' + else + '.' + form_field_name.form_name + key = @item.item_name() + r form = @forms[key] field = form.fields[form_field_name.field_name] - @form_fields << field + @form_fields.push(field) image_dir: () -> '/images/'