OSDN Git Service

merge:
[pettanr/pettanr.git] / app / assets / javascripts / views / stories / play.js.coffee
1 class Pettanr.Views.Story.PlayModule\r
2 class Pettanr.Views.Story.PlayModule.Header extends Pettanr.Views.Show.Header\r
3   \r
4   initialize: (options) ->\r
5     super(options)\r
6   \r
7 class Pettanr.Views.Story.PlayModule.Owner extends Pettanr.Views.Show.Owner\r
8   \r
9   initialize: (options) ->\r
10     super(options)\r
11   \r
12 class Pettanr.Views.Story.PlayModule.Footer extends Backbone.View\r
13   tagName: 'table'\r
14   className: 'no-border'\r
15   \r
16   initialize: (options) ->\r
17     @panel = options.panel\r
18     @scroll_panel = options.scroll_panel\r
19     @operators = options.operators\r
20   \r
21   render: () ->\r
22     this.$el.html('')\r
23     this.$el.append(\r
24       (new Pettanr.Views.Panel.Icon({item: @panel, half: true})).render().el\r
25     )\r
26     this.$el.append(\r
27       (new Pettanr.Views.Author.Icon({item: @panel.author(), half: true})).render().el\r
28     )\r
29     this.$el.append(Pettanr.AppHelper.distance_of_time_in_words_to_now(@panel.get('updated_at')))\r
30     #\r
31     this.$el.append(\r
32       (new Pettanr.Views.Panel.Icon({item: @scroll_panel, half: true})).render().el\r
33     )\r
34     this.$el.append(\r
35       (new Pettanr.Views.Author.Icon({item: @panel.author(), half: true})).render().el\r
36     )\r
37     this.$el.append(Pettanr.AppHelper.distance_of_time_in_words_to_now(@scroll_panel.get('updated_at')))\r
38     #\r
39     if @panel.is_own(@operators)\r
40       this.$el.append('')\r
41     this\r
42   \r
43 class Pettanr.Views.Story.PlayModule.Credits extends Backbone.View\r
44   tagName: 'div'\r
45   className: 'credits'\r
46   \r
47   initialize: (options) ->\r
48     @parent = options.parent\r
49     @licensed_pictures = {}\r
50   \r
51   render: () ->\r
52     this.$el.html('')\r
53     this\r
54   \r
55   push: (append_pictures) ->\r
56     _.each append_pictures, (retriever, pid) =>\r
57       return if @licensed_pictures[pid]\r
58       @listenTo(retriever, 'retrieve', @retrieve_picture)\r
59       retriever.retrieve()\r
60   \r
61   retrieve_picture: (picture) ->\r
62     @licensed_pictures[pid] = picture\r
63     credit = picture.credit_view()\r
64     this.$el.append(credit.render().el)\r
65   \r
66 class Pettanr.Views.Story.PlayModule.Sheet extends Backbone.View\r
67   tagName: 'div'\r
68   \r
69   initialize: (options) ->\r
70     @story_sheet = options.story_sheet\r
71     @operators = options.operators\r
72     retriever = @story_sheet.sheet()\r
73     @listenTo(retriever, 'retrieve', @retrieve_sheet)\r
74     retriever.retrieve()\r
75   \r
76   retrieve_sheet: (@sheet) ->\r
77     @render()\r
78   \r
79   render: () ->\r
80     this.$el.html('')\r
81     body = new Pettanr.Views.Sheet.PlayModule.Body({\r
82       parent: this,\r
83       list: [], # list of sheets/by_story/1\r
84       operators: @operators,\r
85     })\r
86     this.$el.append(body.render().el)\r
87     this\r
88   \r
89 class Pettanr.Views.Story.PlayModule.Sheets extends Backbone.View\r
90   tagName: 'div'\r
91   \r
92   initialize: (options) ->\r
93     @parent = options.parent\r
94     @items = options.items\r
95     @operators = options.operators\r
96   \r
97   render: () ->\r
98     this.$el.html('')\r
99     _.each @items, (story_sheet) =>\r
100       return if not story_sheet.has_sheet()\r
101       sheet_view = new Pettanr.Views.Story.PlayModule.Sheet({\r
102         story_sheet: story_sheet,\r
103         operators: @operators,\r
104       })\r
105       this.$el.append(sheet_view.render().el)\r
106     this\r
107   \r
108 class Pettanr.Views.Story.PlayModule.Body extends Backbone.View\r
109   tagName: 'div'\r
110   \r
111   initialize: (options) ->\r
112     @parent = options.parent\r
113     @list = options.list\r
114     @operators = options.operators\r
115     @items = @list.items()\r
116     if @items.length < 1\r
117       @render_empty()\r
118     else\r
119       @render()\r
120   \r
121   render_empty: () ->\r
122     this.$el.html('')\r
123     this.$el.append((new Tag.H2({content: I18n.t('stories.play.empty')})).render().el)\r
124     this\r
125   \r
126   render: () ->\r
127     this.$el.html('')\r
128     # paginate(@pager)\r
129     sheets = new Pettanr.Views.Story.PlayModule.Sheets({\r
130       parent: this,\r
131       items: @items,\r
132       operators: @operators\r
133     })\r
134     this.$el.append(sheets.render().el)\r
135     # paginate(@pager)\r
136     this\r
137   \r
138 class Pettanr.Views.Story.Play extends Backbone.View\r
139   tagName: 'div'\r
140   className: 'show'\r
141   \r
142   initialize: (options) ->\r
143     @item = options.item\r
144     @list = options.list\r
145     @operators = options.operators\r
146     icon_url = Pettanr.url(@item.table_name(), 'show', {id: @item.get('id')})\r
147     caption_url = Pettanr.url(@item.table_name(), 'play', {id: @item.get('id')})\r
148     prof_url = Pettanr.url(@item.table_name(), 'show', {id: @item.get('id'), format: 'prof'})\r
149     @header = new Pettanr.Views.Story.PlayModule.Header({\r
150       item: @item, \r
151       operators: @operators,\r
152       caption: @item.get('title'), \r
153       icon_url: icon_url,\r
154       caption_url: caption_url,\r
155       prof_url: prof_url\r
156     })\r
157     @author = new Pettanr.Views.Show.HeaderAuthor({item: @item})\r
158     @body = new Pettanr.Views.Story.PlayModule.Body({\r
159       parent: this,\r
160       list: @list, \r
161       operators: @operators\r
162     })\r
163     @owner = new Pettanr.Views.Story.PlayModule.Owner({item: @item, operators: @operators})\r
164   \r
165   render: () ->\r
166     this.$el.html('')\r
167     this.$el.append(@header.render().el)\r
168     this.$el.append(@author.render().el)\r
169     this.$el.append(@body.render().el)\r
170     this.$el.append(@owner.render().el) if @item.is_own(@operators)\r
171     this\r
172   \r