OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / app / assets / javascripts / manifest / model / association.js.coffee
1 class Manifest.ModelModule.Association extends ManifestBase.Values\r
2   \r
3   set_default: () ->\r
4     super()\r
5     @values['belongs_to'] ||= {}\r
6     @values['has_many'] ||= {}\r
7     @values['has_one'] ||= {}\r
8     \r
9   init: () ->\r
10     super()\r
11     @belongs_to = ManifestBase.load_name_values this, @values, 'belongs_to', Manifest.ModelModule.AssociationModule.BelongsTo\r
12     @has_many = ManifestBase.load_name_values this, @values, 'has_many', Manifest.ModelModule.AssociationModule.HasMany\r
13     @has_one = ManifestBase.load_name_values this, @values, 'has_one', Manifest.ModelModule.AssociationModule.HasOne\r
14   \r
15   item_name: () ->\r
16     @parent.item_name()\r
17   \r
18   parent_models: () ->\r
19     _this = this\r
20     _.map _belongs_to, (belongs_to_manifest, name) ->\r
21       pm = _this.parent.classify()\r
22       next if not pm.is_element()\r
23       if pm.my_peta.type == 'element'\r
24         next if not belongs_to_manifest.model.my_peta.type == 'root'\r
25       if pm.my_peta.type == 'leaf'\r
26         next if not belongs_to_manifest.model.my_peta.type == 'binder'\r
27   \r
28   child_element_name: (child_model) -> \r
29     if @is_has_one(child_model)\r
30       child_model.item_name()\r
31     else\r
32       child_model.table_name()\r
33   \r
34   is_has_one: (child_model) ->\r
35     if @has_one[child_model.item_name()]\r
36       true\r
37     else\r
38       false\r
39   \r
40 class Manifest.ModelModule.AssociationModule\r