OSDN Git Service

add panel viewer
[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     Pettanr[@constructor.name]\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     'Names'\r
29   \r
30   @class_name: () ->\r
31     @singular()\r
32   \r
33   @model_name: () ->\r
34     @class_name()\r
35   \r
36   @item_name: () ->\r
37     Pettanr.underscore(@singular())\r
38   \r
39   @table_name: () ->\r
40     Pettanr.underscore(@plural())\r
41   \r
42   @is_item: () ->\r
43     true\r
44   \r
45   @is_content: () ->\r
46     false\r
47   \r
48   @is_element: () ->\r
49     false\r
50   \r
51   @is_root: () ->\r
52     false\r
53  \r
54   @parent_model: () ->\r
55     null\r
56   \r
57   @path_name: (with_engine = false) ->\r
58     @table_name()\r
59   \r
60   @pickup_item_name: () ->\r
61     @item_name()\r
62   \r
63   @pickup_column_name: () ->\r
64     'id'\r
65   \r
66   @find_boost_name: (column_name) ->\r
67     @my_peta().find_boost_name column_name\r
68   \r
69   @is_extend_column: (column_name) -> \r
70     @my_peta().is_extend_column column_name\r
71   \r
72   @fold_extend_settings: (attr) ->\r
73     _.each my_peta().boost, (name, manifest) ->\r
74       my_settings = attr[manifest.settings_column_name]\r
75       if my_settings\r
76         attr[manifest.settings_column_name] = my_settings.to_json\r
77   \r
78   #InstanceMethods\r
79   \r
80   singular: () ->\r
81     Pettanr[@constructor.name].singular()\r
82   \r
83   plural: () ->\r
84     Pettanr[@constructor.name].plural()\r
85   \r
86   item_name: () ->\r
87     @my_class().item_name()\r
88   \r
89   model_name: () ->\r
90     @item_name()\r
91   \r
92   table_name: () ->\r
93     @my_class().table_name()\r
94   \r
95   path_name: (with_engine = false) ->\r
96     @my_class().path_name(with_engine)\r
97   \r
98   pickup_item_name: () ->\r
99     @my_class().pickup_item_name()\r
100   \r
101   pickup_column_name: () ->\r
102     @my_class().pickup_column_name()\r
103   \r
104   pickup_id: () ->\r
105     @get(pickup_column_name())\r
106   \r
107   form_template: (with_engine = false) ->\r
108     @path_name(with_engine) + '/form'\r
109   \r
110   form_name: () ->\r
111     if @extend_column()\r
112       @get(@extend_column())\r
113     else\r
114       @item_name()\r
115   \r
116   boosts: (level) ->\r
117     _this = this\r
118     c = @my_class().my_peta().boost\r
119     _.each c, (boost_manifest, boost_name) ->\r
120       return if level == 'read' and boost_manifest.level == 'post'\r
121       _this.boost boost_manifest\r
122   \r
123   boost: (boost_manifest) ->\r
124     @boosters ||= {}\r
125     @boosters[boost_manifest.name] ||= new Locmare.Booster(boost_manifest, this)\r
126   \r
127   boosters: () ->\r
128     @boosters ||= {}\r
129   \r
130   is_extend_column: (column_name) ->\r
131     @is_extend_column column_name\r
132   \r
133   is_visible: (operators) ->\r
134     if Manifest.manifest().magic_numbers['run_mode'] == 0\r
135       return false if not operators.is_guest()\r
136     else\r
137       return false if not operators.is_resource_reader()\r
138     true\r
139   \r
140   is_editize: () ->\r
141     @editor\r
142   \r
143   dom_id: () ->\r
144     (@get('id') || '').toString()\r
145   \r
146   dom_pool_type: () ->\r
147     @new_record ? 'stored' : 'new'\r
148   \r
149   merge_dom_item_id: (attr, name = null) ->\r
150     if @is_editize()\r
151       _.extend(attr, {'id': @dom_item_id(name)})\r
152     else\r
153       attr\r
154   \r
155   tag_attributes: (name = null, opt = {}) ->\r
156     r = {\r
157       'data-pool_type': @dom_pool_type(), 'data-id': @dom_id(), \r
158       'data-item_name': @item_name()\r
159     }\r
160     r = @merge_dom_item_id(r, name)\r
161     _.extend(r, opt)\r
162     r\r
163   \r
164   field_tag_attributes: (column_name, opt = {}) ->\r
165     r = @tag_attributes(column_name, opt)\r
166     _.extend(r, {'data-column_name': column_name})\r
167     r\r
168   \r
169   post_attribute_key: () ->\r
170     @dom_id\r
171   \r
172   @test: () ->\r
173     console.log(@child_models())\r
174     console.log(@child_element_names())\r
175     console.log(@my_peta())\r
176     console.log(@my_manifest())\r
177     console.log()\r
178     console.log()\r
179   \r
180   test: () ->\r
181     console.log(@my_class())\r
182     console.log(@item_name())\r
183     console.log(@model_name())\r
184     console.log(@table_name())\r
185     console.log(@path_name())\r
186     console.log(@pickup_item_name())\r
187     console.log(@pickup_column_name())\r
188     console.log(@dom_id())\r
189     console.log(@dom_pool_type())\r
190     console.log(@tag_attributes())\r
191     console.log(@field_tag_attributes('id'))\r
192     console.log(@post_attribute_key())\r