OSDN Git Service

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