OSDN Git Service

add: success inspire
[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(@footer, 'click:inspire', @click_inspire)\r
35     @listenTo(@credits, 'click:credit:icon', @click_credit_icon)\r
36   \r
37   render: () ->\r
38     this.$el.html('')\r
39     this.$el.append(@header.render().el)\r
40     this.$el.append(@body.render().el)\r
41     this.$el.append(@footer.render().el)\r
42     this.$el.append(@credits.render().el)\r
43     rb = new Tag.RowBreak()\r
44     this.$el.append(rb.render().el)\r
45     this\r
46   \r
47   click_show: () ->\r
48     @trigger('http_get', @panel.show_url())\r
49   \r
50   click_author: () ->\r
51     @trigger('http_get', @panel.author().show_url())\r
52   \r
53   click_edit: () ->\r
54     @trigger('http_get', @panel.edit_url())\r
55   \r
56   click_inspire: () ->\r
57     inspire = new Pettanr.Inspire({item: @panel})\r
58     @listenTo(inspire, 'inspire', @inspire)\r
59     inspire.inspire()\r
60   \r
61   click_prof: () ->\r
62     @trigger('http_get', @panel.prof_url())\r
63   \r
64   click_credit_icon: (item) ->\r
65     @trigger('http_get', item.show_url())\r
66   \r
67   click_pick: () ->\r
68     @trigger('pick', @item)\r
69   \r
70   is_pickable: () ->\r
71     true\r
72   \r
73   add_pick: (target_model) ->\r
74     @header.add_pick(target_model)\r
75   \r
76   inspire: (item) ->\r
77     @trigger('http_get', item.show_url())\r
78   \r
79 class Pettanr.Views.Panel.ShowModule\r
80 class Pettanr.Views.Panel.ShowModule.Header extends Pettanr.Views.Show.Header\r
81   \r
82   initialize: (options) ->\r
83     super(options)\r
84   \r
85 class Pettanr.Views.Panel.ShowModule.Credits extends Backbone.View\r
86   tagName: 'div'\r
87   className: 'credits'\r
88   \r
89   initialize: (options) ->\r
90     @pictures = options.pictures\r
91     @credited = {}\r
92   \r
93   render: () ->\r
94     this.$el.html('')\r
95     _.each @pictures, (picture, pid) =>\r
96       @add_picture(picture)\r
97     this\r
98   \r
99   add_picture: (retriever) ->\r
100     @listenTo(retriever, 'retrieve', @retrieve_picture)\r
101     retriever.retrieve()\r
102   \r
103   retrieve_picture: (picture) ->\r
104     pid = picture.get('id')\r
105     if not @credited[pid]\r
106       @credited[pid] = picture\r
107       credit = picture.credit_view()\r
108       @listenTo(credit, 'click:icon', @click_credit_icon)\r
109       this.$el.append(credit.render().el)\r
110   \r
111   click_credit_icon: (item) ->\r
112     @trigger('click:credit:icon', item)\r
113   \r
114   click_pick: () ->\r
115     @trigger('pick', @item)\r
116   \r
117   is_pickable: () ->\r
118     true\r
119   \r
120   add_pick: (target_model) ->\r
121     @header.add_pick(target_model)\r
122   \r