OSDN Git Service

fix: new element tracer
[pettanr/pettanr.git] / app / assets / javascripts / views / show.js.coffee
1 class Pettanr.Views.Show\r
2 class Pettanr.Views.Show.Header extends Backbone.View\r
3   tagName: 'h1'\r
4   className: 'show-header'\r
5   \r
6   initialize: (options) ->\r
7     @item = options.item\r
8     @title = options.caption\r
9     @icon_url = options.icon_url\r
10     @caption_url = options.caption_url\r
11     @prof_url = options.prof_url\r
12     \r
13     @pick = null\r
14     @icon = new Pettanr.Image.Icon({item: @item, half: true})\r
15     @icon_button = new Tag.A({\r
16       attr: {href: '/' + @icon_url}, \r
17       class_name: 'icon',\r
18       content: @icon.render().el\r
19     })\r
20     @caption = new Tag.A({\r
21       attr: {href: '/' + @caption_url},\r
22       class_name: 'caption',\r
23       content: _.escape(@title)\r
24     })\r
25     @prof = new Pettanr.Image.SymbolImg({attr: {src: '/images/prof.gif'}, half: true})\r
26     @prof_button = new Tag.A({\r
27       attr: {href: '/' + @prof_url}, \r
28       class_name: 'prof',\r
29       content: @prof.render().el\r
30     })\r
31     @listenTo(@icon, 'click', @click_icon)\r
32     @listenTo(@caption, 'click', @click_caption)\r
33     @listenTo(@prof_button, 'click', @click_prof)\r
34   \r
35   render: () ->\r
36     this.$el.html('')\r
37     this.$el.append(@pick.render().el) if @pick\r
38     this.$el.append(@icon_button.render().el)\r
39     this.$el.append(@caption.render().el)\r
40     this.$el.append(@prof_button.render().el)\r
41     this\r
42   \r
43   click_pick: () ->\r
44     @trigger('click:pick')\r
45   \r
46   click_icon: () ->\r
47     @trigger('click:icon')\r
48   \r
49   click_caption: () ->\r
50     @trigger('click:caption')\r
51   \r
52   click_prof: () ->\r
53     @trigger('click:prof')\r
54   \r
55   add_pick: (target_model) ->\r
56     @pick = new Pettanr.Views.Common.PickIcon({\r
57       name: target_model.pick_type(@item.item_name()), half: true\r
58     })\r
59     @listenTo(@pick, 'click', @click_pick)\r
60     @render()\r
61   \r
62 class Pettanr.Views.Show.HeaderAuthor extends Backbone.View\r
63   tagName: 'div'\r
64   \r
65   initialize: (options) ->\r
66     @item = options.item\r
67     retriever = @item.author()\r
68     @listenTo(retriever, 'retrieve', @retrieve_author)\r
69     retriever.retrieve()\r
70     \r
71   retrieve_author: (@author) ->\r
72     name = @author.escape('name')\r
73     author_url = @author.show_url()\r
74     @linked_author =  new Tag.A({\r
75       attr: {href: '/' + author_url}, \r
76       content: name\r
77     })\r
78     @listenTo(@linked_author, 'click', @click)\r
79     @render()\r
80   \r
81   render: () ->\r
82     this.$el.html('')\r
83     this.$el.append(Pettanr.AppHelper.t_a(@item.item_name(), 'author_id'))\r
84     this.$el.append(@linked_author.render().el) if @linked_author\r
85     this\r
86   \r
87   click: () ->\r
88     @trigger('click:author')\r
89   \r
90 class Pettanr.Views.Show.HeaderArtist extends Backbone.View\r
91   tagName: 'div'\r
92   \r
93   initialize: (options) ->\r
94     @item = options.item\r
95     retriever = @item.artist()\r
96     @listenTo(retriever, 'retrieve', @retrieve_artist)\r
97     retriever.retrieve()\r
98     \r
99   retrieve_author: (@artist) ->\r
100     name = @artist.escape('name')\r
101     artist_url = @artist.show_url()\r
102     @linked_artist =  new Tag.A({\r
103       attr: {href: '/' + artist_url}, \r
104       content: name\r
105     })\r
106     @listenTo(@linked_artist, 'click', @click)\r
107     @render()\r
108   \r
109   render: () ->\r
110     this.$el.html('')\r
111     this.$el.append(Pettanr.AppHelper.t_a(@item.item_name(), 'artist_id'))\r
112     this.$el.append(@linked_artist.render().el) if @linked_artist\r
113     this\r
114   \r
115   click: () ->\r
116     @trigger('click:artist')\r
117   \r
118 class Pettanr.Views.Show.LinkedEditButton extends Tag.A\r
119   \r
120   initialize: (options) ->\r
121     item = options.item\r
122     super({\r
123       attr: {href: '/' + item.edit_url()}, \r
124       content: I18n.t('link.edit')\r
125     })\r
126   \r
127 class Pettanr.Views.Show.LinkedDestroyButton extends Tag.A\r
128   \r
129   initialize: (options) ->\r
130     item = options.item\r
131     super({\r
132       attr: {href: '/' + item.destroy_url()}, \r
133       content: I18n.t('link.destroy')\r
134     })\r
135   \r
136 class Pettanr.Views.Show.LinkedInspireIcon extends Tag.A\r
137   \r
138   initialize: (options) ->\r
139     item = options.item\r
140     half = options.half\r
141     img = new Pettanr.Image.SymbolImg({\r
142       attr: {src: '/images/inspire.gif'}, half: half\r
143     })\r
144     super({\r
145       attr: {href: '/' + item.index_url() + '/inspire'}, \r
146       content: img.render().el\r
147     })\r
148   \r
149 class Pettanr.Views.Show.OwnerFooter extends Backbone.View\r
150   tagName: 'div'\r
151   className: 'show-owner-footer'\r
152   \r
153   initialize: (options) ->\r
154     super(options)\r
155     @item = options.item\r
156     @edit = new Pettanr.Views.Show.LinkedEditButton({item: @item})\r
157     @destroy = new Pettanr.Views.Show.LinkedDestroyButton({item: @item})\r
158     @listenTo(@edit, 'click', @click_edit)\r
159     @listenTo(@destroy, 'click', @click_destroy)\r
160   \r
161   render: () ->\r
162     this.$el.html('')\r
163     this.$el.append(@edit.render().el)\r
164     this.$el.append(@destroy.render().el)\r
165     this\r
166   \r
167   click_edit: () ->\r
168     @trigger('click:edit')\r
169   \r
170   click_destroy: () ->\r
171     @trigger('click:destroy')\r
172   \r
173 class Pettanr.Views.Show.Owner extends Backbone.View\r
174   tagName: 'div'\r
175   \r
176   initialize: (options) ->\r
177     super(options)\r
178     @item = options.item\r
179     @header = new Tag.H3({\r
180       class_name: 'owner-header',\r
181       content: I18n.t('editor')\r
182     })\r
183     @footer = new Pettanr.Views.Show.OwnerFooter({item: @item})\r
184     @listenTo(@footer, 'click:edit', @click_edit)\r
185     @listenTo(@footer, 'click:destroy', @click_destroy)\r
186   \r
187   render: () ->\r
188     this.$el.html('')\r
189     this.$el.append(@header.render().el)\r
190     this.$el.append(@footer.render().el)\r
191     this\r
192   \r
193   click_edit: () ->\r
194     @trigger('click:footer:edit')\r
195     @trigger('click:edit')\r
196   \r
197   click_destroy: () ->\r
198     @trigger('click:footer:destroy')\r
199     @trigger('click:destroy')\r
200   \r