OSDN Git Service

add profiler
[pettanr/pettanr.git] / app / assets / javascripts / locmare / profiler / column / base.js.coffee
1 class Locmare.ProfilerModule.ColumnModule.Base extends Backbone.View\r
2   tagName: 'div'\r
3   className: 'column'\r
4   \r
5   initialize: (options) ->\r
6     @profiler = options.profiler\r
7     @column_manifest = options.column_manifest\r
8     @column_name = @column_manifest.name\r
9     c = @label_class()\r
10     @label = new c({column: this})\r
11     c = @value_class()\r
12     @value = new c({column: this})\r
13     c = @note_class()\r
14     @note = new c({column: this})\r
15   \r
16   render: () ->\r
17     this.$el.html('')\r
18     this.$el.append(@label.render().el)\r
19     this.$el.append(@value.render().el)\r
20     this.$el.append(@note.render().el) if @note.is_visible()\r
21     this\r
22   \r
23   item: () ->\r
24     @profiler.item\r
25   \r
26   label_class: () ->\r
27     Locmare.ProfilerModule.ColumnModule.Label\r
28   \r
29   value_class: () ->\r
30     Locmare.ProfilerModule.ColumnModule.Value\r
31   \r
32   note_class: () ->\r
33     Locmare.ProfilerModule.ColumnModule.NoteNone\r
34   \r
35 class Locmare.ProfilerModule.ColumnModule.Label extends Backbone.View\r
36   tagName: 'span'\r
37   \r
38   initialize: (options) ->\r
39     @column = options.column\r
40   \r
41   render: () ->\r
42     this.$el.html(@label())\r
43     this\r
44   \r
45   label: () ->\r
46     Pettanr.AppHelper.t_a(@column.item().item_name(), @column.column_name)\r
47   \r
48 class Locmare.ProfilerModule.ColumnModule.Value extends Backbone.View\r
49   tagName: 'span'\r
50   \r
51   initialize: (options) ->\r
52     @column = options.column\r
53   \r
54   render: () ->\r
55     this.$el.html(@value())\r
56     this\r
57   \r
58   value: () ->\r
59     @column.item().get(@column.column_name)\r
60   \r
61 class Locmare.ProfilerModule.ColumnModule.DateValue extends Backbone.View\r
62   tagName: 'span'\r
63   \r
64   initialize: (options) ->\r
65     @column = options.column\r
66   \r
67   render: () ->\r
68     this.$el.html(@value())\r
69     this\r
70   \r
71   value: () ->\r
72     l(@column.value())\r
73   \r
74 class Locmare.ProfilerModule.ColumnModule.JsonValue extends Backbone.View\r
75   tagName: 'pre'\r
76   \r
77   initialize: (options) ->\r
78     @column = options.column\r
79   \r
80   render: () ->\r
81     this.$el.html(@value())\r
82     this\r
83   \r
84   value: () ->\r
85     JSON.pretty_generate(JSON.parse(@column.value()))\r
86   \r
87 class Locmare.ProfilerModule.ColumnModule.ExtendValue extends Backbone.View\r
88   tagName: 'div'\r
89   \r
90   initialize: (options) ->\r
91     @column = options.column\r
92     @columns = {}\r
93     _this = this\r
94     _.each @extend_settings().column_names, (extend_column_name) ->\r
95       extend_column_manifest = _this.extend_settings().columns[extend_column_name] || {}\r
96       _this.columns[extend_column_name] = new Locmare.ProfilerModule.ColumnModule.ExtendModule.ExtendColumn({column: _this, extend_column_name: extend_column_name, extend_column_manifest: extend_column_manifest})\r
97   \r
98   render: () ->\r
99     _this = this\r
100     this.$el.html('')\r
101     _.each @sorted_columns(), (extend_column) ->\r
102       _this.$el.append(extend_column.render().el)\r
103     this\r
104   \r
105   \r
106   extend_columns: () ->\r
107     _.map @extend_settings().column_names, (column_name) ->\r
108       @columns[column_name]\r
109   \r
110   extend_settings: () ->\r
111     @template_model_profiler().extend_settings[self.booster.model_name]\r
112   \r
113   template_model_profiler: () ->\r
114     LocalManifest.manifest.profilers[@template_model().item_name]\r
115   \r
116   template_model: () ->\r
117     @booster().template_model\r
118   \r
119   extend_item: () ->\r
120     @booster.extend_item\r
121   \r
122   booster: () ->\r
123     @column.item().boosters[@column_manifest.boost_name]\r
124   \r
125 class Locmare.ProfilerModule.ColumnModule.NoteNone\r
126   \r
127   is_visible:() ->\r
128     false\r
129   \r
130 class Locmare.ProfilerModule.ColumnModule.Note extends Backbone.View\r
131   tagName: 'span'\r
132   \r
133   initialize: (options) ->\r
134     @column = options.column\r
135   \r
136   render: () ->\r
137     this.$el.html(@note())\r
138     this\r
139   \r
140   note: () ->\r
141     Pettanr.AppHelper.t_selected_item(@select_item_name, @column.value())\r
142   \r
143   is_visible:() ->\r
144     true\r
145   \r
146   select_item_name: () ->\r
147     @model_attribute_source_manifest().select_item_name\r
148   \r
149   model_manifest: () ->\r
150     Manifest.manifest().models[@column.profiler().item_name]\r
151   \r
152   model_attribute_manifest: () ->\r
153     @model_manifest().attributes[@column.column_name]\r
154   \r
155   model_attribute_source_manifest: () ->\r
156     @model_attribute_manifest().source\r