OSDN Git Service

9d2c68e495172874a6e3d0bfaf0067ea8f0a0cdc
[pettanr/pettanr.git] / app / assets / javascripts / views / panels / show.js.coffee
1 # panel: panel item\r
2 # spot: no opacity element\r
3 class Pettanr.Views.Panel.Show extends Backbone.View\r
4   tagName: 'div'\r
5   \r
6   initialize: (options) ->\r
7     @panel = options.panel\r
8     @spot = options.spot\r
9     \r
10     @header = new Pettanr.Views.Panel.ShowModule.Header({\r
11       item: @panel, \r
12       caption: @panel.get('caption'), \r
13       icon_url: @panel.show_url(),\r
14       caption_url: @panel.show_url(),\r
15       prof_url: @panel.prof_url()\r
16     })\r
17     @body = new Pettanr.Views.Panel.Body({\r
18       panel: @panel,\r
19       spot: @spot\r
20     })\r
21     @footer = new Pettanr.Views.Panel.Footer({\r
22       panel: @panel,\r
23     })\r
24     @credits = new Pettanr.Views.Panel.ShowModule.Credits({\r
25       pictures: @panel.licensed_pictures()\r
26     })\r
27     @listenTo(@header, 'click:pick', @click_pick)\r
28     @listenTo(@header, 'click:icon', @click_show)\r
29     @listenTo(@header, 'click:caption', @click_show)\r
30     @listenTo(@header, 'click:prof', @click_prof)\r
31     @listenTo(@footer, 'click:panel', @click_show)\r
32     @listenTo(@footer, 'click:author', @click_author)\r
33     @listenTo(@footer, 'click:edit', @click_edit)\r
34     @listenTo(@credits, 'click:credit:icon', @click_credit_icon)\r
35   \r
36   render: () ->\r
37     this.$el.html('')\r
38     this.$el.append(@header.render().el)\r
39     this.$el.append(@body.render().el)\r
40     this.$el.append(@footer.render().el)\r
41     this.$el.append(@credits.render().el)\r
42     rb = new Tag.RowBreak()\r
43     this.$el.append(rb.render().el)\r
44     this\r
45   \r
46   click_show: () ->\r
47     @trigger('http_get', @panel.show_url())\r
48   \r
49   click_author: () ->\r
50     @trigger('http_get', @panel.author().show_url())\r
51   \r
52   click_edit: () ->\r
53     @trigger('http_get', @panel.edit_url())\r
54   \r
55   click_prof: () ->\r
56     @trigger('http_get', @panel.prof_url())\r
57   \r
58   click_credit_icon: (item) ->\r
59     @trigger('http_get', item.show_url())\r
60   \r
61   click_pick: () ->\r
62     @trigger('pick', @item)\r
63   \r
64   is_pickable: () ->\r
65     true\r
66   \r
67   add_pick: (target_model) ->\r
68     @header.add_pick(target_model)\r
69   \r
70 class Pettanr.Views.Panel.ShowModule\r
71 class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header\r
72   \r
73   initialize: (options) ->\r
74     super(options)\r
75   \r
76 class Pettanr.Views.Panel.ShowModule.Credits extends Backbone.View\r
77   tagName: 'div'\r
78   className: 'credits'\r
79   \r
80   initialize: (options) ->\r
81     @pictures = options.pictures\r
82     @credited = {}\r
83   \r
84   render: () ->\r
85     this.$el.html('')\r
86     _.each @pictures, (picture, pid) =>\r
87       @add_picture(picture)\r
88     this\r
89   \r
90   add_picture: (retriever) ->\r
91     @listenTo(retriever, 'retrieve', @retrieve_picture)\r
92     retriever.retrieve()\r
93   \r
94   retrieve_picture: (picture) ->\r
95     pid = picture.get('id')\r
96     if not @credited[pid]\r
97       @credited[pid] = picture\r
98       credit = picture.credit_view()\r
99       @listenTo(credit, 'click:icon', @click_credit_icon)\r
100       this.$el.append(credit.render().el)\r
101   \r
102   click_credit_icon: (item) ->\r
103     @trigger('click:credit:icon', item)\r
104   \r
105   click_pick: () ->\r
106     @trigger('pick', @item)\r
107   \r
108   is_pickable: () ->\r
109     true\r
110   \r
111   add_pick: (target_model) ->\r
112     @header.add_pick(target_model)\r
113   \r