OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / app / assets / javascripts / peta / item.js.coffee
1 class Peta.Item extends Backbone.Model\r
2   @child_models: () ->\r
3     @my_manifest().child_models()\r
4   \r
5   @child_element_names: () ->\r
6     @my_manifest().child_element_names()\r
7   \r
8   # ClassMethods\r
9   \r
10   @my_class: () ->\r
11     this\r
12   \r
13   my_class: () ->\r
14     @constructor\r
15   \r
16   @my_peta: () ->\r
17     return null if not Manifest.manifest().items\r
18     Manifest.manifest().items[@item_name()]\r
19   \r
20   @my_manifest: () ->\r
21     return null if not Manifest.manifest().models\r
22     Manifest.manifest().models[@item_name()]\r
23   \r
24   @singular: () ->\r
25     'Name'\r
26   \r
27   @plural: () ->\r
28     table_name = Manifest.manifest().pluralize @item_name()\r
29     Pettanr.camelize(table_name)\r
30   \r
31   @class_name: () ->\r
32     @singular()\r
33   \r
34   @model_name: () ->\r
35     @class_name()\r
36   \r
37   @item_name: () ->\r
38     Pettanr.underscore(@singular())\r
39   \r
40   @table_name: () ->\r
41     Pettanr.underscore(@plural())\r
42   \r
43   @is_item: () ->\r
44     true\r
45   \r
46   @is_content: () ->\r
47     false\r
48   \r
49   @is_element: () ->\r
50     false\r
51   \r
52   @is_root: () ->\r
53     false\r
54  \r
55   @parent_model: () ->\r
56     null\r
57   \r
58   @path_name: (with_engine = false) ->\r
59     @table_name()\r
60   \r
61   @pickup_item_name: () ->\r
62     @item_name()\r
63   \r
64   @pickup_column_name: () ->\r
65     'id'\r
66   \r
67   @find_boost_name: (column_name) ->\r
68     @my_peta().find_boost_name column_name\r
69   \r
70   @is_extend_column: (column_name) -> \r
71     @my_peta().is_extend_column column_name\r
72   \r
73   @fold_extend_settings: (attr) ->\r
74     _.each my_peta().boost, (name, manifest) ->\r
75       my_settings = attr[manifest.settings_column_name]\r
76       if my_settings\r
77         attr[manifest.settings_column_name] = my_settings.to_json\r
78   \r
79   #InstanceMethods\r
80   \r
81   singular: () ->\r
82     @my_class().singular()\r
83   \r
84   plural: () ->\r
85     @my_class().plural()\r
86   \r
87   item_name: () ->\r
88     @my_class().item_name()\r
89   \r
90   model_name: () ->\r
91     @item_name()\r
92   \r
93   table_name: () ->\r
94     @my_class().table_name()\r
95   \r
96   path_name: (with_engine = false) ->\r
97     @my_class().path_name(with_engine)\r
98   \r
99   pickup_item_name: () ->\r
100     @my_class().pickup_item_name()\r
101   \r
102   pickup_column_name: () ->\r
103     @my_class().pickup_column_name()\r
104   \r
105   pickup_id: () ->\r
106     @get(pickup_column_name())\r
107   \r
108   form_template: (with_engine = false) ->\r
109     @path_name(with_engine) + '/form'\r
110   \r
111   form_name: () ->\r
112     if @extend_column()\r
113       @get(@extend_column())\r
114     else\r
115       @item_name()\r
116   \r
117   boosts: (level) ->\r
118     _this = this\r
119     c = @my_class().my_peta().boost\r
120     _.each c, (boost_manifest, boost_name) ->\r
121       return if level == 'read' and boost_manifest.level == 'post'\r
122       _this.boost boost_manifest\r
123   \r
124   boost: (boost_manifest) ->\r
125     @boosters ||= {}\r
126     @boosters[boost_manifest.name] = new Locmare.Booster(boost_manifest, this)\r
127     # fetched item is not cleared .  force write booster\r
128     #@boosters[boost_manifest.name] ||= new Locmare.Booster(boost_manifest, this)\r
129   \r
130   boosters: () ->\r
131     @boosters ||= {}\r
132   \r
133   is_extend_column: (column_name) ->\r
134     @is_extend_column column_name\r
135   \r
136   is_visible: (operators) ->\r
137     if Manifest.manifest().magic_numbers['run_mode'] == 0\r
138       return false if not operators.is_guest()\r
139     else\r
140       return false if not operators.is_resource_reader()\r
141     true\r
142   \r
143   icon_view: (half) ->\r
144     new Pettanr.Views[@my_class().singular()].Icon({item: this, half: half})\r
145   \r
146   is_editize: () ->\r
147     @editor\r
148   \r
149   dom_id: () ->\r
150     (@get('id') || '').toString()\r
151   \r
152   dom_pool_type: () ->\r
153     @new_record ? 'stored' : 'new'\r
154   \r
155   merge_dom_item_id: (attr, name = null) ->\r
156     if @is_editize()\r
157       _.extend(attr, {'id': @dom_item_id(name)})\r
158     else\r
159       attr\r
160   \r
161   tag_attributes: (name = null, opt = {}) ->\r
162     r = {\r
163       'data-pool_type': @dom_pool_type(), 'data-id': @dom_id(), \r
164       'data-item_name': @item_name()\r
165     }\r
166     r = @merge_dom_item_id(r, name)\r
167     _.extend(r, opt)\r
168     r\r
169   \r
170   field_tag_attributes: (column_name, opt = {}) ->\r
171     r = @tag_attributes(column_name, opt)\r
172     _.extend(r, {'data-column_name': column_name})\r
173     r\r
174   \r
175   post_attribute_key: () ->\r
176     @dom_id\r
177   \r
178   @test: () ->\r
179     console.log(@child_models())\r
180     console.log(@child_element_names())\r
181     console.log(@my_peta())\r
182     console.log(@my_manifest())\r
183     console.log()\r
184     console.log()\r
185   \r
186   test: () ->\r
187     console.log(@my_class())\r
188     console.log(@item_name())\r
189     console.log(@model_name())\r
190     console.log(@table_name())\r
191     console.log(@path_name())\r
192     console.log(@pickup_item_name())\r
193     console.log(@pickup_column_name())\r
194     console.log(@dom_id())\r
195     console.log(@dom_pool_type())\r
196     console.log(@tag_attributes())\r
197     console.log(@field_tag_attributes('id'))\r
198     console.log(@post_attribute_key())\r