OSDN Git Service

color helper
[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       next 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_user_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_visible: (operators) ->\r
141     return false if not @is_user_visible(operators)\r
142     true\r
143   \r
144   is_editize: () ->\r
145     @editor\r
146   \r
147   dom_id: () ->\r
148     (@get('id') || '').toString()\r
149   \r
150   dom_pool_type: () ->\r
151     @new_record ? 'stored' : 'new'\r
152   \r
153   merge_dom_item_id: (attr, name = null) ->\r
154     if @is_editize()\r
155       _.extend(attr, {'id': @dom_item_id(name)})\r
156     else\r
157       attr\r
158   \r
159   tag_attributes: (name = null, opt = {}) ->\r
160     r = {\r
161       'data-pool_type': @dom_pool_type(), 'data-id': @dom_id(), \r
162       'data-item_name': @item_name()\r
163     }\r
164     r = @merge_dom_item_id(r, name)\r
165     _.extend(r, opt)\r
166     r\r
167   \r
168   field_tag_attributes: (column_name, opt = {}) ->\r
169     r = @tag_attributes(column_name, opt)\r
170     _.extend(r, {'data-column_name': column_name})\r
171     r\r
172   \r
173   post_attribute_key: () ->\r
174     @dom_id\r
175   \r
176   @test: () ->\r
177     console.log(@child_models())\r
178     console.log(@child_element_names())\r
179     console.log(@my_peta())\r
180     console.log(@my_manifest())\r
181     console.log()\r
182     console.log()\r
183   \r
184   test: () ->\r
185     console.log(@my_class())\r
186     console.log(@item_name())\r
187     console.log(@model_name())\r
188     console.log(@table_name())\r
189     console.log(@path_name())\r
190     console.log(@pickup_item_name())\r
191     console.log(@pickup_column_name())\r
192     console.log(@dom_id())\r
193     console.log(@dom_pool_type())\r
194     console.log(@tag_attributes())\r
195     console.log(@field_tag_attributes('id'))\r
196     console.log(@post_attribute_key())\r